WS小世界网络模型构造实践报告.docx
《WS小世界网络模型构造实践报告.docx》由会员分享,可在线阅读,更多相关《WS小世界网络模型构造实践报告.docx(14页珍藏版)》请在冰豆网上搜索。
![WS小世界网络模型构造实践报告.docx](https://file1.bdocx.com/fileroot1/2023-1/4/711c6678-2313-4bc0-9a20-604c94cf0e1b/711c6678-2313-4bc0-9a20-604c94cf0e1b1.gif)
WS小世界网络模型构造实践报告
课题:
WS小世界网络模型构造
姓名赵训
学号************
班级计算机实验班
一、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(位于“代码”文件夹内)
functionws_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);
holdon;
%生成最近邻耦合网络;
A=zeros(N);
disp(A);
fori=1:
N
ifi+K<=N
forj=i+1:
i+K
A(i,j)=1;
end
else
forj=i+1:
N
A(i,j)=1;
end
forj=1:
((i+K)-N)
A(i,j)=1;
end
end
ifK
forj=i-K:
i-1
A(i,j)=1;
end
else
forj=1:
i-1
A(i,j)=1;
end
forj=N-K+i:
N
A(i,j)=1;
end
end
end
disp(A);
%随机化重连
fori=1:
N
forj=i+1:
N
ifA(i,j)==1
pp=unifrnd(0,1);
ifpp<=p
A(i,j)=0;
A(j,i)=0;
b=unidrnd(N);
whilei==b
b=unidrnd(N);
end
A(i,b)=1;
A(b,i)=1;
end
end
end
end
%根据邻接矩阵连线
fori=1:
N
forj=1:
N
ifA(i,j)==1
plot([x(i),x(j)],[y(i),y(j)],'linewidth',1);
holdon;
end
end
end
holdoff
aver_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)归一化图
平均路径长度
平均路径长度也称为特征路径长度或平均最短路径长度,指的是一个网络中两点之间最短路径长度(或称距离)的平均值。
从一个节点si出发,经过与它相连的节点,逐步“走”到另一个节点sj所经过的路途,称为两点间的路径。
其中最短的路径也称为两点间的距离,记作
。
而平均路径长度定义为:
这其中N是节点数目,并定义节点到自身的最短路径长度为0。
如果不计算到自身的距离,那么平均路径长度的定义就变成:
集聚系数
集聚系数(也称群聚系数、集群系数)是用来描述图或网络中的顶点(节点)之间结集成团的程度的系数。
具体来说,是一个点的邻接点之间相互连接的程度。
例如在社交网络中,你的朋友之间相互认识的程度。
一个节点si的集聚系数C(i)等于所有与它相连的顶点相互之间所连的边的数量,除以这些顶点之间可以连出的最大边数。
显然C(i)是一个介于0与1之间的数。
C(i)越接近1,表示这个节点附近的点越有“抱团”的趋势。
介于随机与规则之间
对于纯粹的规则网络,当其中连接数量接近饱和时,集聚系数很高,平均路径长度也十分短。
例如完全耦合网络,每两个节点之间都相连,所以集聚系数是1,平均路径长度是1。
然而,现实中的复杂网络是稀疏的,连接的个数只是节点数的若干倍(
),远远不到饱和。
如果考虑将节点排列成正多边形,每各节点都只与距离它最近的2K个节点相连,那么在K比较大时,其集聚系数为:
虽然能保持高集聚系数,但平均路径长度为:
平均路径长度与节点数成正比。
纯粹的随机网络(如ER随机网络模型)有着很小的平均路径长度,但同时集聚系数也很小。
可是现实中的不少网络虽然有很小的平均路径长度,但却也有着比随机网络高出相当多的集聚系数。
因此瓦茨和斯特罗加茨认为,现实中的复杂网络是一种介于规则网络和随机网络之间的网络。
他们把这种特性称为现实网络的小世界特性,就是:
1.有很小的平均路径长度:
在节点数N很大时,平均路径长度近似于
2.有很高的集聚系数:
集聚系数大约和规则网络在同一数量级,远大于随机网络的集聚系数。
图b
WS模型的集聚系数C(红色)与平均路径长度L(蓝色)随p变化的图像
相应程序代码(使用Matlab实现)
ws.m(位于“代码”文件夹内)
clc;
clearall;
formatlong;
n=1000;
k=5;
L=zeros(14,20);
C=zeros(14,20);
fori=1:
14
p(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);
fori=1:
n
forj=i+1:
i+k
jj=j;
ifj>n
jj=mod(j,n);
end
A(i,jj)=1;A(jj,i)=1;
end
end
%%计算平均路径长度L(0)
D1=A;
D1(find(D1==0))=inf;%将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0.
fori=1:
n
D1(i,i)=0;
end
m=1;
whilem<=n%Floyd算法求解任意两点的最短距离
fori=1:
n
forj=1:
n
ifD1(i,j)>D1(i,m)+D1(m,j)
D1(i,j)=D1(i,m)+D1(m,j);
end
end
end
m=m+1;
end
L0=sum(sum(D1))/(n*(n-1));%平均路径长度
%%计算聚类系数C(0)
Ci0=zeros(n,1);
fori=1:
n
aa1=find(D1(i,:
)==1);%寻找子图的邻居节点
ifisempty(aa1)
Ci0(i)=0;
else
m1=length(aa1);
ifm1==1
Ci0(i)=0;
else
B1=D1(aa1,aa1);%抽取子图的邻接矩阵
Ci0(i)=length(find(B1==1))/(m1*(m1-1));
end
end
end
C0=mean(Ci0);
forz=1:
14
%p(z)=1/2^(z-1);
forg=1:
20
%%生成最近邻耦合网络
B=zeros(n);
fori=1:
n
forj=i+1:
i+k
jj=j;
ifj>n
jj=mod(j,n);
end
B(i,jj)=1;B(jj,i)=1;
end
end
%随机化重连
%fori=1:
n
%p_rand=rand(1,1);
%b=find(B(i,:
)==1);
%forj=1:
length(b)
%j1=b(j);
%ifp_rand
%B(i,j1)=0;B(j1,i)=0;
%bb=randint(1,1,[1,n]);
%ifB(i,bb)==0&&B(bb,i)==0&&bb~=i%重连条件
%B(i,bb)=1;B(bb,i)=1;
%end
%end
%end
%end
fori=1:
n
forj=1:
k
p_rand=rand(1,1);
ifp_rand
bb=randint(1,1,[1,n]);
ifB(i,bb)==0&&B(bb,i)==0&&bb~=i%重连条件
j2=j+i;
ifj2>n
j2=mod(j2,n);
end
B(i,j2)=0;
B(j2,i)=0;
B(i,bb)=1;
B(bb,i)=1;
end
end
end
end
%%计算平均路径长度aver_L
%n1=size(A,2);
D=B;
D(find(D==0))=inf;%将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0.
fori=1:
n
D(i,i)=0;
end
m2=1;
whilem2<=n%Floyd算法求解任意两点的最短距离
fori=1:
n
forj=1:
n
ifD(i,j)>D(i,m2)+D(m2,j)
D(i,j)=D(i,m2)+D(m2,j);
end
end
end
m2=m2+1;
end
%iflength(infline)>0
%D(infline,:
)=[];
%D(:
infline)=[];
%n2=size(D,2);
%L(z,g)=sum(sum(D))/(n2*(n2-1));%求出平均路径
%else
L(z,g)=sum(sum(D))/(n*(n-1));%求出平均路径
%end
%%计算聚类系数aver_C
Ci=zeros(n,1);
fori=1:
n
aa=find(D(i,:
)==1);%寻找子图的邻居节点
ifisempty(aa)
Ci(i)=0;
else
m3=length(aa);
ifm3==1
Ci(i)=0;
else
BB=D(aa,aa);%抽取子图的邻接矩阵
Ci(i)=length(find(BB==1))/(m3*(m3-1));
end
end
end
C(z,g)=mean(Ci);
end
end
figure
LWS=mean(L,2);
CWS=mean(C,2);
semilogx(p,LWS/L0,'ro');
holdon;
semilogx(p,CWS/C0,'b*');
对应输出(ws.fig的截图)
与图b(图b位于第7页)吻合
四、结论
在网络理论中,小世界网络是一类特殊的复杂网络结构,在这种网络中大部份的节点彼此并不相连,但绝大部份节点之间经过少数几步就可到达(本文只讨论WS小世界模型)。
在日常生活中,有时你会发现,某些你觉得与你隔得很“遥远”的人,其实与你“很近”。
小世界网络就是对这种现象(也称为小世界现象)的数学描述。
用数学中图论的语言来说,小世界网络就是一个由大量顶点构成的图,其中任意两点之间的平均路径长度比顶点数量小得多。
除了社会人际网络以外,小世界网络的例子在生物学、物理学、计算机科学等领域也有出现。
许多经验中的图可以由小世界网络来作为模型。
万维网、公路交通网、脑神经网络和基因网络都呈现小世界网络的特征。
小世界网络模型反映了朋友关系网络的一种特性,即大部分的人的朋友都是和他们住在同一条街上的邻居或在同一单位工作的同事。
另一方面,也有些人是住得较远的,甚至是远在异国他乡的朋友,这种情形对应于WS小世界模型中通过重新连线产生的远程连接。
五、参考来源
1.《WS与NW两种小世界网络模型的建模及仿真研究》王 波,王万良,杨旭华浙江工业大学学报第37卷第2期2009年4月
2.“小世界”网络的集体动力学DuncanJ.Watts,StevenH.Strogatz(NATURE|VOL393|4JUNE1998pp.440—442)(译者王恒山)
3.维基百科http:
//zh.wikipedia.org/wiki/%E5%B0%8F%E4%B8%96%E7%95%8C%E7%B6%B2%E8%B7%AF
4.汪小帆,李翔,陈关荣.《复杂网络理论及其应用》.清华大学出版社.2006.
ISBN9787302125051第18-23页