sql 孩子兄弟表示法 所有子节点_matlab实现随机+蓄意攻击网络节点(1)

再次更新:
有同学反馈说:网络效率的函数可能有点问题。可以试试这个网络效率函数,对应的部分改一下就可以了。
还有最大连通子图比例函数:最大连通子图比例函数,经小伙伴反应,这个函数可能有些问题,可以使用如下函数:

function  Max_sub_num = maxSub(A)

%% 初始化***
N = size(A,1);

% 调用components函数,返回子网络个数以及每个节点所属的子网络号
[ci, sizes] = components(sparse(A));   %% 返回的ci反应的是每个节点所属的子网络号;
%  sizes是一个数组值是对应子网络的节点数
sub_num  = max(ci);          
Max_sub_num = max(sizes);     %% 最大子网节点个数
end

该函数所涉及的工具包下载地址:

提取码uiud​pan.baidu.com

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

常见的指标有:最大连通子图比例、网络效率、平均距离等等
这三个指标是不同的,但是实现随机攻击与蓄意攻击的原理是相同的,这里以按照节点度攻击的网络效率变化为例(其他两个指标就是函数不同,想按照其他节点重要度排序指标,也是类似的,只需要按照想要的排序方法得出节点的排序即可)。就是按照节点的重要性排序,通过循环来删除节点。把临界矩阵中节点对应的行和列先置0,然后再删除。每删除一次节点,就生成了一个新的邻接矩阵,然后每一次都通过testEglob函数计算出当前的网络效率值

首先需要准备的数据如下:

​ 网络的邻接矩阵,节点度的排序(从大到小排名,度大的排名靠前)。

节点度的排名要按照节点的编号排序,下图是一个简单的例子,建议先在Excel中排列好了,然后再复制到Matlab中转置一下保存为mat文件就可以了。

32fbe91e9d187b4e6252d7319099c81f.png
例子

对应GitHub工程地址:内含函数文件+测试文件,下载即可直接运行。

工程地址​github.com

具体代码如下:

主函数: testRandom(命名随意。。。) 作用:原理挺简单的,就是通过循环来删除节点。把临界矩阵中节点对应的行和列先置0,然后再删除。每删除一次节点,就生成了一个新的邻接矩阵,然后每一次都通过testEglob函数计算出当前的网络效率值。

部分代码如下:

% 蓄意攻击:按照节点重要性顺序,一次攻击一个节点

%  按照 Degree 算法排序,删除节点
A = A_Init;          %% 网络邻接矩阵 A
B=[];                %%定义空数组,接收被删除的节点序号
for i = 1:NumDelete
    A( Name_Struct.Node_Key_Degree(i),: ) = 0;     %% 删除节点 Node_Key_Degree(i),用 0 占位,不能置空
    A( :,Name_Struct.Node_Key_Degree(i) ) = 0;
    AA = A;
    AA( sum(A)==0,: ) = [];
    AA( :,sum(A)==0 ) = [];
    B(i) = Name_Struct.Node_Key_Degree(i);
    Con_Index_NetEff = testEglob( AA );

    Eglob(i) = Con_Index_NetEff.Net_Eff_Mymod;

end          

%%
%接下来就是生成网络连通效率图
%Eglob存储了相应的网络效率的数值

正常情况下,一次随机攻击并不能说明什么,一次随机攻击的数据也并不可靠,所以需要多次的随机攻击之后取平均值,这样得出的数据才更具有说服力,下一篇将介绍如何实现,敬请期待。

邢八宝:matlab实现随机+蓄意攻击网络节点(2)​zhuanlan.zhihu.com

希望对大家有所帮助,有任何疑问欢迎与我交流,谢谢你的时间。也欢迎大家加入

复杂网络交流群​raw.githubusercontent.com

给大家推荐一个非常好的科研网站,可以使用免费Web of Science、zhi网、IEEE、EI等账号。亲测好用。这个网站拥有众多的数据库,法律的、医学的、工科的,等等。【亲测好用!】2020中国知网免费入口_知网免费账号_Web of Science免费入口 - 80图书馆

本篇文章首发于:XuXing's Blog

https://xuxing0430.github.io/​xuxing0430.github.io

欢迎关注我的专栏:

复杂网络研究​zhuanlan.zhihu.com
a728a1a7fc3e629d632d7398437052e7.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值