![]() |
1
1
关键是 函数单调递增 . 有一种算法利用了这个特性,叫做 A* . 累计成本: 您的教授希望您使用两个距离,一个是累积成本(这很简单,是将上一个节点的成本加上移动到下一个节点所需的成本/时间)。 启发式成本: 这是一些预测成本。 Disjkstra方法不起作用,因为您正在与 启发式成本/预测 和 累计成本 . 单调递增均值 h(A)<=h(A)+f(A.B) A. 到节点 B 然后,成本不应小于前一个节点(在本例中为A),这是 启发式+累积。 如果此属性成立,则第一条路径 A* 选择永远是通往目标的道路,永远不需要回溯。 注: 该算法的威力完全取决于您预测价值的方式。 如果您低估了将用累积值校正的值,但如果您高估了该值,它将选择错误的路径。 算法:
在这里,我使用*实现了一个8-puzzle-solve,它可以让您了解如何定义成本以及它的工作原理。 `
链接到 full 代码在这里。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |