【问题标题】:How to find all vertex-disjoint paths in a graph?如何在图中找到所有顶点不相交的路径?
【发布时间】:2012-03-23 02:48:46
【问题描述】:

假设图中有 3 个目标节点。

顶点不相交路径意味着在路径中除了末端节点之外没有任何相同的节点。

对于任何一个节点,比如节点 i,如何找到从节点 i 到三个目标节点的所有顶点不相交路径?

【问题讨论】:

  • 要清楚,你的意思是一条路径从i开始,经过三个目标节点中的每一个,然后返回i,除了两端相同之外没有重复?另外,您想找到所有此类路径(如您所说)还是最短的此类路径(如已标记)?
  • 在我的目的中,我想找到一条从节点 i 开始并在目标节点结束的路径,比如节点 z。如果有多个路径,则这些路径中不应有相同的节点,但节点 i 和节点 z 除外。我希望找到从 i 到 z 的所有这些路径。
  • 哦,这与我(和 templatetypedef)所理解的非常不同。所以你想找到一组从iz 的路径,这样这些路径是不相交的?可能有很多这样的集合(取决于您选择的可能路径)。所以也许你想要做的是找到从iz 的所有路径(例如通过广度优先搜索),然后处理它们以找到一个不相交的集合。一种简单的方法,它不会找到最大的这样的集合或任何东西:从集合中选择一条路径,删除与该路径相交的所有其他路径,重复。
  • 当然,你可以结合我刚才描述的那个算法的两个步骤。也许做深度优先搜索,然后一旦你找到了一个有效的路径,从图中删除它的所有节点并继续你的搜索。但是,如果您指定需要一组特殊的不相交路径到目标,那么肯定有更好的方法。 (我仍然不知道有 3 个目标节点是什么意思,虽然......只是这样做 3 次,或者找到从 ixyz 的路径,这样 @ 987654331@、i->yi->z 不相交?)
  • @Dougal,非常感谢。是的,您的深度优先然后删除它们的想法可能可以解决这个问题。而大约 3 个目标节点在算法上其实并没有太多的业务。节点 x 和 y 与 z 相同,所以它只会重复寻找到 z 的路径的过程。

标签: algorithm matlab graph-theory shortest-path


【解决方案1】:

您可以通过在适当构造的图中将其简化为最大流量问题来解决此问题。思路如下:

  1. 将图中的每个节点 v 拆分为节点:vin 和 vout
  2. 对于每个节点 v,添加从 vin 到 vout 的容量为 1 的边。
  3. 用容量为 1 的从 uout 到 vin 的边替换图中的其他边 (u, v)。
  4. 添加新的专用目标节点 t。
  5. 对于每个目标节点 v,添加一条从 vin 到 t 的边,容量为 1。
  6. 找到从 sout 到 t 的最大流量。流的值是节点不相交路径的数量。

这种构造背后的想法如下。从起始节点 s 到目标节点 t 的任何流动路径的容量都必须为 1,因为所有边的容量都为 1。由于所有容量都是积分的,因此存在积分最大流量。没有两条流路可以通过同一个中间节点,因为在通过图中的一个节点时,流路必须从 vin 到 vout 的边穿过,并且这里的容量被限制为一个。此外,该流动路径必须通过在您确定的三个特殊节点之一处结束,然后沿着从该节点到 t 的边到达 t。因此,每个流路径表示从源节点 s 到三个目标节点之一的节点不相交路径。因此,这里计算最大流对应于找到从 s 到三个目的地中任何一个的节点不相交路径的最大数量。

希望这会有所帮助!

【讨论】:

  • 也许我的表达 abt vertex-disjoint 不够清楚。对于节点 s 和节点 t,有一条路径 s->a->b->c->d->t,还有一条从 s 开始的路径,如 s->e->f->g->h ->吨。在这种情况下,这是一个顶点不相交的路径。但是如果有一条路径为 s->e->f->g->d->t,这不是顶点不相交。
  • 这个解决方案的运行时间是多少? O(nm) ?
  • @razshan 这样想:多少时间花在预处理上,多少时间花在最大流量上?
  • hmm 预处理在时间上看起来是线性的,但是找到从 s_out 到 to 的最大流将需要 O(n * m^2) 或 (n^2 * m) 这将驱动大哦符号。这看起来合乎逻辑吗?
  • 对于步骤 1 和 2,我们是否也必须将 sink 节点拆分为 t_in 和 t_out?
猜你喜欢
  • 2012-07-11
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多