networkx - Wiener index
최대 1 분 소요
Wiener_index
- Wiener index는 chemical graph theory에서 등장하는데, 하나의 chemical graph 내에 등장하는 모든 node pair간의 shortest-path-length의 합을 말합니다.
- 개념상, 복잡계에 쓰인다기보다는 단일 고분자에 대해서 해당 index를 적용하면, 각 고분자가 가지고 있는 Topological index를 추출할 수 있고, 이를 통해 고분자의 특성을 유추할 수 있는 것으로 보입니다.
- 이미
nx.algorithms.wiener_index(G, weight=True)
에 구현되어 있으며 공부할 겸 동일하게 구현해봤습니다.
implementation Wiener_index
import networkx as nx
import itertools
def wiener_index(G, weight=True):
"""
- 주어진 graph에서 모든 node pair의 shortest-path-length를 합한 것을 말합니다.
- directed network의 경우 는 양쪽 모두를 계사하지만,
- undirected network의 경우는 한쪽만 계산하므로 1/2를 곱해주면 됩니다.
- `nx.algorithms.wiener_index(G, weight=True)`와 동일.
"""
w_index = 0
for u, v in itertools.permutations(G, 2):
w_index += nx.shortest_path_length(G, u, v, weight=weight)
if nx.is_directed(G)==True:
return w_index
else:
return w_index/2.0
reference
댓글남기기