我正在尝试生成一些规模自由网络,满足以下条件:
- 度分布遵循相同指数的幂律分布
- 包含完全相同数量的节点
我需要至少生成60个这样的网络,并对每个网络运行一次模拟。
为了达成这个目标,我需要一种方法来生成一个具有上述特性并且恰好包含n个节点的网络。
目前,我能够使用NetworkX Python库编写以下代码来生成一个度分布遵循给定指数的幂律分布的图:
import networkx as nx
import matplotlib.pyplot as plt
#create a graph with degrees following a power law distribution
s = nx.utils.powerlaw_sequence(100, 2.5) #100 nodes, power-law exponent 2.5
G = nx.expected_degree_graph(s, selfloops=False)
print(G.nodes())
print(G.edges())
#draw and show graph
pos = nx.spring_layout(G)
nx.draw_networkx(G, pos)
plt.show()
然而,这会生成许多孤立节点的图形,通常不止一个连通分量。
我可以舍弃孤立节点,但最终网络将比我预期的节点数少,并且可能不是单个网络。它可能是两个或更多独立的联通分量。