簡體   English   中英

R,igraph walktrap.community在完全連接的圖的情況下拆分所有節點

[英]R, igraph walktrap.community splits all nodes in the case of a fully connected graph

使用walktrap.community方法在圖形中定義社區非常有效-在我測試過的所有算法中,效果最佳。 需要注意的是,在沒有自我鏈接的完全連接圖的情況下(每個節點都彼此連接,但不是自身連接),每個節點都被分配了自己的社區。

我沒有網絡分析方面的經驗,但這似乎是一個有趣的案例,並且它當然不是所希望的行為。 如何避免在實際數據中出現這種分裂?

library(igraph)
match.mat = matrix(T, nrow=8, ncol=8)

diag(match.mat)[1:8] = T
topology = which(match.mat, arr.ind=T)
g = graph.data.frame(topology, directed=F)
cm = walktrap.community(g)
membership(cm)

# 2 3 4 5 6 7 8 1 
# 1 1 1 1 1 1 1 1 

plot(cm, g)

分組網絡

diag(match.mat)[1:8] = F
topology = which(match.mat, arr.ind=T)
g = graph.data.frame(topology, directed=F)
cm = walktrap.community(g)
membership(cm)

#2 3 4 5 6 7 8 1 
#1 2 3 4 5 6 7 8 

plot(cm, g)

分割網絡

從概念上講,我不確定缺少自我鏈接會如何導致每個節點被拆分-可能所有社區都被捆綁在一起並因此分裂了? 但是,在這方面,所有自我聯系的情況似乎是等效的。

謝謝!

http://www-rp.lip6.fr/~latapy/Publis/communities.pdf

如果您已仔細閱讀本文,您將注意到Walktrap基於隨機行走過渡矩陣構建節點距離度量。 但是,此轉換矩陣需要是遍歷遍歷的,因此其底層鄰接矩陣需要是連通的且不可分割。 通過將自環添加到節點來實現非雙向性。 因此,您需要將自循環添加到圖形中的每個節點。 將來在igraph程序包中包含此更正可能是一個好主意,但據我所知,他們正在使用Latapy和Pons的C實現,為此,該圖需要具有自循環。 希望這能回答您的問題!

暫無
暫無

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

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