我正在研究A *路径寻找算法的定义,它似乎在不同的地方有所不同。
区别在于通过节点的后继者时发现的操作,并且发现后继者在关闭列表中。
我很困惑 - 哪种方法是正确的?直觉上,第一个对我来说更有意义,但我想知道定义的差异。其中一个定义是错误的,还是它们在某种程度上是同构的?
答案 0 :(得分:9)
只有在始终首先遵循任何重复状态的最佳路径时,第一种方法才是最佳的。如果启发式函数具有一致性(也称为 monoticity )的属性,则此属性成立。如果对于每个节点n
和n'
的每个后继n
,从n
到达目标的估算成本不大于步骤成本,则启发式函数是一致的从n'
获取n
加上n
达到目标的估计费用。
如果启发函数仅是可接受的,那么第二种方法是最优的,也就是说,它永远不会过高估计达到目标的成本。
每个一致的启发式功能也是可以接受的。虽然一致性是一个比可接受性更严格的要求,但是必须非常努力地编写可接受但不一致的启发式函数。
因此,即使第二种方法更为通用,因为它适用于更严格的启发函数子集,第一种方法在实践中通常就足够了。
参考:小组 A *搜索:最小化估算的总解决方案费用 4.1知情(启发式)搜索策略 人工智能:A现代方法。