爲了找到能夠生成無標度和小世界網絡的算法的非常基本的版本,我在網上搜了很多。不幸的是,我的搜索沒有給出結果。生成無標度和小世界網絡
我不需要一些非常複雜的東西。只需要解釋如何生成所需網絡以及算法如何工作。
我非常瞭解如何生成Erdos-Renyi圖,但是我無法找到類似於無標度和小世界的情況。
僞代碼,以及C/C++,Maltab,Java和Python對我來說都很好。
爲了找到能夠生成無標度和小世界網絡的算法的非常基本的版本,我在網上搜了很多。不幸的是,我的搜索沒有給出結果。生成無標度和小世界網絡
我不需要一些非常複雜的東西。只需要解釋如何生成所需網絡以及算法如何工作。
我非常瞭解如何生成Erdos-Renyi圖,但是我無法找到類似於無標度和小世界的情況。
僞代碼,以及C/C++,Maltab,Java和Python對我來說都很好。
我一無所知無標度或小世界網絡(僅聽說過的名字),但快速谷歌搜索導致我下面的維基百科頁面:
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在這些維基百科頁面。
。無論如何,算法的描述缺乏一些信息。例如,BA的算法開始於「網絡以$ m_0 $個節點的初始連接網絡開始。」什麼意思是連接網絡?任何網絡?完全連接的網絡?只有一個連接組件的網絡? –
這並不重要。你通常採取一個小派。但最終,經過大量的迭代後,這不會對最終網絡產生重大影響。唯一的約束是每個節點至少應該有一個鄰居,否則它將永遠不會被選中來附加新節點,並且它將保持孤立。順便說一句,如果你發現維基百科的文章不完整,只需提交他們引用的原始論文。 –
對不起,如果這不是你想要的,但在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肯定模型庫還可以幫助你。
非常感謝,我會檢查這個。 –
+1對於某些定義我不知道存在。爲什麼不先生成節點,然後以某種概率生成邊?照顧無標度。然後,通過一些(隨機?)閾值,如果節點相距太遠,則添加邊以使節點「更靠近」。這應該很好地解決小世界 –