人工智能实验指导书+作业展示(3)

2018-12-05 13:27

实验1.2 A*算法搜索

一 实验目的

1 加深对各种状态图搜索策略概念的理解;

2 熟悉和掌握A搜索的定义、估价函数和算法过程;

3 理解和掌握A搜索过程,能够用选定的编程语言求解八数码问题,理解求解流程和搜索顺序;

4 通过实验掌握估价函数的计算方法,理解估价函数定义的意义。

**

二 实验内容

以重排九宫问题/八数码问题为例,以A搜索算法求解给定初始状态和目标状态的最优搜索路径。

*

三 实验要求

1 自己定义估价函数,能正确求解出从初始状态到目标状态的移动路线; 2 要求界面显示初始状态、目标状态和中间搜索步骤; 3 对不可达状态能进行正确识别;

4 对所采用的估价函数做出性能分析,分析g(n)和h(n)的主要作用是什么,以及不同取值的实验效果,并进行分析。

四 实验背景知识

A算法和A算法是图搜索的两种典型的启发式搜索算法。 1 A算法

A算法是在图搜索算法中的树式搜索算法中增加了估价函数f(x)的一种启发式搜索算法。估价函数的一般形式为:

f(x)=g(x)+h(x)

其中g(x)为从初始节点S0到节点x已经付出的代价,h(x)是启发函数,表示估计搜索树上节点x与目标节点Sg接近程度。估价函数f(x)是从初始节点S0到达节点x处已付出的代价与节点x到达目标节点Sg的接近程度估计值之总和。 有时估价函数还可以表示为

f(x)=d(x)+h(x) 其中d(x)表示节点x的深度。

f(x)中的g(x)或d(x)有利于搜索的横向发展,h(x)则有利于搜索的纵向发展,因而可提高搜索的效率和搜索的完备性。但在确定f(x)时,要权衡利弊,使g(x)(或d(x))与h(x)的比重适当,这样才能取得理想的效果。 2 A算法

对A算法限制其估价函数中的启发函数h(x),使其满足:对所有的节点x均有: h(x)≤h*(x)

9

*

*

其中h*(x)是从节点x到目标节点的最小代价(若有多个目标节点则为其中最小的一个),则

*

它就称为A算法。

A算法是一种有序搜索算法,其特点在于对估价函数的定义上。对于一般的有序搜索,总是选择f值最小的节点作为扩展节点。因此,f是根据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点x的估价函数值为两个分量:从起始节点到节点x的代价以及从节点x到达目标节点的代价。 3 估价函数示例

f(x)?g(x)?h(x),其中g(x)为初始节点到达当前节点的所花步数,h(x)为当前节点到目标节点的曼哈顿距离。估计函数为到达当前节点步数和Manhattan距离之和,由相关

**h(x)h(x)?h(x)h资料得Manhattan距离满足,其中(x)是当前节点到达目标节点的最小

*

代价,所以此估价函数对应为A算法。

可以用反证法来证明上述估计函数满足A*算法要求。若存在最佳路径且长度为L1,a为最佳路径上的任意一节点,假设A*没有得出最优解,其求出路径长度为L2>L1,b为其求解路径上的终结点。因为估价函数f(n)=step+h(n),h(n)<=n(n为到目标的实际路径)。所以f(a)<=L1,f(b)=L2,推出f(a)

*

五 实验关键技术

下面给出A算法的具体步骤:

步1 把附有f(S0)的初始节点S0放入OPEN表; 步2 若OPEN表为空,则搜索失败,退出。

步3 移出OPEN表中第一个节点N放入CLOSED表中,并冠以顺序编号n; 步4 若目标节点Sg=N,则搜索成功,结束。 步5 若N不可扩展,则转步2;

步6 扩展N,生成一组附有f(x)的子节点,对这组子节点作如下处理:

(1)考察是否有已在OPEN表或CLOSED表中存在的节点;若有则再考察其中有无N的先辈节点,若有则删除之;对于其余节点,也删除之,但由于它们又被第二次生成,因而需考虑是否修改已经存在于OPEN表或CLOSE表中的这些节点及其后裔的返回指针和f(x)值,修改原则是“抄f(x)值小的路走”;

(2)对其余子节点配上指向N的返回指针后放入OPEN表中,并对OPEN表按f(x)值以升序排序,转步2。

六 实验检查要求

1 界面显示要求:

(1)包含初始状态和目标状态的显示,可由指导老师随机输入状态进行检查; (2)每次搜索过程的步骤,不要求树型结构,只要求(动画)表现,每走一步的状态

10

变化;

(3)每走一次搜索步,需要有步数的累积显示; (4)最后有完成一次搜索完毕的结果显示。 2 代码要求

检查时要求提供源代码。 3 讲解要求

要求学生讲解自己设计代码的构架,如何实现的(包含使用了何种数据结构,open表和close表的结构等);要求学生说明自己所使用的估价函数,以及程序运行效果。 4 回答辅导老师提出的问题。

5 提交实验报告(课后把实验报告和源代码在规定的时间内提交到指定邮箱里)。

11

实验1.3 其他应用问题

一 迷宫问题

走迷宫是人们熟悉的一种游戏,如下图就是一个迷宫。如果我们把该迷宫的每一个格

子以及入口和出口都作为节点,把通道作为边,则该迷宫可以由一个有向图表示(如图4所示)。那么,走迷宫其实就是从该有向图的初始节点S0(入口)出发,寻找目标节点Sg(出口)的问题,或者是寻找通向目标节点(出口)的路径的问题。

S1S2S3

S4S5S6S0

S7S8S9

图4 迷宫图 请用图搜索算法进行求解。

Sg二 八皇后问题

八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8?8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。

请用图搜索算法进行求解。

三 一字棋游戏

设有一个三行三列的棋盘,两个棋手A,B轮流走步,每个棋手走步时往空格上摆一个自 己的棋子,谁先使自己的棋子成三子一线为赢。

初始棋盘 各走一步后棋盘 图5 一字棋

设A的棋子用“a”表示,B的棋子用“b”表示。为了不致于生成太大的博弈树,假设每次仅扩展两层。估价函数定义如下: 设棋局为P,估价函数为e(P)。

(1)若P是A必胜的棋局,则e(P)=+∞。 (2)若P是B必胜的棋局,则e(P)=-∞。

(3)若P是胜负未定的棋局,则e(P)=e(+P)-e(-P)

其中e(+P)表示棋局P上有可能使a成为三子成一线的数目;e(-P)表示棋局P上有可能使b成为三子成一线的数目。例如,对于上图所示的棋局,则

12

e(P)=6-4=2

另外,我们假定具有对称性的两个棋局算作一个棋局。还假定A先走棋,我们站在A的立场上。下图给出了A的第一着走棋生成的博弈树。图中节点旁的数字分别表示相应节点的静态估值或倒推值。由图可以看出,对于A来说最好的一着棋是S3,因为S3比S1和S2有较大的倒推值。

图6 一字棋极小极大搜索

请用图搜索算法进行求解,并要求应用α-β剪枝技术。

13


人工智能实验指导书+作业展示(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二年级数学老师家长会发言稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: