python和matlab实现随机攻击网络节点+蓄意攻击网络节点,实现最大连通子图比例、网络效率变化、平均距离变化等等。

  • 首先要有自己的邻接关系,最好是邻接表,如下图这样包括起点和终点

  • 要在网络中读取自己的文件,生成自己的复杂网络图

  • 知道攻击方式包括哪些:比如度、介数等,选择自己想要的攻击方式

    在研究复杂网络的鲁棒性的时候,我们往往会通过随机与蓄意攻击网络节点,观察网络指标的下降比例,或者说是变化来进行网络特性的研究。

    常见的指标有:最大连通子图比例、网络效率、平均距离等等。

  • def network_eff(G0, n):
        sum_eff = 0
        for u in G.nodes():  # 遍历流量图F的每个点
            path = nx.shortest_path_length(G, source=u)  # 在网络G中计算从u开始到其他所有节点(注意包含自身)的最短路径长度。如果两个点之间没有路径,那path里也不会存储这个目标节点(比前面的代码又省了判断是否has_path的过程)
            for v in path.keys():  # path是一个字典,里面存了所有目的地节点到u的最短路径长度
                if u != v:  # 如果起终点不同才累加计算效率
                    sum_eff += 1 / path[v]
        sum_eff = (1 / (n * (n - 1))) * sum_eff  # 计算网络剩余效率
        #return sum_eff
        print(sum_eff)
    network_eff(G, 10)


    这三个指标是不同的,但是实现随机攻击与蓄意攻击的原理是相同的,这里以按照节点度攻击的网络效率变化为例(其他两个指标就是函数不同,想按照其他节点重要度排序指标,也是类似的,只需要按照想要的排序方法得出节点的排序即可)。

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_17839606517

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值