2016-07-05 46 views
0

我想使用igraph生成小世界網絡,但不使用watts.strogatz.game()中實現的「重新連線」。在Newman變體中,所有本地鏈路都是固定的,但固定數量的隨機鏈路以固定速率在網絡上隨機取消和丟棄(基本上增加了「遠程」連接)。我想我可以簡單地生成一個格子(例如g <- graph.lattice(length=20, dim=1, circular=TRUE)),然後在其上放置一個經典的隨機圖。但是,我不知道如何使用圖形作爲輸入參數來執行此操作。或者,也許有可能以指定的概率添加隨機邊緣?使用Newman-Watts算法在igraph中生成小世界模型

任何幫助高度讚賞。

非常感謝!

回答

1

使用graph.lattice生成一個點陣,然後erdos.renyi.game具有相同數量的頂點和一個固定的概率來生成一個隨機圖。然後,您可以使用%u%(聯合)運算符組合這兩個圖。如果相同的邊緣恰好是網格和隨機圖的一部分,那麼多邊的機會很小,所以如果不需要,也應該在聯合上調用simplify()

+0

Fab!聽起來很簡單。塔瑪斯,謝謝你的幫助! – Sibylle

0

這似乎是訣竅,萬一有人感興趣。只需要創建一個功能來重複這個「重新連線」。非常感謝,Tamas!

library(igraph) 
g <- graph.lattice(length=100, dim=1, circular=TRUE) 
g2 <- erdos.renyi.game(100, 1/100) 
g3 <- g %u% g2 
g3 <- simplify(g3) 
plot.igraph(g3, vertex.size = 1,vertex.label = NA, layout=layout_in_circle)