“设G是一个没有负周期的有向加权图。设计一个算法,找出G中运行时间复杂度为O(| V | ^ 3)的最小权重周期。”
以上是我作为课程作业一部分的一个问题。当我第一次阅读它时,我立即认为Floyd-Warshall算法可以解决这个问题 - 主要是因为F-W在O(| V | ^ 3)时间运行,它适用于正负加权图,没有负循环。但是,我很快就记得F-W的目的是找到图表的最短路径,而不是最小的重量周期。
我是否正确地回答了这个问题?是否可以修改Floyd-Warshall算法以在图表中找到最小重量周期?
答案 0 :(得分:2)
我认为你非常接近。一旦你在O(| V | ^ 3)中进行FW循环,你就拥有每对顶点之间最短路径的权重,让它称之为D(i,j)。现在我们主要问题的解决方案如下:顶点的蛮力,它将在一个循环中,比如它的X.还有Y上的强力,这将是循环中的最后一个顶点,之前X本身。该循环的重量显然是D(X,Y)+ W(Y,X)。然后你只需选择价值最小的那个。这显然是一个正确的答案,因为: (1)D(X,Y)+ D(Y,X)的所有这些值代表一些(可能是非简单的)循环的权重; (2)如果最佳周期是a-> ...-> b-> a,那么我们在X = a,Y = b时考虑它;
要重建答案,首先需要跟踪哪个X,Y给了我们最佳结果。一旦我们得到这个X和Y,唯一剩下的就是找到从X到Y的最短路径,这可以通过各种方式完成。