空手道.docx
- 文档编号:25276596
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:9
- 大小:101.43KB
空手道.docx
《空手道.docx》由会员分享,可在线阅读,更多相关《空手道.docx(9页珍藏版)》请在冰豆网上搜索。
空手道
空手道俱乐部数据计算与分析
201511260117韩聪宇政管信管
1)用Gephi软件对空手道俱乐部进行可视化表达;
2)对基本统计性质进行计算(所有相关代码均在文后)
链接矩阵
度及度分布/网络的平均度
度分布的图如下所示:
所以,平均度为4.588
介数及其分布
集聚系数及其分布/网络的集聚系数
平均聚集系数:
0.5679
网络的平均距离、直径
2.4162——平均距离
5——直径
网络的度度关联/度的匹配性
度度关联系数为-0.4789
所以我们可以得知该网络属于度-度负相关disassortativeness类型
代码页:
1)度以及度分布是在第三次作业中完成的,此处不赘述其代码
2)介数的代码如下:
function[p,Nb,Eb]=betweenness(A)
%求邻接矩阵对应的网络的节点介数Nb和边介数Eb,并在p中输出所有最短路径。
在floyd算法基础上得来。
%先利用floyd算法得到最短路径和路径矩阵(path(i,j)=从i到j最短路的第一跳节点号),然后利用path矩阵
%求出所有最短路径矩阵short_path,并根据short_path矩阵得到所有节点和边的介数。
%----先求path矩阵-------------------------
%circlenet(A);
n=size(A,1);
D=A;
path=zeros(n,n);
fori=1:
n
forj=1:
n
ifD(i,j)~=inf
path(i,j)=j;%j是i的后续点
end
end
end
fork=1:
n
fori=1:
n
forj=1:
n
ifD(i,j)>D(i,k)+D(k,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
%------再求介数-------------------------
short_path=zeros(n,n,n);%short_path是所有最短路径,最后一个n表示源节点,中间的n表示目的节点,第一个n表示路径,
%因为最长路径去掉源节点还可能有n-1个点。
short_path的列向量表示一条最短路径
Nbc=zeros(1,n);%存储节点的介数
Ebc=zeros(n,n);%存储边的介数
fori=1:
n%i是起点
short_path(1,:
i)=i;%初始化每列的第一元素为源节点
forj=1:
n%j是终点
middle_node=i;
ifD(i,j) fork=2: n%第一个一定是源节点,所以从第2个开始 ifmiddle_node~=j next_node=path(middle_node,j); Ebc(middle_node,next_node)=Ebc(middle_node,next_node)+1; short_path(k,j,i)=next_node; middle_node=next_node; ifmiddle_node~=j Nbc(1,middle_node)=Nbc(1,middle_node)+1; end end end end end end p=short_path; Nb=Nbc/2;%无向图用此公式 Eb=triu(Ebc);%无向图用此公式 3)集聚系数代码如下: function[ACC,CC0]=Clustering_Coefficient(Links_M) %计算网络的聚类系数 %输入为网络的邻接矩阵 %输出为标量的网络的聚类系数: ACC %算法的思想是: 对每一个节点i找到它的邻居,并记录邻居的下标,然后在这些邻居中找大于0的数的总个数(也就是总边数) %注意Matlab中find()子函数的调用,查找大于零的元素并返回其下标 Links_M0=Links_M; n0=length(Links_M0);%矩阵的维数 CC0=sparse(n0,1);%存放每个节点的所对应的聚类系数 TCC=0;%初始化总的聚类系数 fori=1: n0 i_neighbor=find(Links_M0(i,: ));%查找i点的邻居,就是Links(i,j)=1的点,返回的是邻居节点下标的组成的向量 i_neighbor_number=length(i_neighbor);%节点i的邻居的数目 ifi_neighbor_number>=2%注如果邻居数为1的话,那么CC(i)=0,无需计算,所以从邻居数大于等于2开始算 S=Links_M(i_neighbor,i_neighbor);%抽取i节点的所有的邻居所对应的行,列 CC0(i)=sum(S(: ))/(i_neighbor_number*(i_neighbor_number-1));%注意一个节点其度的和等于其变数的两倍,sum(S(: ))表示矩阵S所有元素的和=度, %计算节点i的聚类系数 end end TCC=full(sum(CC0));%总的聚类系数 ACC=TCC/n0;%网络的平均聚类系数 4)网络的平均距离与直径的代码如下: function[D,aver_D]=Aver_Path_Length(A) %%求复杂网络中两节点的距离以及平均路径长度 %%求解算法: 首先利用Floyd算法求解出任意两节点的距离,再求距离的平均值得平均路径长度 %A————————网络图的邻接矩阵 %D————————返回值: 网络图的距离矩阵 %aver_D—————返回值: 网络图的平均路径长度 N=size(A,2); D=A; D(find(D==0))=inf;%将邻接矩阵变为邻接距离矩阵,两点无边相连时赋值为inf,自身到自身的距离为0. fori=1: N D(i,i)=0; end fork=1: N %Floyd算法求解任意两点的最短距离 fori=1: N forj=1: N ifD(i,j)>D(i,k)+D(k,j) D(i,j)=D(i,k)+D(k,j); end end end end aver_D=sum(sum(D))/(N*(N-1)) %平均路径长度 ifaver_D==inf disp('该网络图不是连通图'); end 5)度度关联系数的代码如下: function[r]=get_degree_correlation(A) %该函数用来求网络的度-度相关性 %当r>0度-度正相关assortativeness %当r=0度-度没有相关nonassortativeness %当r<0度-度负相关disassortativeness %输入参数是一个网络的邻接矩阵 %基于Pearson算法求 B=triu(A); M=size(find(B==1),1); sum1=0; sum2=0; sum3=0; A1=find(B==1); length=size(A1,1); fori=1: length [xy]=ind2sub(size(B),A1(i)); sum1=sum1+get_degree(A,x)*get_degree(A,y); sum2=sum2+get_degree(A,x)+get_degree(A,y); sum3=sum3+get_degree(A,x)^2+get_degree(A,y)^2; end x1=sum1/M-(sum2/(2*M))^2; y1=sum3/(2*M)-(sum2/(2*M))^2; r=x1/y1; end function[out]=get_degree(A,k) %GET_DEGREESummaryofthisfunctiongoeshere %Detailedexplanationgoeshere %A为邻接矩阵 %得到网络A节点为k的度 row=A(k,: ); out=size(find(row==1),2); end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空手道