22

networkx(pythonのグラフライブラリ)で遊んでいて、PageRankアルゴリズムがスコアリング時にエッジの重みを考慮に入れるというドキュメントを見つけましたが、エッジの重みが大きい方が良いのか、低い方が良いのか疑問に思いました。

4

1 に答える 1

32

すぐに、着信ノードには大きな重みが適しています。

PageRankは、有向加重グラフで機能します。ページAにページBへのリンクがある場合、Bのスコアは上がります。つまり、ページB(ノード)の入力が多いほど、スコアは高くなります。

詳細については、PageRankに関するウィキペディアの記事を参照してください。

編集:実験してみましょう。3つのノードと等しい重みを持つ2つの有向エッジを持つ有向グラフを作成します。

import networkx as nx
D=nx.DiGraph()
D.add_weighted_edges_from([('A','B',0.5),('A','C',0.5)])
print nx.pagerank(D)

>> {'A': 0.259740259292235, 'C': 0.3701298703538825, 'B': 0.3701298703538825}

ここで、(A、C)エッジの重みを増やします。

D['A']['C']['weight']=1
print nx.pagerank(D)    

>> {'A': 0.259740259292235, 'C': 0.40692640737443164, 'B': 0.3333333333333333}

ご覧のとおり、ノードCは、入力エッジの重みが大きくなるにつれてスコアが高くなりました。

于 2012-02-04T22:26:58.717 に答える