[2021-12-20]实现级联失效的一点点想法

看到有不少人苦恼这个级联失效难搞,还碰到我这个半吊子群主,我在这里再简单讲一下原理,以及如何实现。
**

理论可行和实际操作

**
做这种模型算法,首先你得达到“理论可行”这一步,然后你再真正自己动手做,才能理解,啥叫“理论可行、实际操作”艰难这种情况,这是两种状态。
你首先得能够到“理论可行”这种状态,你若是走到这一步,你至少还可以备选方案,那就是到淘宝上找人帮你做,否则即便你到淘宝让人帮你做程序,你该怎么给人家描述你想实现的功能呢,不要说级联失效,人家不懂这个词。
有人问我随机攻击和蓄意攻击,我之前说过,要是随机攻击能做出结果,蓄意攻击就自然能做得出来。
那么问题是,您是否已经能自己做出随机攻击的程序呢?
也许,随机攻击对于你而言,也比较复杂,那么我再退一步,再退一步问你,你能算出你的这个网络的网络参数吗?
比如网络性能方面的数据,平均路径,最短路径,等等,作为一个研究网络的人,可以找哪些网络指标来评估你的网络,这个清楚吗?你会用不同的计算代码算出你的网络的性能指标吗?
你也许会说,你知道有这些指标,但你不知道怎么编程序去计算。对的,我也不会,我只知道使用,我根本不想浪费时间去学这个,大家都不会。

解决方法就是,网上这方面的代码已经有好多人写过了,有现成的,不仅有现成的,就连一些软件,比如有名的Pajek软件,里面都有这些计算功能,就类似于Excel中的函数一样,直接调用就可以。
Matlab中稍微麻烦一点,需要你找到相应的计算程序,一般都是.m属性的文件,然后保存到后台文件夹中,就相当于你的Matlab里多了一个自定义函数,然后下次使用直接调用这个函数就可以了。
所有计算的方式都是这样,要依靠你去找对应的.m文件,也就是别人上传的自定义函数,这里面包括一些有名的最短路径算法。
Then你就能算出你研究的这个网络的性能,尤其是你需要的一些网络参数,用来评估你的网络good还是very good。
首先到这一步,你会不会,后面你要的所有结果,什么攻击不攻击,随机还是蓄意,说白了就是要不同状态下对应的网络的这些性能参数数值,然后由点连成线,由线形成图。这个图就是你在别人论文里看到的结果。

随机攻击

下一步是什么,下一步就到了攻击你的网络了是吧,先从最简单的随机攻击开始,啥叫随机攻击,就是蒙着眼睛在一堆标有不同记号的球里面瞎几把摸出一颗球,把这个球扔掉。说人话,就是去掉一个节点或边,看你剩下的网络是不是依然“坚挺”——good还是very good还是已经变bad了。
在数学和计算机领域,对“随机”的研究好像是一门可以非常复杂的学问,但是我们不用管,只要找常用的随机函数就可以了,如果,我只是说如果,你想对这个“随机”有想法,比如试一试不同的随机是不是“真正的随机”,那你可以针对这个点好好探讨。
放在Matlab里来说,就是用Matlab里面的函数去随机选出一个点或边,去掉,然后接着算剩下的网络性能,算出来的就是一个结果,这种状态下的一种结果。再说通俗点,就和Excel一样,Excel里面也有随机函数,你也可以用Excel去随机选,但为啥用Matlab去选了,因为听上去好像比较牛掰一点。
再通俗一点,即便你不太懂什么算法、编程,你也能得到一些结果。再再再通俗一点,你实在不会,那你就准备一堆标有不同记号的球,每个球对应一个节点,然后从里面瞎几把摸出一颗球,扔掉,看一下扔掉的是几号球,就对应删掉对应的节点,然后你再算一下你这个网络的性能。
以上就是所谓的随机攻击。

蓄意攻击

也就意味着,只要你知道怎么用Matlab计算网络的相关性能指标,随机攻击就没问题,哪怕程序代码写得跟狗屎一样,但至少你可以用Excel实现同样的操作吧。所谓Matlab编程,就是让这每次删除节点,自动计算网络参数,这套流程更加的“智能”,点击运行,就直接可以导出来几十次迭代(重复)的过程的所有结果,说白了就是稍微智能一点的计算器。
你要是一位写代码的大神,就当我上面说的这些是傻瓜操作;但是,很多时候,我们刚起步时,反而是这些傻瓜操作更靠谱。
接下来我们再说说蓄意攻击,问什么我前面说要是随机攻击能做出结果,蓄意攻击就自然能做得出来,那是因为蓄意攻击太简单了,你不喜欢4这个数字,那你就把节点4从网络中删除,这就是蓄意攻击。“随机”真的是一个非常复杂的词,因为在现有科学理论上,想要实现“完全随机”是个非常难的事情,当然我也是个门外汉,我只知道“完全随机”是个非常复杂的问题。蓄意攻击就根本不用管这个了,你只要自己设计一套规则方案,删除节点或边的方案,作为你的研究的创新点,然后用这套规则方案,去删除节点或边。
删除一次,就计算一下你剩余的网络的性能,也就是一个step,一次迭代,接着删除一次,再计算一下你剩余的网络的性能,就是第二个step,第二次迭代……重复以上过程,直至你说啥时候停止,或者你的网络完全瘫痪(瘫痪成一条直线,可以想象成心电图的直线)。
每次删除后,计算的网络性能参数,就是每一个step,每一次迭代后的结果,最终,点连成线,线汇成图,也就是最终你想要的那个变化图。
至于你问我这个蓄意攻击的攻击方案怎么设计,这个我哪知道,这是你在写自己的论文,我告诉你的话,还是你的原创吗;你问我这个蓄意攻击该怎么加进代码中,退一万步讲,你就准备一堆标有不同记号的球,每个球对应一个节点,然后按照你设计的规则,每次从里面摸出一颗对应的球,扔掉,看一下扔掉的是几号球,就对应删掉对应的节点,然后你再算一下你这个网络的性能。
或者你用计算器和Excel,或者笔算,算出来下一次删除哪个节点,然后“蓄意攻击”。

**

总结

**
只要思想不滑坡,办法总比困难多!
我当时遇到自己一时解决不了的步骤,甚至一度想要试着用穷举法,用Excel函数做出来。
所以,最后的最后,我再提出这个问题——**你的进展到哪一步了?**退一万步问,你会用不同的计算代码算出你的网络的性能指标吗?如果你会,恭喜你,你距离做出结果很近了,如果你不会,那么说明你还需要了解不少东西(已经不是“学不少东西”了,因为很多都是研究网络这个领域常识性的东西)。实在不行,你找淘宝上帮你写代码,你至少知道如何和人家描述你想实现的功能吧。
最后的最后的最后,不能啥都苛求完美,尤其是能力有限,精力有限,时间有限,经费有限的情况下。
以上!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,以下是一个基于负载-容量模型的简单级联失效代码的示例: ```matlab % 假设有三个系统,系统1、系统2和系统3,它们相互依赖,其中系统1是最基础的系统 % 定义每个系统的负载容量 loadCapacity1 = 100; loadCapacity2 = 80; loadCapacity3 = 60; % 定义每个系统的初始负载 load1 = 20; load2 = 30; load3 = 40; % 定义负载-容量模型 loadCapacityModel = [ 0.8 0.9 1; 0.9 0.8 0.9; 0.9 0.9 0.8 ]; % 检查系统1的负载容量是否足够 [isCapacityEnough1, remainingCapacity1] = checkLoadCapacity(loadCapacity1, load1, loadCapacityModel(1,:)); if ~isCapacityEnough1 disp('系统1的负载容量不足!'); return; end % 检查系统2的负载容量是否足够 [isCapacityEnough2, remainingCapacity2] = checkLoadCapacity(loadCapacity2, [load2, remainingCapacity1], loadCapacityModel(2,:)); if ~isCapacityEnough2 disp('系统2的负载容量不足!'); return; end % 检查系统3的负载容量是否足够 [isCapacityEnough3, remainingCapacity3] = checkLoadCapacity(loadCapacity3, [load3, remainingCapacity2], loadCapacityModel(3,:)); if ~isCapacityEnough3 disp('系统3的负载容量不足!'); return; end % 所有系统负载容量都足够,执行业务逻辑 disp('所有系统的负载容量足够!'); ``` 这个示例中,假设有三个系统(系统1、系统2和系统3),它们相互依赖,其中系统1是最基础的系统。每个系统都有自己的负载容量和初始负载。代码首先定义了一个负载-容量模型,其中每个元素表示从一个系统到另一个系统的负载容量比例。然后,代码检查系统1的负载容量是否足够,方法是将系统1的负载容量比例作为参数传递给checkLoadCapacity函数。如果系统1的负载容量足够,则继续检查系统2的负载容量是否足够,方法是将系统1的剩余负载容量作为系统2的负载列表,并将系统1到系统2的负载容量比例作为参数传递给checkLoadCapacity函数。如果系统2的负载容量足够,则继续检查系统3的负载容量是否足够,方法是将系统2的剩余负载容量作为系统3的负载列表,并将系统2到系统3的负载容量比例作为参数传递给checkLoadCapacity函数。如果所有系统的负载容量都足够,则执行业务逻辑。否则,输出错误消息并退出。 需要注意的是,这只是一个简单的示例代码,您需要结合具体的业务场景和需求来编写更加完整和可靠的代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值