今天在课堂上,我的教授向我们介绍了可接受的启发式,并声明它们保证了 A *算法的最优性。
我让他用一个极端的例子解释它,使其显而易见,但他不能。
有人可以帮忙吗?
答案 0 :(得分:6)
我们有一份候选人名单,对吧?
每个人都有一个ETC(预计总成本)从起始节点到达目标(即达到该节点的成本+目标的预期剩余成本(启发式))。
现在,如果预期成本与实际成本相同,我们只需选择最短路径上的节点(以及任何最短路径),而不是其他任何东西。由于我们选择了最低的ETC,因此我们只选择从最短路径中选择节点应该是非常明显的 - 任何不在最短路径上的东西都会有更高的ETC。
如果ETC低于实际成本怎么办?我们总是选择最低的ETC,因此我们可能最终选择不在最短路径上的节点。但是我们永远无法通过一条不是最短路径的路径达到目标,因为:
例如,假设我们的成本如下:(节点高于/低于节点的成本是预期剩余成本,边缘成本是实际成本)
0 10 0 100 0
START ---- O ------ GOAL
0 | | 100
O ------ O ------ O
100 1 100 1 100
很明显,我们开始访问顶级中间节点,因为ETC是10(10 + 0)。
然后目标将成为候选人,ETC为110(10 + 100 + 0)。
然后我们一个接一个地选择底部节点,然后是更新的目标,因为它们都具有低于当前目标的ETC的ETC,即它们的ETC是:100,101,102,102。
所以即使目标是候选人,我们也不能选择它,因为那里还有更好的路径。
答案 1 :(得分:0)
使用不可允许的启发式算法,A* 算法可以忽略 搜索问题的最优解...
文章中给出了一个很好的例子:15-puzzle problem。
对于这个特定问题,采用一个启发式函数,该函数返回错位图块(移动)的数量作为达到目标(整个拼图排序的位置)的成本。这是尽可能少的移动次数,尽管它不是一个实际的解决方案。
以此为当前节点:
目标节点:
交换 15 和 14 块瓷砖。
对于上图中呈现的节点,它将返回 2(两个图块错位:15 和 14)。这种启发式函数是可以接受的,因为它不会忽略最佳解决方案(用 2 步对拼图进行排序——将 15 和 14 移动到正确的位置)。
因此,启发式保证了最优性。