ER随机网络全称为埃尔德什(Paul Erdos)-雷尼(Alfred Renyi)随机网络。生成该网络的算法描述如下:
- 从N个孤立节点开始;
- 选择一对节点,产生一个0-1之间的随机数。如果该随机数小于p,则这对节点之间放一条连接;否则,该节点对保持不连接;
- 对所有N(N-1)/2个节点对重复步骤2。
import random
import networkx as nx
N = 100
p = 0.1
G = nx.Graph()
G.add_nodes_from(range(1, 101))
for i in range(N):
for j in range(i):
rand = random.random()
if rand < p:
G.add_edge(i+1, j+1)
G
<networkx.classes.graph.Graph at 0x7fad989b01f0>
G.number_of_edges()
437
import matplotlib.pyplot as plt
plt.subplot()
nx.draw(G, with_labels=False)
plt.savefig('demo_er.pdf')
参考
- https://networkx.github.io/documentation/stable/index.html
- 艾伯特-拉斯洛著·巴拉巴西.巴拉巴西网络科学[M].沈华伟,黄俊铭译.河南科学技术出版社,2020;