系列文章:
- 系列合集
- 下一篇预告:网络可视化与基础统计分析
💡 引言
在复杂网络研究中,“网络构建” 是一切分析与建模的起点。
无论你要研究传播、鲁棒性还是社团结构,第一步都必须拥有一个可计算、可分析的网络结构。而且后续我们的研究,也是研究这个目标网络的特性。
本文以Matlab代码为实例,进行代码说明。
- GitHub 开源代码库:complex-network-study
- 如果上面链接访问不了,可以 网盘提取
从研究角度看,网络的构建主要分为两类:
① 模拟网络(Synthetic Network) —— 基于模型算法生成;
② 实体网络(Empirical Network) —— 来自现实数据的网络。
两类方式各有侧重:
- 模拟网络用于理论研究与算法验证;
- 实体网络用于真实系统建模与特性分析。
而无论哪种方式,最终的核心数据结构都是:邻接矩阵(Adjacency Matrix),邻接表也是可以的。
🧩 一、邻接矩阵的基本形式
假设我们有 ( N ) 个节点,网络可以用一个 ( N \times N ) 的矩阵 ( A ) 表示:
$$
A_{ij} =
\begin{cases}
1, & \text{节点 } i \text{ 与 } j \text{ 有边相连} \
0, & \text{节点 } i \text{ 与 } j \text{ 无连接}
\end{cases}
$$
- 对于无向网络:矩阵对称$A_{ij} = A_{ji}$;
- 对于有向网络:矩阵一般不对称;
- 对于加权网络:$A_{ij}$ 可取任意实数权重。
表达矩阵和后续计算 一般有两种方式:
- 使用二维矩阵(
double或sparse)来存储邻接矩阵,并以矩阵形式进行后续计算。 - 使用邻接矩阵或者邻接表构建图对象(G),并使用这个对象进行后续计算。
🧠 二、构建网络的两条主线
(一)模拟网络(Synthetic Networks)
模拟网络通过算法或数学模型生成人工网络,用于验证理论或测试算法表现。
常见模型包括:
| 网络类型 | 特点 | MATLAB 构建方式 |
|---|---|---|
| 随机网络(Erdős–Rényi, ER) | 边以固定概率 p 随机生成 | sprand(N, N, p) |
| 小世界网络(Watts–Strogatz, WS) | 高聚类 + 短路径 | wattsStrogatz(N, K, p) |
| 无标度网络(Barabási–Albert, BA) | 幂律度分布,存在 Hub 节点 | pref 或自编生长算法 |
✅ 示例:随机网络(ER)模型
1 | N = 10; % 节点数 |
✅ 示例:无标度网络(BA)模型
1 | N = 20; m = 2; |
这些网络模型是复杂网络研究的基础模型,可用于:
- 验证算法;
- 分析理论特性;
- 模拟不同网络拓扑下的行为。
(二)实体网络(Empirical Networks)
实体网络来源于真实世界的数据,是复杂系统的映射结果。
常见来源包括:
| 领域 | 示例 | 数据格式 |
|---|---|---|
| 社会网络 | 微信、微博、协作网络 | .csv, .edge, .gml |
| 生物网络 | 蛋白质相互作用网络 | .graphml, .mat |
| 技术网络 | 电网、交通网络、互联网 | .txt, .json |
| 科研网络 | 引文、合作、知识图谱 | .csv, .gml |
✅ 示例:从边列表构建实体网络
假设你有一个 edges.csv 文件:
| Source | Target |
|---|---|
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 3 | 4 |
MATLAB 构建代码:
1 | data = readtable('edges.csv'); |
✅ 示例:从 .gml 文件导入网络
1 | G = importgraph('network.gml'); % MATLAB R2023a 起支持 |
✅ 示例:从实验或观测矩阵直接读取
1 | A = load('brain_connectivity.mat'); % 神经连接矩阵 |
🔍 三、邻接矩阵的验证与操作
当你成功构建网络后,建议进行基本验证:
1 | N = size(A,1); |
如果矩阵非常稀疏(多数为 0),可转换为稀疏存储:
1 | A = sparse(A); |
🧭 四、延伸阅读:网络构建策略对分析结果的影响
不同的构建方式会显著影响分析结论:
- 模拟网络适合研究拓扑理论与算法鲁棒性;
- 实体网络则能反映真实系统特征与动力学规律。
研究者常在模拟网络上测试方法性能,再在实体网络上验证泛化能力。
⚙️ 五、在线构建与分析平台
我们在平台中提供了一个简易入口:
👉 复杂网络分析平台 - 构建与计算
支持:
- 上传边表 / 邻接矩阵文件;
- 自动构建网络;
- 指标一键计算与可视化;
- AI 智能报告生成。
📘 总结
构建网络是复杂网络研究的起点。
从 模拟网络 到 实体网络,你可以:
- 用 MATLAB 生成理想拓扑结构;
- 从真实数据中提取结构信息;
- 最终得到可分析、可以可视化的邻接矩阵。
下一篇预告:
- 复杂网络入门到精通(三)—— 网络可视化与基础统计
- 我们将使用 MATLAB 展示网络图形化与分布特征。