基于邻接矩阵的复杂网络同配系数计算系统
项目及功能概述
本项目是一个专注于复杂网络拓扑结构分析的MATLAB系统,核心功能是通过网络的邻接矩阵精确计算同配系数(Assortativity Coefficient)。同配系数是衡量网络中节点连接倾向性的关键指标(即度值相似的节点是否倾向于互相连接)。
系统采用单一脚本入口设计,集成了模拟数据生成、矩阵预处理、拓扑特性分析、核心算法计算以及多维度的可视化展示功能。不仅能够量化网络的同配性/异配性水平,还能通过图表直观展示网络的连接模式。
核心功能特性
- 自动化模拟数据生成:内置合成网络生成器,能够生成ER随机网络或BA无标度网络(Scale-Free Network),用于算法验证和演示。
- 智能矩阵处理:自动检测输入矩阵的对称性以区分有向图与无向图,并利用稀疏矩阵(Sparse Matrix)数据结构优化内存占用,适应大规模网络分析。
- 标准化同配计算:基于Newman标准公式,通过计算连接节点度值的Pearson相关系数来量化同配性。算法涵盖了自环(Self-loops)剔除和有向图的总度(Total Degree)处理。
- 智能结果解读:根据计算出的系数范围(r > 0.05 或 r < -0.05),自动判定网络属于同配性、异配性还是随机模式。
- 三维一体可视化:提供包含邻接矩阵拓扑图、节点度分布直方图、度-度相关性散点图的综合可视化面板。
系统环境与使用方法
系统要求
- 运行环境:MATLAB (推荐 R2016b 及以上版本)
- 工具箱:无特殊依赖,仅需MATLAB基础数值计算功能。
使用方法
- 直接运行入口脚本(
main)。 - 数据加载阶段:脚本默认配置为生成一个包含300个节点的BA无标度网络(NetworkType = 2)。
* *注:如需分析自有数据,可在代码第一阶段替换
generate_synthetic_network 调用,直接加载 CSV 或 MAT 文件及其邻接矩阵。*
- 计算与输出:
* 控制台将输出网络的基本类型(有向/无向)。
* 实时打印计算得到的同配系数 $r$ 值。
* 根据阈值自动输出网络性质结论(同配/异配/非同配)。
- 图表展示:程序运行结束后,会自动弹出一个名为“网络同配性分析系统”的窗口,展示分析图表。
核心算法与实现逻辑分析
本项目的核心逻辑实现于单一脚本中,主要划分为三个阶段:
1. 数据准备与预处理
脚本首先进行环境清理,随后进入数据准备阶段。
- 数据生成:通过内置生成器构建 $N=300$ 的网络。当前默认配置为 Type 2(BA无标度网络),该模型通过“优先连接机制”(Preferential Attachment)模拟真实世界的复杂网络,通常具有异配性倾向或中性倾向。
- 稀疏化:代码强制检查并转换邻接矩阵为
sparse 格式,这对处理包含大量零元素的大型邻接矩阵至关重要。
2. 拓扑分析与同配系数计算
这是系统的核心计算模块,由专门的子函数封装实现:
- 网络类型判别:主要利用
issymmetric 函数判断邻接矩阵是否对称,从而确定网络是有向还是无向。 - 度值计算:
*
无向图:直接计算行非零元素之和。
*
有向图:为了保证同配性定义的普适性,算法计算节点的
总度(Total Degree = 入度 + 出度)。
* 利用
find 函数高效提取稀疏矩阵中的所有连边 $(i, j)$。
*
剔除自环:逻辑中包含过滤 $i == j$ 的步骤,防止节点自身的连接通过影响方差而干扰Pearson相关系数的计算。
* 通过映射,构建两个向量:
k_src(每条边源节点的度)和
k_tgt(每条边目标节点的度)。
* 直接调用
corrcoef 计算这两个向量的相关系数。正值代表核心节点倾向于连接核心节点(同配),负值代表核心节点连接边缘节点(异配)。
* 代码包含了针对特殊情况(如完全规则网络导致方差为0)的
NaN 处理逻辑,将其置为0。
3. 多维度可视化
可视化模块不仅仅是绘图,还包含统计分析逻辑:
- 邻接矩阵模式图 (Spy Plot):使用黑点绘制矩阵非零元素,直观展示连接及其稀疏程度。
- 度分布直方图:统计网络中所有节点的度,通过直方图展示网络是否存在长尾分布(Scale-free property)。
- 度-度相关性分析图:
*
散点抖动 (Jittering):由于节点度数通常为整数,直接绘制散点会发生重叠。代码在坐标上增加了微小的随机抖动($pm 0.3$),使得点的密度分布更清晰。
*
平均邻居度趋势线 ($k_{nn}$):这是一个高级统计量。算法遍历所有度为 $k$ 的节点,计算它们邻居的平均度数,并绘制出 $k$ vs $k_{nn}(k)$ 的折线图。
* 若曲线单调递增,对应同配性。
* 若曲线单调递减,对应异配性。
代码内置模型参数
当前
generate_synthetic_network 函数实现的生成逻辑如下:
- Type 1 (ER): 随机图,连接概率 $p=0.05$。
- Type 2 (BA): 无标度网络,每次引入新节点建立 $m=3$ 条连边,基于度优先概率连接。默认生成的网络具有幂律度分布特征。