파이썬 NetworkX에서 지원하는 다양한 그래프 매트릭스 유형을 상세히 소개합니다.

NetworkX는 파이썬으로 작성된 그래프 이론 라이브러리로, 다양한 그래프 매트릭스를 지원합니다. 그래프 매트릭스는 그래프를 표현하고 분석하기 위한 행렬 형태의 데이터 구조입니다. 이번 포스트에서는 NetworkX에서 지원하는 다양한 그래프 매트릭스 유형에 대해 소개하겠습니다.

1. 인접 행렬 (Adjacency Matrix)

인접 행렬은 가장 간단한 그래프 매트릭스 형태입니다. 이 행렬은 그래프의 정점들을 열과 행으로 나타내며, 행과 열의 교차점에는 간선의 존재 여부를 나타내는 값이 들어갑니다. 인접 행렬은 대칭 행렬이며, 대각선 상에는 0 또는 1의 값을 가집니다. 만약 가중치 그래프라면 각각의 인접 행렬 요소는 간선의 가중치를 포함하게 됩니다.

NetworkX에서 인접 행렬을 생성하려면 nx.to_numpy_array() 함수를 사용할 수 있습니다. 아래는 인접 행렬을 생성하는 예제 코드입니다.

import networkx as nx

G = nx.Graph([(1,2), (2,3), (3,1)])
adj_matrix = nx.to_numpy_array(G)

2. 간선 행렬 (Edge List)

간선 행렬은 모든 간선들을 행의 형태로 나타내는 2차원 행렬입니다. 각 행은 출발 노드와 도착 노드를 나타내며, 해당 간선의 가중치도 함께 표시될 수 있습니다. 간선 행렬은 비대칭 행렬로 표현됩니다.

NetworkX에서 간선 행렬을 생성하기 위해서는 nx.to_pandas_edgelist() 함수를 사용할 수 있습니다. 아래는 간선 행렬을 생성하는 예제 코드입니다.

import networkx as nx

G = nx.Graph([(1,2), (2,3), (3,1)])
edge_list = nx.to_pandas_edgelist(G)

3. 인접 리스트 (Adjacency List)

인접 리스트는 그래프의 각 정점과 그와 연결된 간선들을 나타내는 리스트입니다. 각 정점마다 연결된 정점들의 리스트를 가지고 있어, 그래프의 구조를 쉽게 파악할 수 있습니다. 인접 리스트는 많은 수의 정점을 가진 그래프에서 효과적으로 사용됩니다.

NetworkX에서 인접 리스트를 생성하려면 nx.generate_adjlist() 함수를 사용할 수 있습니다. 아래는 인접 리스트를 생성하는 예제 코드입니다.

import networkx as nx

G = nx.Graph([(1,2), (2,3), (3,1)])
adj_list = nx.generate_adjlist(G)

위에서는 NetworkX를 사용하여 인접 행렬, 간선 행렬, 그리고 인접 리스트를 생성하는 방법을 소개했습니다. 이러한 그래프 매트릭스를 활용하여 그래프를 분석하고, 특정 알고리즘을 적용할 수 있습니다.

참고 문서:

#그래프 #매트릭스