1.算法仿真效果 matlab2022a仿真结果如下:
2.算法涉及理论知识概要 1.随机网络(random network)
2.无标度网络 (scale-free network)
3.小世界 network
4.NS小世界network
首先,通过随机攻击和刻意攻击对上述几种传统的网络模型进行攻击测试,分析其相应的鲁棒性,主要分析网络的各种性能指标的稳定性,
然后,提出一种改进型的网络结构模型,并进行随机攻击和刻意攻击测试,分析其鲁棒性。
最后,将提出的改进模型应用到实际场景中,解决具体的实际问题。
1.无标度网络
无标度网络具有严重的异质性,其各节点之间的连接状况(度数)具有严重的不均匀分布性:网络中少数称之为Hub点的节点拥有极其多的连接,而大多数节点只有很少量的连接。少数Hub点对无标度网络的运行起着主导的作用。从广义上说,无标度网络的无标度性是描述大量复杂系统整体上严重不均匀分布的一种内在性质。
scale - free network, 现实世界的网络大部分都不是随机网络,少数的节点往往拥有大量的连接,而大部分节点却很少,一般而言他们符合zipf定律,(也就是80/20马太定律)。将度分布符合幂律分布的复杂网络称为无标度网络。
2.小世界网络
我们需要了解小世界网络是一种数学图。在这种图中,绝大多数节点之间并不相邻,但任一给定节点的邻居们却很可能彼此相邻,并且大多数任意节点,都可以用较少的步或跳跃访问到其他节点。在社交网络中,这种网络属性意味着一些彼此并不相识的人,可以通过一条很短的熟人链条被联系在一起,这也就是小世界现象。许多经验网络图都展示出了小世界现象,例如社交网络、互联网的底层架构、诸如Wikipedia的百科类网站以及基因网络等等。
3.NS小世界网络
小世界网络的概念是随着对复杂网络的研究而出现的。“网络”其实就是数学中图论研究的图,由一群顶点以及它们之间所连的边构成。在网络理论中则换一套说法,用“节点”代替“顶点”,用“链接”代替“边”。复杂网络的概念,是用来描述由大量节点以及这些节点之间错综复杂的联系所构成的网络。这样的网络会出现在简单网络中没有的特殊拓扑特性。
自二十世纪60年代开始,对复杂网络的研究主要集中在随机网络上。随机网络,又称随机图,是指通过随机过程制造出的复杂网络。最典型的随机网络是保罗·埃尔德什和阿尔弗雷德·雷尼提出的ER模型。ER模型是基于一种“自然”的构造方法:假设有{\displaystyle n}个节点,并假设每对节点之间相连的可能性都是常数{\displaystyle 0<p<1}。这样构造出的网络就是ER模型网络。科学家们最初使用这种模型来解释现实生活中的网络。
3.MATLAB核心程序
adjmatrix = sparse(Size1,Size1);
for i=1:Size1
for j=1:Size1
if j~=i
adjmatrix(i,j) = 1;
end
end
end
adjmatrix = sparse(adjmatrix);
%定义节点度
Ddegree = zeros(1,Size1+1) ;
for p = 2:Size1+1
Ddegree(p) = sum(adjmatrix(1:Size1,p-1));
end
for Js = Size1+1:Num
%迭代之前的网络各个节点的度数之和
total_degree = 2*Size2*(Js-4)+6;
cum_degree = cumsum(Ddegree/total_degree);
choose = zeros(1,Size2);
%第一个和新点相连接点
r1 = rand();
choose(1) = min(find((cum_degree>=r1)==1));
%第二个和新点相连接点
r2 = rand();
choose(2) = min(find((cum_degree>=r2)==1));
while choose(2)==choose(1)
r2 = rand();
choose(2) = min(find((cum_degree>=r2)==1)) ;
end
%第三个和新点相连接点
r3 = rand();
choose(3) = min(find((cum_degree>=r3)==1));
while(choose(3)==choose(1))|(choose(3)==choose(2))
r3 = rand();
choose(3) = min(find((cum_degree>=r3)==1));
end
%第四个和新点相连接点
r4 = rand();
choose(4) = min(find((cum_degree>=r4)==1));
while(choose(4)==choose(1))|(choose(4)==choose(2))|(choose(4)==choose(3))
r4 = rand();
choose(4) = min(find((cum_degree>=r4)==1));
end
for k=1:Size2
adjmatrix(Js,choose(k)) = 1;
adjmatrix(choose(k),Js) = 1;
end
Ddegree = zeros(1,Js+1);
Ddegree(2:Js+1) = sum(adjmatrix);
end
%稀疏矩阵转换为标准矩阵
matrix = full(adjmatrix);