我正在考虑在有向图中找到负权重循环的算法。问题是:我们有一个图 G(V,E),我们需要找到一个有效的算法来找到一个负权重的循环。我了解此 PDF 文档中的算法
简而言之,该算法通过迭代 |V|-1 次进行松弛来应用 Bellman Ford 算法。然后它检查是否有一个可以更放松的边缘,然后存在负权重循环,我们可以通过父指针追溯它,一切顺利,我们找到一个负权重循环。
但是,我正在考虑另一种算法,即通过跟踪到目前为止您遍历的距离的总和,在图上使用深度优先搜索(DFS),我在开始时将所有节点标记为白色,并在我时将它们设为灰色搜索路径,并在完成时将它们标记为黑色,这样我知道当且仅当我找到一个访问节点并且它是灰色的(在我的路径中)时我才找到一个循环,而不是深度已经完成的黑色-第一次搜索,所以对于我的算法,如果我到达一个已经访问过的灰色节点,我检查它的更新是什么(新的距离),如果它比以前低,我知道我的权重是负的循环并可以追溯。
我的算法错了吗?如果是这样,你能找到一个反例吗?如果不是,你能帮我证明吗?
谢谢你