在有向图中找到至少两个相同长度的路径


20

假设我们有一个有向图和两个节点和。我想知道是否已经有算法来计算以下决策问题:G=(V,E)AB

和之间是否至少有两条相同长度的路径?AB

复杂度如何?我可以在多项式时间内求解吗?


我想在图表上添加一个新的约束,也许这个问题可以解决。在邻接矩阵上,每一列都不为空。因此,每个节点在输入上至少有一个箭头,并且至少还有一个与其连接的节点。因此,如果节点是第个节点,则是图中的边。i(i,i)


你是说简单的道路吗?(最多一次访问每个节点),还允许它们具有一个公共内部节点吗?

1
不,路径没有限制。如果需要,您可以循环播放。
— Paolo Parisen T. 2012年

容易观察到的是:如果之间只有一条简单路径,并且该简单路径最多连接到一个回路,则可以简单地说,如果至少有两个不同长度的回路连接到该简单路径,您可以说是...(我认为类似的事情很有用,您可以证明这一点),但是在不相交的简单路径的情况下(如果在证明这一点时遇到不相交的简单路径),则是NPC。Ñ öA,BNo

1
@mrm:我不认为这是重复的。要求所有步行都是一项非常耗时的操作(通常,步行的次数是无限的),而OP要求的是两条(简单)路径,而不是全部步行。
— Dave Clarke

Answers:


10

考虑图,我们想知道从A到B的两条不同长度的路径是否相同。该怎么办?简单:将两个路径合而为一。定义图形ģ '与顶点V × V × { 0 ,1 }。你让在步骤摹'通过在两个独立的步骤摹。附加位告诉您两条路径是否已经彼此分开。GABG′V×V×{0,1}G′G

形式上,存在边缘在ģ '当且仅当我→ 我',Ĵ → Ĵ '在G ^和ë ' = È ∨ (我,我')≠ (j ,j ')。(i,j,e)→(i′,j′,e′)G′i→i′j→j′Ge′=e∨(i,i′)≠(j,j′)

该算法检查是否存在一个路径到(乙,乙,1 )在ģ ',这是ø (V 4),或者类似的东西ø ((V + ë )2)。(A,A,0)(B,B,1)G′O(V4)O((V+E)2)

如果您同意该算法正确,那么,的路径的长度最多为2 n 2,因此必须最晚在该长度处发生潜在的“路径冲突”。你可以得到一个Ô (V ω日志V )从这一观察,在那里,规则ω是矩阵乘法的复杂性(询问你是否需要一个扰流板......)。G′2n2O(Vωlog⁡V)ω

我强烈感觉到有一种算法,它使用了更多问题的结构。O(V+E)


3
很好
— 拉斐尔

4

也许我对这个问题有一个答案,但我不确定它是否有效。

“找到”两条路径并不重要,唯一重要的是“知道”它们是否存在。我认为这不是NP完全问题。

因此,采取邻接矩阵。我们可以轻松地假设它填充有0,1值。(0 =不存在边缘; 1 =存在边缘)让我们使用与3个值(0,1,2),下面的代数,一切作品照例除了:2 + <东西> = 2 ; 2 * <大于0的任何值> = 2A2+<something>=22∗<whatever greater than 0>=2

所以,如果有来自两个相同长度的路径我期待有一个值p,使得(甲 p )我,Ĵ = 2。i,jp(Ap)i,j=2

令为图中的顶点数(或者说A的维数为n × n)。我不知道p的值,但是如果我通过与A乘以最多n 2来迭代A,那么我应该找到答案。(因此,p < n 2)(感觉是我检查A,然后我检查A 2,然后我检查A 3,依此类推...)nAn×npAn2p<n2AA2A3

这是我的论点:

  • 如果这两个路径是简单路径,那么它会起作用。如果有,我最多必须迭代次。n
  • 如果至少有一个必需的周期或有两个周期的路径,那么,我必须找到最小公倍数(LCM)。肯定是一个较大的值,如果有,我应小于n 2倍才能找到它们。n2n2
  • 如果两个路径有两个不同的路径,都与一个周期,那么它找出解决办法对这种两个方程或多或少类似:,其中米和ķ是这两个不同的长度周期。如上定义的矩阵乘法A q表示“是否存在从i到j且长度为q的路径?” 因此,如果A q比1大,则意味着从i到j的路径更多。通过迭代矩阵nα+βm=γ+δkmkAqijqAq1ij倍,我们通过所有可能的组合 δ和 β。实际上, L C M (a ,b )定义为(a ∗ b )/ G C D (a ,b ),任何周期都不能大于 n。n2δβLCM(a,b)(a∗b)/GCD(a,b)n

一旦找到,我就停止迭代。(Ap)i,j=2

我错了吗?


我尝试了同样的方法,但遇到了一些问题/不确定性:1)如果路径连接到多个周期,该怎么办?您是否必须“检查”所有组合(在最坏的情况下,每个节点都处于指数级的多个循环!),炸毁上限,还是仅考虑每个组合一个就足够了?2)由于偏移量和γ恒定,LCM真的是上限吗?αγ
— 拉斐尔

顺便说一句,不需要时髦的代数:只要在您计算作为矩阵项的那一刻就停止。2
— 拉斐尔

@Raphae 1)如果有一条带有两个循环的路径,那么肯定有两条长度相同的路径。一个在第一个循环上循环,另一个在第二个循环上循环。他们必须循环多少?恰好是两个周期长度的LCM。它以为界,其中n是图中的顶点数。2)LCM是上限(在情况1中),因为LCM(a,b)受a * b加α和γ偏移量限制;因此,总共有L C M (a ,b )+ α + γ < a ∗ b + α + γn2nαγLCM(a,b)+α+γ<a∗b+α+γα+γ+a+b<na∗b+α+γn2
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.