度,聚类系数,平均路径长度程序
复杂网络聚类系数和平均路径长度计算的MATLAB源代码

复杂网络聚类系数和平均路径长度计算的MATLAB源代码复杂网络的聚类系数和平均路径长度是度量网络结构特征的重要指标。
下面是MATLAB源代码,用于计算复杂网络的聚类系数和平均路径长度。
首先,我们需要定义一个函数,用于计算节点的聚集系数。
这个函数的输入参数是邻接矩阵和节点的索引,输出参数是节点的聚类系数。
```matlabfunction cc = clustering_coefficient(adj_matrix, node_index) neighbors = find(adj_matrix(node_index, :));k = length(neighbors);if k < 2cc = 0;elseconnected_count = 0;for i = 1:k-1for j = i+1:kif adj_matrix(neighbors(i), neighbors(j))connected_count = connected_count + 1;endendendcc = 2 * connected_count / (k * (k - 1));endend```接下来,我们定义一个函数,用于计算整个网络的平均聚合系数。
```matlabfunction avg_cc = average_clustering_coefficient(adj_matrix) n = size(adj_matrix, 1);cc = zeros(n, 1);for i = 1:ncc(i) = clustering_coefficient(adj_matrix, i);endavg_cc = sum(cc) / n;end```然后,我们需要计算网络的平均最短路径长度。
这里我们使用了Floyd算法来计算每对节点之间的最短路径。
```matlabfunction avg_path_length =average_shortest_path_length(adj_matrix)n = size(adj_matrix, 1);dist_matrix =graphallshortestpaths(sparse(double(adj_matrix)));avg_path_length = sum(dist_matrix(:)) / (n^2 - n);end```最后,我们可以使用这些函数来计算一个复杂网络的聚类系数和平均路径长度。
加权聚类系数和加权平均路径长度matlab代码

加权聚类系数和加权平均路径长度matlab代码(实用版)目录1.引言2.加权聚类系数和加权平均路径长度的定义和意义3.Matlab 代码实现4.结论正文一、引言在网络科学中,聚类系数和平均路径长度是两个重要的参数,用于描述网络的结构特性。
加权聚类系数和加权平均路径长度是在此基础上,对这两个参数进行加权处理,使得分析结果更加精确。
本文将介绍如何使用Matlab 代码实现加权聚类系数和加权平均路径长度的计算。
二、加权聚类系数和加权平均路径长度的定义和意义1.加权聚类系数加权聚类系数是用来衡量网络中节点之间联系紧密程度的参数。
其计算公式为:加权聚类系数 = (∑(权重^2)) / (∑(权重))其中,权重代表连接两个节点的边的权重。
2.加权平均路径长度加权平均路径长度是用来衡量网络中节点之间平均距离的参数。
其计算公式为:加权平均路径长度 = ∑(路径长度 * 权重) / ∑(权重)其中,路径长度代表从源节点到目标节点经过的边的权重之和,权重代表连接两个节点的边的权重。
三、Matlab 代码实现假设我们有一个邻接矩阵表示的网络,邻接矩阵如下:```A = [0, 1, 1, 0, 0, 1, 0, 1, 0, 0];```我们可以使用以下 Matlab 代码实现加权聚类系数和加权平均路径长度的计算:```matlab% 邻接矩阵A = [0, 1, 1, 0, 0, 1, 0, 1, 0, 0];% 计算加权聚类系数weight = A; % 假设权重与邻接矩阵相同clustering_coefficient = sum(weight.^2) / sum(weight);% 计算加权平均路径长度path_length = sum(sum(weight, 2) * weight) / sum(weight);```四、结论通过 Matlab 代码,我们可以方便地实现加权聚类系数和加权平均路径长度的计算。
复杂网络中的拓扑学与结构分析

复杂网络中的拓扑学与结构分析复杂网络进入我们的生活已经很长时间了,我们在平日里上网、聊天、购物、搜索等活动都是在复杂网络上进行的。
除此之外,复杂网络还应用在了医学、社会学等领域中,帮助我们更好地理解和分析复杂的数据关系,进而做出更好的决策和预测。
其中,拓扑学和结构分析是复杂网络中的重要组成部分。
拓扑学是研究几何学形状不变性质的数学分支,而在复杂网络中,拓扑学则是研究网络的形态和关系的学科,其主要研究的是节点之间连接的拓扑模式、度分布以及路径长度等。
在网络拓扑结构分析中,主要考虑的指标有度、度分布、平均路径长度、聚类系数、介数中心性和接近中心性等。
首先,节点的度是指连接该节点的边数,度可以体现节点的重要性和相对地位。
在复杂网络中,大部分节点度数相对较小,而只有少数节点度数较大,这就形成了度分布的特征,度分布的特征可以说明网络的规模、密度和结构特征等。
例如,社交网络中用户的朋友圈往往是以少部分用户连接大量节点的方式构成,而绝大部分用户则是连接较少节点的小数节点。
这种小世界现象可以大大提高信息分享效率和节点间的紧密程度。
其次,平均路径长度是指网络中任意两个节点之间的最短距离,计算平均路径长度可以评估网络的紧密程度和信息传输效率。
在互联网中,通过DNS服务器的域名解析可以实现跨域名的访问,这就是利用了互联网中大量的中继节点来快速传输信息。
DNS服务器相当于一个分布式的信息寻址系统,将域名转化为IP地址,起到了重要的作用。
第三,聚类系数是指网络中某个节点及其相邻节点之间实际连接的边数与理论最多连接边数之比,可以衡量节点周围的互连程度。
例如,社交网络中朋友间彼此认识的概率比较大,也就是说网络中的社群现象很常见,聚类系数也反映了网络中社群的形成程度。
在生物学中,聚类系数可以用来衡量某个蛋白质分子在整个蛋白质网络中的作用和分布情况。
第四,介数中心性是指网络中某个节点对其他节点之间传递信息的控制程度,介数中心性高的节点会极大影响信息传递过程的效率和稳定性。
复杂网络聚类系数和平均路径长度计算的MATLAB源代码

复杂网络聚类系数和平均路径长度计算的MA TLAB源代码申明:文章来自百度用户carrot_hy复杂网络的代码总共是三个m文件,复制如下:第一个文件,CCM_ClusteringCoef.mfunction [Cp_Global, Cp_Nodal] = CCM_ClusteringCoef(gMatrix, Types)% CCM_ClusteringCoef calculates clustering coefficients.% Input:% gMatrix adjacency matrix% Types type of graph:'binary','weighted','directed','all'(default). % Usage:% [Cp_Global, Cp_Nodal] = CCM_ClusteringCoef(gMatrix, Types)returns% clustering coefficients for all nodes "Cp_Nodal" and average clustering% coefficient of network "Cp_Global".% Example:% G = CCM_testGraph1('nograph');% [Cp_Global, Cp_Nodal] = CCM_ClusteringCoef(G);% Note:% 1) one node have vaule 0, while which only has a neighbour or none.% 2) The dircted network termed triplets that fulfill the follow condition % as non-vacuous: j->i->k and k->i-j,if don't satisfy with that as% vacuous, just like: j->i,k->i and i->j,i->k. and the closed triplets% only j->i->k == j->k and k->i->j == k->j.% 3) 'ALL' type network code from Mika Rubinov's BCT toolkit.% Refer:% [1] Barrat et al. (2004) The architecture of the complex weighted networks. % [2] Wasserman,S.,Faust,K.(1994) Social Network Analysis: Methods and% Applications.% [3] Tore Opsahl and Pietro Panzarasa (2009). "Clustering in Weighted% Networks". Social Networks31(2).% See also CCM_Transitivity% Written by Yong Liu, Oct,2007% Center for Computational Medicine (CCM),% National Laboratory of Pattern Recognition (NLPR),% Institute of Automation,Chinese Academy of Sciences (IACAS), China.% Revise by Hu Yong, Nov, 2010% E-mail:% based on Matlab 2006a% $Revision: 1.0, Copywrite (c) 2007error(nargchk(1,2,nargin,'struct'));if(nargin < 2), Types = 'all'; endN = length(gMatrix);gMatrix(1:(N+1):end) = 0;%Clear self-edgesCp_Nodal = zeros(N,1); %Preallocateswitch(upper(Types))case 'BINARY'%Binary networkgMatrix = double(gMatrix > 0);%Ensure binary networkfor i = 1:Nneighbor = (gMatrix(i,:) > 0);Num = sum(neighbor);%number of neighbor nodestemp = gMatrix(neighbor, neighbor);if(Num > 1), Cp_Nodal(i) = sum(temp(:))/Num/(Num-1); end endcase 'WEIGHTED'% Weighted network -- arithmetic meanfor i = 1:Nneighbor = (gMatrix(i,:) > 0);n_weight = gMatrix(i,neighbor);Si = sum(n_weight);Num = sum(neighbor);if(Num > 1),n_weight = ones(Num,1)*n_weight;n_weight = n_weight + n_weight';n_weight = n_weight.*(gMatrix(neighbor, neighbor) > 0); Cp_Nodal(i) = sum(n_weight(:))/(2*Si*(Num-1));endend%case 'WEIGHTED'% Weighted network -- geometric mean% A = (gMatrix~= 0);% G3 = diag((gMatrix.^(1/3) )^3);)% A(A == 0) = inf; %close-triplet no exist,let CpNode=0 (A=inf)% CpNode = G3./(A.*(A-1));case 'DIRECTED', % Directed networkfor i = 1:Ninset = (gMatrix(:,i) > 0); %in-nodes setoutset = (gMatrix(i,:) > 0)'; %out-nodes setif(any(inset & outset))allset = and(inset, outset);% Ensure aji*aik > 0,j belongs to inset,and k belongs to outset total = sum(inset)*sum(outset) - sum(allset);tri = sum(sum(gMatrix(inset, outset)));Cp_Nodal(i) = tri./total;endend%case 'DIRECTED', % Directed network -- clarity format (from Mika Rubinov, UNSW) % G = gMatrix + gMatrix'; %symmetrized% D = sum(G,2); %total degree% g3 = diag(G^3)/2; %number of triplet% D(g3 == 0) = inf; %3-cycles no exist,let Cp=0% c3 = D.*(D-1) - 2*diag(gMatrix^2); %number of all possible 3-cycles% Cp_Nodal = g3./c3;%Note: Directed & weighted network (from Mika Rubinov)case 'ALL',%All typeA = (gMatrix~= 0); %adjacency matrixG = gMatrix.^(1/3) + (gMatrix.').^(1/3);D = sum(A + A.',2); %total degreeg3 = diag(G^3)/2; %number of tripletD(g3 == 0) = inf; %3-cycles no exist,let Cp=0c3 = D.*(D-1) - 2*diag(A^2);Cp_Nodal = g3./c3;otherwise,%Eorr Msgerror('Type only four: "Binary","Weighted","Directed",and "All"');endCp_Global =sum(Cp_Nodal)/N;%%第二个文件:CCM_AvgShortestPath.mfunction [D_Global, D_Nodal] = CCM_AvgShortestPath(gMatrix, s, t)% CCM_AvgShortestPath generates the shortest distance matrix of source nodes % indice s to the target nodes indice t.% Input:% gMatrix symmetry binary connect matrix or weighted connect matrix % s source nodes, default is 1:N% t target nodes, default is 1:N% Usage:% [D_Global, D_Nodal] = CCM_AvgShortestPath(gMatrix) returns the mean% shortest-path length of whole network D_Global,and the mean shortest-path % length of each node in the network% Example:% G = CCM_TestGraph1('nograph');% [D_Global, D_Nodal] = CCM_AvgShortestPath(G);% See also dijk, MEAN, SUM% Written by Yong Liu, Oct,2007% Modified by Hu Yong, Nov 2010% Center for Computational Medicine (CCM),% Based on Matlab 2008a% $Revision: 1.0, Copywrite (c) 2007% ###### Input check #########error(nargchk(1,3,nargin,'struct'));N = length(gMatrix);if(nargin < 2 | isempty(s)), s = (1:N)';else s = s(:); endif(nargin < 3 | isempty(t)), t = (1:N)';else t = t(:); end% Calculate the shortest-path from s to all nodeD = dijk(gMatrix,s);%D(isinf(D)) = 0;D = D(:,t); %To target nodesD_Nodal = (sum(D,2)./sum(D>0,2));% D_Nodal(isnan(D_Nodal)) = [];D_Global = mean(D_Nodal);第三个文件: dijk.mfunction D = dijk(A,s,t)%DIJK Shortest paths from nodes 's' to nodes 't' using Dijkstra algorithm.% D = dijk(A,s,t)% A = n x n node-node weighted adjacency matrix of arc lengths% (Note: A(i,j) = 0 => Arc (i,j) does not exist;% A(i,j) = NaN => Arc (i,j) exists with 0 weight)% s = FROM node indices% = [] (default), paths from all nodes% t = TO node indices% = [] (default), paths to all nodes% D = |s| x |t| matrix of shortest path distances from 's' to 't' % = [D(i,j)], where D(i,j) = distance from node 'i' to node 'j'%% (If A is a triangular matrix, then computationally intensive node% selection step not needed since graph is acyclic (triangularityis a% sufficient, but not a necessary, condition for a graph to be acyclic)% and A can have non-negative elements)%% (If |s| >> |t|, then DIJK is faster if DIJK(A',t,s) used, where D is now% transposed and P now represents successor indices)%% (Based on Fig. 4.6 in Ahuja, Magnanti, and Orlin, Network Flows,% Prentice-Hall, 1993, p. 109.)% Copyright (c) 1998-2000 by Michael G. Kay% Matlog Version 1.3 29-Aug-2000%% Modified by JBT, Dec 2000, to delete paths% Input Error Checking******************************************************error(nargchk(1,3,nargin,'struct'));[n,cA] = size(A);if nargin < 2 | isempty(s), s = (1:n)'; else s = s(:); end if nargin < 3 | isempty(t), t = (1:n)'; else t = t(:); end if ~any(any(tril(A) ~= 0)) % A is upper triangularisAcyclic = 1;elseif ~any(any(triu(A) ~= 0)) % A is lower triangularisAcyclic = 2;else % Graph may not be acyclicisAcyclic = 0;endif n ~= cAerror('A must be a square matrix');elseif ~isAcyclic & any(any(A < 0))error('A must be non-negative');elseif any(s < 1 | s > n)error(['''s'' must be an integer between 1 and ',num2str(n)]);elseif any(t < 1 | t > n)error(['''t'' must be an integer between 1 and ',num2str(n)]);end% End (Input Error Checking)************************************************ A = A'; % Use transpose to speed-up FIND for sparse AD = zeros(length(s),length(t));P = zeros(length(s),n);for i = 1:length(s)j = s(i);Di = Inf*ones(n,1); Di(j) = 0;isLab = logical(zeros(length(t),1)); if isAcyclic == 1nLab = j - 1;elseif isAcyclic == 2nLab = n - j;elsenLab = 0;UnLab = 1:n;isUnLab = logical(ones(n,1));endwhile nLab < n & ~all(isLab)if isAcyclicDj = Di(j);else % Node selection[Dj,jj] = min(Di(isUnLab));j = UnLab(jj);UnLab(jj) = [];isUnLab(j) = 0;endnLab = nLab + 1;if length(t) < n, isLab = isLab | (j == t); end[jA,kA,Aj] = find(A(:,j));Aj(isnan(Aj)) = 0;if isempty(Aj), Dk = Inf; else Dk = Dj + Aj; endP(i,jA(Dk < Di(jA))) = j;Di(jA) = min(Di(jA),Dk);if isAcyclic == 1 % Increment node index for upper triangular Aj = j + 1;elseif isAcyclic == 2 % Decrement node index for lower triangular A j = j - 1;end%disp( num2str( nLab ));endD(i,:) = Di(t)';end。
复杂网络课程设计

复杂网络课程设计一、课程目标知识目标:1. 理解复杂网络的定义、特点及基本概念,掌握网络科学的基本原理;2. 学习复杂网络中的度、聚类系数、路径长度等基本统计量,并了解其现实意义;3. 了解复杂网络的分类,如规则网络、随机网络、小世界网络和无标度网络等,并分析其特点。
技能目标:1. 能够运用复杂网络的建模方法,构建简单的网络模型;2. 学会运用网络分析软件,对实际网络数据进行处理和分析;3. 能够运用所学知识解释现实生活中的网络现象,提高解决问题的能力。
情感态度价值观目标:1. 培养学生对复杂网络科学的学习兴趣,激发探索精神;2. 培养学生具备合作、分享的团队精神,增强人际交往能力;3. 引导学生关注复杂网络在生活中的应用,提高对科学技术的认识,培养创新意识。
课程性质:本课程属于选修课,旨在帮助学生拓展知识面,提高解决实际问题的能力。
学生特点:高中生,具有一定的数学基础和逻辑思维能力,对新鲜事物充满好奇心。
教学要求:结合实际案例,注重理论与实践相结合,提高学生的动手操作能力和创新能力。
通过本课程的学习,使学生能够掌握复杂网络的基本知识,具备网络分析的基本技能,并在情感态度价值观方面得到提升。
二、教学内容1. 复杂网络基本概念- 网络的定义与构成要素- 网络科学的发展历程与现状2. 复杂网络的统计量- 度、度分布、平均度- 聚类系数、路径长度、连通度3. 复杂网络的分类与特点- 规则网络、随机网络、小世界网络- 无标度网络、层次网络、动态网络4. 复杂网络建模方法- ER随机网络模型- WS小世界网络模型- BA无标度网络模型5. 复杂网络分析软件与应用- Gephi、Cytoscape等软件的使用方法- 实际网络数据的处理与分析6. 复杂网络在现实生活中的应用- 社交网络、交通网络、生物网络等- 网络科学在疫情防控、城市规划等领域的应用教学内容安排与进度:第1-2周:复杂网络基本概念与统计量第3-4周:复杂网络的分类与特点第5-6周:复杂网络建模方法第7-8周:复杂网络分析软件与应用第9-10周:复杂网络在现实生活中的应用本教学内容参考教材相关章节,结合课程目标,注重理论与实践相结合,旨在帮助学生系统地掌握复杂网络的基本知识,培养学生的网络分析与创新能力。
加权聚类系数和加权平均路径长度matlab代码

加权聚类系数和加权平均路径长度matlab代码加权聚类系数和加权平均路径长度是图论中一对重要的指标,用于评价网络图中节点之间的连接密度和通信效率。
在本文中,我将重点介绍加权聚类系数和加权平均路径长度的概念,并提供相应的Matlab代码来计算这些指标。
1. 加权聚类系数加权聚类系数是一种度量网络图中节点局部连接密度的指标。
对于一个节点而言,它的聚类系数定义为该节点的邻居节点之间实际存在的边数与可能存在的边数的比值。
在加权网络图中,我们需要考虑边的权重。
对于给定的节点i,其邻居节点集合定义为Ni,该节点的聚类系数Ci可以通过以下步骤计算得到:1. 对于节点i的每对邻居节点j和k,计算其边的权重wij和wik。
2. 对于每对邻居节点j和k,计算其边的权重的乘积相加,即sum =Σ(wij * wik)。
3. 计算节点i的邻居节点之间可能的边数,即possible_edges = (|Ni| * (|Ni| - 1)) / 2。
4. 计算节点i的加权聚类系数Ci = 2 * sum / possible_edges。
下面是使用Matlab实现计算加权聚类系数的代码:```matlabfunction weighted_clustering_coefficient =compute_weighted_clustering_coefficient(adjacency_matrix) num_nodes = size(adjacency_matrix, 1);weighted_clustering_coefficient = zeros(num_nodes, 1);for i = 1:num_nodesneighbors = find(adjacency_matrix(i, :) > 0);num_neighbors = length(neighbors);if num_neighbors >= 2weights = adjacency_matrix(i, neighbors);weighted_sum = 0;for j = 1:num_neighbors-1for k = j+1:num_neighborsweighted_sum = weighted_sum + (weights(j) * weights(k));endendpossible_edges = (num_neighbors * (num_neighbors - 1)) / 2;weighted_clustering_coefficient(i) = 2 * weighted_sum / possible_edges;endendend```在上述代码中,我们首先根据给定的邻接矩阵的大小确定节点数量。
路网指标

网络性能
全局效率 用全局效率表示网络节点间联系的强弱,假设i与j之间联系 效率为εij与最短路径成反比,因而全局效率可以定义为所 有节点之间的最短路径倒数之和的平均值,公式如下:
1 1 1 Eglobal ij N ( N 1) d N ( N 1) ji ji ij
Cnet k (k 1) p(k )C( K )
k
网络性能
网络密度 网络密度是反映网络疏密程度的指标 其公式为:
K N 1
其中<K>为网络的平均节点度
网络性能
紧密度指标反映节点通过网络对其它节点施加影响的 能力,紧密度指标定义为
cc [ dij ]
i
n1Leabharlann 网络性能EFi=ESi/n
约束度
约束度指的是该节点在自己的网络中拥有的利用结构 洞的能力,以节点对其但节点的依赖值为评价标准, 数值越大,约束性越强;数值越小,节点越能跨越结 构洞。公式如下:
Cij pij piqpqj) (
2 q
等级度
等级度指的是约束性在多大程度上集中于某一个节点 身上。如果邻域中对节点的所有约束性都集中于网络 中的某一个节点.则等级度指数就很大。 其公式如下:
1 L 1 dij 2 N ( N 1) i j
聚集系数
局部聚集系数 在k个节点之间最多可能有ki(ki-1)/2条边。而这ki 个节点之间实际存在的边数Ei和总的可能边数 ki(ki-1)/2之比就定义为节点i的聚类系数Ci,即
2 Ei Ci ki (ki 1)
聚集系数
介数 节点i的介数含义为网络中所有最短路径之中经过i的数量。它 反映了节点i的影响力
复杂网络的拓扑结构研究及其应用

复杂网络的拓扑结构研究及其应用中文快速迭代的背后,是复杂网络的支持和优化。
而学术界研究复杂网络已经有了几十年的历史,复杂网络研究的拓扑结构成为推动信息社会最重要的理论基础之一。
一、复杂网络的拓扑结构研究复杂网络的拓扑结构是复杂网络理论研究的核心,其主要研究内容包括网络的度分布、聚类系数、平均路径长度等等。
在网络上,节点与节点之间存在不同的连接方式,这些连接就构成了网络的拓扑结构。
1.1 度分布网络中节点度数与其连接数的分布称为度分布。
度分布满足的重要规律是幂律分布。
就是指网络中绝大多数的节点度数很小,而少数节点可拥有极大的度数。
例如:在社交网络里,绝大多数用户的朋友在50人左右,但是一些名人可有数百万位粉丝。
1.2 聚类系数网络上任意两个节点连接方向是没有高低之分的,但不是每个节点的朋友都对其他朋友有影响。
对于一些大网络来说,同城的朋友很可能也是朋友,而这种情况在社交网络中尤其明显。
聚类系数就是为了评估这种情况而提出的概念。
聚类系数量化了节点的相邻节点之间的相互链接程度。
如果一个节点的两个邻居之间也有连接,那么它们之间就形成一个三角形。
聚类系数是指邻居之间三角形的数量与所有可能形成三角形的数量之比。
1.3 平均路径长度平均路径长度是指网络上所有节点对之间的平均距离。
从一点到另一点的距离,可以理解为在两点之间移动的步数。
想象一下人类的社交圈,从恩人到某一位陌生人,需要连接多少个"朋友",这就是这个社交网络的平均路径长度。
而现实中的大型复杂网络,如社交网络或者互联网,所包含的节点数已经超过了10个亿,标准程序和算法不再适用。
因此,我们需要进行大规模的负载均衡、优化算法,从而爆炸式提高计算速度。
二、复杂网络的应用复杂网络拓扑结构的研究和分析不仅在理论研究方面有着重要的价值,而且其在实际应用中也有着广泛的用途。
比如,复杂网络的应用包括社交网络、物联网、电子商务、系统生物学等等多个领域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function [DeD,aver_DeD]=Degree_Distribution(A)
%% 求网络图中各节点的度及度的分布曲线
%% 求解算法:求解每个节点的度,再按发生频率即为概率,求P(k)
%A————————网络图的邻接矩阵
%DeD————————网络图各节点的度分布
%aver_DeD———————网络图的平均度
N=size(A,2);
DeD=zeros(1,N);
for i=1:N
% DeD(i)=length(find((A(i,:)==1)));
DeD(i)=sum(A(i,:));
end
aver_DeD=mean(DeD);
if sum(DeD)==0
disp('该网络图只是由一些孤立点组成');
return;
else
figure;
bar([1:N],DeD);
xlabel('节点编号n');
ylabel('各节点的度数K');
title('网络图中各节点的度的大小分布图');
end
figure;
M=max(DeD);
for i=1:M+1; %网络图中节点的度数最大为M,但要同时考虑到度为0的节点的存在性N_DeD(i)=length(find(DeD==i-1));
end
P_DeD=zeros(1,M+1);
P_DeD(:)=N_DeD(:)./sum(N_DeD);
bar([0:M],P_DeD,'r');
xlabel('节点的度K');
ylabel('节点度为K的概率P(K)');
title('网络图中节点度的概率分布图');
function [C,aver_C]=Clustering_Coefficient(A)
%% 求网络图中各节点的聚类系数及整个网络的聚类系数
%% 求解算法:求解每个节点的聚类系数,找某节点的所有邻居,这些邻居节点构成一个子图
%% 从A中抽出该子图的邻接矩阵,计算子图的边数,再根据聚类系数的定义,即可算出该节点的聚类系数
%A————————网络图的邻接矩阵
%C————————网络图各节点的聚类系数
%aver———————整个网络图的聚类系数
N=size(A,2);
C=zeros(1,N);
for i=1:N
aa=find(A(i,:)==1); %寻找子图的邻居节点
if isempty(aa)
disp(['节点',int2str(i),'为孤立节点,其聚类系数赋值为0']);
C(i)=0;
else
m=length(aa);
if m==1
disp(['节点',int2str(i),'只有一个邻居节点,其聚类系数赋值为0']);
C(i)=0;
else
B=A(aa,aa); % 抽取子图的邻接矩阵
C(i)=length(find(B==1))/(m*(m-1));
end
end
end
aver_C=mean(C);
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.
for i=1:N
D(i,i)=0;
end
for k=1:N %Floyd算法求解任意两点的最短距离
for i=1:N
for j=1:N
if D(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)); %平均路径长度
if aver_D==inf
disp('该网络图不是连通图');
end
%% 算法2:用时间量级O(MN)的广度优先算法求解一个含N个节点和M条边的网络图的平均路径长度。