状态空间搜索——八数码问题
实验报告
【注】源码将以附件的形式上传,其中EightPuzzle.java为vo类,EightPuzzleOperator.java为util类,EightPuzzleAlgorithm.java为算法实现类。Main函数在EightPuzzleAlgorithm.java类中。
【源码下载】
一、实习目的和意义
理解和掌握状态空间搜索的策略。
二、实习内容
在一个3*3的九宫中有1~8个数及一个空格随机地摆放在其中的个子里,现在要求实现这个问题;将该九宫格调整为某种有序的形式。调整的规则是,每次只能将空格左上右下移动,试编程实现这一问题的求解。
三、实习要求
用你们学过的某种语言编写程序,利用不同的搜索策略进行状态空间搜索(如宽度优先搜索、深度优先搜索、有界深度优先搜索、启发式搜索等)。
四、实验总结
【实验测试结果】
测试中的一组数据:
请输入初始位置(其中输入0代表空白块,例如:2 8 3 1 0 4 7 6 5):
2 8 3 1 0 4 7 6 5
请输入目标位置(其中输入0代表空白块,例如:2 8 3 1 4 0 7 6 5):
2 8 3 1 4 0 7 6 5
深度优先搜索:
深度优先搜索方法路径!
2 8 3 1 0 4 7 6 5
2 8 3 0 1 4 7 6 5
2 8 3 7 1 4 0 6 5
2 8 3 7 1 4 6 0 5
2 8 3 7 1 4 6 5 0
2 8 3 7 1 0 6 5 4
2 8 3 7 0 1 6 5 4
2 8 3 0 7 1 6 5 4
2 8 3 6 7 1 0 5 4
2 8 3 6 7 1 5 0 4
2 8 3 6 7 1 5 4 0
2 8 3 6 7 0 5 4 1
2 8 3 6 0 7 5 4 1
2 8 3 0 6 7 5 4 1
2 8 3 5 6 7 0 4 1
2 8 3 5 6 7 4 0 1
2 8 3 5 6 7 4 1 0
2 8 3 5 6 0 4 1 7
2 8 3 5 0 6 4 1 7
2 8 3 0 5 6 4 1 7
2 8 3 4 5 6 0 1 7
2 8 3 4 5 6 1 0 7
2 8 3 4 5 6 1 7 0
2 8 3 4 5 0 1 7 6
2 8 3 4 0 5 1 7 6
2 8 3 0 4 5 1 7 6
2 8 3 1 4 5 0 7 6
2 8 3 1 4 5 7 0 6
2 8 3 1 4 5 7 6 0
2 8 3 1 4 0 7 6 5
终于找到了,⊙﹏⊙b汗
有界深度优先搜索:
有界深度优先搜索方法路径!
2 8 3 1 0 5 7 4 6
0 8 3 2 4 5 1 7 6
2 8 3 4 7 5 1 0 6
2 0 3 4 8 5 1 7 6
2 8 0 4 5 3 1 7 6
2 8 3 4 0 6 1 5 7
0 8 3 2 5 6 4 1 7
2 8 3 5 1 6 4 0 7
2 0 3 5 8 6 4 1 7
2 8 0 5 6 3 4 1 7
2 8 3 5 0 7 4 6 1
0 8 3 2 6 7 5 4 1
2 8 3 6 4 7 5 0 1
2 0 3 6 8 7 5 4 1
2 8 0 6 7 3 5 4 1
2 8 3 6 0 1 5 7 4
0 8 3 2 7 1 6 5 4
2 8 3 7 5 1 6 0 4
2 0 3 7 8 1 6 5 4
2 8 0 7 1 3 6 5 4
2 8 3 7 0 4 6 1 5
0 8 3 2 1 4 7 6 5
2 8 3 0 1 4 7 6 5
2 8 3 7 1 4 0 6 5
2