基于线性规划的图最小边连通度增广问题的多项式时间算法求解示例
字数 5842 2025-12-08 00:34:57

基于线性规划的图最小边连通度增广问题的多项式时间算法求解示例

问题描述

想象你管理着一个通信网络,这个网络可以用一个无向图来表示,其中节点代表城市或基站,边代表通信线路。每条线路(边)都有一定的建设或租赁成本。目前,你的网络已经存在,但它的“健壮性”不够——任意一条线路故障,就可能导致某些城市之间通信断开。在图中,这被称为图的“边连通度”为1。为了提高网络的可靠性,你希望在现有网络的基础上,以最小的总成本增加(或“增广”)一些新的线路,使得最终的网络满足:任意移除一条边,整个图仍然保持连通。在图中,这意味着图的“边连通度”需要达到2。

形式化定义
给定一个无向连通图 \(G=(V, E)\),以及现有边集 \(E_0 \subseteq E\)。同时,给定一个候选新边集 \(F \subseteq E \setminus E_0\)(即可以新增的边),以及每条候选边 \(e \in F\) 对应的成本 \(c(e) > 0\)。目标是找到一个成本最小的边子集 \(A \subseteq F\),使得将 \(A\) 加入到 \(E_0\) 后形成的新图 \(G' = (V, E_0 \cup A)\)边连通度至少为2(即2-边连通)。

核心难点:我们需要确保在最终的图 \(G'\) 中,任意两个顶点之间至少有两条边不相交的路径。这个问题是经典的“最小成本边连通度增广问题”的一个特例(从1增广到2)。它可以通过将其转化为一系列“最小割”问题,并最终用最小生成树算法解决,整个过程是多项式时间的。


解题思路与过程

我们将问题分解为几个关键步骤,并用一个简单的例子贯穿始终,便于你理解。

第一步:理解2-边连通性的等价条件

对于一个无向图,其边连通度至少为2,等价于满足以下任一条件:

  1. 无桥:图中不存在“桥”(即删除该边后图会变得不连通的边)。
  2. 任意边割集大小至少为2:对于图的任意一个非空、非全集的顶点子集 \(S \subset V\),连接 \(S\)\(V\setminus S\) 的边数(称为割 \(\delta(S)\) 的大小)至少为2。

我们的初始图 \(G_0 = (V, E_0)\) 是连通的,但边连通度为1。这意味着图中存在一些“桥”和/或大小为1的割。

第二步:将“补足割条件”转化为子模函数优化

我们的目标是为每个大小小于2的割“补”上边。形式化地:
对于所有满足 \(|\delta_{E_0}(S)| = 1\) 的非平凡顶点子集 \(S \subset V, S \neq \emptyset, S \neq V\)(其中 \(\delta_{E_0}(S)\) 表示在边集 \(E_0\) 中,横跨割 \((S, V\setminus S)\) 的边),我们选择的增广边集 \(A\) 必须满足 \(|\delta_A(S)| \ge 1\)。也就是说,每个“脆弱”的割(在原图中只有一条边横跨)必须被新加的边集 \(A\) 中的至少一条边覆盖。

这本质上是一个覆盖问题:我们要用最小的成本,从候选边集 \(F\) 中选出一个边集 \(A\),使其覆盖所有满足 \(|\delta_{E_0}(S)| = 1\) 的割 \(S\)

第三步:问题的转换与简化(核心洞察)

这是一个关键的理论结果:2-边连通度增广问题(从1到2)可以转化为在所谓的“割图”上求最小生成树的问题

  1. 构建“缩合图”(将双连通分量缩为点)
    首先,我们找出初始图 \(G_0 = (V, E_0)\) 的所有“边双连通分量”(2-边连通分量)。边双连通分量是一个极大的子图,其内部边连通度至少为2。连接不同分量的边恰好就是 \(G_0\) 中所有的桥。
    我们将每个边双连通分量“收缩”成一个超点。设收缩后得到的新图为 \(H = (V_H, E_H)\)。在 \(H\) 中:

    • 每个节点对应 \(G_0\) 中的一个边双连通分量。
    • 每条边对应 \(G_0\) 中的一座桥。
      显然,\(H\) 是一棵树(因为 \(G_0\) 连通,且桥连接分量形成树结构)。我们称 \(H\) 为“桥树”。
  2. 在原图顶点和候选边上重新表述问题
    原图中的每个顶点 \(v \in V\) 现在对应到桥树 \(H\) 中的一个节点(记为 \(comp(v)\))。
    对于候选新边 \(e = (u, v) \in F\)

    • 如果 \(comp(u) = comp(v)\),即 \(u, v\) 在同一个边双连通分量内,那么加入边 \(e\) 对提高整个图的边连通度(从全局看)没有帮助,因为它无法连接两个被桥分隔的块。我们可以忽略这类候选边,或认为它们成本无穷大。
    • 如果 \(comp(u) \neq comp(v)\),即 \(u, v\) 在不同的分量中,那么加入边 \(e\) 就相当于在桥树 \(H\) 中的节点 \(comp(u)\)\(comp(v)\) 之间增加了一条“链接”。
  3. 覆盖条件在树上的体现
    在桥树 \(H\) 中,原图 \(G_0\) 的每个大小为1的割,对应着 \(H\) 中的一条树边(即桥)。回忆我们的覆盖条件:对于原图中每个只有一条桥的割 \(S\),需要至少一条新边跨越它。
    在树 \(H\) 中,这个条件等价于:对于树 \(H\) 中的每一条边(桥)\(b\),我们选择的新边集 \(A\)\(H\) 中对应的边,必须形成一条连接边 \(b\) 两个端点的路径。换句话说,新加的边(在 \(H\) 中看)需要保证树 \(H\) 的每条边都被“覆盖”(即每条边所在的某个环中,至少有一条新加的边)。

  4. 等价转化为树加边成环问题
    经过转化,问题变为:给定一棵树 \(H = (V_H, E_H)\) 和一个候选链接(即候选新边在 \(H\) 中对应的边)集合 \(L\),每个链接 \(l \in L\) 连接 \(H\) 中的两个节点,并具有成本 \(c(l)\)。我们要选择一个链接子集 \(A \subseteq L\),使得 \(H\) 的每条树边都至少被 \(A\) 中的一个链接所形成的环所包含,并且总成本最小。
    这是一个经典的“树加边成2-边连通图”问题。

第四步:多项式时间算法(核心算法)

幸运的是,上述“树加边成2-边连通图”问题存在一个优美且高效的多项式时间算法,其核心是最小生成树

  1. 构建完全图
    考虑桥树 \(H\) 的叶子节点(度数为1的节点)。算法证明,最优解中,任何被选的链接 \(l = (x, y)\) 都可以被认为其端点 \(x\)\(y\) 都是 \(H\) 的叶子节点(因为如果端点不是叶子,可以将其“移动”到某个叶子而不增加成本或破坏覆盖性)。因此,我们只需关注连接 \(H\) 的叶子节点的候选链接。实际上,我们可以构建一个以 \(H\) 的所有叶子节点为顶点的完全图 \(K\)

  2. 计算链接成本
    在完全图 \(K\) 中,连接两个叶子节点 \(i\)\(j\) 的边的成本,定义为在原始候选边集 \(F\) 中,所有能连接叶子 \(i\)\(j\) 所代表的那个边双连通分量(即找到分量中实际顶点,再找到连接这些实际顶点的候选边)的最小成本。如果在 \(F\) 中不存在这样的候选边,则成本设为无穷大。设这个成本为 \(d(i, j)\)

  3. 在完全图上求最小生成树
    在这个以叶子节点为顶点、以 \(d(i, j)\) 为边成本的完全图 \(K\) 上,计算其最小生成树。这个MST给出了连接所有叶子节点的最小成本方式。

  4. 从MST构造增广解
    可以证明,将上一步得到的最小生成树 \(T\) 中的每条边(对应一个成本最低的候选链接)选入增广集 \(A\),即可得到一个原问题的最优解。其总成本就是这个MST的总权重。

为什么这样是正确的? 直观理解:树 \(H\) 的每条边(桥)都必须被“保护”。要保护一条树边,就需要在它所在的路径上添加一条“弦”,形成一个环。连接所有的叶子节点,相当于为树 \(H\) 加上了一个“外骨架”,这个骨架(MST)确保了树中每条边都至少被包含在一个由新加边和树边构成的环中。而最小生成树则保证了总成本最低。


详细计算示例

让我们通过一个具体例子来演练。

初始网络 \(G_0 = (V, E_0)\)
顶点集 \(V = \{1,2,3,4,5,6\}\)
边集 \(E_0 = \{ (1,2), (2,3), (3,4), (4,5), (5,6), (1,6) \}\)
这个图像一个六边形(1-2-3-4-5-6-1),但缺少边(2,6)和(3,5)?实际上它是连通的。让我们画出来:边是 (1,2), (2,3), (3,4), (4,5), (5,6), (1,6)。我们发现,如果删除边(2,3)和(3,4)?等等,检查连通性。实际上,这个图是一个环:1-2-3-4-5-6-1。一个环的边连通度是2!为了演示,我们修改一下初始图,让它连通度为1。
将初始图改为:\(E_0 = \{ (1,2), (2,3), (3,1), (3,4), (4,5), (5,6), (6,4) \}\)
这个图包含一个三角形{1,2,3}(2-边连通),一个三角形{4,5,6}(2-边连通),但这两个三角形之间仅由一条边(3,4)连接。所以边(3,4)是一个。初始图边连通度为1。

候选新边集 \(F\) 及成本
假设我们可以增加这些边,成本如下:
\((1,4), cost=5\)
\((1,5), cost=6\)
\((2,5), cost=4\)
\((2,6), cost=3\)
\((3,6), cost=7\)
(注意:候选边不能是已存在的边)。

第一步:找到初始图 \(G_0\) 的边双连通分量并构建桥树 \(H\)

  • \(G_0\) 中,移除桥(3,4)后,得到两个连通分量:
    • 分量C1: 顶点{1,2,3},边{(1,2), (2,3), (3,1)}。这是一个三角形,是2-边连通的。
    • 分量C2: 顶点{4,5,6},边{(4,5), (5,6), (6,4)}。这也是一个三角形,是2-边连通的。
  • 因此,桥树 \(H\) 有两个节点:\(h_1\)(代表C1)和 \(h_2\)(代表C2),它们之间由一条树边连接,这条树边对应原桥(3,4)。
  • \(H\) 的叶子节点:\(h_1\)\(h_2\) 都是叶子(因为树只有两个节点,每个节点度数为1)。

第二步:将候选边映射到桥树 \(H\) 的链接上

  • 候选边连接的是原图顶点,我们需要找到这些顶点所属的边双连通分量。
    • 对于(1,4): 1在C1,4在C2 -> 链接 \((h_1, h_2)\),成本=5。
    • 对于(1,5): 1在C1,5在C2 -> 链接 \((h_1, h_2)\),成本=6。
    • 对于(2,5): 2在C1,5在C2 -> 链接 \((h_1, h_2)\),成本=4。
    • 对于(2,6): 2在C1,6在C2 -> 链接 \((h_1, h_2)\),成本=3。
    • 对于(3,6): 3在C1,6在C2 -> 链接 \((h_1, h_2)\),成本=7。
  • 所有候选边都连接着 \(h_1\)\(h_2\)。这很合理,因为初始图只有一个桥,要覆盖它,新边必须连接桥两端的两个分量。

第三步:构建叶子节点完全图并求最小生成树

  • 桥树 \(H\) 的叶子节点集合是 \(\{h_1, h_2\}\)
  • 构造完全图 \(K\) 的顶点就是这两个叶子。它们之间只有一条可能的边。
  • 这条边 \((h_1, h_2)\) 的成本,是所有能连接这两个分量的候选链接的最小成本,即 \(\min(5, 6, 4, 3, 7) = 3\),对应候选边(2,6)。
  • 在这个只有两个节点的完全图 \(K\) 上,最小生成树 \(T\) 就是这条唯一的边,成本为3。

第四步:构造最优增广解

  • 最小生成树 \(T\) 包含链接 \((h_1, h_2)\),其对应的成本最小的原始候选边是(2,6),成本3。
  • 因此,最优增广边集 \(A = \{ (2,6) \}\),总成本为3。

第五步:验证

  • 初始图 \(G_0\) 加入边(2,6)后得到新图 \(G'\)
  • \(G'\) 中,原桥(3,4)不再孤单:现在存在两条连接分量C1和C2的边——(3,4)和(2,6)。因此,删除任意一条边,图仍然连通。检查其他边:删除C1内部的任何边,C1内部仍连通(三角形);删除C2内部的任何边同理。所以 \(G'\) 是2-边连通的。
  • 总成本最小(3)是显然的,因为所有可行解至少要包含一条连接C1和C2的边,而(2,6)是成本最低的。

总结

这个示例展示了如何将一个复杂的图论优化问题(最小成本边连通度增广),通过识别边双连通分量、构建桥树,巧妙地转化为经典的树加边成环问题,并最终利用最小生成树算法在多项式时间内求解。算法的核心步骤是:1) 找边双连通分量缩点建树;2) 将候选边映射为树上的链接并计算成本;3) 在树的叶子节点构成的完全图上求最小生成树;4) 根据MST输出最优增广方案。这个方法高效、优雅,是组合优化中“问题转化”思想的精彩体现。

基于线性规划的图最小边连通度增广问题的多项式时间算法求解示例 问题描述 想象你管理着一个通信网络,这个网络可以用一个 无向图 来表示,其中节点代表城市或基站,边代表通信线路。每条线路(边)都有一定的建设或租赁成本。目前,你的网络已经存在,但它的“健壮性”不够——任意一条线路故障,就可能导致某些城市之间通信断开。在图中,这被称为图的“边连通度”为1。为了提高网络的可靠性,你希望在现有网络的基础上,以 最小的总成本 增加(或“增广”)一些新的线路,使得最终的网络满足:任意移除一条边,整个图仍然保持连通。在图中,这意味着图的“边连通度”需要达到2。 形式化定义 : 给定一个无向连通图 \( G=(V, E) \),以及现有边集 \( E_ 0 \subseteq E \)。同时,给定一个候选新边集 \( F \subseteq E \setminus E_ 0 \)(即可以新增的边),以及每条候选边 \( e \in F \) 对应的成本 \( c(e) > 0 \)。目标是找到一个成本最小的边子集 \( A \subseteq F \),使得将 \( A \) 加入到 \( E_ 0 \) 后形成的新图 \( G' = (V, E_ 0 \cup A) \) 的 边连通度 至少为2(即2-边连通)。 核心难点 :我们需要确保在最终的图 \( G' \) 中,任意两个顶点之间至少有两条 边不相交 的路径。这个问题是经典的“ 最小成本边连通度增广问题 ”的一个特例(从1增广到2)。它可以通过将其转化为一系列“最小割”问题,并最终用最小生成树算法解决,整个过程是多项式时间的。 解题思路与过程 我们将问题分解为几个关键步骤,并用一个简单的例子贯穿始终,便于你理解。 第一步:理解2-边连通性的等价条件 对于一个无向图,其边连通度至少为2,等价于满足以下任一条件: 无桥 :图中不存在“桥”(即删除该边后图会变得不连通的边)。 任意边割集大小至少为2 :对于图的任意一个 非空、非全集 的顶点子集 \( S \subset V \),连接 \( S \) 和 \( V\setminus S \) 的边数(称为割 \( \delta(S) \) 的大小)至少为2。 我们的初始图 \( G_ 0 = (V, E_ 0) \) 是连通的,但边连通度为1。这意味着图中存在一些“桥”和/或大小为1的割。 第二步:将“补足割条件”转化为子模函数优化 我们的目标是为每个大小小于2的割“补”上边。形式化地: 对于所有满足 \( |\delta_ {E_ 0}(S)| = 1 \) 的非平凡顶点子集 \( S \subset V, S \neq \emptyset, S \neq V \)(其中 \( \delta_ {E_ 0}(S) \) 表示在边集 \( E_ 0 \) 中,横跨割 \( (S, V\setminus S) \) 的边),我们选择的增广边集 \( A \) 必须满足 \( |\delta_ A(S)| \ge 1 \)。也就是说,每个“脆弱”的割(在原图中只有一条边横跨)必须被新加的边集 \( A \) 中的 至少一条边 覆盖。 这本质上是一个 覆盖问题 :我们要用最小的成本,从候选边集 \( F \) 中选出一个边集 \( A \),使其覆盖所有满足 \( |\delta_ {E_ 0}(S)| = 1 \) 的割 \( S \)。 第三步:问题的转换与简化(核心洞察) 这是一个关键的理论结果: 2-边连通度增广问题(从1到2)可以转化为在所谓的“割图”上求最小生成树的问题 。 构建“缩合图”(将双连通分量缩为点) : 首先,我们找出初始图 \( G_ 0 = (V, E_ 0) \) 的所有“边双连通分量”(2-边连通分量)。边双连通分量是一个极大的子图,其内部边连通度至少为2。连接不同分量的边恰好就是 \( G_ 0 \) 中所有的桥。 我们将每个边双连通分量“收缩”成一个 超点 。设收缩后得到的新图为 \( H = (V_ H, E_ H) \)。在 \( H \) 中: 每个节点对应 \( G_ 0 \) 中的一个边双连通分量。 每条边对应 \( G_ 0 \) 中的一座桥。 显然,\( H \) 是一棵树(因为 \( G_ 0 \) 连通,且桥连接分量形成树结构)。我们称 \( H \) 为“桥树”。 在原图顶点和候选边上重新表述问题 : 原图中的每个顶点 \( v \in V \) 现在对应到桥树 \( H \) 中的一个节点(记为 \( comp(v) \))。 对于候选新边 \( e = (u, v) \in F \): 如果 \( comp(u) = comp(v) \),即 \( u, v \) 在同一个边双连通分量内,那么加入边 \( e \) 对提高整个图的边连通度(从全局看) 没有帮助 ,因为它无法连接两个被桥分隔的块。我们可以忽略这类候选边,或认为它们成本无穷大。 如果 \( comp(u) \neq comp(v) \),即 \( u, v \) 在不同的分量中,那么加入边 \( e \) 就相当于在桥树 \( H \) 中的节点 \( comp(u) \) 和 \( comp(v) \) 之间增加了一条“链接”。 覆盖条件在树上的体现 : 在桥树 \( H \) 中,原图 \( G_ 0 \) 的每个大小为1的割,对应着 \( H \) 中的 一条树边 (即桥)。回忆我们的覆盖条件:对于原图中每个只有一条桥的割 \( S \),需要至少一条新边跨越它。 在树 \( H \) 中,这个条件等价于: 对于树 \( H \) 中的每一条边(桥)\( b \),我们选择的新边集 \( A \) 在 \( H \) 中对应的边,必须形成一条连接边 \( b \) 两个端点的路径 。换句话说,新加的边(在 \( H \) 中看)需要保证树 \( H \) 的每条边都被“覆盖”(即每条边所在的某个环中,至少有一条新加的边)。 等价转化为树加边成环问题 : 经过转化,问题变为:给定一棵树 \( H = (V_ H, E_ H) \) 和一个候选链接(即候选新边在 \( H \) 中对应的边)集合 \( L \),每个链接 \( l \in L \) 连接 \( H \) 中的两个节点,并具有成本 \( c(l) \)。我们要选择一个链接子集 \( A \subseteq L \),使得 \( H \) 的每条树边都至少被 \( A \) 中的一个链接所形成的环所包含,并且总成本最小。 这是一个经典的“ 树加边成2-边连通图 ”问题。 第四步:多项式时间算法(核心算法) 幸运的是,上述“树加边成2-边连通图”问题存在一个优美且高效的多项式时间算法,其核心是 最小生成树 。 构建完全图 : 考虑桥树 \( H \) 的叶子节点(度数为1的节点)。算法证明,最优解中,任何被选的链接 \( l = (x, y) \) 都可以被认为其端点 \( x \) 和 \( y \) 都是 \( H \) 的叶子节点(因为如果端点不是叶子,可以将其“移动”到某个叶子而不增加成本或破坏覆盖性)。因此,我们只需关注连接 \( H \) 的叶子节点的候选链接。实际上,我们可以构建一个以 \( H \) 的所有叶子节点为顶点的 完全图 \( K \)。 计算链接成本 : 在完全图 \( K \) 中,连接两个叶子节点 \( i \) 和 \( j \) 的边的成本,定义为在原始候选边集 \( F \) 中,所有能连接叶子 \( i \) 和 \( j \) 所代表的那个边双连通分量(即找到分量中实际顶点,再找到连接这些实际顶点的候选边)的 最小成本 。如果在 \( F \) 中不存在这样的候选边,则成本设为无穷大。设这个成本为 \( d(i, j) \)。 在完全图上求最小生成树 : 在这个以叶子节点为顶点、以 \( d(i, j) \) 为边成本的完全图 \( K \) 上,计算其 最小生成树 。这个MST给出了连接所有叶子节点的最小成本方式。 从MST构造增广解 : 可以证明,将上一步得到的最小生成树 \( T \) 中的每条边(对应一个成本最低的候选链接)选入增广集 \( A \),即可得到一个原问题的最优解。其总成本就是这个MST的总权重。 为什么这样是正确的? 直观理解:树 \( H \) 的每条边(桥)都必须被“保护”。要保护一条树边,就需要在它所在的路径上添加一条“弦”,形成一个环。连接所有的叶子节点,相当于为树 \( H \) 加上了一个“外骨架”,这个骨架(MST)确保了树中每条边都至少被包含在一个由新加边和树边构成的环中。而最小生成树则保证了总成本最低。 详细计算示例 让我们通过一个具体例子来演练。 初始网络 \( G_ 0 = (V, E_ 0) \) : 顶点集 \( V = \{1,2,3,4,5,6\} \)。 边集 \( E_ 0 = \{ (1,2), (2,3), (3,4), (4,5), (5,6), (1,6) \} \)。 这个图像一个六边形(1-2-3-4-5-6-1),但缺少边(2,6)和(3,5)?实际上它是连通的。让我们画出来:边是 (1,2), (2,3), (3,4), (4,5), (5,6), (1,6)。我们发现,如果删除边(2,3)和(3,4)?等等,检查连通性。实际上,这个图是一个环:1-2-3-4-5-6-1。 一个环的边连通度是2 !为了演示,我们 修改 一下初始图,让它连通度为1。 将初始图改为:\( E_ 0 = \{ (1,2), (2,3), (3,1), (3,4), (4,5), (5,6), (6,4) \} \)。 这个图包含一个三角形{1,2,3}(2-边连通),一个三角形{4,5,6}(2-边连通),但这两个三角形之间仅由一条边(3,4)连接。所以边(3,4)是一个 桥 。初始图边连通度为1。 候选新边集 \( F \) 及成本 : 假设我们可以增加这些边,成本如下: \( (1,4), cost=5 \) \( (1,5), cost=6 \) \( (2,5), cost=4 \) \( (2,6), cost=3 \) \( (3,6), cost=7 \) (注意:候选边不能是已存在的边)。 第一步:找到初始图 \( G_ 0 \) 的边双连通分量并构建桥树 \( H \) 在 \( G_ 0 \) 中,移除桥(3,4)后,得到两个连通分量: 分量C1: 顶点{1,2,3},边{(1,2), (2,3), (3,1)}。这是一个三角形,是2-边连通的。 分量C2: 顶点{4,5,6},边{(4,5), (5,6), (6,4)}。这也是一个三角形,是2-边连通的。 因此,桥树 \( H \) 有两个节点:\( h_ 1 \)(代表C1)和 \( h_ 2 \)(代表C2),它们之间由一条树边连接,这条树边对应原桥(3,4)。 树 \( H \) 的叶子节点:\( h_ 1 \) 和 \( h_ 2 \) 都是叶子(因为树只有两个节点,每个节点度数为1)。 第二步:将候选边映射到桥树 \( H \) 的链接上 候选边连接的是原图顶点,我们需要找到这些顶点所属的边双连通分量。 对于(1,4): 1在C1,4在C2 -> 链接 \( (h_ 1, h_ 2) \),成本=5。 对于(1,5): 1在C1,5在C2 -> 链接 \( (h_ 1, h_ 2) \),成本=6。 对于(2,5): 2在C1,5在C2 -> 链接 \( (h_ 1, h_ 2) \),成本=4。 对于(2,6): 2在C1,6在C2 -> 链接 \( (h_ 1, h_ 2) \),成本=3。 对于(3,6): 3在C1,6在C2 -> 链接 \( (h_ 1, h_ 2) \),成本=7。 所有候选边都连接着 \( h_ 1 \) 和 \( h_ 2 \)。这很合理,因为初始图只有一个桥,要覆盖它,新边必须连接桥两端的两个分量。 第三步:构建叶子节点完全图并求最小生成树 桥树 \( H \) 的叶子节点集合是 \( \{h_ 1, h_ 2\} \)。 构造完全图 \( K \) 的顶点就是这两个叶子。它们之间只有一条可能的边。 这条边 \( (h_ 1, h_ 2) \) 的成本,是所有能连接这两个分量的候选链接的最小成本,即 \( \min(5, 6, 4, 3, 7) = 3 \),对应候选边(2,6)。 在这个只有两个节点的完全图 \( K \) 上,最小生成树 \( T \) 就是这条唯一的边,成本为3。 第四步:构造最优增广解 最小生成树 \( T \) 包含链接 \( (h_ 1, h_ 2) \),其对应的成本最小的原始候选边是(2,6),成本3。 因此,最优增广边集 \( A = \{ (2,6) \} \),总成本为3。 第五步:验证 初始图 \( G_ 0 \) 加入边(2,6)后得到新图 \( G' \)。 在 \( G' \) 中,原桥(3,4)不再孤单:现在存在两条连接分量C1和C2的边——(3,4)和(2,6)。因此,删除任意一条边,图仍然连通。检查其他边:删除C1内部的任何边,C1内部仍连通(三角形);删除C2内部的任何边同理。所以 \( G' \) 是2-边连通的。 总成本最小(3)是显然的,因为所有可行解至少要包含一条连接C1和C2的边,而(2,6)是成本最低的。 总结 这个示例展示了如何将一个复杂的图论优化问题(最小成本边连通度增广),通过识别边双连通分量、构建桥树,巧妙地转化为经典的树加边成环问题,并最终利用 最小生成树算法 在多项式时间内求解。算法的核心步骤是:1) 找边双连通分量缩点建树;2) 将候选边映射为树上的链接并计算成本;3) 在树的叶子节点构成的完全图上求最小生成树;4) 根据MST输出最优增广方案。这个方法高效、优雅,是组合优化中“问题转化”思想的精彩体现。