networkx ドキュメントの注記を誤解していると思います。しかし、私はそれがより良い言葉遣いかもしれないことを認めなければなりません.
PageRank アルゴリズムは有向グラフ用に設計されていますが、このアルゴリズムは入力グラフが有向かどうかをチェックせず、有向グラフの各有向エッジを 2 つのエッジに変換することによって無向グラフで実行します。
これが示すことは、PageRank アルゴリズムは有向グラフ用に設計されていますが、無向グラフにも使用できるということです。そのために、各エッジを 2 つの有向エッジ (インとアウト) で置き換えることにより、無向ネットワークを有向ネットワークに変換します。
したがって、有向ネットワークを指定すると、有向構造に従って PageRank が計算されます。したがって、無向ネットワークから始めます。
import networkx as nx
# Undirected Network
D = nx.Graph()
D.add_weighted_edges_from([('A', 'B', 0.5),('A', 'C', 1)])
# Default max number of iterations failed to converge for me
print nx.pagerank(D, max_iter=200)
# Outputs:
{'A': 0.48648648872844047, 'C': 0.32567567418103965, 'B': 0.18783783709051982}
または、すでに有向ネットワークがある場合は、無向ネットワークに変換します。
import networkx as nx
# Directed Network
D = nx.DiGraph()
D.add_weighted_edges_from([('A', 'B', 0.5), ('A', 'C', 1)])
# Convert to undirected
G = D.to_undirected()
# Default max number of iterations failed to converge for me
print nx.pagerank(G, max_iter=200)
# Outputs:
{'A': 0.48648648872844047, 'C': 0.32567567418103965, 'B': 0.18783783709051982}