生物医学网络科学Biomedical Network Science
Example12 / 12

随机失效与蓄意攻击下的结构鲁棒性

所属专题
网络可控性与稳定性
下载
Notebook · .py

对 BA 网络和同样边数的 ER 网络,逐步删除比例 f 的节点(随机删除 / 按初始度从高到低删除), 记录巨连通分支占原网络的比例;再用 Molloy–Reed 判据 f_c = 1 - 1/(kappa0 - 1),kappa0 = <k^2>/, 估计随机失效的临界删除比例。 解读:BA 网络 kappa0 更大、f_c 更接近 1,对随机失效最鲁棒,但对按度攻击最脆弱。

Output输出图

随机失效与蓄意攻击下的结构鲁棒性:输出图 1

Output文字输出

ER: kappa0 = 4.92, f_c 估计 = 0.745;删除 20% 后巨分支:随机 0.76,攻击 0.69
BA: kappa0 = 11.13, f_c 估计 = 0.901;删除 20% 后巨分支:随机 0.79,攻击 0.02

Code代码

# 对 BA 网络和同样边数的 ER 网络,逐步删除比例 f 的节点(随机删除 / 按初始度从高到低删除),
# 记录巨连通分支占原网络的比例;再用 Molloy–Reed 判据 f_c = 1 - 1/(kappa0 - 1),kappa0 = <k^2>/<k>,
# 估计随机失效的临界删除比例。
# 解读:BA 网络 kappa0 更大、f_c 更接近 1,对随机失效最鲁棒,但对按度攻击最脆弱。
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

N = 1000
G_ba = nx.barabasi_albert_graph(N, 2, seed=1)
G_er = nx.gnm_random_graph(N, G_ba.number_of_edges(), seed=1)
fs = np.linspace(0, 0.9, 19)

def giant_curve(G, order):
    out = []
    for f in fs:
        H = G.copy()
        H.remove_nodes_from(order[: int(f * N)])
        out.append(max((len(c) for c in nx.connected_components(H)), default=0) / N)
    return out

rng = np.random.default_rng(0)
for name, G, style in [("ER", G_er, "-"), ("BA", G_ba, "--")]:
    rand_order = list(rng.permutation(N))
    attack_order = [v for v, _ in sorted(G.degree(), key=lambda x: -x[1])]
    rand_curve = giant_curve(G, rand_order)
    attack_curve = giant_curve(G, attack_order)
    plt.plot(fs, rand_curve, style, label=name + " random")
    plt.plot(fs, attack_curve, style, label=name + " attack")
    k = np.array([d for _, d in G.degree()], dtype=float)
    kappa0 = (k**2).mean() / k.mean()
    fc = 1 - 1 / (kappa0 - 1)
    i20 = int(np.argmin(np.abs(fs - 0.2)))
    print("%s: kappa0 = %.2f, f_c 估计 = %.3f;删除 20%% 后巨分支:随机 %.2f,攻击 %.2f"
          % (name, kappa0, fc, rand_curve[i20], attack_curve[i20]))
plt.xlabel("fraction removed f"); plt.ylabel("giant component / N"); plt.legend(); plt.title("Robustness")
plt.show()

Run在浏览器中运行

首次加载 Python 环境约需 20–40 秒;可以修改参数后重新运行。

随机失效与蓄意攻击下的结构鲁棒性