Algorithm 生成无标度和小世界网络

Algorithm 生成无标度和小世界网络,algorithm,graph,graph-algorithm,Algorithm,Graph,Graph Algorithm,我在谷歌上搜索了很多东西,以找到一个非常基本的算法版本,能够生成无标度和小世界网络。不幸的是,我的搜索没有给出结果 我不需要非常复杂的东西。只需要解释一下如何生成所需的网络,以及为什么算法是这样工作的 我非常了解如何生成鄂尔多斯仁义图,但我找不到类似的无标度和小世界情况 伪代码,以及C/C++、Maltab、Java和Python对我很有好处。我对无标度网络或小世界网络一无所知(只听说过这些名称),但快速的谷歌搜索让我找到了以下维基百科页面: Barabási–Albert(BA)模型是一种使

我在谷歌上搜索了很多东西,以找到一个非常基本的算法版本,能够生成无标度和小世界网络。不幸的是,我的搜索没有给出结果

我不需要非常复杂的东西。只需要解释一下如何生成所需的网络,以及为什么算法是这样工作的

我非常了解如何生成鄂尔多斯仁义图,但我找不到类似的无标度和小世界情况


伪代码,以及C/C++、Maltab、Java和Python对我很有好处。

我对无标度网络或小世界网络一无所知(只听说过这些名称),但快速的谷歌搜索让我找到了以下维基百科页面:

Barabási–Albert(BA)模型是一种使用优先连接机制生成随机无标度网络的算法

Watts–Strogatz模型是一种随机图生成模型,它 生成具有小世界属性(包括短平均值)的图形 路径长度与高聚类


这两种算法在这些维基百科页面中都有很好的描述。

如果这不是您想要的,很抱歉,但是在Netlogo中,对于这两种类型的网络,模型库中都有一个非常好的示例

在netlogo v中生成小世界网络的代码。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

我相信模型库可以进一步帮助您。

+1对于一些我不知道的定义。为什么不先生成节点,然后以一定的概率生成边呢?这就是无标度。然后,通过一些(随机?)阈值,添加边,使节点“更近”,如果它们相距太远。这应该能解决小世界的问题,非常感谢。总之,对算法的描述缺乏一定的信息。例如,BA的algo以“网络从$m_0$节点的初始连接网络开始”。什么是连接网络?有网络吗?完全连接的网络?只有一个连接组件的网络?这并不重要。你一般都是小圈子的。但最终,经过大量迭代后,这不会显著影响最终网络。唯一的限制是每个节点至少应该有一个邻居,否则它将永远不会被选中来附加新节点,并且它将保持隔离。顺便说一句,如果你发现维基百科的文章不完整,请查阅他们引用的原始文件。非常感谢,我会检查一下。