最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

复杂网络主要拓扑参数的matlab实现

来源:动视网 责编:小OO 时间:2025-09-24 10:19:53
文档

复杂网络主要拓扑参数的matlab实现

function[DeD,aver_DeD]=Degree_Distribution(A)%%求网络图中各节点的度及度的分布曲线%%求解算法:求解每个节点的度,再按发生频率即为概率,求P(k)%A————————网络图的邻接矩阵%DeD————————网络图各节点的度分布%aver_DeD———————网络图的平均度N=size(A,2);DeD=zeros(1,N);fori=1:N%DeD(i)=length(find((A(i,:)==1)));DeD(i)=sum(A(i,:));en
推荐度:
导读function[DeD,aver_DeD]=Degree_Distribution(A)%%求网络图中各节点的度及度的分布曲线%%求解算法:求解每个节点的度,再按发生频率即为概率,求P(k)%A————————网络图的邻接矩阵%DeD————————网络图各节点的度分布%aver_DeD———————网络图的平均度N=size(A,2);DeD=zeros(1,N);fori=1:N%DeD(i)=length(find((A(i,:)==1)));DeD(i)=sum(A(i,:));en
function [DeD,aver_DeD]=Degree_Distribution(A)

%% 求网络图中各节点的度及度的分布曲线

%% 求解算法:求解每个节点的度,再按发生频率即为概率,求P(k) 

%A————————网络图的邻接矩阵

%DeD————————网络图各节点的度分布

%aver_DeD———————网络图的平均度

N=size(A,2);

DeD=zeros(1,N);

for i=1:N

   % DeD(i)=length(find((A(i,:)==1)));

   DeD(i)=sum(A(i,:));

end

aver_DeD=mean(DeD);

 

if sum(DeD)==0

    disp('该网络图只是由一些孤立点组成');

    return;

else 

    figure;     

    bar([1:N],DeD);  

    xlabel('节点编号n');

    ylabel('各节点的度数K');

    title('网络图中各节点的度的大小分布图');

end

 

figure;

M=max(DeD);

for i=1:M+1;    %网络图中节点的度数最大为M,但要同时考虑到度为0的节点的存在性

    N_DeD(i)=length(find(DeD==i-1));

% DeD=[2 2 2 2 2 2]

end

P_DeD=zeros(1,M+1);

P_DeD(:)=N_DeD(:)./sum(N_DeD);

bar([0:M],P_DeD,'r');

xlabel('节点的度 K');

ylabel('节点度为K的概率 P(K)');

title('网络图中节点度的概率分布图');

 

 

 

function  [C,aver_C]=Clustering_Coefficient(A)

%% 求网络图中各节点的聚类系数及整个网络的聚类系数

%% 求解算法:求解每个节点的聚类系数,找某节点的所有邻居,这些邻居节点构成一个子图

%% 从A中抽出该子图的邻接矩阵,计算子图的边数,再根据聚类系数的定义,即可算出该节点的聚类系数

%A————————网络图的邻接矩阵

%C————————网络图各节点的聚类系数

%aver———————整个网络图的聚类系数

N=size(A,2);

C=zeros(1,N);

for i=1:N

    aa=find(A(i,:)==1);  %寻找子图的邻居节点

    if isempty(aa)

        disp(['节点',int2str(i),'为孤立节点,其聚类系数赋值为0']);

        C(i)=0;

    else        

        m=length(aa); 

        if m==1

            disp(['节点',int2str(i),'只有一个邻居节点,其聚类系数赋值为0']);

            C(i)=0;

        else

           B=A(aa,aa)          % 抽取子图的邻接矩阵

           C(i)=length(find(B==1))/(m*(m-1));

        end

    end

end

aver_C=mean(C)

 

    

    

function [D,aver_D]=Aver_Path_Length(A)

%% 求复杂网络中两节点的距离以及平均路径长度

%% 求解算法:首先利用Floyd算法求解出任意两节点的距离,再求距离的平均值得平均路径长度

%  A————————网络图的邻接矩阵

%  D————————返回值:网络图的距离矩阵

%  aver_D———————返回值:网络图的平均路径长度

 N=size(A,2);

 D=A;

 D(find(D==0))=inf;    %将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0.

 for i=1:N           

     D(i,i)=0;       

 end   

 for k=1:N            %Floyd算法求解任意两点的最短距离

     for i=1:N

         for j=1:N

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

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

             end

         end

     end

 end

 aver_D=sum(sum(D))/(N*(N-1))  %平均路径长度

 if aver_D==inf

     disp('该网络图不是连通图');

 end

         

 %% 算法2: 用时间量级O(MN)的广度优先算法求解一个含N个节点和M条边的网络图的平均路径长度

 

 

可以求出复杂网络中两节点间的距离以及平均路径长度,各节点的度及度的分布曲线,以及节点的聚类系数。

You can find out the distance and average path length between the two nodes in complex networks .you can also find out degree and degree distribution curve of each node, and the node clustering coefficient.

文档

复杂网络主要拓扑参数的matlab实现

function[DeD,aver_DeD]=Degree_Distribution(A)%%求网络图中各节点的度及度的分布曲线%%求解算法:求解每个节点的度,再按发生频率即为概率,求P(k)%A————————网络图的邻接矩阵%DeD————————网络图各节点的度分布%aver_DeD———————网络图的平均度N=size(A,2);DeD=zeros(1,N);fori=1:N%DeD(i)=length(find((A(i,:)==1)));DeD(i)=sum(A(i,:));en
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top