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;