IDA*算法其本质其实就是迭代加深 是迭代加深算法的一个优化
IDA*框架总结
// 由于迭代加深算法 一般都是解决可行性问题 所以IDA*也一般都是解决可行性问题
int f() {;} // *** 估值函数
bool dfs (int depth, int max_depth)
{
if(depth + f() > max_depth) return false;
if(f() == 0) return true; // 这里的终止条件一般都是估值函数为0时,
// 因为估值函数时当前状态太到末状态的距离, 当等于0的时候就到了末状态了, 就结束
// 爆搜枚举
return false;
}
int main ()
{
int depth = 0;
while(!dfs(0, depth)) depth ++ ; //*** 每一次都从0开始
cout << depth << endl;
}