加权边如何影响networkx中的PageRank?

24 投票
1 回答
19870 浏览
提问于 2025-04-17 12:17

我正在玩一个叫做networkx的图形库(在Python中使用),我看到文档上说PageRank算法在评分时会考虑边的权重。但我想知道,边的权重越大就越好吗?还是越小越好呢?

1 个回答

33

简单来说,较大的权重对接收节点更有利。

PageRank 是在一个有向加权图上工作的。如果页面 A 有一个指向页面 B 的链接,那么页面 B 的得分就会提高。也就是说,页面 B(节点)接收到的输入越多,它的得分就越高。

这里有关于 PageRank 的维基百科文章,可以了解更多细节。

编辑:我们来做个实验。创建一个有 3 个节点和两个权重相等的有向边的图。

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 的得分随着输入边的权重增加而提高。

撰写回答