列举所有成对的不相交路径


10

给定一个有向图和两个顶点。如果从到的一对简单路径不共享边,则它们是边不相交的。š V p 1p 2小号G=(V,E)s,tVp1,p2st

使用最大流量,很容易确定是否存在从到的一对边缘不相交的路径。现在,是否存在一个多项式时间延迟算法来枚举从到所有边缘不相交路径对?牛逼小号stst


1
不可以,因为这样的路径可能成倍增加。
卡夫

6
@Kaveh:我认为“多项式延迟算法”可以花费指数时间,只要输出之间的延迟是多项式的即可。例如,存在一个多项式延迟算法,该算法以最大顺序列出所有最大集团,即使最大集团的数量是指数级的。
罗宾·科塔里

3
是否可以在问题中包含多项式延迟的解释?在阅读罗宾的评论之前,我并不熟悉它。
Artem Kaznatcheev

@Robin,您是对的,我没有注意“延迟”一词。
卡夫

Answers:


6

我相信Artem Kaznatcheev的答案是正确的,但是它没有给出多项式空间。因此,这是一种不同的方法,应该在这方面做得更好。

使用最大流可以解决一个稍微更普遍的问题:找到一条从某些两个顶点{s1,s2}到另一些顶点{t1,t2}的边不相交的路径,但不控制连接哪个源顶点到哪个目标顶点。

假设我们有一个图G和顶点s1,s2,t1,t2,我们要列出所有路径对。找出一对路径P1,P2,并令e =(s1,v)为其中一条路径的第一条边。然后,我们可以将问题空间分为两个子问题:使用e的路径对与G-s1中从{v,s2}到{t1,t2}的路径相同,以及不使用的路径对e与Ge中从{s1,s2}到{t1,t2}的路径相同。在这两个子问题中都递归,并且(为避免重复)仅在递归底部时才报告路径。


1
如果我们等到递归的底部,该算法是否显然是多项式延迟?
Artem Kaznatcheev

递归将多项式的层次降到最低(因为每个层次都从图形中删除了某些东西),每个分支要么立即返回(因为它找不到一对路径),要么达到最低并返回一些东西,所以是的,确实只需要多项式延迟。
David Eppstein

5

这是我第一次阅读多项式延迟算法,因此我不能百分百确定我的回答,但是我认为类似以下内容的方法应该有效。

选择一些约定,以表示具有自然总排序路径。(一个示例只是按字典顺序列出路径的顶点和顺序)。选择您喜欢的支持对数搜索和插入的就地数据结构D(例如一棵红黑树)。令G为您的图表<DG

定义算法F


F(s,t,G,D)

(此处* D表示对原位数据结构D的引用)DD

  1. 运行聚时间算法返回一个对边分离路径P < Q小号(P,Q)P<Qst
  2. 如果不在D中(P,Q)D

    2.1。将插入D(如果您假设在算法运行时输出,则将其输出)。(P,Q)D

    2.2。对于每个边缘运行˚F 小号G ^ - { ü v } * d uvE(PQ)F(s,t,G{uv},D)


现在,枚举所有的路径,创建一个空以及对于每一对小号V G ^ 小号< (如果是无向图,小号以其他方式)运行˚F 小号G ^ * D 。您将在初次看到它们时输出每个路径,并且还将拥有一个不错的可搜索数据结构,其中包含完成后的所有路径。请注意,此算法还在输入+输出大小的多项式时间内运行(就像任何多项式延迟算法一样)。Ds,tV(G)s<tstF(s,t,G,D)

我怀疑这是执行此操作的最佳方法,特别是这种方法不在(在输入大小上)。我认为,通过仔细考虑,您可以找到可以在P S P A C E中运行的内容,尽管它无法随着时间的推移构建数据结构。PSPACEPSPACE


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.