搜索——迭代加深搜索或IDA*
文章平均质量分 78
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
例题7-10 编辑书稿 UVa11212
1.题目描述:点击打开链接 2.解题思路:本题利用迭代加深搜索,也是一道典型的状态空间搜索问题,状态就是1~n的排列,初始状态是输入,终止状态是1,2,……n。由于n≤9,排列最多有9!=362880个,但由于每个状态的后继状态比较多,因此仍有TLE的危险。本题如果利用迭代加深搜索,可以发现做多只需要8步,关键在于如何有效地剪枝。考虑后继不正确的数字的个数h,可以证明每次剪切时h最多减少3(因为原创 2015-02-06 10:40:56 · 1376 阅读 · 0 评论 -
例题7-13 快速幂计算 UVa1374
1.题目描述:点击打开链接 2.解题思路:本题利用迭代加深搜索,代码类似于枚举全排列的代码(但不是我想到的==),由于本题实际上相当于枚举指数,因此可以利用已经拥有的指数集合,通过加法,减法两种情况去枚举新的指数;迭代加深搜索的关键点在于剪枝,如果当前指数集合中的最大值乘以2的maxd-d次方仍然小于n,则需要剪枝,同时,如果恰好等于n的话,那么直接就找到了解是maxd。最后说一句:本题代码原创 2015-02-02 23:46:00 · 789 阅读 · 0 评论 -
例题7-12 旋转游戏 UVa1343
1.题目描述:点击打开链接 2.解题思路:本题利用迭代加深搜索解决。好久没做这个专题了,感觉这种方法有点力不从心,不会寻找估价函数是硬伤。。。只好学一学别人的代码。 本题要求棋盘中间的8个方格都要是相同的数字。紫书上说是利用状态空间搜索解决,大致模板还是八数码问题的模板。但是写了半天最后WA了,感觉这道题用那个模板写出来会很复杂。最后看别人的代码,才发现大多都是利用迭代加深搜索解决的,代码量也原创 2015-04-11 15:59:52 · 1568 阅读 · 1 评论