我想你誤解的networkx的說明文檔。儘管如此,我必須承認它可能措辭更好。
PageRank算法被設計用於向圖,但如果輸入圖形是針對此 算法不檢查,並且將 通過在 向圖將每個邊緣定向到兩個邊緣上無向圖上執行。
這個告訴的是,PageRank算法是爲有向圖設計的,但它可以用於無向圖。爲此,它通過用兩個有向邊(內和外)替換每個邊來將無向網絡轉換爲有向網絡。
因此,如果您給它一個定向網絡,它將根據定向結構計算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}
我的錯誤。感謝您的解決方案。 – root 2012-02-12 09:39:34