2015-06-22 317 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

非常感谢,我会检查这个。 –