BA无标度网络模型python代码
时间: 2023-10-13 15:28:36 浏览: 214
BA无标度网络级联失效模型-python
以下是一个简单的BA无标度网络模型的Python代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
def barabasi_albert(n, m):
# 创建初始图,包含两个连接的节点
G = nx.Graph()
G.add_nodes_from(range(m))
edges = [(0, 1)]
G.add_edges_from(edges)
# 添加新节点
for i in range(m, n):
# 计算新节点连接的边
probs = list(dict(nx.degree(G)).values())
probs = [p / sum(probs) for p in probs]
new_edges = np.random.choice(range(i), size=m, replace=False, p=probs)
new_edges = [(i, e) for e in new_edges]
edges += new_edges
G.add_edges_from(new_edges)
return G
n = 1000 # 节点数
m = 2 # 每个新节点连接的边数
G = barabasi_albert(n, m)
# 可视化网络
nx.draw(G, node_size=10)
plt.show()
```
这段代码使用了 NetworkX 库来创建和可视化网络。函数 `barabasi_albert` 接受两个参数:节点数 `n` 和每个新节点连接的边数 `m`。它首先创建一个包含两个连接的节点的初始图,然后在每个新节点上添加 `m` 条边。新节点连接的边是根据现有节点的度数分布随机选择的。最后,它返回一个 NetworkX 图对象。在主函数中,我们使用 `nx.draw` 函数可视化网络。
阅读全文