寻找通过顶点 u 和 v 的最小权重电路

Finding the minimum weight circuit that passes through vertices u and v

我有一个无向且连通(不完整)的顶点图,其中 uv 可以是任意两个不同的顶点。我想构建从顶点u开始,通过v[=的最小权重电路61=],然后returns回到u,不重复任何边。可以通过执行以下操作来完成吗?

  1. 求从uv[=的最短路径61=] - 称之为 p1

  2. 从图中删除 p1 的所有组成边

  3. 寻找从vu[的新的最短路径 - 称之为 p2

  4. 将所有删除的边返回到图中,并将 p1p2 连接在一起 - 调用此 c1

c1可以构造的最小权重电路,考虑到通过u[的约束=62=]和v?如果是,我如何证明,如果不是,为什么不?

这对我来说似乎很有意义,因为 c1 中包含的所有路径本身也是最短路径,但是我无法完全摆脱我可能会丢失的感觉东西。

编辑:我已将“完全连接图”更改为“连接图”。 "fully" 暗示图表是完整的,这不是我的意思。

这是一个反例:

在完整图的情况下,假设图中未显示的所有边都具有较大的权重(如 1000)。

p1 会找到最短路径 1 - 1 - 1 并排除它,禁止 3 - 1 + 1 - 3.

的实际答案

根据 , this task can be solved by Edge disjoint shortest pair algorithm 的建议。

如果我没理解错的话,这相当于找到从 uv 的两条边不相交的路径,同时最小化它们的总权重。这是 Minimum Cost Flow with a flow of two, so it can be solved in polynomial time and is likely not NP-hard. Suurballe's algorithm solves it for directed graphs, and it should be possible to adapt it to undirected graphs (it seems that this Wikipedia page 试图这样做的特例。