在A *中使用可接受和一致的启发式方法

时间:2013-12-23 14:17:08

标签: algorithm a-star heuristics

有人有一个简单和/或直观的解释,为什么你必须在A *中使用一个可接受的启发式,以及你为什么“应该”使用一致的启发式?

2 个答案:

答案 0 :(得分:5)

<强>容许:

确保我们认为达到目标所花费的成本不会超过实际成本。

如果实际成本高于实际成本,我们实际上可能最终采取更昂贵的路径,因为实际成本可能比我们认为这条路径的成本更便宜。

<强>一致:

如果我们向目标迈进,我们不应该突然认为到达目标需要的时间比我们刚刚做的要长。 [1]

如果我们接近目标并且我们突然认为从这里到目标需要更长的时间,我们可能最终会在我们最终到达目标之前探索一大堆其他路径,我们可以想到那些可能更便宜。

[1]:我只是在谈论我们认为这需要多长时间,而不是已经花了多长时间 - 所以,我们可能认为需要10分钟但是,在旅行了5分钟后,我们现在想我们还有7分钟的时间 - 这很好,但如果我们认为我们有超过10分钟的时间,那就不太好了。

答案 1 :(得分:0)

这只是为了让你说找到的结果是“最优的”,你可以使用你想要的任何启发式,只是更难以证明找到的结果是最优的。

例如,当您高估到目标节点的距离时,实际距离可能小于估计的距离。因此,找到的结果可能会被标记为“最佳”,而仍有更好的解决方案。