📄
字号:
%function [Nodes,Cii]=BA(N,m)
clear
clc
N=2000;
m=5; %本程序为了简便,m足够大,使得最大的连接边数要小于m
Nodes1=zeros(N);
Cii1=zeros(1,N);
t=zeros(1,N);
p0=2.6;%给定的平均连接度
p1=0.3;p2=0.2;p3=0.2;p4=0.2;p5=0.1;%pi
P1=p1; %0.3
P2=P1+p2; %0.5
P3=P2+p3; %0.7
P4=P3+p4; %0.8
P5=1; %1
for i=1:m
list(i)=i;
end
%以上初始化
n=0;
i=0;
r=0;
t=m;
for i=m+1:N
%得到随机连接的边数n
r=rand(1);%生成一个随机数,看它落在哪个区间
if r>=0&r<P1
n=1;
elseif r>=P1&r<P2
n=2;
elseif r>=P2&r<P3
n=3;
elseif r>=P3&r<P4
n=4;
else
n=5;
end
for j=1:n
list(t+j)=i; %第一个端点
end
%以下第二个端点
%以下进行择优连接
for j=1:n
while(true)
randomN=round((t+1)*rand(1));
if randomN>0 & randomN<(t+1)
% if Nodes(i,list(randomN))==0
list(t+n+j)=list(randomN);
Nodes(i,list(randomN))=1;
Nodes(list(randomN),i)=1;
break;
end
% end
end
end
t=t+2*n;%t在每个时间步增加2n
end
for i=1:N
Cii(i)=sum(Nodes(:,i));%Cii存放每个节点的度数
end
for j=1:N
k(j)=0;
for i=1:N
if j==Cii(i)
k(j)=k(j)+1;
end
end
P(j)=k(j)/N;
end
for i=1:N
k(i)=i;
end
%plot(k,P,'-r*')
loglog(k,P,'r*',k,2*m^2*k.^(-3),'s')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -