-
[NetworkX] 그래프를 거리(length)로 설명하는 방법(평균거리, 지름, 반지름, 둘레, 이심률)Data & ML & AI/NetworkX 2022. 11. 3. 22:30반응형
그래프G를 간추려서 수치로 설명하는 방법은 여러가지가 있습니다.
Average distance: 모든 노드 간 거리의 평균
nx.average_shortest_path_length(G)
위와 같은 그래프가 있다고 할 때, A로부터 다른 노드들 까지의 거리는 다음과 같습니다.
nx.shortest_path_length(G,'A') # 결과 {'A': 0, 'B': 1, 'K': 1, 'C': 2, 'F': 3, 'E': 3, 'G': 4, 'H': 4, 'I': 4, 'D': 4, 'J': 5}
A~J까지의 모든 노드들에 대해서 위의 방법을 실행하고, 그 평균을 내면되지만,
굳이 직접 평균을 계산할 필요는 없습니다.
nx.average_shortest_path_length(G) # 2.5272727272727273
위의 값과 똑같을 겁니다.
Diameter 지름: 가장 거리가 긴 path의 길이
nx.diameter(G)
우리가 일반적으로 알고있는 지름(원의 지름)의 개념과는 좀 다릅니다.
그래프에서의 지름의 개념은 다음과 같습니다.
- maximum distance between any pair of nodes
- = 그래프 G 내, 노드 간 거리의 최대값
nx.diameter(G) # 5
Eccentricity 이심률: 가장 거리가 긴 path의 길이
nx.eccentricity(G)
한 노드가 가지는 다른 노드와의 최대 거리
- the largest distnace between n and all other nodes
- 한 노드와 다른 노드들 사이의 최대 거리
nx.eccentricity(G) # 결과 {'A': 5, 'B': 4, 'K': 5, 'C': 3, 'E': 3, 'F': 3, 'D': 4, 'H': 4, 'G': 4, 'I': 4, 'J': 5}
사실 위의 지름diameter는 이심률 값 중 가장 큰 값(5) 였습니다.
Radius 반지름: 가장 거리가 긴 path의 길이
nx.radius(G)
지름과는 반대로, 반지름은 이심률 값 중 가장 작은 값입니다.
- 한 노드와 다른 노드들 사이의 최대 거리가 가장 짧은 값
- = 이심률 중 가장 작은 값
nx.radius(G) # 3
Periphery 둘레: 이심률이 지름인 노드들의 집합
Center 중앙: 이심률이 반지름인 노드들의 집합
nx.periphery(G), nx.center(G)
둘레Periphery는 그래프 G의 가장 끝자락에 있는 노드들의 집합이라고 생각하면 편합니다.
이심률이 가장 크다는건, 그만큼 가장자리에 있다는 뜻이니까요.
중앙Center는 중앙에 있는 노드들이라고 생각하면 됩니다.
- the set of nodes that have eccentricity equal to the diameter
- 둘레: (이심률=지름)인 노드들의 집합
- 중앙: (이심률=반지름)인 노드들의 집합
nx.periphery(G) # ['A', 'K', 'J'] nx.center(G) # ['C', 'E', 'F']
반응형'Data & ML & AI > NetworkX' 카테고리의 다른 글
[NetworkX] 레이아웃으로 그래프 예쁘게 그리기 (nx layout) (0) 2022.11.11 [NetworkX] 네트워크 견고성(Robustness in Networks) (0) 2022.11.09 [NetworkX] 너비 우선 탐색, 트리 구조 그리기 (0) 2022.11.02 [NetworkX] 경로의 개념, 가장 짧은 경로 찾기 (0) 2022.11.01 [NetworkX] Assignment 1 - Creating and Manipulating Graphs (0) 2022.10.30