| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4443 人关注过本帖
标题:八数码问题的迭代加深算法
只看楼主 加入收藏
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
收藏
得分:0 
最多只要19步,这是确定的上界
我刚刚写的程序搜索出来的结果
2008-10-20 22:11
rootkit
Rank: 1
等 级:新手上路
帖 子:197
专家分:5
注 册:2008-9-26
收藏
得分:0 
19步是怎么算出来的,不会是穷举9!种排列总结出来的吧?

降妖除魔路,仗剑载酒行
借问谁家子,大唐游侠儿
2008-10-20 22:19
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
收藏
得分:0 
不好意思,错了,是31步才对,最多31步
我是BFS解出来的
2008-10-20 22:51
rootkit
Rank: 1
等 级:新手上路
帖 子:197
专家分:5
注 册:2008-9-26
收藏
得分:0 
怎么用BFS算移动步数的上界?
貌似有些排列是无解的,上界是+∞

降妖除魔路,仗剑载酒行
借问谁家子,大唐游侠儿
2008-10-20 22:57
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
收藏
得分:0 
其中1/2的排列是无解的
2008-10-20 23:28
rootkit
Rank: 1
等 级:新手上路
帖 子:197
专家分:5
注 册:2008-9-26
收藏
得分:0 
百度搜到的资料:
利用奇偶性判断所给出的初始状态有无解.

判别方法是:
以数组为一维的举例子.
将八数码的一个结点表示成一个数组a[9],空格用0表示,设临时函数p(x)定义为:x数所在位置前面的数比x小的数的个数,
其中0空格不算在之内,那设目标状态为b[9],那r=sigma(p(x)) sigma()表示取所有的x:1-8并求和,
那对于初始状态a[9],t=sigma(p(x)),如果r和t同为奇数或者同为偶数,那么该状态有解,否则无解。

考虑到四种移动方法对sigma(p(x))的影响,左移和右移是不会影响它的值的,
更不会影响奇偶性,如果是上移或者下移就会影响:
上移:一次上移会使一个元素向前跳两个数字的位置,设这两个数字为a1,a2,
不妨设a1<a2,移的这个数字设为a0,那无非只有以下三次情况:
1,a0<a1<a2,考虑它们三者的p(x)值,p(a0)不变,p(a1)++,p(a2)++,总体增加了2
2,a1<a0<a2,p(a0)--,p(a1)不变,p(a2)++,总体不变
3,a1<a2<a0,p(a0)-=2,p(a1),p(a2)不变,总体减小了2

综合起来的结论就是不会影响sigma(p(x))的奇偶性。


1到8的奇排列和偶排列数量根据对称性是相等的,所以如你所说只有1/2的排列是有解的,那么算出有解的1/2的排列的最短路径中最大值就可以作为迭代加深算法的MAX_DEPTH了。


下面是我正在看的课件,内容是BFS,DFS,迭代加深,启发式(A*),对抗搜索。发出来共享:
art03:  Search in State Spaces Uninformed Search
art04:  Search in State Spaces Heuristic Search
art05:  Adversarial Search  Two-Player Games
AI.rar (424.28 KB)

降妖除魔路,仗剑载酒行
借问谁家子,大唐游侠儿
2008-10-21 09:20
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
收藏
得分:0 
你需要对于任何输入都求最少步数解吗?
2008-10-21 12:23
rootkit
Rank: 1
等 级:新手上路
帖 子:197
专家分:5
注 册:2008-9-26
收藏
得分:0 
算出有解的1/2的排列的最短路径中最大值就可以作为迭代加深算法的MAX_DEPTH了。

或许我的这句话比较难理解,形式化描述就是:
设集合A是0,1,2,3,4,5,6,7,8这9个元素的全排列集,goal是A的一个元素,f是对A中元素的八数码棋盘变换。
1.函数g(x)定义为x进行f变换为goal的最少变换次数,x∈A
2.集合B定义为,{x |x∈A,存在g(x),即g(x)不为+∞}
3.集合C定义为,{y | y=g(x),x∈B}

如果MAX_DEPTH取C中的最大值,那么使用迭代加深搜索时如果有解必然可以搜索到最优解。

降妖除魔路,仗剑载酒行
借问谁家子,大唐游侠儿
2008-10-21 13:23
蓝色线段树
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-10-18
收藏
得分:0 
31步你的DFS打算搜索多久??
2008-10-21 13:39
jesseman
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-21
收藏
得分:0 
晕了。。   等我看看 慢慢找
2008-10-21 15:05
快速回复:八数码问题的迭代加深算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032457 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved