给定一个加权无向图G和两个顶点a、b,我们想要找到两条路径a->b和b->a,使它们不共享任何边,并且这两条路径上所有边的权重之和最小。该图中可能有多达1,000个顶点和10,000条边。我最初尝试使用动态规划方法来解决问题,但是没有找到可行的方案。如果您有任何想法或建议,将不胜感激。
这是最小费用流问题。你可以为每条边分配流量容量等于1,然后在流量为2的情况下寻找从a到b的最小费用流。 有人可能认为可以使用简单的算法从a到b找到最短路径,然后从图中删除其边缘,再寻找另一条最短路径。但这种方法并不总是最优的。对于某些图形,它可以给出一个很好的近似值。对于其他图形,它可能会给出一个非常糟糕的解决方案: 在删除第一条最短路径(绿色)的边之后,唯一剩下的路径(红色)非常长。此解决方案的成本为1 + 1 + 10 + 1 + 1 + 2 + 90 + 2 = 108。而最优成本是1 + 15 + 1 + 2 + 1 + 10 + 1 + 2 = 32。