|
1
1
关键是 函数单调递增 . 有一种算法利用了这个特性,叫做 A* . 累计成本: 您的教授希望您使用两个距离,一个是累积成本(这很简单,是将上一个节点的成本加上移动到下一个节点所需的成本/时间)。 启发式成本: 这是一些预测成本。 Disjkstra方法不起作用,因为您正在与 启发式成本/预测 和 累计成本 . 单调递增均值 h(A)<=h(A)+f(A.B) A. 到节点 B 然后,成本不应小于前一个节点(在本例中为A),这是 启发式+累积。 如果此属性成立,则第一条路径 A* 选择永远是通往目标的道路,永远不需要回溯。 注: 该算法的威力完全取决于您预测价值的方式。 如果您低估了将用累积值校正的值,但如果您高估了该值,它将选择错误的路径。 算法:
在这里,我使用*实现了一个8-puzzle-solve,它可以让您了解如何定义成本以及它的工作原理。 `
链接到 full 代码在这里。 |
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 2 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 2 年前 |