无标度网络及MATLAB建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无标度网络
1.简介
传统的随机网络(如ER模型),尽管连接是随机设置的,但大部分节点的连接数目会大致相同,即节点的分布方式遵循钟形的泊松分布,有一个特征性的“平均数”。连接数目比平均数高许多或低许多的节点都极少,随着连接数的增大,其概率呈指数式迅速递减。故随机网络亦称指数网络。
现实世界的网络大部分都不是随机网络,少数的节点往往拥有大量的连接,而大部分节点却很少,一般而言他们符合zipf定律,(也就是80/20马太定律)。人们给具有这种性质的网络起了一个特别的名字——无标度网络。这里的无标度是指网络缺乏一个特征度值(或平均度值),即节点度值的波动范围相当大。
现实中的交通网,电话网和Internet都是无标度网络,在这种网络中,存在拥有大量连接的集散节点。分布满足幂律的无标度网络还具有一个奇特的性质—“小世界”特性。虽然万维网中的页面数已超过80亿,但平均来说,在万维网上只需点击19次超链接,就可从一个网页到达任一其它页面。
无标度网络具有严重的异质性,其各节点之间的连接状况(度数)具有严重的不均匀分布性:网络中少数称之为Hub点的节点拥有极其多的连接,而大多数节点只有很少量的连接。少数Hub点对无标度网络的运行起着主导的作用。从广义上说,无标度网络的无标度性是描述大量复杂系统整体上严重不均匀分布的一种内在性质。
1999 年, Albert、Jeong和Barabs发现万维网网页的度分布不是通常认为的Poisson 分布,而是重尾特征的幂律分布,而且万维网基本上是由少数具有大量超链接的网页串连起来的, 绝大部分网页的链接很少,他们把网络的这个特性称为无标度性(Scale-free nature, SF)。1999 年Barabs和Albert考察了实际网络的生成机制, 发现增长和择优连接是实际网络演化过程的两个基本要素, 他们创造性地构建了能够产生无标度特性的第一个网络模型——BA 模型。
BA 网络主要具有以下特性: 具有幂律度分布, 是一个无标度网络; 具有小世界特征。幂律度分布的重尾特征导致无标度网络中有少数具有大量连接边的中枢点, 择优连接必然产生“富者愈富”的现象。BA 网络同时具有鲁棒性和脆弱性,面对结点的随机失效, 网络具有鲁棒性;但面对蓄意攻击时, 由于中枢点的存在, 网络变得十分脆弱, 很容易陷于瘫痪。
特别地, 网络传染性疾病在无标度网络中不存在传播阈值, 疾病一旦产生就在网络上迅速传播并达到稳定状态。如果没有人为干预, 疾病将在网络中永远存在, 不会自动灭绝。这对制定无标度网络上的网络疾病防控策略提出了重大挑战。
2.BA无标度网络构成原则
( 1) 增长: 网络开始于少数几个结点(初始设定为m0个) , 每个相等时间间隔增加一个新点, 新点与m个(m小于等于m0)不同的已经存在于网络中的旧点相连产生m条新边。
(2)择优连接:新点与旧点i相连的概率P取决于结点i的度数ki。
P =
i
j i k
K
经过t步时间步后,BA模型演化成一个具有N=t+m0个结点mt条边的网络。3.MATLAB建模
function matrix = FreeScale(X)
%By 201121250314
N= X; m0= 3; m= 3;%初始化网络数据
adjacent_matrix = sparse( m0, m0);%初始化邻接矩阵
for i = 1: m0
for j = 1:m0
if j ~= i %去除每个点自身形成的环
adjacent_matrix(i,j) = 1;%建立初始邻接矩阵,3点同均同其他的点相连end
end
end
adjacent_matrix =sparse(adjacent_matrix);%邻接矩阵稀疏化
node_degree = zeros(1,m0+1); %初始化点的度
node_degree(2: m0+1) = sum(adjacent_matrix);%对度维数进行扩展
for iter= 4:N
iter %加点
total_degree = 2*m*(iter- 4)+6;%计算网络中此点的度之和
cum_degree = cumsum(node_degree);%求出网络中点的度矩阵
choose= zeros(1,m);%初始化选择矩阵
% 选出第一个和新点相连接的顶点
r1= rand(1)*total_degree;%算出与旧点相连的概率
for i= 1:iter-1
if (r1>=cum_degree(i))&( r1 choose(1) = i; break end end % 选出第二个和新点相连接的顶点 r2= rand(1)*total_degree; for i= 1:iter-1 if (r2>=cum_degree(i))&(r2 choose(2) = i; break end end while choose(2) == choose(1)%第一个点和第二个点相同的话,重新择优 r2= rand(1)*total_degree; for i= 1:iter-1 if (r2>=cum_degree(i))&(r2 choose(2) = i; break end end end % 选出第三个和新点相连接的顶点 r3= rand(1)*total_degree; for i= 1:iter-1 if (r3>=cum_degree(i))&(r3 choose(3) = i; break end end while (choose(3)==choose(1))|(choose(3)==choose(2)) r3= rand(1)*total_degree; for i=1:iter-1 if (r3>=cum_degree(i))&(r3 choose(3) = i; break end end end %新点加入网络后, 对邻接矩阵进行更新 for k = 1:m adjacent_matrix(iter,choose(k)) = 1; adjacent_matrix(choose(k),iter) = 1; end node_degree=zeros(1,iter+1); node_degree(2:iter+1) = sum(adjacent_matrix); end matrix = adjacent_matrix; 输入FreeScale(50),可建立一个初始结点为3,最终结点为50的无标度网络,用tu_plot()画图可得到网络建模图形。