当前位置:文档之家› 无标度网络及MATLAB建模

无标度网络及MATLAB建模

无标度网络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 =ij i kK经过t步时间步后,BA模型演化成一个具有N=t+m0个结点mt条边的网络。

3.MATLAB建模function matrix = FreeScale(X)%By 201121250314N= X; m0= 3; m= 3;%初始化网络数据adjacent_matrix = sparse( m0, m0);%初始化邻接矩阵for i = 1: m0for j = 1:m0if j ~= i %去除每个点自身形成的环adjacent_matrix(i,j) = 1;%建立初始邻接矩阵,3点同均同其他的点相连endendendadjacent_matrix =sparse(adjacent_matrix);%邻接矩阵稀疏化node_degree = zeros(1,m0+1); %初始化点的度node_degree(2: m0+1) = sum(adjacent_matrix);%对度维数进行扩展for iter= 4:Niter %加点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-1if (r1>=cum_degree(i))&( r1<cum_degree(i+1))%选取度大的点choose(1) = i;breakendend% 选出第二个和新点相连接的顶点r2= rand(1)*total_degree;for i= 1:iter-1if (r2>=cum_degree(i))&(r2<cum_degree(i+1))choose(2) = i;breakendendwhile choose(2) == choose(1)%第一个点和第二个点相同的话,重新择优r2= rand(1)*total_degree;for i= 1:iter-1if (r2>=cum_degree(i))&(r2<cum_degree(i+1))choose(2) = i;breakendendend% 选出第三个和新点相连接的顶点r3= rand(1)*total_degree;for i= 1:iter-1if (r3>=cum_degree(i))&(r3<cum_degree(i+1))choose(3) = i;breakendendwhile (choose(3)==choose(1))|(choose(3)==choose(2))r3= rand(1)*total_degree;for i=1:iter-1if (r3>=cum_degree(i))&(r3<cum_degree(i+1))choose(3) = i;breakendendend%新点加入网络后, 对邻接矩阵进行更新for k = 1:madjacent_matrix(iter,choose(k)) = 1;adjacent_matrix(choose(k),iter) = 1;endnode_degree=zeros(1,iter+1);node_degree(2:iter+1) = sum(adjacent_matrix);endmatrix = adjacent_matrix;输入FreeScale(50),可建立一个初始结点为3,最终结点为50的无标度网络,用tu_plot()画图可得到网络建模图形。

而初始结点为3,最终结点为60的无标度网络图形如下4.分析无标度特性的发现突破了随机网络模型的束缚,使我们认识到各种复杂系统的网络结构,都遵从某些基本的法则,使我们看到了研究系统网络结构的普适规律的可能。

它也使我们可能以复杂网络的拓扑特性研究为切入点,深入开展系统结构的研究。

在实验中我们发现,对于结点数目越大的网络,无标度的现象越明显。

附:tu_plot()的MATLAB程序function tu_plot(rel,control)%由邻接矩阵画连接图,输入为邻接矩阵rel,必须为方阵;%control为控制量,0表示画出的图为无向图,1表示有向图。

默认值为0r_size=size(rel);%a=size(x)返回的是一个行向量,该行向量第一个元素是%x的行数,第2个元素是x的列数if nargin<2 %nargin是用来判断输入变量个数的函数control=0; %输入变量小于2,即只有一个,就默认control为0endif r_size(1)~=r_size(2)%行数和列数不相等,不是方阵,不予处理disp('Wrong Input! The input must be a square matrix!');return;endlen=r_size(1);rho=10;%限制图尺寸的大小r=2/1.05^len;%点的半径theta=0:(2*pi/len):2*pi*(1-1/len);[pointx,pointy]=pol2cart(theta',rho);theta=0:pi/36:2*pi;[tempx,tempy]=pol2cart(theta',r);point=[pointx,pointy];hold onfor i=1:lentemp=[tempx,tempy]+[point(i,1)*ones(length(tempx),1),point(i,2)*ones( length(tempx),1)];plot(temp(:,1),temp(:,2),'r');text(point(i,1)-0.3,point(i,2),num2str(i));%画点endfor i=1:lenfor j=1:lenif rel(i,j)link_plot(point(i,:),point(j,:),r,control); %连接有关系的点endendendset(gca,'XLim',[-rho-r,rho+r],'YLim',[-rho-r,rho+r]);axis offfunction link_plot(point1,point2,r,control)%连接两点temp=point2-point1;if (~temp(1))&&(~temp(2))return;%不画子回路endtheta=cart2pol(temp(1),temp(2));[point1_x,point1_y]=pol2cart(theta,r);point_1=[point1_x,point1_y]+point1;[point2_x,point2_y]=pol2cart(theta+(2*(theta<pi)-1)*pi,r);point_2=[point2_x,point2_y]+point2;if controlarrow(point_1,point_2);elseplot([point_1(1),point_2(1)],[point_1(2),point_2(2)]); end电子科技大学空天科学研究院 112 B05。

相关主题