课题:WS小世界网络模型构造姓名赵训学号 2班级计算机实验班一、WS 小世界网络简介1998年, Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型。
实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径) 和聚类特性(较大的聚类系数) 。
传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而ER 随机网络具有小世界特性但却没有高聚类特性。
因此这两种传统的网络模型都不能很好的来表示实际的真实网络。
Watts 和Strogatz建立的WS小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。
二、WS小世界模型构造算法1、从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。
2、随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。
其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。
在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p的值就可以控制从完全规则网络到完全随机网络的过渡,如图a所示。
图a相应程序代码(使用Matlab实现)ws_net.m (位于“代码”文件夹内)function ws_net()disp('WS小世界网络模型')N=input('请输入网络节点数');K=input('请输入与节点左右相邻的K/2的节点数');p=input('请输入随机重连的概率');angle=0:2*pi/N:2*pi-2*pi/N;x=100*cos(angle);y=100*sin(angle);plot(x,y,'r.','Markersize',30);hold on;%生成最近邻耦合网络;A=zeros(N);for i=1:Nif i+K<=Nfor j=i+1:i+KA(i,j)=1;endelsefor j=i+1:NA(i,j)=1;endfor j=1:((i+K)-N)A(i,j)=1;endendif K<ifor j=i-K:i-1A(i,j)=1;endelsefor j=1:i-1A(i,j)=1;endfor j=N-K+i:NA(i,j)=1;endendenddisp(A);%随机化重连for i=1:Nfor j=i+1:Nif A(i,j)==1pp=unifrnd(0,1);if pp<=pA(i,j)=0;A(j,i)=0;b=unidrnd(N);while i==bb=unidrnd(N); endA(i,b)=1;A(b,i)=1;endendend%根据邻接矩阵连线for i=1:Nfor j=1:Nif A(i,j)==1plot([x(i),x(j)],[y(i),y(j)],'linewidth',1); hold on;endendendhold offaver_path=aver_pathlength(A);disp(aver_path);对应输出(取网络节点数N=16,K=2;p分别取0,0.1,1)。
p=0(ws_n=16_k=2_p=0.fig的截图)P=0.1(ws_n=16_k=2_p=0.1.fig的截图)p=1(ws_n=16_k=2_p=1.fig的截图)输出结果与图a(图a位于第2页)吻合。
三、WS小世界网络模型平均路径长度L(p)与聚类系数C(p)归一化图平均路径长度平均路径长度也称为特征路径长度或平均最短路径长度,指的是一个网络中两点之间最短路径长度(或称距离)的平均值。
从一个节点s i出发,经过与它相连的节点,逐步“走”到另一个节点s j所经过的路途,称为两点间的路径。
其中最短的路径也称为两点间的距离,记作。
而平均路径长度定义为:这其中N是节点数目,并定义节点到自身的最短路径长度为0。
如果不计算到自身的距离,那么平均路径长度的定义就变成:集聚系数集聚系数(也称群聚系数、集群系数)是用来描述图或网络中的顶点(节点)之间结集成团的程度的系数。
具体来说,是一个点的邻接点之间相互连接的程度。
例如在社交网络中,你的朋友之间相互认识的程度。
一个节点s i的集聚系数C(i) 等于所有与它相连的顶点相互之间所连的边的数量,除以这些顶点之间可以连出的最大边数。
显然C(i) 是一个介于0与1之间的数。
C(i) 越接近1,表示这个节点附近的点越有“抱团”的趋势。
介于随机与规则之间对于纯粹的规则网络,当其中连接数量接近饱和时,集聚系数很高,平均路径长度也十分短。
例如完全耦合网络,每两个节点之间都相连,所以集聚系数是1,平均路径长度是1。
然而,现实中的复杂网络是稀疏的,连接的个数只是节点数的若干倍(),远远不到饱和。
如果考虑将节点排列成正多边形,每各节点都只与距离它最近的 2K个节点相连,那么在K比较大时,其集聚系数为:虽然能保持高集聚系数,但平均路径长度为:平均路径长度与节点数成正比。
纯粹的随机网络(如ER随机网络模型)有着很小的平均路径长度,但同时集聚系数也很小。
可是现实中的不少网络虽然有很小的平均路径长度,但却也有着比随机网络高出相当多的集聚系数。
因此瓦茨和斯特罗加茨认为,现实中的复杂网络是一种介于规则网络和随机网络之间的网络。
他们把这种特性称为现实网络的小世界特性,就是:1.有很小的平均路径长度:在节点数N很大时,平均路径长度近似于2.有很高的集聚系数:集聚系数大约和规则网络在同一数量级,远大于随机网络的集聚系数。
图bWS模型的集聚系数C(红色)与平均路径长度L(蓝色)随p变化的图像相应程序代码(使用Matlab实现)ws.m (位于“代码”文件夹内)clc;clear all;format long;n=1000;k=5;L=zeros(14,20);C=zeros(14,20);for i=1:14p(15-i,1)=1/2^(i-1);end% p=zeros(1,14);% p1=zeros(14,20);% LWS=zeros(14,1);% CWS=zeros(14,1);%%生成最近邻耦合网络A=zeros(n);for i=1:nfor j=i+1:i+kjj=j;if j>njj=mod(j,n);endA(i,jj)=1; A(jj,i)=1;endend%%计算平均路径长度L(0)D1=A;D1(find(D1==0))=inf; %将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0.for i=1:nD1(i,i)=0;endm=1;while m<=n %Floyd算法求解任意两点的最短距离for i=1:nfor j=1:nif D1(i,j)>D1(i,m)+D1(m,j)D1(i,j)=D1(i,m)+D1(m,j);endendendm=m+1;endL0=sum(sum(D1))/(n*(n-1)); %平均路径长度%%计算聚类系数C(0)Ci0=zeros(n,1);for i=1:naa1=find(D1(i,:)==1); %寻找子图的邻居节点if isempty(aa1)Ci0(i)=0;elsem1=length(aa1);if m1==1Ci0(i)=0;elseB1=D1(aa1,aa1); % 抽取子图的邻接矩阵Ci0(i)=length(find(B1==1))/(m1*(m1-1));endendendC0=mean(Ci0);for z=1:14% p(z)=1/2^(z-1);for g=1:20%%生成最近邻耦合网络B=zeros(n);for i=1:nfor j=i+1:i+kjj=j;if j>njj=mod(j,n);endB(i,jj)=1; B(jj,i)=1;endend%随机化重连% for i=1:n% p_rand=rand(1,1);% b=find(B(i,:)==1);% for j=1:length(b)% j1=b(j);% if p_rand<p(z,1) %% 生成的随机数小于p,则边进行随机化重连,否则,边不进行重连% B(i,j1)=0;B(j1,i)=0;% bb=randint(1,1,[1,n]);% if B(i,bb)==0&&B(bb,i)==0&&bb~=i %重连条件% B(i,bb)=1;B(bb,i)=1;% end% end% end% endfor i=1:nfor j=1:kp_rand=rand(1,1);if p_rand<p(z,1)bb=randint(1,1,[1,n]);if B(i,bb)==0&&B(bb,i)==0&&bb~=i %重连条件j2=j+i;if j2>nj2=mod(j2,n);endB(i,j2)=0;B(j2,i)=0;B(i,bb)=1;B(bb,i)=1;endendendend%%计算平均路径长度aver_L% n1=size(A,2);D=B;D(find(D==0))=inf; %将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0.for i=1:nD(i,i)=0;endm2=1;while m2<=n %Floyd算法求解任意两点的最短距离for i=1:nfor j=1:nif D(i,j)>D(i,m2)+D(m2,j)D(i,j)=D(i,m2)+D(m2,j);endendendm2=m2+1;end% if length(infline)>0% D(infline,:)=[];% D(:,infline)=[];% n2=size(D,2);% L(z,g)=sum(sum(D))/(n2*(n2-1));%求出平均路径% elseL(z,g)=sum(sum(D))/(n*(n-1));%求出平均路径% end%%计算聚类系数aver_CCi=zeros(n,1);for i=1:naa=find(D(i,:)==1); %寻找子图的邻居节点if isempty(aa)Ci(i)=0;elsem3=length(aa);if m3==1Ci(i)=0;elseBB=D(aa,aa); % 抽取子图的邻接矩阵Ci(i)=length(find(BB==1))/(m3*(m3-1));endendendC(z,g)=mean(Ci);endendfigureLWS=mean(L,2);CWS=mean(C,2);semilogx(p,LWS/L0,'ro');hold on;semilogx(p,CWS/C0,'b*');对应输出(ws.fig的截图)与图b(图b位于第7页)吻合四、结论在网络理论中,小世界网络是一类特殊的复杂网络结构,在这种网络中大部份的节点彼此并不相连,但绝大部份节点之间经过少数几步就可到达(本文只讨论WS小世界模型)。