用python代码复现watts-strogta model
时间: 2024-11-17 08:28:34 浏览: 21
Watts-Strogatz模型是一种复杂网络生成模型,它结合了无标度网络(如Barabási-Albert模型)和小世界网络的特点。以下是用Python代码简单复现这个模型的基本步骤:
```python
import networkx as nx
import random
def watts_strogatz_graph(n, k, p):
"""
Watts-Strogatz模型
n: 网络节点数
k: 每个节点原始连接数(邻接度)
p: 将随机边的概率,从原链形结构中随机替换
"""
# 创建链形结构
G = nx.connected_watts_strogatz_graph(n, k, p)
# 添加短程随机联系
for node in G.nodes():
neighbors = list(G.neighbors(node))
if len(neighbors) > 1: # 如果有邻居
# 随机选择一个邻居作为新的边起点,另一个保持不变
neighbor1, neighbor2 = random.sample(neighbors, 2)
G.add_edge(neighbor1, neighbor2)
return G
# 示例
n_nodes = 1000 # 节点数
k_neighbors = 4 # 原始链接数
rewiring_probability = 0.1 # 链条随机化的概率
G = watts_strogatz_graph(n_nodes, k_neighbors, rewiring_probability)
print(f"生成的网络包含 {n_nodes} 个节点")
```
在这个代码中,`nx.connected_watts_strogatz_graph`函数用于创建初始的链条结构,然后通过随机选择和添加新边来引入短程联系。你可以通过调整参数来观察模型如何影响网络的结构。
阅读全文