0

我正在尝试模拟对 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)


预期结果:

在此处输入图像描述

我的结果:

在此处输入图像描述

4

1 回答 1

0

在您的预期结果图中,似乎失败情况和攻击情况导致相同的结果,这确实有点奇怪。在现实世界中,随机攻击对网络的影响是比较慢的。我不认为你的结果是错误的。

于 2020-11-13T08:13:05.910 回答