本文为“复杂网络仿真入门到精通”系列的第三篇,前一篇我们学习了如何构建网络(包括随机网络、小世界网络与无标度网络),本篇将聚焦于网络的可视化与基础统计分析,并进一步探讨如何判断一个网络是否具有“小世界”或“无标度”特性。
一、引言
网络不仅仅是由节点与边组成的抽象结构,其拓扑特征往往蕴含了系统行为的重要信息。
从社交网络到神经网络,从交通系统到蛋白质相互作用网络,理解网络的统计特性是揭示系统规律的第一步。
本文将以 MATLAB 为主要工具,介绍:
- 网络可视化方法;
- 网络基本指标计算;
- 小世界与无标度性质的定量分析;
- 幂律分布拟合与验证。
github代码地址:复杂网络学习合集-step3
如访问不了可从下列地址保存:第一个文件夹 下面的 Step3
网盘地址
二、准备数据
可以使用前一篇中的随机、小世界、无标度模型,或导入真实网络。
例如,若已有边列表文件 edge_list.csv:
1 | if isfile('edge_list.csv') |
为了更直观地展示结构特征,可以根据节点度调整节点大小或颜色:
1 | deg = degree(G); |
同理 Python R语言,都可以实现类似的可视化方案
四、网络基本统计指标
1. 节点与边
1 | numNodes = numnodes(G); |
2. 平均度与度分布
1 | deg = degree(G); |
3. 聚类系数与平均最短路径长度
1 | C = mean(clusteringCoefficient(G)); |
clusteringCoefficient(G)可用自定义函数或基于邻接矩阵计算:
1
2
3
4
5
6
7
8
9
10
11
12 function C = clusteringCoefficient(G)
A = adjacency(G);
n = size(A,1);
C = zeros(n,1);
for i=1:n
ki = sum(A(i,:));
if ki > 1
subA = A(i,:) * A * A(:,i);
C(i) = subA / (ki*(ki-1));
end
end
end
五、小世界特性分析
小世界网络一般具有:
- 高聚类系数;
- 短平均路径长度。
为了验证网络是否具有小世界特征,我们需要把网络与同规模、同平均度的随机网络进行对比:
1 | N = numnodes(G); |
六、无标度特性与幂律度分布
无标度网络的节点度分布通常服从幂律形式:
$$P(k) \sim k^{-\gamma}$$
在对数坐标下呈线性关系。
1 | deg = degree(G); |
幂律拟合与参数估计
1 | validIdx = deg > 0; |
若无 plfit 函数,可自行实现或使用简化线性拟合:
1 | logk = log(bins_center(bins_center>0)); |
七、综合分析
| 特性 | 判断依据 | 结论示例 |
|---|---|---|
| 小世界 | ( SWI > 1 ) | 是 |
| 无标度 | 度分布符合幂律 | 是(γ ≈ 2.5) |
若网络同时满足以上两点,则说明其拓扑结构兼具局部聚集与全局稀疏的复杂性特征。
八、结论
本文从可视化入手,系统介绍了复杂网络的基础统计分析方法。
通过对聚类系数、路径长度、度分布及幂律拟合的分析,我们能够初步判断网络类型:
- 小世界网络 → 局部紧密、全局高效;
- 无标度网络 → 度分布长尾,存在“枢纽节点”;
这些特性不仅是理论研究的核心,也为后续的鲁棒性分析与传播动力学仿真提供了基础。
九、下一篇预告
下一篇《复杂网络系列④:网络鲁棒性分析》
我们将深入探讨:
- 网络在随机失效与攻击下的稳定性;
- 节点介数、节点度、中心性等多种重要性指标。
敬请期待。
最后
我们开发了一个在线复杂网络计算平台:
👉 复杂网络分析平台
支持:
- 上传邻接矩阵文件;
- 自动构建网络;
- 指标一键计算与可视化;
- AI 智能报告生成。