我正在尝试编写Dijkstra算法来寻找一些电缆桥架节点之间的最短路径(以有向图的形式给出)。我的问题是:如果我们有转弯(即不是公司希望的直道),我们如何处理这个问题?
发布于 2019-07-29 23:37:11
Dijkstra不能直接包含转向惩罚,因为它是建立在到达节点的成本与其“上下文”无关的假设之上的。
有可能重写你的图,这样每一轮都与取一条边相关联,所以轮成本变成了正常成本。然后,可以将Dijkstra应用于该图。完整的解释可以在“路线规划中的转弯成本建模”(斯蒂芬·温特)中找到。用于此(折线图)的图有时被称为对偶图,尽管该术语传统上具有不同的含义。粗略地说,您为每条原始边引入一个节点,如果相应的边都与相同的原始节点相邻,则在两个新节点之间引入一条边(每两步的微小路径由新图中的一条边表示)。引出源和进入目标的所有边对应于新图中的单独节点,为了避免将问题转变为多源/多目标最短路径,您可以添加额外的源节点和目标节点,这些节点“将边连接在一起”(零成本)。
https://stackoverflow.com/questions/57256676
复制相似问题