Python中的Watts和Strogatz图

1 投票
1 回答
6107 浏览
提问于 2025-04-18 18:37

我需要生成一个随机图,使用的是Watts和Strogatz模型。我希望这个图的格式和我真实的数据一样。我需要把它保存成csv或txt文件。这个图更像是小世界网络

根据我了解的,Watts和Strogatz模型生成的是无向图,并且没有权重。但我需要生成的是有权重的无向图。

真实数据的格式是:

Node  Node weight = time in seconds
  453  645    343
  453  645    533
  645  8090   349
  645  453    3563
  564  645    3533
  564  453    345
  8090 453    563
  8090 645    4525
  564  8090   3533

每个节点的度数是1,并且有两个节点对在特定的时间内是连接的,这个时间是以秒为单位的。生成图数据的最佳方法是什么?我需要用种子(Seed)从0到4,在时间(time)从1到5之间生成,也就是说要生成Seed0_time1,依此类推直到Seed4_time5,总共五个实例。

我知道这个问题可能有点宽泛,但如果有人能给我指个方向,并提供一些代码示例,那就太好了。我在这里找过帮助,发现几乎没有帖子得到回复。

1 个回答

2

你试过 NetworkX 吗?它里面有很多小世界算法,包括 Watts-Strogatz,使用起来都挺简单的。 如果你真的想要一个没有权重的无向图,可以看看 经典随机图,NetworkX 可以生成这些图。 但是如果你必须使用 Watts-Strogatz,下面是用 NetworkX 的示例代码。大多数随机图生成器会返回一个 Graph 对象,所以 这里有 关于 Graph 可用方法的文档。

import networkx as nx
watts_strogatz = nx.watts_strogatz_graph(200,2,0.15)
nx.nodes(watts_strogatz) # Prints out the nodes

撰写回答