k-shell代码
本帖最后由 吃苹果的梨 于 2015-12-26 10:37 编辑%function =k_shell(mixedsig)
%邻接矩阵
% A=load('cdbBA_4000_5_0_.txt'); %里边的数据结构好像是每2个一组,例如 3 4 表示一组,表示点3和节点4有连接。
%
%
% TT=A(:, 1:2)+1;
% maxtt=max(max(TT));
% mixedsig=zeros(max(max(TT)));
% len=length(TT);
% for i=1:len
% mixedsig(TT(i,1),TT(i,2))=1;
% mixedsig(TT(i,2),TT(i,1))=1;
% end
% disp('已转化为邻接矩阵!')
=distri(mixedsig);
mixedsig=
function =kshell(mixedsig)
mixedsig=;
mixedsig=;
zzz=0;
j=1; %第j层
t=1; %
tad=mixedsig; %邻接矩阵
k=0;
ii=1;
ret_m=[]; %返回值; i,j : 第i层:所有节点
len=length(mixedsig); %矩阵长度
tt=1;
n=1;
nn=1;
m_t=[];
m_tt=[];
m_ttt=[];
p=1;
while (tt==1) %控制最高层结束
sss=sum(sum(tad))/(maxtt*maxtt)
if sum(sum(tad))==0 %所有元素为0,则退出
break;
end
t=1; %控制第j层 计算
while(t==1) % 每循环一次,tad改变,去掉度数小于j的节点;直到没有度数小于j的节点
t=0;
ii=1; %第j层第ii个节点
for i=1:len %从矩阵1至len行, 去掉小于j的节点
lll=i/len
k=sum(tad(i, : )); %计算i行度数
if k==0 %度数为0,下一个i值
% t=1 ; %
continue;
elseif k<=j %度数小于j层
t=1; %控制下一次还要循环
tad(i, : )=0; %i节点加到j层,将度数至为0,所有i行值至为0
tad(:,i)=0; %相应i列至为0
ret_m(j,ii)=i; %将i节点加到j层
m_ttt=union(ret_m(j,ii),m_ttt);
for n=1:len %判断其他行有无因为 将tad(:,i)元素设为0 而所有行变0
if sum(tad(n, : ))==0
ii=ii+1;
ret_m(j,ii)=n;
m_t=n;
m_tt = intersect(m_ttt,m_t);
if length(m_tt)==0 %length(m_t)~=0 &&
m_ttt=union(ret_m(j,ii),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);
cdbBA_4000_5_0_.txt'这个txt文件怎么写的?
cdbBA_4000_5_0_.txt'这个txt文件怎么写的?
谢谢分享
页:
[1]