基于人工智能的状态空间搜索策略研究——八数码问题求解(一)实验软件TC2
0编程语言或其它编程语言(二)实验目的1
熟悉人工智能系统中的问题求解过程;2
熟悉状态空间的盲目搜索和启发式搜索算法的应用;3
熟悉对八数码问题的建模、求解及编程语言的应用
(三)需要的预备知识1
0编程语言或者其它编程语言;2
熟悉状态空间的宽度优先搜索、深度优先搜索和启发式搜索算法;3
熟悉计算机语言对常用数据结构如链表、队列等的描述应用;4
熟悉计算机常用人机接口设计
(四)实验数据及步骤1
实验内容八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态
2541233784186765(a)初始状态(b)目标状态图1八数码问题示意图请任选一种盲目搜索算法(深度优先搜索或宽度优先搜索)或任选一种启发式搜索方法(A算法或A*算法)编程求解八数码问题(初始状态任选),并对实验结果进行分析,得出合理的结论
实验步骤(1)分析算法基本原理和基本流程;程序采用宽度优先搜索算法,基本流程如下:2(2)确定对问题描述的基本数据结构,如Open表和Closed表等;起始把s放入open表失败成功是否open表为空表
是把open表中的第一个节点n移入close表否扩展节点n,把其后裔放入open表的前头是否有后继节点为目标节点
否是3OPENCLOSEDSA,B,CSB,C,D,E,FS,AC,D,E,F,GS,A,BD,E,F,G,HS,A,B,CE,F,G,H,I,JS,A,B,C,DF,G,H,I,JK,LS,A,B,C,D,EG,H,I,JK,L,M,NS,A,B,C,D,E,FH,I,JK,L,M,N,O,PS,A,B,C,D,