这是我的问题的可视化展示:
我一直在尝试使用Djikstra算法解决它,但是还没有成功。
我认为问题在于Dijkstra算法会丢弃需要保留的信息:如果你要从A到达E,
B
/ \
A D - E
\ /
C
O(m+ K*n*log(m/n))
。 - Apiwat Chantawibul基本上,您需要找到第一条最短路径,检查它是否有效,然后找到第二条最短路径,检查它是否有效,以此类推...
Dijkstra算法并不适用于这种任务。 通过在Google上搜索这个问题的新定义, 我找到了Stack Overflow关于查找第k短路径的问题。 我还没有深入研究它,所以别问我。 希望这可以帮到您。
我认为你可以用Dijkstra算法来实现,但是你需要改变每一步中计算临时距离的方式。除了考虑距离之外,还要考虑成本。新的距离应该是一个二维数值 (dist, cost)
,当你选择最小距离时,应该选择满足 dist
最小且 cost <= 6
的那个。
希望这样解释正确无误。
{5,6}
,而不是{4,6}
...当然这并不会改变解决方案,但还是要注意。 - twalberg