Dijkstra算法对权值有什么要求?为什么?
时间: 2023-07-12 10:24:11 浏览: 87
什么是dijkstra算法.md
Dijkstra算法对权值要求非负,因为Dijkstra算法是一种单源最短路径算法,它通过不断松弛边来求出起点到各个节点的最短路径。如果存在负权边,那么在松弛边的过程中,可能会出现一些“环路缩短路径”的情况,即经过一个负权环路可以无限缩短路径,这样就会导致Dijkstra算法无法正常工作。
因此,对于存在负权边的图,应该使用其他算法,如Bellman-Ford算法。而对于存在部分负权边的图,可以使用一些特殊的算法,如SPFA算法,但是相比Dijkstra算法,它的时间复杂度较高。
阅读全文