我最近在学习 A* 算法,我知道在寻找潜在路径时它需要一个启发式值,并且我也了解启发式算法的一致性和可接受性。但是我很困惑什么样的启发式是好的,为什么它是好的?
顺便说一句,启发式是如何工作的?
我最近在学习 A* 算法,我知道在寻找潜在路径时它需要一个启发式值,并且我也了解启发式算法的一致性和可接受性。但是我很困惑什么样的启发式是好的,为什么它是好的?
顺便说一句,启发式是如何工作的?
在我看来,选择启发式方法主要取决于问题。然而,如果以面向目标的方式理解问题,则选择启发式方法会变得更容易。至少那是我所做的。我遵循的想法是这样的:
启发式在目标状态下评估为零。
那么所有的场景是什么?在目标处产生零的所有函数是什么?
可能的启发式
- 剩下的食品托盘数量?
- 当前托盘到下一个未探索托盘的距离?
- 带有食品托盘等的网格中的未开发区域
我会选择最后一个选项,因为它看起来更可靠,尽管所有三个最终都会导致解决方案。
因此,我相信,您可以通过将自己置于目标状态来选择启发式方法,然后回头看看您在此过程中所取得的成就。所以从某种意义上说,启发式方法只不过是需要完成的事情的近似值(在目标处评估为 0)。