← 返回目录

Chapter 16: 连通性

描述图中节点的可达性

🔗 连通与分量•🌉 桥与局部桥•🔄 强连通弱连通

关于连通性

连通性是图论中描述节点之间连接关系的重要概念。 通过连通性,我们可以判断图中任意两个节点是否可达, 识别图中的关键边(桥),以及分析有向图的强弱连通性质。

本章将系统介绍连通图与非连通图、连通分量、桥与局部桥,以及有向图的强连通和弱连通。

✦
16.1

连通性

节点间的可达性

在无向图中,如果存在从节点u到节点v的路径,则称u和v连通(connected)。 如果图中任意两个节点都连通,则称该图为连通图。 连通性是图的一个重要拓扑性质,反映了信息或资源在图中的流通能力。

下面通过BFS(广度优先搜索)算法,动态展示如何查找两个节点之间的路径。

🎯 基本概念

• 连通:节点间存在路径
• 邻接:节点间直接相连
• 可达:能通过路径到达
• 不可达:无路径连接

📊 连通图

• 任意两点都可达
• 只有1个连通分量
• 信息可自由流通
• 无孤立节点或孤岛

💻 NetworkX

has_path(G, u, v)
shortest_path(G, u, v)
is_connected(G)
✦
16.2

连通分量

最大连通子图

连通分量(Connected Component)是无向图中的极大连通子图。 在连通分量内部,任意两个节点都可达; 不同连通分量之间的节点不可达。 非连通图可以分解为多个连通分量。

连通图示例 (图4-5)

特征
• 图中任意两节点都可达
• 只有1个连通分量
• 没有孤立节点或孤岛
• 信息可自由流通
例子
• 完全图 Kn(任意两点直接相连)
• 树(连通且无环)
• 路径图、环图、轮图

非连通图示例 (图6)

特征
• 存在至少一对节点不可达
• 有多个连通分量
• 可能有孤立节点
• 信息流通受限
例子
• 孤立节点的图
• 两个独立的完全图
• 森林(多棵树的集合)

最多6个节点的所有连通图 (图7)

NetworkX提供了图集(Graph Atlas),包含了最多6个节点的所有非同构连通图。 这些图展示了小规模图的所有可能拓扑结构。

• 1个节点:1种(孤立点)
• 2个节点:1种(单边)
• 3个节点:2种(路径、三角形)
• 4个节点:6种
• 5个节点:21种
• 6个节点:112种
参考:networkx.org/documentation/.../plot_atlas.html

📐 数学定义

极大性
不能再添加节点而保持连通
内部连通
分量内任意两点可达
分量隔离
不同分量间无边相连

🔍 识别算法

深度优先搜索 (DFS)
1. 从未访问节点开始DFS
2. 标记所有可达节点
3. 这些节点构成一个分量
4. 重复直到所有节点访问
时间复杂度
O(V + E)

🎯 应用场景

• 社交网络:社群识别
• 网络分析:孤岛检测
• 图像处理:区域分割

📊 性质

• 分量数量 ≥ 1
• 连通图只有1个分量
• 分量之间互不相交

💻 NetworkX

connected_components(G)
number_connected_components(G)
✦
16.3

强连通、弱连通

有向图的连通性

有向图的连通性分为强连通和弱连通。 强连通要求任意两点间存在双向路径,条件严格; 弱连通只要求忽略方向后图连通,条件宽松。 强连通图一定是弱连通图,但反之不成立。

💻 NetworkX函数

强连通
is_strongly_connected(G)
strongly_connected_components(G)
弱连通
is_weakly_connected(G)
weakly_connected_components(G)

🎯 实际应用

强连通
• 网页排名:PageRank核心区域
• 电路分析:反馈回路
• 调度系统:循环依赖检测
弱连通
• 社交网络:社群结构
• 信息传播:影响范围
✦
16.4

桥

图中的关键边

桥(Bridge)是图中移除后会增加连通分量数量的边。 桥连接了两个原本通过该边连通的部分,是图连通性的关键。局部桥虽然不一定是桥,但移除后会显著增加两端节点的距离。

空手道俱乐部的桥与局部桥 (图13-14)

桥 (图13)
• 空手道俱乐部图中有2条桥
• 边(0, 11):连接两个主要社群
• 边(11, 17):连接到孤立节点
• 移除这些边会增加连通分量数
示例
• 移除边(0, 11)后
• 节点11和18不再连通
• 图分裂为多个分量
局部桥 (图14)
• 局部桥包含所有桥
• 还包括移除后显著增加距离的边
• 淡粉色:所有局部桥
• 橙色:局部桥中的非桥
NetworkX
nx.bridges(G)
nx.local_bridges(G)
nx.has_bridges(G)

树中的桥 (图15)

重要性质
• 树中每条边都是桥
• 移除任意边都会分裂成两棵树
• 树没有环路,无替代路径
推论
• 树中每条边也都是局部桥
• 树是最脆弱的连通结构
• n节点树有n-1条桥

k边连通 (图16-17)

定义
• 至少需移除k条边才能使图非连通
• k越大,连通性越强
• 1边连通 = 有桥
• 2边连通 = 无桥
哑铃图
• 图16:两个完全图通过1条边连接
• 整体是1边连通
• 图17:每个完全图是2边连通分量
📊
k边连通的应用

网络可靠性:k边连通图可以承受最多k-1条边的故障而保持连通。 通信网络、电网等关键基础设施通常设计为至少2边连通,以提供冗余保护。

最大k边连通分量:识别图中最鲁棒的子结构, 这些分量内部具有高度的连通性和容错能力。

🌉 桥的性质

• 关键性:移除后图不连通
• 唯一性:连接两部分的唯一边
• 脆弱性:网络单点故障
• 重要性:需要冗余保护

🔍 识别算法

方法1:逐边移除测试
• 简单但O(E·(V+E))
方法2:Tarjan算法
• 一次DFS,O(V+E)
• 使用low-link值

🎯 应用场景

• 网络设计:瓶颈识别
• 基础设施:关键设施
• 社交网络:关键人物
• 生态系统:关键物种
⚠️
桥与局部桥的关系

所有的桥都是局部桥:桥移除后图不连通,两端节点距离变为无穷,必然是局部桥。

局部桥未必是桥:局部桥可能只是让两端距离变长,但不至于断开连通性。

✦

本章小结

连通性是图论中描述节点可达性的核心概念。 通过连通性分析,我们可以识别网络中的关键结构、 检测孤岛、发现瓶颈,为网络优化和风险管理提供依据。

📊 核心概念

🔗
连通性
节点间的可达关系
📦
连通分量
极大连通子图
🌉
桥
关键连接边
🔄
强/弱连通
有向图性质

🎯 实际应用

• 社交网络:社群发现、影响力分析
• 交通网络:瓶颈识别、路线优化
• 通信网络:可靠性评估、冗余设计
• 生态网络:关键物种、食物链
• 金融网络:系统性风险、传染路径

💡 关键要点

无向图
  • • 连通图:任意两点可达
  • • 连通分量:极大连通子图
  • • 桥:移除后连通性下降
有向图
  • • 强连通:任意两点双向可达
  • • 弱连通:忽略方向后连通
  • • 强连通 ⊆ 弱连通