?? ba_net.m
字號:
function A=BA_net()
%%% 從已有的m0個節(jié)點(diǎn)的網(wǎng)絡(luò)開始,采用增長機(jī)制與優(yōu)先連接的機(jī)制生成BA無標(biāo)度網(wǎng)絡(luò)
%% A ——————返回生成網(wǎng)絡(luò)的鄰接矩陣
m0=input('未增長前的網(wǎng)絡(luò)節(jié)點(diǎn)個數(shù)m0: ');
m=input(' 每次引入的新節(jié)點(diǎn)時新生成的邊數(shù)m: ');
N=input('增長后的網(wǎng)絡(luò)規(guī)模N: ');
disp('初始網(wǎng)絡(luò)時m0個節(jié)點(diǎn)的連接情況:1表示都是孤立;2表示構(gòu)成完全圖;3表示隨機(jī)連接一些邊');
pp=input('初始網(wǎng)絡(luò)情況1,2或3: ');
if m>m0
disp('輸入?yún)?shù)m不合法');
return;
end
x=100*rand(1,m0);
y=100*rand(1,m0);
switch pp
case 1
A=zeros(m0);
case 2
A=ones(m0);
for i=1:m0
A(i,i)=0;
end
case 3
for i=1:m0
for j=i+1:m0
p1=rand(1,1);
if p1>0.5
A(i,j)=1;A(j,i)=0;
end
end
end
otherwise
disp('輸入?yún)?shù)pp不合法');
return;
end
for k=m0+1:N
M=size(A,1);
p=zeros(1,M);
x0=100*rand(1,1);y0=100*rand(1,1);
x(k)=x0;y(k)=y0;
if length(find(A==1))==0
p(:)=1/M;
else
for i=1:M
p(i)=length(find(A(i,:)==1))/length(find(A==1));
end
end
pp=cumsum(p); %求累計(jì)概率
for i=1:m %利用賭輪法從已有的節(jié)點(diǎn)中隨機(jī)選擇m個節(jié)點(diǎn)與新加入的節(jié)點(diǎn)相連
random_data=rand(1,1);
aa=find(pp>=random_data);jj=aa(1); % 節(jié)點(diǎn)jj即為用賭輪法選擇的節(jié)點(diǎn)
A(k,jj)=1;A(jj,k)=1;
end
end
plot(x,y,'ro','MarkerEdgeColor','g','MarkerFaceColor','r','markersize',8);
hold on;
for i=1:N
for j=i+1:N
if A(i,j)~=0
plot([x(i),x(j)],[y(i),y(j)],'linewidth',1.2);
hold on; %% 畫出BA無標(biāo)度網(wǎng)絡(luò)圖
end
end
end
axis equal;
hold off
[C,aver_C]=Clustering_Coefficient(A);
[DeD,aver_DeD]=Degree_Distribution(A);
[D,aver_D]=Aver_Path_Length(A);
disp(['該隨機(jī)圖的平均路徑長度為:',num2str(aver_D)]); %%輸出該網(wǎng)絡(luò)的特征參數(shù)
disp(['該隨機(jī)圖的聚類系數(shù)為:',num2str(aver_C)]);
disp(['該隨機(jī)圖的平均度為:',num2str(aver_DeD)]);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -