复杂网络-平均集聚系数
%求一个网络的平均集聚系数:所有节点的CC之和/节点数目N
%方法一:节点的CC(聚类系数)=邻居实际相连的边/邻居间应该相连的边=邻居实际相连的边/(di*(di-1)/2。其中,di为节点i的度
%方法二:以节点i的邻居们为节点,构造邻接矩阵的子图。
%算法思路:
%(1)生成邻接矩阵
%(2)通过(1)可分析度分布、平均度
%(3)Floyd算法构造距离矩阵,分析平均最短路径距离
%(4)编写集聚系数算法
%(5)加循环,归纳统计性质
clc; %清除当前区域的命令/清空命令窗口
clear; %清空工作区变量
N=100; % N为总节点数
a=100; %a为循环次数
j=1; %j为p值递增标志
for p=0:0.01:1 % p=0.1;
degree=zeros(N,a); %degree包含所有网络所有节点的度分度k
a_k=zeros(a,1); %a_k包含所有网络的平均度
a_D=zeros(a,1); %a_D包含所有网络的平均最短距离D
sum_CC=zeros(N,a); %sum_CC是所有网络所有节点的(邻居实际相连的边数)
a_CC=zeros(N,a); %求所有网络所有节点的集聚系数
ave_CC=zeros(a,1); %一个网络的集聚系数
for i=1:a
adjmex=zeros(N,N); %adjmex为邻接矩阵 邻接矩阵(adjacent matrix)
for m=1:N
for n=m+1:N
if(rand(1,1)<p)
adjmex(m,n)=1;
adjmex(n,m)=1;
end
end
end
%求网络的度分布
for b=1:N
degree(b,i)=sum(adjmex(b,:));
end
%求网络的平均度
a_k(i,1)=sum(adjmex(:))/N;
%求网络的平均最短距离路径:节点对之间距离之和/节点对数目。
%其中,不可达两点距离为0,节点自身与自身距离为0,节点对数目为(N*(N-1)/2)
D=adjmex; %D为距离矩阵
D(find(D==0))=inf;
for k=1:N %Floyd算法求解任意两点的最短距离
for e=1:N
for f=1:N
if D(e,f)>D(e,k)+D(k,f)
D(e,f)=D(e,k)+D(k,f);
end
end
end
D(k,k)=0;
end
D(find(D==inf))=0;
a_D(i,1)=(sum(D(:))/2)/(N*(N-1)/2);
%求网络的平均集聚系数:所有节点的CC之和/节点数目
%节点的CC(聚类系数)=邻居实际相连的边/邻居间应该相连的边=邻居实际相连的边/(di*(di-1)/2)
%其中,di为节点i的度
for k=1:N
num_k=sum(adjmex(k,:));
if num_k==0||num_k==1 %若节点i度为0或1,则其没有CC
sum_CC(k,i)=0;
else
for e=1:N
for f=e+1:N
if adjmex(k,e)+adjmex(k,f)==2 && adjmex(e,f)==1
sum_CC(k,i)=sum_CC(k,i)+1;
end
end
end
a_CC(k,i)=sum_CC(k,i)/((num_k)*(num_k-1)/2);
end
end
ave_CC(i,1)=sum(a_CC(:,i))/N;
end
aver_k(j,1)=sum(a_k(:))/a; %求统计平均度
aver_D(j,1)=sum(a_D(:))/a; %求统计平均最短距离
aver_CC(j,1)=sum(ave_CC(:))/a; %求统计平均集聚系数
j=j+1;
end
%随p值变化统计特性的图
x = linspace(0,1,101); %表示在0和101之间等间隔取1 例如x=linspace(x0,xn,xm)表示在x0和xn之间等间隔取m个数
figure; %控制窗口数量
subplot(3,1,1); %指一个三行一列的图中从左到右从上到下的第一个位置
plot(x,aver_k); %函数将以x为横轴,绘制aver_k
xlabel('p'); %x轴为概率p
title('随机网络的平均度'); %表头命名为随机网络的平均度
subplot(3,1,2); %指一个三行一列的图中从左到右从上到下的第二个位置
plot(x,aver_D); %函数将以x为横轴,绘制aver_D
xlabel('p'); %x轴为概率p
title('随机网络的平均最短路径距离'); %表头命名为随机网络的平均最短路径距离
subplot(3,1,3); %指一个三行一列的图中从左到右从上到下的第三个位置
plot(x,aver_CC); %函数将以x为横轴,绘制aver_CC
xlabel('p'); %x轴为概率p
title('随机网络的平均集聚系数'); %表头命名为随机网络的平均集聚系数
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)