??
字號:
%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 + -