- 定义
IDA* 算法就是基于迭代加深的A*算法。
A*算法的关键在于设计估价函数。既然估价函数与优先队列BFS结合可以产生A"算法,那么估价函数能否与DFS结合呢?当然,DFS也有一个缺点,就是一旦估价出现失误,容易向下递归深入一个不能产生最优解的分支,浪费许多时间。因此,我们最终选择把估价函数与迭代加深的DFS算法相结合。得到 IDA * 算法
我们设计一个估价函数, 估算从每个状态到目标状态需要的步数。当然,与A* 算法一样,估价函数需要遵守“估计值不大于未来实际步数”的准则。然后,以迭代加深DFS的搜索框架为基础,把原来简单的深度限制加强为:若当前深度+未来估计步数深度限制,则立即从当前分支回溯。
IDA* 算法在许多场景下表现出了优秀的效率,并且程序实现的难度低于A*算法。