我们可以在Dijkstra的算法中添加转弯惩罚吗

时间:2019-07-29 15:12:32

标签: dijkstra

我正在尝试对Dijkstra算法进行编码,以找到某些电缆桥架节点之间的最短路径(以有向图表示)。我的问题是;如果我们有转弯的地方(即不是公司希望拥有的直路),我们如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

Dijkstra无法直接纳入转折惩罚,因为它是基于到达节点的成本与其“上下文”无关的假设建立的。

可以重写图形,使每一转都与占据优势相关,因此转弯成本变为正常成本。然后可以将Dijkstra应用于该图。可以在“路线规划中的转弯成本建模”(Stephan Winter)中找到完整的说明。用于此图(线图)的图有时称为对偶图,尽管该术语传统上具有不同的含义。大致而言,您为每个原始边引入一个节点,如果相应的边都与同一原始节点相邻,则在两个新节点之间引入一个边(新图形中的一条边代表每2步的微小路径)。从源引出并到达目标的所有边都对应于新图中的单独节点,为避免将问题变成多源/多目标最短路径,您可以添加一个附加的源节点和目标节点,以“在一起”(成本为零)。