你如何使用Dijkstra找到更多路线?

时间:2018-01-26 14:11:15

标签: algorithm graph-algorithm dijkstra

我实现了Dijkstra算法来找到2点之间的最短路径。如何修改它以找到N条最短路线?我的想法是在先前找到的路径的最后一个节点上添加一个小权重,但它并不总是正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您尝试解决的问题称为 K shortest path problem 。第一个解决问题的算法是由Yen于1971年提出的,采用任何最短路径算法找到最佳路径,然后继续寻找最佳路径的K - 1偏差。

算法的运行时复杂度为O(kn(m + n log n)),这是伪多项式,其中m表示边数,n是顶点数。

可以找到几种编程语言中的算法实现here