《人工智能导论》上机实验指导书
2
基于人工智能的状态空间搜索策略研究
——八数码问题求解
(一)实验软件
TC2.0 或 VC6.0 编程语言或其它编程语言
(二)实验目的
1. 熟悉人工智能系统中的问题求解过程;
2. 熟悉状态空间的盲目搜索和启发式搜索算法的应用;
3. 熟悉对八数码问题的建模、求解及编程语言的应用。
(三)需要的预备知识
1. 熟悉TC2.0 或 VC6.0 编程语言或者其它编程语言;
2. 熟悉状态空间的宽度优先搜索、深度优先搜索和启发式搜索算法;
3. 熟悉计算机语言对常用数据结构如链表、队列等的描述应用;
4. 熟悉计算机常用人机接口设计。
(四)实验数据及步骤
1. 实验内容
八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是
空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移
和空格下移这四个操作使得棋盘从初始状态到目标状态。
2
5
4
1
2
3
3
7
8
4
1
8
6
7
6
5
(a) 初始状态 (b) 目标状态
图 1 八数码问题示意图
请任选一种盲目搜索算法(深度优先搜索或宽度优先搜索)或 任选一种启
发式搜索方法(A 算法或 A* 算法)编程求解八数码问题(初始状态任选),并
对实验结果进行分析,得出合理的结论。
2. 实验步骤
(1)分析算法基本原理和基本流程;
程序采用宽度优先搜索算法,基本流程如下:
3
起始
把 s 放 入 open
表
失败
成功
是 否 open 表 为
空表?
是
把 open 表中的第一个节点
n 移入 close 表
否
扩展节点 n,把其后裔放入
open 表的前头
是 否 有 后 继 节 点
为目标节点?
否
是
4
(2)确定对问题描述的基本数据结构,如 Open 表和 Closed 表等;
OPEN
CLOSED
S
A,B,C
S
B,C,D,E,F
S,A
C,D,E,F,G
S,A,B
D,E,F,G,H
S,A,B,C
E,F,G,H,I,J
S,A,B,C,D
F,G,H,I,J K,L
S,A,B,C,D,E
G,H,I,J K,L,M,N
S,A,B,C,D,E,F
H,I,J K,L,M,N,O,P
S,A,B,C,D,E,F,G
(3)编写算符运算、目标比较等函数;
(4)编写输入、输出接口;
(5)全部模块联调;
(6)撰写实验报告。
(五)实验报告要求
所撰写的实验报告必须包含以下内容:
1. 算法基本原理和流程框图;
2. 基本数据结构分析和实现;
3. 编写程序的各个子模块,按模块编写文档,含每个模块的建立时间、功
能、输入输出参数意义和与其它模块联系等;
4. 程序运行结果,含使用的搜索算法及搜索路径等;
5. 实验结果分析;
6. 结论;
7. 提供全部源程序及软件的可执行程序。