资源简介
能够运行 划分的很清楚 输出为聚类图
代码片段和文件信息
clear all
close all
clc
% load preprocess.mat
% E=e;
E=load(‘Zachary-E.txt‘);
% E(find(E>0))=1;%建立邻接矩阵
tic;
e=E;
e(e==1)=1/156;
a=sum(e);
n=34;
b=[1:n];
b=num2cell(b);%用来存储社团元素的变量
c={};
k=1;
while length(e)>1
lg=length(e);
detaQ=-(10^9)*ones(n-k+1);%△Q
for i=1:lg-1
for j=i+1:lg
if e(ij)~=0
detaQ(ij)=2*(e(ij)-a(i)*a(j));%计算△Q
end
end
end
if sum(detaQ+(10^9))==0
break
end
% Q(k)=max(detaQ(:));%寻找△Q的最大值,并把它存储进Q(k)矩阵
%-----------------------------寻找最大△Q对应的两个社团,并将其合并,并改变e矩阵
[IJ]=find(detaQ==max(detaQ(:)));
for ii=1:length(I)
e(J(ii):)=e(I(ii):)+e(J(ii):);
e(I(ii):)=0;
e(:J(ii))=e(:I(ii))+e(:J(ii));
e(:I(ii))=0;
% e(II)=e(II)/2;
%—————————记录△Q最大所对应的社团以及各社团中的元素
b{J(ii)}=[b{I(ii)} b{J(ii)}];
b{I(ii)}=0;
end
e(I:)=[];
e(:I)=[];
b(I)=[];
c(k:)=num2cell(zeros(1n));
c(k1:length(b))=b;
for kk=1:length(b)
c2=cell2mat(c(kkk));
c2(c2==0)=[];
c{kkk}=c2;
c2=[];
end
a=sum(e);
k=k+1;
tmp=0;
for jj=1:length(e)
tmp=tmp+(e(jjjj)-a(jj)*a(jj));
end
Q(k)=tmp;
end
max_k=find(Q==max(Q(:)));
ll=0;
for i=1:length(c(max_k:))
if sum(c{max_ki})~=0
ll=ll+1;
c{max_ki}=c{max_ki}(c{max_ki}~=0);
end
end
c_newman=c(max_k1:ll)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2380 2010-08-17 18:26 Zachary-E.txt
文件 1387 2011-03-28 10:45 Newman_Zachary.m
----------- --------- ---------- ----- ----
3767 2
评论
共有 条评论