多层复杂网络小世界网络无标度网络随机网络分析及平均路径分析

无标度网络

m0=2

m=2

N=12

p8=0.1

x1=100*rand(1,m0);

y1=100*rand(1,m0);

x2=100*rand(1,m0);

y2=100*rand(1,m0);

for i=1:N

z1(i)=10

end

for i=1:N

z2(i)=90

end

for i=1:m0

for j=i+1:m0

p1=rand(1,1);

p2=rand(1,1);

if p1>0.5

a1(i,j)=1;

a1(j,i)=0;

end

if p2>0.5

a2(i,j)=1;

a2(j,i)=0;

end

end

end

for k=m0+1:N

M=size(a1,1);p=zeros(1,M);

M1=size(a2,1);p1=zeros(1,M1);

x0=100*rand(1,1);y0=100*rand(1,1);

x1(k)=x0;y1(k)=y0;

x2(k)=x0;y2(k)=y0;

if length(find(a1==1))==0

p(:)=1/M;

else

for i=1:M

p(i)=length(a1(i,:)==1)/length(find(a1==1));

end

if length(find(a2==1))==0

p1(:)=1/M1;

else

for i=1:M1

p1(i)=length(a2(i,:)==1)/length(find(a2==1));

end

end

end

pp=cumsum(p);

pp1=cumsum(p1);

for i=1:m

random_data=rand(1,1);

random_data1=rand(1,1);

aa=find(pp>=random_data);jj=aa(1);

aa1=find(pp1>=random_data1);jj1=aa1(1);

a1(k,jj)=1;

a1(jj,k)=1;

a2(k,jj1)=1;

a2(jj1,k)=1;

end

end

plot3(x1,y1,z1,'ro','MarkerEdgeColor','g','MarkerFaceColor','r','MarkerSize',5);

hold on;

plot3(x2,y2,z2,'bo','MarkerEdgeColor','g','MarkerFaceColor','b','MarkerSize',5);

hold on;

for i=1:N

for j=i+1:N

if a1(i,j)~=0;

plot3([x1(i),x1(j)],[y1(i),y1(j)],[z1(i),z1(j)],'r','linewidth',1.2);

hold on;

end

end

end

axis equal;hold off

hold on

for i=1:N

for j=i+1:N

if a2(i,j)~=0;

plot3([x2(i),x2(j)],[y2(i),y2(j)],[z2(i),z2(j)],'b','linewidth',1.2);

hold on;

end

end

end

axis equal;hold off

hold on

for i=1:N

for j=i+1:N

p1=rand(1,1);

if p8>p1

a3(i,j)=1;a3(j,i)=1;

end

end

end

hold on

for i=1:N

for j=i+1:N

if a3(i,j)~=0

plot3([x1(i),x2(j)],[y1(i),y2(j)],[z1(i),z2(j)],'g','linewidth',1);

hold on;

end

end

end

axis equal;

hold off;

a4=[a1 a3

a3' a2]

% [DeD1,aver_DeD1,DeD13,aver_DeD13,DeD23,aver_DeD23,DeD2,aver_DeD2]=Degree_Distribution(a1,a2,a3)

% [mean_path,mean_path1]=Average_Path(a1,a2,a4)

% [mean_c,mean_c1,mean_c2]=Coefficient(a1,a2,a4)

小世界网络

N=12

K=4

p=0.5

p0=0.8

angle=0:2*pi/N:2*pi-2*pi/N;

x1=100*sin(angle);

y1=100*cos(angle);

x2=100*sin(angle);

y2=100*cos(angle);

for i=1:N

z1(i)=10

end

plot3(x1,y1,z1,'ro','MarkerEdgeColor','g','MarkerFaceColor','r','MarkerSize',5);

hold on;

for i=1:N

z2(i)=90

end

plot3(x2,y2,z2,'bo','MarkerEdgeColor','b','MarkerFaceColor','b','MarkerSize',5);

hold on;

a1=zeros(N);

a2=zeros(N);

for i=1:N

for j=i+1:i+K/2

jj=j;

if j>N

jj=mod(j,N);

end

a1(i,jj)=1;

a1(jj,i)=1;

a2(i,jj)=1;

a2(jj,i)=1;

end

end

for i=1:N

for j=i+1:i+K/2

jj=j;

if j>N

jj=mod(j,N);

end

p1=rand(1,1);

p2=rand(1,1);

if p1<p

a1(i,jj)=0;a1(jj,i)=0;a1(i,i)=inf;a=find(a1(i,:)==0);

rand_data=randi([1,length(a)],1,1);

jjj=a(rand_data);a1(i,jjj)=1;a1(jjj,i)=1;a1(i,i)=0;

end

if p2<p

a2(i,jj)=0;a2(jj,i)=0;a2(i,i)=inf;a=find(a2(i,:)==0);

rand_data=randi([1,length(a)],1,1);

jjj=a(rand_data);a2(i,jjj)=1;a2(jjj,i)=1;a2(i,i)=0;

end

end

end

for i=1:N

for j=i+1:N

if a1(i,j)~=0

plot3([x1(i),x1(j)],[y1(i),y1(j)],[z1(i),z1(j)],'r','linewidth',1.2);

hold on;

end

if a2(i,j)~=0

plot3([x2(i),x2(j)],[y2(i),y2(j)],[z2(i),z2(j)],'b','linewidth',1.2);

hold on;

end

end

end

axis equal;

hold off

hold on

for i=1:N

for j=i+1:N

p1=rand(1,1);

if p>p1

a3(i,j)=1;a3(j,i)=1;

end

end

end

hold on

for i=1:N

for j=i+1:N

if a3(i,j)~=0

plot3([x1(i),x2(j)],[y1(i),y2(j)],[z1(i),z2(j)],'g','linewidth',1);

hold on;

end

end

end

axis equal;

hold off;

a4=[a1 a3

a3' a2]

% [DeD1,aver_DeD1,DeD13,aver_DeD13,DeD23,aver_DeD23,DeD2,aver_DeD2]=Degree_Distribution(a1,a2,a3)

% [mean_path,mean_path1]=Average_Path(a1,a2,a4)

% [mean_c,mean_c1,mean_c2]=Coefficient(a1,a2,a4)

随机网络

N=10;

p=0.2

p8=0.1

for i=1:N

x1(i)=100*rand(1,1);

y1(i)=100*rand(1,1);

z1(i)=100;

end

for i=1:N

for j=i+1:N

p1=rand(1,1);

if p>p1

a1(i,j)=1;a1(j,i)=1;

end

end

end

figure;

c=length(find(a1==1))

plot3(x1,y1,z1,'bo','MarkerEdgeColor','g','MarkerFaceColor','r','MarkerSize',5);

hold on

for i=1:N

for j=i+1:N

if a1(i,j)~=0

plot3([x1(i),x1(j)],[y1(i),y1(j)],[z1(i),z1(j)],'r','linewidth',1);

hold on;

end

end

end

axis equal;

hold off;

hold on

for i=1:N

x2(i)=100*rand(1,1);

y2(i)=100*rand(1,1);

z2(i)=10;

end

for i=1:N

for j=i+1:N

p1=rand(1,1);

if p>p1

a2(i,j)=1;a2(j,i)=1;

end

end

end

c=length(find(a2==1))

plot3(x2,y2,z2,'bo','MarkerEdgeColor','g','MarkerFaceColor','b','MarkerSize',5);

hold on;

for i=1:N

for j=i+1:N

if a2(i,j)~=0

plot3([x2(i),x2(j)],[y2(i),y2(j)],[z2(i),z2(j)],'b','linewidth',1);

hold on;

end

end

end

axis equal;

hold off;

hold on

for i=1:N

for j=i+1:N

p1=rand(1,1);

if p8>p1

a3(i,j)=1;a3(j,i)=1;

end

end

end

hold on

for i=1:N

for j=i+1:N

if a3(i,j)~=0

plot3([x1(i),x2(j)],[y1(i),y2(j)],[z1(i),z2(j)],'g','linewidth',1);

hold on;

end

end

end

axis equal;

hold off;

a4=[a1 a3

a3' a2]

% [DeD1,aver_DeD1,DeD13,aver_DeD13,DeD23,aver_DeD23,DeD2,aver_DeD2]=Degree_Distribution(a1,a2,a3)

% [Clu,aver_Clu,max_Clu,min_Clu,Clu1,aver_Clu1,max_Clu1,min_Clu1]=Clustering(a1,a2,a3,a4)

% [mean_path,mean_path1,mean_path2]=Average_Path(a1,a2,a4)

% [mean_c,mean_c1,mean_c2]=Coefficient(a1,a2,a4)

% [mean_c,mean_c1,mean_c2]=Coefficient(a1,a2,a4)

% [mean_c,mean_c1]=Coefficient(a1,a4)

% [DeD,aver_DeD]=Degree_Distribution13(a1,a3)

% [DeD,aver_DeD]=Degree_Distribution1(a1)

% [DeD,aver_DeD]=Degree_Distribution2(a2)

% [DeD,aver_DeD]=Degree_Distribution23(a2,a3)

% N=12

% p=0.1

% for i=1:N

%

% x(i)=100*rand(1,1);

% y(i)=100*rand(1,1);

% end

% for i=1:N

% for j=i+1:N

% p1=rand(1,1);

% if p>p1

% A(i,j)=1;A(j,i)=1;

% end

% end

%

% end

% c=length(find(A==1))

% 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);

% hold on;

% end

% end

% end

% axis equal;

% hold off;

%

function [mean_path,mean_path1,mean_path2]=Average_Path(a1,a2,a4)

%求一个图的平均最短路径(Average Shortest Path Length)

N=size(a1,2)

len=length(a1);%节点个数

m = a1;

m(m==0)=len*2; %设置为最大距离的两倍,也就是不可达

N1=size(a4,2)

len1=length(a4);%节点个数

m1 = a4;

m1(m1==0)=len1*2; %设置为最大距离的两倍,也就是不可达

N2=size(a2,2)

len2=length(a2);%节点个数

m2 = a2;

m2(m2==0)=len2*2; %设置为最大距离的两倍,也就是不可达

for i=1:len

m(i,i)=0;%邻接矩阵的对角线元素均为0

end

if len<=1%少于一个点

mean_path = 0;

end

for k=1:len%弗洛伊德算法

for i=1:len

for j=1:len

if m(i,j)>m(i,k)+m(k,j)

m(i,j) = m(i,k)+m(k,j);

end

end

end

end

for i=1:len

m(m==len*2)=0;%不可达点的距离化为0

end

each_path = sum(m')/(length(m)-1);%每个点的平均最短路径长度,减一是减去到自己的距离(不存在)

mean_path = sum(sum(m'))/length(nonzeros(m'));%整个网络的平均最短路径长度

for i=1:len1

m1(i,i)=0;%邻接矩阵的对角线元素均为0

end

if len1<=1%少于一个点

mean_path1 = 0;

end

for k=1:len1%弗洛伊德算法

for i=1:len1

for j=1:len1

if m1(i,j)>m1(i,k)+m1(k,j)

m1(i,j) = m1(i,k)+m1(k,j);

end

end

end

end

for i=1:len1

m1(m1==len1*2)=0;%不可达点的距离化为0

end

each_path1 = sum(m1)/(length(m1)-1);%每个点的平均最短路径长度,减一是减去到自己的距离(不存在)

mean_path1 = sum(sum(m1))/length(nonzeros(m1));%整个网络的平均最短路径长度

for i=1:len2

m2(i,i)=0;%邻接矩阵的对角线元素均为0

end

if len2<=1%少于一个点

mean_path2 = 0;

end

for k=1:len2%弗洛伊德算法

for i=1:len2

for j=1:len2

if m2(i,j)>m2(i,k)+m2(k,j)

m2(i,j) = m2(i,k)+m2(k,j);

end

end

end

end

for i=1:len2

m2(m2==len2*2)=0;%不可达点的距离化为0

end

each_path2 = sum(m2)/(length(m2)-1);%每个点的平均最短路径长度,减一是减去到自己的距离(不存在)

mean_path2 = sum(sum(m2))/length(nonzeros(m2));%整个网络的平均最短路径长度

plot([1:N],each_path,'ro-');

xlabel('第一层每个用户得平均路径');

ylabel('每个节点得平均路径');

legend(num2str( mean_path),'Location','NorthEastOutside');

figure;

plot([1:N1],each_path1,'go-');

title('平均路径');

xlabel('整个网络网络每个用户得平均路径');

ylabel('每个节点得平均路径');

legend(num2str( mean_path1),'Location','NorthEastOutside');

figure;

plot([1:N2],each_path2,'bo-');

title('平均路径');

xlabel('网络每个用户得平均路径');

ylabel('第二层每个节点得平均路径');

legend(num2str( mean_path2),'Location','NorthEastOutside');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值