资源简介
利用MATLAB求解复杂网络介数的函数 很好用。输入参数是网络的邻接矩阵,输出包括网络边介数,点介数,以及最短路径
代码片段和文件信息
function [pNbEb]= betweenness(A)
%求邻接矩阵对应的网络的节点介数Nb和边介数Eb并在p中输出所有最短路径。在floyd算法基础上得来。
%先利用floyd算法得到最短路径和路径矩阵(path(ij)=从i到j最短路的第一跳节点号),然后利用path矩阵
%求出所有最短路径矩阵short_path,并根据short_path矩阵得到所有节点和边的介数。
%----先求path矩阵-------------------------
%circlenet(A);
n=size(A1);
D=A;
path=zeros(nn);
for i=1:n
for j=1:n
if D(ij)~=inf
path(ij)=j; %j是i的后续点
end
end
end
% 利用Floyed算法求最短路径
for k=1:n
for i=1:n
for j=1:n
if D(ij)>D(ik)+D(kj)
D(ij)=D(ik)+D(kj);
path(ij)=path(ik);
end
end
end
end
%------再求介数-------------------------
short_path=zeros(nnn);%short_path是所有最短路径,最后一个n表示源节点,中间的n表示目的节点,第一个n表示路径,
%因为最长路径去掉源节点还
评论
共有 条评论