Python中的Watts和Strogatz图
我需要生成一个随机图,使用的是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