Я думаю, вы неправильно истолковали примечание к документации 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}
person
Avaris
schedule
12.02.2012