小世界网络简介及及MATLAB建模_第1页
小世界网络简介及及MATLAB建模_第2页
小世界网络简介及及MATLAB建模_第3页
小世界网络简介及及MATLAB建模_第4页
小世界网络简介及及MATLAB建模_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、小世界网络MATLAB建模1.简介 小世界网络存在于数学、物理学和社会学中,是一种数学图的模型。在这种图中大部份的结点不与彼此邻接,但大部份结点可以通过任一其它节点经少数几步就可以产生联系。若将一个小世界网络中的点代表一个人,而联机代表人与人之间是相互认识的,则这小世界网络可以反映陌生人通过彼此共同认识的人而起来产生联系关系的小世界现象。 在日常生活中,有时你会发现,某些你觉得与你隔得很“遥远”的人,其实与你“很近”。小世界网络就是对这种现象的数学描述。用数学中图论的语言来说,小世界网络就是一个由大量顶点构成的图,其中任意两点之间的平均路径长度比顶点数量小得多。除了社会人际网络以外,小世界网络

2、的例子在生物学、物理学、计算机科学等领域也有出现。许多经验中的图可以用小世界网络来作为模型。因特网、公路交通网、神经网络都呈现小世界网络的特征。 小世界网络最早是由邓肯·瓦茨(Duncan Watts)和斯蒂文·斯特罗加茨(Steven Strogatz)在1998年引进的,将高聚合系数和低平均路径长度作为特征,提出了一种新的网络模型,一般就称作瓦茨-斯特罗加茨模型(WS模型),这也是最典型的小世界网络的模型。 由于WS小世界模型构造算法中的随机化过程有可能破坏网络的连通性,纽曼(Newman)和瓦茨(Watts)提出了NW小世界网络模型,该模型是通过用“随机化加边”模式来

3、取代WS小世界网络模型构造中的“随机化重连”。 在考虑网络特征的时候,使用两个特征来衡量网络: 特征路径长度和聚合系数。 特征路径长度(characteristic path length):在网络中,任选两个节点,连同这两个节点的最少边数,定义为这两个节点的路径长度,网络中所有节点对的路径长度的平均值,定义为网络的特征路径长度。这是网络的全局特征。 聚合系数(clustering coefficient):假设某个节点有k个边,则这k条边连接的节点之间最多可能存在的边的个数为k(k-1)/2,用实际存在的边数除以最多可能存在的边数得到的分数值,定义为这个节点的聚合系数。所有节点的聚合系数的均

4、值定义为网络的聚合系数。聚合系数是网络的局部特征,反映了相邻两个人之间朋友圈子的重合度,即该节点的朋友之间也是朋友的程度。 我们可以发现规则网络具有很高的聚合系数,大世界(large world,意思是特征路径长度很大),其特征路径长度随着n(网络中节点的数量)线性增长,而随机网络聚合系数很小,小世界(small world,意思是特征路径长度小),其特征路径长度随着log(n)增长中说明,在从规则网络向随机网络转换的过程中,实际上特征路径长度和聚合系数都会下降,到变成随机网络的时候,减少到最少。但这并不是说大的聚合系数一定伴随着大的路径长度,而小的路径长度伴随着小的聚合系数,小世界网络就具有

5、大的聚合系数,而特征路径长度很小。试验表明,少量的short cut的建立能够迅速减少特征路径长度,而聚合系数变化却不大,因为某一个short cut的建立,不仅影响到所连接的节点的特征路径长度,而且影响到他们邻居的路径长度,而对整个网络的聚合系数影响不大。这样,少量的short cut的建立就能使整个网络不知不觉地变成小世界网络。 实际的社会、生态、等网络都是小世界网络,在这样的系统里,信息传递速度快,并且少量改变几个连接,就可以剧烈地改变网络的性能,如对已存在的网络进行调整,如蜂窝电话网,改动很少几条线路,就可以显著提高性能。 2.小世界网络构成原则 WS小世界网络的构成原则为:从一个环状

6、的规则网络开始,网络含有N个结点,每个结点向与它最近邻的K个结点连出K条边,并满足N>>K>>In(N)>>1。随后进行随机化重连,以概率p随机地重新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。这样就会产生pNK/2条长程的边把一个结点和远处的结点联系起来。改变p值可以实现从规则网络(p=0)向随机网络(p=1)转变。 NW小世界网络的构成原则为:从一个环状的规则网络开始,网络含有N个结点,每个结点向与它最近邻的K个结点连出K条边

7、,并满足N>>K>>In(N)>>1。随后进行随机化加边,以概率p在随机选取的一对节点之间加上一条边。其中,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。改变p值可以实现从最近邻耦合网络(p=0)向全局耦合网络(p=1)转变。在p足够小和N足够大时,NW小世界模型本质上等同于WS小世界模型。 3.MATLAB建模 建立一个初始节点数为20的NW网络。MATLAB程序如下: function matrix = SW() %By 201121250314 tic N=20;m=4;% 初始化网络数据 p=0.1;% 以概率p=0.1

8、在随机选取的一对结点之间加上一条边 matrix=sparse(,20,20,0);% 创建一个20*20的全0稀疏矩阵 %建立初始的环状的规则网络 %结点网络有N个节点 %每个结点向与它最近邻的m个结点连出边 %求出邻接矩阵 for i=m+1:N-m for j=i-m:i+m matrix(i,j)=1; end end for i=1:m for j=1:i+m matrix(i,j)=1; end end for i=N-m+1:N for j=i-m:N matrix(i,j)=1; end end for i=1:m for j=N-m+i:N matrix(i,j)=1;mat

9、rix(j,i)=1; end end %逆时针的边重连,从节点到N-m-1 for i=1:N-m-1 for j=i+1:i+m r=rand(1);% 随机选取一个数 if r<=p unconect=find(matrix(i,:)=0);% 取出邻接矩阵中的非0元素位置 M=length(unconect);% 求出非0元素个数 r1=ceil(M*rand(1);% 正向取整 matrix(i,unconect(r1)=1; matrix(unconect(r1),i)=1;% 连接这一对点 %matrix(i,j)=0; matrix(j,i)=0;% 加上这个是SW小世界

10、网络 end end end %逆时针的边重新连接,从节点N-m到N-1 for i=N-m+1:N-1 for j=i+1:N 1:i- N+m r=rand(1); if r<=p unconect=find(matrix(i,:)=0); r1=ceil(length(unconect)*rand(1); matrix(i,unconect(r1)=1; matrix(unconect(r1),i)=1; %matrix(i,j)=0;matrix(j,i)=0; end end end %逆时针的边重新连接,节点N for i=N for j=1:m r=rand(1); if

11、r<=p unconect=find(matrix(i,:)=0); r1=ceil(length(unconect)*rand(1); matrix(i,unconect(r1)=1; matrix(unconect(r1),i)=1; matrix(i,j)=0;matrix(j,i)=0; end end end %恢复小世界网络的邻接矩阵 for m=1:N matrix(m,m)=0;% 去掉自身节点形成的环 end %存储邻接矩阵 %save data matrix; toc %计算程序耗时 end 上述程序建立了一个NW小世界网络,求出了其邻接矩阵,用tu_plot()函数

12、画出邻接矩阵的图,就得出了该小世界网络的图形。 function tu_plot(rel,control) %由邻接矩阵画连接图,输入为邻接矩阵rel,必须为方阵; %control为控制量,0表示画出的图为无向图,1表示有向图。默认值为0 r_size=size(rel);%a=size(x)返回的是一个行向量,该行向量第一个元素是 %x的行数,第2个元素是x的列数 if nargin<2 %nargin是用来判断输入变量个数的函数 control=0; %输入变量小于2,即只有一个,就默认control为0 end if r_size(1)=r_size(2)%行数和列数不相等,不是

13、方阵,不予处理 disp('Wrong Input! The input must be a square matrix!'); return; end len=r_size(1); rho=10;%限制图尺寸的大小 r=2/1.05len;%点的半径 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 on for i

14、=1:len temp=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);%画点 end for i=1:len for j=1:len if rel(i,j) link_plot(point(i,:),point(j,:),r,control); %连接有关系的点 end end end set(gca,'XLim&#

15、39;,-rho-r,rho+r,'YLim',-rho-r,rho+r); axis off function link_plot(point1,point2,r,control)%连接两点 temp=point2-point1; if (temp(1)&&(temp(2) return;%不画子回路 end theta=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*(thet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论