我正在尝试模拟对 Erdos-Renyi 网络的随机攻击。假设的结果是,当您删除大约 20% 到 30% 的节点时,网络会崩溃。但是,我无法重现该结果,因为巨型连接组件的大小似乎线性减小。
import networkx as nx
import random as rd
def random_single():
l1 = nx.fast_gnp_random_graph(1000, 0.01)
nodes = []
gcc = []
n_nodes = l1.number_of_nodes()
removed_nodes = 0
gcc_size = len(list(max(nx.connected_components(l1), key=len))) / n_nodes
gcc.append(gcc_size)
nodes.append(0.0)
while l1.number_of_nodes() > 1:
node = rd.choice(list(l1.nodes()))
l1.remove_node(node)
removed_nodes += 1
gcc_size = len(list(max(nx.connected_components(l1), key=len))) / n_nodes
gcc.append(gcc_size)
nodes.append(1 - ((og_n_nodes - removed_nodes) / n_nodes))
fig, ax = plt.subplots()
ax.plot(nodes, gcc)
预期结果:
我的结果: