Dijkstra的转弯惩罚算法给出次优路径

时间:2018-04-14 19:14:26

标签: dijkstra

我在使用Dijkstra算法将最佳路径从A返回到E时出现问题,下图中的转弯罚分为0.25:

Graph

我的实现返回路径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。

1 个答案:

答案 0 :(得分:1)

Dijkstra的算法不适用于转弯惩罚。如果你想使用Dijkstra算法,你必须消除转弯惩罚,例如通过将图形转换为原始节点/到达方向对的图形,边缘和边缘成本包含原始问题&# 39;转向惩罚。