八数码实验报告人工智能课设报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
实验课名称:人工智能
实验名称: 八数码
专业名称:计算机科学与技术
班级:
学号:
学生姓名:
教师姓名:
2010 年10 月20日
一.实验内容
用OPEN表和CLOSED表解决搜索问题。
二.实验题目
采用启发式算法(如A*算法)求解八数码问题。
三.实验要求
1.必须使用OPEN表和CLOSED表。
2.明确给出问题描述。系统初始状态。目标状态和启发式函数。
3.除了初始状态以外,至少搜索四层。
4.给出解路径(解图)。
四.实验过程
①问题:初始状态到目标状态是否可解如何判断?
答:实验过程自己给出的初始状态使用A*算法求解,并不是所有的初始状态都可解到达目标状态。因为八数码问题其实是0~9的一个排列,而排列有奇排列和偶排列,从奇排列不能转化为偶排列或者相反。例如:函数f(s)表示s前比s 小的数字的数目(s
则当f(a8)+f(a7)+……+f(a1)为偶数时才能重排成,所以嘛,上面那个有解的.
②问题描述:
在3X3的九宫格棋盘上,摆有8个将牌,每一个将牌都刻有1~8数码中的某一个数码。棋盘中留有一个空格,允许周围的某一个将牌向空格移动,这样通过移动将牌就可以不断地改变将牌的布局。这种游戏的求解的问题是:给定一种处
世的将牌布局或结构和一个目标的布局,问如何移动将牌,实现从从初始状态到目标状态的转变。
下面给出初始状态和目标状态:
初始状态:Array
目标状态:
评价函数f(n)形式为:f(n)=g(n)+h(n),其中g(n)是节点所处的深度,
h(n)是启发式函数,这里启发式函数h(n)表示“不在位”的将牌个数,这时f(n)
注意:移动规则为左-→上→右→下。
③搜索过程:
因此可得解路径:S(4)→B(4)→D(5)→E(5)→I(5)→K(5)→L(5).
④得到OPEN表和CLOSED表
OPEN表
结论:由以上分析,可以从CLOSED表中可知从初始状态到结束状态的搜索路径为:
S0→S2→S5→S9→S11→S12.
五、实验体会
通过本次实验又将课本内容熟悉了一遍,而且通过互联网了解了更多的关于八数码问题,如读过网上用VC++编写八数码问题的源代码,虽然理解不是很深,但基本思想也是有所体会;同时也对广度优先搜索算法,深度优先算法,双向广度优先算法及A*算法有更深的掌握。