用图搜索法:广度优先、深度优先和 A*算法实现八数码问题-报告
一、试验目的
用图搜索法:广度优先、深度优先和 算法实现八数码问题。
二、试验内容
八数码问题是:将分别标有数字 ,,,…, 的八块正方形数码牌任意地放在一块
的数码盘上。放牌时要求不能重叠。于是,在 的数码盘上出现了一个空格。现在要求
按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊
的排列。
三、试验流程图及程序
问题描述:例如下图
开始状态目标状态
程序代码:
!"#$
%&'$((位置 ' 和位置 上的数字换位
&$((其中 ' 是 ) 所在的位置
*+,-./0+$
123+(( 数码问题,理论上本程序也可解决 4 数码问题,
1 .23+23+((但 56- 需要
做很多修改,输入初始和结束状态的部分和 7-
也要修改
1.8- /9+))))))
1.8-9+,))
18:;<=&>?@%&A&B?$?A&C?$&A&C?$*
1!D 2=&>?@
%$=?@A)$=A)$ .$BB@=?@A==?@#@B&EF$*((将数组 & 转
换为一个 "# 位的整数 ?
1D!D 2=&>?@G
%G
$G
!"#A=&@$G
=A .C$A)$CC@G
%G
?EFAH)'$G
A#$G
*G
*((将一个 "# 位整数 & 转换为数组 ?
((
+,- /9+-!&
% !"#6$((保存状态,每个数字占 # 个二进制位,可解决 " 数码问题
+,- /9+-!&6$((父节点
+,- /9+-!&5&>?$
*+,- /9+$