2015-06-22 61 views
1

爲了找到能夠生成無標度和小世界網絡的算法的非常基本的版本,我在網上搜了很多。不幸的是,我的搜索沒有給出結果。生成無標度和小世界網絡

我不需要一些非常複雜的東西。只需要解釋如何生成所需網絡以及算法如何工作。

我非常瞭解如何生成Erdos-Renyi圖,但是我無法找到類似於無標度和小世界的情況。

僞代碼,以及C/C++,Maltab,Java和Python對我來說都很好。

+1

+1對於某些定義我不知道存在。爲什麼不先生成節點,然後以某種概率生成邊?照顧無標度。然後,通過一些(隨機?)閾值,如果節點相距太遠,則添加邊以使節點「更靠近」。這應該很好地解決小世界 –

回答

2

我一無所知無標度或小世界網絡(僅聽說過的名字),但快速谷歌搜索導致我下面的維基百科頁面:

https://en.wikipedia.org/wiki/Barab%C3%A1si%E2%80%93Albert_model

的Barabási - 阿爾伯特(BA)模型是用於使用優先連接機構

https://en.wikipedia.org/wiki/Watts_and_Strogatz_model

產生隨機無標度網絡的算法0

瓦茨-斯托加茨模型是隨機圖形生成模型 產生圖形與小世界的特性,包括短平均 路徑長度和高聚類

這兩種算法是公descriped在這些維基百科頁面。

+0

。無論如何,算法的描述缺乏一些信息。例如,BA的算法開始於「網絡以$ m_0 $個節點的初始連接網絡開始。」什麼意思是連接網絡?任何網絡?完全連接的網絡?只有一個連接組件的網絡? –

+1

這並不重要。你通常採取一個小派。但最終,經過大量的迭代後,這不會對最終網絡產生重大影響。唯一的約束是每個節點至少應該有一個鄰居,否則它將永遠不會被選中來附加新節點,並且它將保持孤立。順便說一句,如果你發現維基百科的文章不完整,只需提交他們引用的原始論文。 –

1

對不起,如果這不是你想要的,但在Netlogo中,這兩種類型的網絡模型庫都有一個非常好的例子。

的代碼生成的NetLogo V A小世界網絡5:

to setup_network 
    if network = "small-world" [ 
    let max-who 1 + max [who] of turtles 
    let sorted sort ([who] of turtles) 
    foreach sorted[ ?1 -> 
     ask turtle ?1 [ 
     let i 1 
     repeat number-of-links [ 
      create-link-with turtle ((?1 + i) mod max-who) 
      set i i + 1 
     ] 
     ] 
    ] 
    repeat round (rewire-prop * number-of-agents) [ 
     ask one-of turtles [ 
     ask one-of my-links [die] 
     create-link-with one-of other turtles with [link-with myself = nobody] 
     ] 
    ] 
    ] 
    if display-network? [ 
    layout-circle (sort turtles) (max-pxcor - 1) 
    display 
    ] 
end 

Im肯定模型庫還可以幫助你。

+0

非常感謝,我會檢查這個。 –