資源簡介
根據(jù)k-shell算法,對網(wǎng)絡(luò)進(jìn)行劃分,得到每一層的子網(wǎng)
代碼片段和文件信息
%function?[ret_m]=k_shell(mixedsig)
%鄰接矩陣
?A=load(‘NETWORK_REACTION.TXT‘);???%里邊的數(shù)據(jù)結(jié)構(gòu)好像是每2個(gè)一組,例如?3?4?表示一組,表示點(diǎn)3和節(jié)點(diǎn)4有連接。
?TT=A(:?1:2);
?mixedsig=zeros(max(max(TT)));
?len=length(TT);
?for?i=1:len
?????mixedsig(TT(i1)TT(i2))=1;
?????mixedsig(TT(i2)TT(i1))=1;
?end
%[XY]=distri(mixedsig);
%mixedsig=[0111;1001;1001;1110]
%function?[ret_m]=kshell(mixedsig)
%mixedsig=[0101;1001;0001;1110];
%mixedsig=[01010;10010;00011;11100;00100];
j=1;???%第j層
t=1;??%
tad=mixedsig;??%鄰接矩陣
k=0;
ii=1;
ret_m=[];??%返回值;??i,j??:?第i層:所有節(jié)點(diǎn)
len=length(mixedsig);??%矩陣長度
tt=1;
n=1;
nn=1;
m_t=[];
m_tt=[];
m_ttt=[];
p=1;
while?(tt==1)???%控制最高層結(jié)束
????if?sum(sum(tad))==0??%所有元素為0,則退出
????????break;
????end
????t=1;??%控制第j層??計(jì)算
????while(t==1)??%??每循環(huán)一次,tad改變,去掉度數(shù)小于j的節(jié)點(diǎn);直到?jīng)]有度數(shù)小于j的節(jié)點(diǎn)
????????t=0;
????????ii=1;?%第j層第ii個(gè)節(jié)點(diǎn)
????????for?i=1:len??%從矩陣1至len行??去掉小于j的節(jié)點(diǎn)
????????????k=sum(tad(i:));???%計(jì)算i行度數(shù)
????????????if?k==0??%度數(shù)為0,下一個(gè)i值
????????????????%?t=1?;??%
????????????????continue;
????????????elseif?k<=j??%度數(shù)小于j層
????????????????t=1;?%控制下一次還要循環(huán)
????????????????tad(i:)=0;??%i節(jié)點(diǎn)加到j(luò)層,將度數(shù)至為0,所有i行值至為0
????????????????tad(:i)=0;?%相應(yīng)i列至為0
????????????????ret_m(jii)=i;???%將i節(jié)點(diǎn)加到j(luò)層
???????????????
????????????????m_ttt=union(ret_m(jii)m_ttt);
????????????????for?n=1:len???%判斷其他行有無因?yàn)?將tad(:i)元素設(shè)為0?而所有行變0
????????????????????if?sum(tad(n:))==0
????????????????????????m_t=n;
????????????????????????m_tt?=?intersect(m_tttm_t);
????????????????????????if??length(m_tt)==0??%length(m_t)~=0?&&
????????????????????????????ii=ii+1;
????????????????????????????ret_m(jii)=n;
????????????????????????????
????????????????????????????m_ttt=union(ret_m(jii)m_ttt);
????????????????????????????m_t=[];
????????????????????????end
????????????????????end
????????????????end?%for?n=1:len
????????????end?%?if?k==0
?????????????ii=ii+1;
????????end?%end?of??i=1:len
????end??%?end?of?while(t==1)
????j=j+1;
????ii=1;
end???%?end?of?while(tt==1)
%disp(ret_m);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2299??2011-04-16?22:20??k_shell.m
-----------?---------??----------?-----??----
?????????????????2299????????????????????1
評論
共有 條評論