非标准化负荷中心度是否可以是非整数?

2024-05-01 22:00:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用python NetworkX包来验证一些其他代码,但我担心负载中心性并不代表我所想的那样。当我运行下面的示例时,我希望只得到加载的整数值,因为它应该只是每个节点上通过该节点的最短路径数的一个计数(即,我列出了节点对之间的所有最短路径,然后为每个节点“v”计算有多少路径穿过它,不包括“v”是第一个或最后一个节点的路径):

edges = [ ('a0','a1'),('a0','a2'),('a1','a4'),('a1','a2'),('a2','a4'),('a2','z5'),('a2','a3'),('a3','z5'),('a4','z5'),('a4','z6'),('a4','z7')
     ,('z5','z6'),('z5','z7'),('z5','z8'),('z6','z7'),('z6','z8'),('z6','z9'),('z7','z8'),('z7','z9'),('z8','z9')]
import networkx as nx
testg = nx.Graph( edges )
nx.load_centrality( testg, normalized=False )

我得到如下输出:

{'a0': 0.0,
 'a1': 3.16666665,
 'a2': 15.4999998,
 'a3': 0.0,
 'a4': 14.75,
 'z5': 20.25,
 'z6': 6.04166666,
 'z7': 6.04166666,
 'z8': 2.24999996,
 'z9': 0,0}

这些值与我手工计算的相对大小相似,但为什么不是整数值呢?我测试过的每个其他网络都会返回非规范化负载中心性的整数值,我在定义中没有看到任何会导致这些值的内容。这个函数的python文档说要查看中间值,还提供了一篇文章作为算法的参考(我无法访问)。你知道吗


Tags: 路径a2节点a1整数中心a0a3
1条回答
网友
1楼 · 发布于 2024-05-01 22:00:19

在基于链接到的纸张降档进行非常广泛的计算后,看起来“负载”遵循该纸张中的介数定义,但减去系数(2n-1)以调整算法中的一些过度计算。不管是这样,还是本文中的算法都没有明确说明大小为“1”的初始数据包应该只对它们所经过的节点有贡献,而不应该对路径的末端有贡献。在任何情况下,我现在都可以匹配networkx的输出值。这些值不同于networkx自己的介数函数,它遵循文档中基于节点对的公式,而不是通过网络传播大小为1的数据包。你知道吗

特别地,由于分组在分支点被分割成相等的大小,节点可以累积部分分组,因此累积非整数的“负载”值。这不是networkx文档中的描述所暗示的,但现在已经足够清楚了。你知道吗

相关问题 更多 >