这个问题的嵌入部分使它变得非常混乱,所以我将假设我们估计连接成本以获得有向图,我们想要一个最小成本的强连接弧子图。然后只需使用贪心算法找到嵌入。
对于多项式时间内的 2 近似解:选择任意根顶点,然后使用Chu--Liu 和 Edmonds 的算法来计算最小成本的根向和叶向跨越树状结构。返回这些的并集。这是一个 2 近似值,因为每个强连接弧子图都包含一个根向和叶向跨越树状结构(尽管不一定具有最低成本)。我现在从您的一个链接中看到 Keith Randall 也有这个想法。
您可以实施任意数量的启发式方法。它们可能工作得很好,但它们并不是我真正感兴趣的。如果您担心它们表现不佳,那么您可以使用前面提到的 2 近似值“支持”它们。
如果您真的想要一个最佳解决方案,那么您最好的选择可能是整数规划。这个问题被表述为一个整数规划,与 TSP 有一些相似之处。TSP 的程序如下所示。
minimize sum_{v -> w} cost(v -> w) x(v -> w)
subject to
(-) for all v, sum_{v -> w} x(v -> w) = 1
(-) for all w, sum_{v -> w} x(v -> w) = 1
for all subsets S of vertices, sum_{v -> w, v in S, w not in S} x(v -> w) >= 1
for all v -> w, x(v -> w) >= 0
对于您的问题程序,我们删除了标记为 的约束(-)
,这将强制选择的弧为游览。
minimize sum_{v -> w} cost(v -> w) x(v -> w)
subject to
for all subsets S of vertices, sum_{v -> w, v in S, w not in S} x(v -> w) >= 1
for all v -> w, x(v -> w) >= 0
该程序的对偶如下。
maximize sum_{subsets S of vertices} y(S)
subject to
for all v -> w, sum_{subsets S of vertices, v in S, w not in S} y(S) <= cost(v -> w)
for all subsets S of vertices, y(S) >= 0
现在我们可以为 TSP 调整分支定界解决方案,那里应该有大量的教程材料。您不必做任何根本上新的事情;事实上,您可以专注于生成子旅游约束/变量,因为梳状不等式等不适用于这个问题。