資源簡介
利用MATLAB求解復(fù)雜網(wǎng)絡(luò)介數(shù)的函數(shù) 很好用。輸入?yún)?shù)是網(wǎng)絡(luò)的鄰接矩陣,輸出包括網(wǎng)絡(luò)邊介數(shù),點(diǎn)介數(shù),以及最短路徑
代碼片段和文件信息
function?[pNbEb]=?betweenness(A)
%求鄰接矩陣對(duì)應(yīng)的網(wǎng)絡(luò)的節(jié)點(diǎn)介數(shù)Nb和邊介數(shù)Eb并在p中輸出所有最短路徑。在floyd算法基礎(chǔ)上得來。
%先利用floyd算法得到最短路徑和路徑矩陣(path(ij)=從i到j(luò)最短路的第一跳節(jié)點(diǎn)號(hào)),然后利用path矩陣
%求出所有最短路徑矩陣short_path,并根據(jù)short_path矩陣得到所有節(jié)點(diǎn)和邊的介數(shù)。
%----先求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的后續(xù)點(diǎn)
???????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
%------再求介數(shù)-------------------------
short_path=zeros(nnn);%short_path是所有最短路徑,最后一個(gè)n表示源節(jié)點(diǎn),中間的n表示目的節(jié)點(diǎn),第一個(gè)n表示路徑,
????????????????????????%因?yàn)樽铋L路徑去掉源節(jié)點(diǎn)還
評(píng)論
共有 條評(píng)論