我实现了Dijkstra算法来找到2点之间的最短路径。如何修改它以找到N条最短路线?我的想法是在先前找到的路径的最后一个节点上添加一个小权重,但它并不总是正常工作。有什么想法吗?
答案 0 :(得分:0)
您尝试解决的问题称为 K shortest path problem 。第一个解决问题的算法是由Yen于1971年提出的,采用任何最短路径算法找到最佳路径,然后继续寻找最佳路径的K - 1偏差。
算法的运行时复杂度为O(kn(m + n log n))
,这是伪多项式,其中m
表示边数,n
是顶点数。
可以找到几种编程语言中的算法实现here。