R中的介数与最短路径

R中的介数与最短路径,r,R,我一直在回顾这篇有趣的文章: 作为练习,我一直在挑选各种步骤来判定里维尔先生叛国罪。在某一点上,作者使用了igraph库的介数函数,其描述如下: “顶点和边的介数(大致)由穿过顶点或边的测地线(最短路径)的数量定义。” 那么,在本文中,在所考虑的254人中,每对人之间有多少条最短的通信路径?不过,我从这篇文章中转移了一点注意力,我想知道我是否在天真地思考 254 x 254矩阵有64516个元素。然而,琐碎的元素(对角线上的元素——一个人自言自语显然是从X到X的最短路径)可以被打折,留下(似乎

我一直在回顾这篇有趣的文章:

作为练习,我一直在挑选各种步骤来判定里维尔先生叛国罪。在某一点上,作者使用了igraph库的介数函数,其描述如下:

“顶点和边的介数(大致)由穿过顶点或边的测地线(最短路径)的数量定义。”

那么,在本文中,在所考虑的254人中,每对人之间有多少条最短的通信路径?不过,我从这篇文章中转移了一点注意力,我想知道我是否在天真地思考

254 x 254矩阵有64516个元素。然而,琐碎的元素(对角线上的元素——一个人自言自语显然是从X到X的最短路径)可以被打折,留下(似乎)254*254-254=64262个非平凡的有序配对。但是,这些都不是定向的——也就是说,一对特定的X和Y之间的最短路径是相同的,不管X或Y中的哪个是发送方,哪个是接收方

因此,我们可以减少配对的数量:
(254*254-254)/2=32131

因为这也恰好是从254中选择的2的组合数,所以更好——一个很好的巧合!;-)

然后,只是为了好玩,我做了:

((254 * 254 - 254) / 2) - sum(betweenness(person.g)) = 10061

这个数字是什么意思?似乎有10061对不存在路径的配对,但我不明白这是怎么回事。我是否误解了中间性?非常感谢。

如果您在更简单的图表上查看发生了什么, 您将注意到长度为1的最短路径 不要输入计算结果

betweenness( graph.lattice( 3 ) )
# [1] 0 1 0
长度为2的最短路径将使用一次(对于中间的点), 但长度为3或3以上的最短路径将被多次使用: 在中间的每个点一次。< /P>
betweenness( graph.lattice( 5 ) )
# [1] 0 3 4 3 0
在本例中,最短路径为

length 1: 1-2, 2-3, 3-4, 4-5  (not used)
length 2: 1-3, 2-4, 3-5       (each used once, for the betweenness of 2, 3 and 4)
length 3: 1-4, 2-5            (each used twice, for 2,3 and 2,4)
length 4: 1-5                 (each used 3 times, for 2, 3 and 4)
换句话说,长度为k的最短路径被计算k-1次

p <- shortest.paths(person.g)
sum( p[upper.tri(p)] - 1 )
# [1] 22070
sum( betweenness( person.g ) )
# [1] 22070

p如果您检查一个更简单的图形上发生了什么,
您将注意到长度为1的最短路径
不要输入计算结果

betweenness( graph.lattice( 3 ) )
# [1] 0 1 0
长度为2的最短路径将使用一次(对于中间的点), 但长度为3或3以上的最短路径将被多次使用: 在中间的每个点一次。< /P>
betweenness( graph.lattice( 5 ) )
# [1] 0 3 4 3 0
在本例中,最短路径为

length 1: 1-2, 2-3, 3-4, 4-5  (not used)
length 2: 1-3, 2-4, 3-5       (each used once, for the betweenness of 2, 3 and 4)
length 3: 1-4, 2-5            (each used twice, for 2,3 and 2,4)
length 4: 1-5                 (each used 3 times, for 2, 3 and 4)
换句话说,长度为k的最短路径被计算k-1次

p <- shortest.paths(person.g)
sum( p[upper.tri(p)] - 1 )
# [1] 22070
sum( betweenness( person.g ) )
# [1] 22070

p
似乎有10061对不存在路径的配对,但我不明白这是怎么回事
为什么不?例如,如果它们由两个子组组成,而这两个子组之间没有连接,这就是不可能的
(254/2)^2=16129
路径。@DavidRobinson:图形实际上是连接的(
clusters(person.g)
),因此每对都有连接。对不起,@DavidRobinson,这是个好问题。我掩饰了我的推理。在同一个igraph库中是最短路径。只要在person.g矩阵上运行它,就可以得到所有对的最短路径长度。所以,我做了:max(最短路径(person.g))。答案是3。此外,仅仅通过目视检查shortest.path(person.g)的输出,并没有显示出“无法连接”的人的未定义长度。事实上,如果叛逆殖民者中约30%的配对无法通过任何一组中介进行沟通,我希望这种情况很快就会出现。
几乎可以说有10061对配对不存在路径,但我不明白这是怎么回事
为什么不?例如,如果它们由两个子组组成,而这两个子组之间没有连接,这就是不可能的
(254/2)^2=16129
路径。@DavidRobinson:图形实际上是连接的(
clusters(person.g)
),因此每对都有连接。对不起,@DavidRobinson,这是个好问题。我掩饰了我的推理。在同一个igraph库中是最短路径。只要在person.g矩阵上运行它,就可以得到所有对的最短路径长度。所以,我做了:max(最短路径(person.g))。答案是3。此外,仅仅通过目视检查shortest.path(person.g)的输出,并没有显示出“无法连接”的人的未定义长度。事实上,如果这些叛逆的殖民者中有30%的人无法通过任何一组中介进行交流,我希望这会很快结束。啊,好吧。。。多重计数显示为:table(cut(shortest.path(person.g),breaks=-1:3)支持。考虑到多次计数的元素,这些数字的结果与预期一致。非常感谢你的解释。我会投票的,但很遗憾,我缺乏声誉,我被告知。啊,好吧。。。多重计数显示为:table(cut(shortest.path(person.g),breaks=-1:3)支持。考虑到多次计数的元素,这些数字的结果与预期一致。非常感谢你的解释。我想提高投票率,但遗憾的是我缺乏声誉,有人告诉我。