我在使用Dijkstra算法将最佳路径从A返回到E时出现问题,下图中的转弯罚分为0.25:
我的实现返回路径ABDE(因为到D的最短距离沿曲线计算为3.05而不是沿直线计算为3.25),总成本为1 + 0.25 + 1.8 + 0.25 + 1 = 4.3。
然而,路径ABCDE是最优路径,总成本为1 + 1 + 0.25 + 1 + 1 = 4.25。如何修改我的实现以解决此问题?现在,我正在做的就是, 如果d [u] + w(u,v)+ 0.25 < d [v],然后d [v] = d [u] + w(u,v)+ 0.25。
答案 0 :(得分:1)
Dijkstra的算法不适用于转弯惩罚。如果你想使用Dijkstra算法,你必须消除转弯惩罚,例如通过将图形转换为原始节点/到达方向对的图形,边缘和边缘成本包含原始问题&# 39;转向惩罚。