Data structures 我们能用dijkstra算法找到任何循环吗

Data structures 我们能用dijkstra算法找到任何循环吗,data-structures,graph-theory,dijkstra,Data Structures,Graph Theory,Dijkstra,我们可以用Dijkstra算法来寻找循环吗 负周期 正周期 如果我们可以,我们必须做什么改变?1)Dijkstra的方法不适用于带负边的图,因为你可以(可能)找到负无穷大的最小距离 2) 嗯,您通常在带有循环的图上运行它(否则,您可能需要遍历一棵树),因此它可以很好地处理它们 如果你真正的问题只是寻找循环,那么看看不,如果存在负循环,我们就不能使用Dijkstra算法,因为该算法在最短路径上工作,而对于此类图,它是未定义的。一旦你进入负循环,你可以带来“最短路径”的成本通过多次跟随负循环,尽可能

我们可以用Dijkstra算法来寻找循环吗

  • 负周期

  • 正周期

  • 如果我们可以,我们必须做什么改变?

    1)Dijkstra的方法不适用于带负边的图,因为你可以(可能)找到负无穷大的最小距离

    2) 嗯,您通常在带有循环的图上运行它(否则,您可能需要遍历一棵树),因此它可以很好地处理它们


    如果你真正的问题只是寻找循环,那么看看

    不,如果存在负循环,我们就不能使用Dijkstra算法,因为该算法在最短路径上工作,而对于此类图,它是未定义的。一旦你进入负循环,你可以带来“最短路径”的成本通过多次跟随负循环,尽可能降低

    这种类型的限制适用于寻找图中最短路径的所有算法,这与禁止Dijkstra中所有负边的原因相同

    您可以修改Dijkstra以在图中找到循环,但我认为这不是最佳实践

    相反,您可以使用: Tarjan的强连通分量算法(时间复杂度-O(| E |+| V |)) 或Kosaraju的算法(使用DFS,是一种线性时间算法)

    或者您也可以通过此链接了解更多信息:


    希望我回答了你的问题

    如果您尝试了某件事,但出现了错误,那么您可以提问,但如果您要求的是某件事的完整算法,我想这不是正确的答案: