给定加权无向图 G 和两个顶点 a,b ,我们希望找到两条路径 a - > b 和 b - > a 使得它们不共享任何边缘,并且使得两个路径中的边缘权重之和最小。最多可以有 1,000 个顶点,最多可达 10,000 个边缘。
我最初尝试提出动态编程方法,但找不到这样的方法。任何想法/建议都将非常感激。
答案 0 :(得分:7)
这是Minimum-cost flow problem。您可以为每条边等于1分配流量,然后在 a 和 b 之间搜索最小成本流量,其中flow = 2。
有人可能会认为可以使用简单的算法来查找从 a 到 b 的最短路径,从图中移除其边缘,然后找到另一条最短路径
这种方法并不总是最佳的。对于某些图表,它给出了一个很好的近似值。对于其他人来说,它可能会给出非常糟糕的解决方案:
此处在移除第一条最短路径(绿色)的边缘后,唯一剩余的路径(红色)非常重。该解决方案的成本是1 + 1 + 10 + 1 + 1 + 2 + 90 + 2 = 108。虽然最优成本是1 + 15 + 1 + 2 + 1 + 10 + 1 + 2 = 32。