![]() |
1
1
关键是 函数单调递增 . 有一种算法利用了这个特性,叫做 A* . 累计成本: 您的教授希望您使用两个距离,一个是累积成本(这很简单,是将上一个节点的成本加上移动到下一个节点所需的成本/时间)。 启发式成本: 这是一些预测成本。 Disjkstra方法不起作用,因为您正在与 启发式成本/预测 和 累计成本 . 单调递增均值 h(A)<=h(A)+f(A.B) A. 到节点 B 然后,成本不应小于前一个节点(在本例中为A),这是 启发式+累积。 如果此属性成立,则第一条路径 A* 选择永远是通往目标的道路,永远不需要回溯。 注: 该算法的威力完全取决于您预测价值的方式。 如果您低估了将用累积值校正的值,但如果您高估了该值,它将选择错误的路径。 算法:
在这里,我使用*实现了一个8-puzzle-solve,它可以让您了解如何定义成本以及它的工作原理。 `
链接到 full 代码在这里。 |
![]() |
Tak · 在Python中获取二维数组中单元格的最短路径 7 年前 |
![]() |
The Winter Soldier · 动态最短路径 7 年前 |
![]() |
Ka Mal · 加权图中最优路径的确定算法 9 年前 |
![]() |
BKS · 两个节点之间所有最短路径列表中的最大值 9 年前 |
![]() |
razshan · Edmonds karp算法实际上是如何计算最短路径的? 10 年前 |
![]() |
roxrook · 如何用动态规划求解地形图的最短路径? 11 年前 |
![]() |
user1559625 · 奈特最短路径图数据结构与算法 12 年前 |