如何查找是否存在从顶点 x 到顶点 y 的包含边 e 的简单路径

How to find if there is a simple path from vertex x to vertex y that includes the edge e

所以我遇到了这个问题,希望有人能帮助我。

给定一个 无向 图 G = (V, E),2 个顶点 x,y 和一条边 e = (v,u)。

建议一种算法来查找是否存在从 x 到 y 的包含边 e 的简单路径

所以这里的重点是简单路径而不是常规路径,对于常规路径,使用BFS搜索从x到v的路径和从u到y的路径是一个简单的问题。

我知道这个问题可以使用最大流方法来解决,但我只是不知道如何构建一个可以在其上实现最大流算法的新图,所以它告诉我上面的标准是否是实现与否,希望得到帮助。

提前致谢。

不共享边(边无关)

您可以通过在 x 和 y 处使用 +1 源,在 u 和 v 处使用 -1 汇来求解最大流量。

删除边e,并将所有其他边设置为容量1。

一条从 x 到 y 通过边 e 的简单路径存在当且仅当你能在这个新的最大流问题中找到 2 的流。

不共享顶点(与顶点无关,即简单路径)

将原始图中的每个顶点v[i]拆分为两个顶点,a[i]b[i]

对于原始v[i]v[j]之间的每个无向边,将有向边b[j]添加到a[i]b[i]添加到a[j] 容量为 1.

还添加一条从 a[i]b[i] 的有向边,每个顶点的容量为 1 v[i]

这个想法是,流必须总是到达一个 a[i] 顶点,并从一个 b[i] 顶点离开,在从 a[i] 到 [=12] 穿过容量 1 瓶颈之后=].这样可以确保每个顶点只能使用一次。

使用这个新图,继续处理与边缘无关的情况。