同时看已走成本与剩余估计
对某个候选状态,g表示目前找到的起点到它的路径成本,h估计从它到目标还需多少成本。A*以f=g+h作为优先级,先扩展较小者;只用h的贪心搜索忽略已经付出的代价,只用g则接近一致代价搜索。
启发式应与问题中的成本单位相符。在只许水平或竖直单位步长移动的格子地图中,忽略墙壁后的曼哈顿距离提供剩余步数下界;若允许不同移动或不同成本,就必须重新核对这个估计,不能照搬同一公式。
参考:[1]
不高估与一致性各有限定
可采纳启发式不高估真实最小剩余成本,并在目标处为零。在有限搜索树、边成本非负的模型中,配合正确的A*搜索,这个下界能保留最优路径的机会;h取零时,算法退回一致代价的优先规则。
一致性进一步要求,对一步成本c连接的状态u、v,有h(u)≤c+h(v),相当于估计不会沿一步突然下降得比实际成本更多。满足一致性时,常用图搜索可在适当的取出与关闭规则下避免反复扩展;仅有可采纳性时,可能还须重新打开已经遇到的状态。
找到更便宜路径时不能只看访问过
同一状态可能由多条路径到达。如果第一次遇见就永久标为不可再处理,而它后来还能以更低g到达,算法可能错过最优路线。正确实现要比较路径成本,按相应规则更新候选或重新扩展,目标测试也不能简单等同于首次生成目标节点。
更精确的下界通常可以减少无关探索,但计算估计本身也耗时,优先队列和保留的候选状态占用内存。A*不保证所有问题都能迅速解决,也不会自动修正错误状态合并;状态必须保留决定未来可行动作与成本的信息。