查找具有顶点约束的负循环


11

给定一个具有加权边的图,我们如何找到一个负循环,该负循环在给定的顶点集中中包含至少一个顶点?谢谢。{V1,V2,,Vk}


这个问题还不清楚。在什么,边缘或顶点上的权重?什么是,是一个顶点还是一组顶点?V 1{V1,V2,,Vk}V1

@YixinCao感谢您的注意,已编辑:边缘的权重,是顶点。V1
崔天一

Answers:


8

如果您不要求周期简单,则将(有向)图分解为强连接的分量,并针对每个包含给定顶点的分量,检查该分量是否包含负循环。如果没有组件,则没有包含任何负周期。但是,如果有些成分确实,你可以找到含有(非简单的)负循环通过采取负周期的多个副本,并添加到该路径,并从周期到一些顶点。(如果我记得的话,找到所需周期的隐式表示的总时间将与在有向图中找到负周期的时间相同,例如。)V i V i V i O n m ViViViViO(nm)

如果确实需要简化循环,那么即使仅给出单个顶点,问题也将成为NP完全问题。(您可以减少问题的哈密顿路径:找到给定图从给定源到给定汇点的哈密顿路径,给定现有边权重-1,然后添加具有两个边值的人工顶点每个,一个从到,一个从到。)小号Ť ģ V 1 ñ / 2 - 0.01 V 1小号Ť V 1V1STGV1N/20.01V1STV1

如果允许循环重复顶点而不重复边缘,我相信它仍然是NP完整的(通过类似的减少,但是以标准方式将每个顶点分成有向边)。v v 'v(v,v)


2
我喜欢这个答案比我的要好得多。
David Eppstein 2012年

6

我将假设您的输入是有向图;我不知道如何处理无方向的情况。

制作图形顶点集的副本,其中是图形中顶点的数量。从替换每个边缘到通过从边缘走在你的原图复制的复制的,对于所有选择。此外,如果属于指定顶点集而不是其他,还包括从拷贝变为边缘的复制的。n u v i u i + 1 v u i u 0 vnnuviui+1viuiu0v

展开图中的所有循环都向下投影到原始图中的循环,但是展开图中的每个循环都包含指定的顶点之一(否则您无法向后浏览展开的各个层),因此原始图包含如果扩展图包含任何负周期,则包含指定顶点的负周期。


如果原始图具有个顶点和边,则新构造的图将具有个顶点和边。在其中找到负周期将需要时间,这似乎非常大。我仍在等待更好的解决方案,非常感谢!m n 2 n m O n 3 m nmn2nmO(n3m)
崔天一2012年

2
问题可能更多,发现的周期不一定很简单。您需要简单的负周期吗?
David Eppstein
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.