====== IDA* ======
===== 简介&思想 =====
迭代加深:有时候广搜太多深搜也太多,主要在于枝数太多、深度太深,因此枚举深搜的深度并不断深搜。时间复杂度由于搜索树的性质只与最深一层有关。\\
IDA*:迭代加深+估价函数(估计深度)
===== 例题 =====
==== 骑士精神 ====
**来源**:洛谷p2324
**概述**:5x5的棋盘上有12个黑棋子、12个白棋子、一个空位,棋子只能按规则(和中国象棋的马一样)走,并且只能走到空位。存在一种规定的目标形态,计算15步以内能到达目标形态的最少步数,否则输出-1。
**答案**:dfs+估价函数(统计和目标形态不同的位置个数);注意棋子移动的细节。
#include
#include
#include
#include
==== 铁盘整理 ====
**来源**:洛谷p2534
**概述**:有若干铁盘摞在一起,每次操作可以令底部若干铁盘不动,反转上面所有铁盘。铁盘具有不同的半径,求使所有铁盘半径从上到下递增的最少操作次数。
**答案**:IDA*:迭代加深+估价函数(将铁盘大小离散,故目标状态相邻的铁盘大小相差为1;每次翻转只改变翻转与不动的边界处两个铁盘的大小关系,因此估价函数即统计相邻铁盘大小相差不为1的铁盘对数)
#include
#include
#include
----
===== 总结 =====