我知道检查加权有向图的给定边是否属于负循环的问题是NP完全(Finding the minimal subgraph that contains all negative cycles)而Bellman-Ford允许在O中检查相同的顶点(| V | * | E |)时间。但是,如果我想找到属于负循环的所有顶点呢?我想知道它是否可以比Floyd-Warshall的O(| V | ^ 3)更快地完成。
答案 0 :(得分:1)
我不认为Floyd-Warshall能够找到这些顶点。使用您所指的帖子中采用的类似方法,可以证明找到位于负循环的所有顶点的集合也是NP完全的。
相关文章显示,可以使用该算法找到位于负循环上的所有边的集合以解决哈密顿循环问题,这意味着前一个问题是NP完全的。 如果我们可以减少找到位于负循环的所有边的问题,找到位于负循环的所有顶点的集合的问题,我们已经显示了后一问题的NP完全性。
对于加权有向图中的每条边(u,w),引入一个新的辅助顶点v,并在两条边(u,v)和(v,w)中分割(u,w)。 (u,w)的权重可以分配给(u,v)或(v,w)。 现在应用魔术多项式时间算法来查找位于负循环中的所有顶点,并获取由辅助顶点组成的子集。由于每个辅助顶点都与一个边相关联,我们已经解决了找到包含所有负循环的最小子图的问题,因此我们也可以求解多项式时间中的哈密顿循环问题,这意味着P = NP。假设P!= NP,找到位于负循环的所有顶点是NP完全的。