WS小世界网络算是复杂网络的基本入门实验了,虽然基础,但是极其重要,里面包含了复杂网络这门学科的很多重要想法。首先,简单介绍一下WS小世界网络,就是具有很小的平均最短路径和很高的聚类系数的一种网络,通俗一点,就是模仿日常生活中人们之间的联系的一种网络,再通俗一点,大马路上任选两个不认识的人,你会发现,他俩只要通过四五个人介绍一下,就认识了,这四五个人,就是他俩的距离,叫做最短路径。另一个例子,Tom和Jack是好朋友,有一天他们聊天,突然发现,Mary是Tom的高中同学,是Jack的大学同学,缘分呐,这种缘分一量化,就叫聚类系数。
一般做这个实验,用1000个点模仿一千个人,从规则图(专业术语叫最近邻耦合网络)开始,经过随机化重连(有规定的重连规则)后,开始做分析(此时,有连线,代表认识,无连线,代表不认识)。
首先,你需要安装matlab(捂脸,看这篇文章的肯定知道的),然后,开始根据规则和公式敲代码了,代码全文如下
%小世界网络
function ws_worldnet(N,K);
tic;
%N=400;%随机节点数
%K=2;%左(右)最邻近节点数
%生成节点
%angle=0:2*pi/N:2*pi-2*pi/N;
%x=100*sin(angle);
%y=100*cos(angle);
%计算L0
B=zeros(N);%全0的n维矩阵
for i=1:N
for j=i+1:i+K
jj=j;
if j>N
jj=mod(j,N);
end
B(i,jj)=1;
B(jj,i)=1;
end
end
%计算L0 不需要断边重连 直接开始算节点间的最短路径
D=B;
for i=1:N
for j=1:N
if D(i,j)==0
if i==j
D(i,j)=0;