• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-04-18
  • 语言: Matlab
  • 标签: 算法  shell  MATLAB  

资源简介

根据k-shell算法,对网络进行划分,得到每一层的子网

资源截图

代码片段和文件信息

%function [ret_m]=k_shell(mixedsig)
%邻接矩阵
 A=load(‘NETWORK_REACTION.TXT‘);   %里边的数据结构好像是每2个一组,例如 3 4 表示一组,表示点3和节点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层:所有节点
len=length(mixedsig);  %矩阵长度
tt=1;
n=1;
nn=1;
m_t=[];
m_tt=[];
m_ttt=[];
p=1;
while (tt==1)   %控制最高层结束
    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的节点
            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(jii)=i;   %将i节点加到j层
               
                m_ttt=union(ret_m(jii)m_ttt);
                for n=1:len   %判断其他行有无因为 将tad(:i)元素设为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);














 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2299  2011-04-16 22:20  k_shell.m

----------- ---------  ---------- -----  ----

                 2299                    1


评论

共有 条评论