我正在尝试模拟对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)预期结果:

我的结果是:

发布于 2020-11-13 16:13:06
在你的预期结果图中,似乎失败的情况和攻击的情况导致了相同的结果,这真的有点奇怪。在现实世界中,随机攻击对网络的影响相对较慢。我不认为你的结果是错的。
https://stackoverflow.com/questions/62448898
复制相似问题