复杂网络学习的经典网络之一,WS小世界网络的概念就不再赘述,直接代码开整:
function WS(N,K,p1)
%N个节点,每个节点与相邻节点共有2K条连边,断边重连概率为p1
%------------------------------------------生成规则图
A = zeros(N,N);
for i=1:N
for j=1:K
x=i;
y=i+j;
if y>N
y=mod(y,N);
end
A(x,y)=1;A(y,x)=1;
end
end
for i=1:N
B(i,1)=cos((2*pi/N)*(i-1));
B(i,2)=sin((2*pi/N)*(i-1));
end
figure
gplot(A,B,'-o');
title('规则图');
axis square
%-----------------------------------------开始断边重连
C=A;
for i=1:N
for j=1:K
x=i;
y=i+K;
if y>N
y=mod(y,N);
end
p2=rand();
if p2<=p1
C(x,y)=0;C(y,x)=0;
k=0;
while k==0
y=unidrnd(N);
if C(x,y)==0 && x~=y
C(x,y)=1