簡體   English   中英

R中的中間性和最短路徑

[英]Betweenness and shortest paths in R

我一直在評論這篇有趣的文章:

http://kieranhealy.org/blog/archives/2013/06/09/using-metadata-to-find-paul-revere/

作為練習,我一直在仔細研究采取各種步驟,以定罪叛逆者里維爾先生。 一方面,作者使用igraph庫interweenness函數 ,其描述為:

“頂點和邊之間的距離(大致)由經過頂點或邊的測地線(最短路徑)的數量定義。”

因此,就本文而言,正在考慮的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

這個數字是什么意思? 幾乎可以說,有10,061個配對不存在任何路徑,但我不知道該怎么做。 我會誤會兩者之間嗎? 提前謝謝了。

如果檢查簡單圖上發生的情況,您會注意到長度為1的最短路徑不會進入計算。

betweenness( graph.lattice( 3 ) )
# [1] 0 1 0

長度為2的最短路徑將被使用一次(用於中間的點),但是長度為3或更長的最短路徑將被使用幾次:對於中間的每個點將使用一次。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM