Answers:
如果您不要求周期简单,则将(有向)图分解为强连接的分量,并针对每个包含给定顶点的分量,检查该分量是否包含负循环。如果没有组件,则没有包含任何负周期。但是,如果有些成分确实,你可以找到含有(非简单的)负循环通过采取负周期的多个副本,并添加到该路径,并从周期到一些顶点。(如果我记得的话,找到所需周期的隐式表示的总时间将与在有向图中找到负周期的时间相同,例如。)V i V i V i O (n m )
如果确实需要简化循环,那么即使仅给出单个顶点,问题也将成为NP完全问题。(您可以减少问题的哈密顿路径:找到给定图从给定源到给定汇点的哈密顿路径,给定现有边权重-1,然后添加具有两个边值的人工顶点每个,一个从到,一个从到。)小号Ť ģ V 1 ñ / 2 - 0.01 V 1小号Ť V 1
如果允许循环重复顶点而不重复边缘,我相信它仍然是NP完整的(通过类似的减少,但是以标准方式将每个顶点分成有向边)。(v ,v ')
我将假设您的输入是有向图;我不知道如何处理无方向的情况。
制作图形顶点集的副本,其中是图形中顶点的数量。从替换每个边缘到通过从边缘走在你的原图复制的复制的,对于所有选择。此外,如果属于指定顶点集而不是其他,还包括从拷贝变为边缘的复制的。n u v i u i + 1 v 我u i u 0 v
展开图中的所有循环都向下投影到原始图中的循环,但是展开图中的每个循环都包含指定的顶点之一(否则您无法向后浏览展开的各个层),因此原始图包含如果扩展图包含任何负周期,则包含指定顶点的负周期。