人工智能 —— A算法

A搜索算法问题描述:3×3九宫棋盘,放置数码为1 -8的8个棋牌,剩下一个空格,只能通过棋牌向空格的移动来改变棋盘的布局。

要求:根据给定初始布局(即初始状态)和目标布局(即目标状态),如何移动棋牌才能从初始布局到达目标布局,找到合法的走步序列。

问题讨论:A搜索算法如何解决八数码问题呢?还记得启发式算法离不开估价函数(f(x)=g(x)+h(x)),那么对于八数码问题我们赋予估价函数实际意义,g(x)是当前被考察和扩展的节点n在搜索图中的节点深度,h(x)是节点X与目标状态Sg相比较,不在目标位的棋牌个数(不包含空格)。那么初始状态的f(x)=0+4=4。在解决的过程中,我们还要借助OPEN表,CLOSE表。OPEN表中存放还未扩展的节点,CLOSE表中存放已扩展的节点。

一、算法思想

在状态空间搜索中,如果每一步都利用估价函数 f(n)=g(n)+h(n) 对Open表中的结点进行排序,则称A算法。它是一种为启发式搜索算法。

算法类型:

全局择优: 从Open表的所有结点中选择一个估价函数值最小的进行扩展。

局部择优:仅从刚生成的子结点中选择一个估价函数值最小的进行扩展。

二、全局择优搜索A算法过程

1.把初始结点S0放入Open表中,f(S0)=g(S0)+h(S0);

2.如果Open表为空,则问题无解 ,失败退出;

3把Open表的第一个结点取出放入Closed表,并记该结点为n;

4.考察结点n是否为目标结点。若是,则找到了问题的解,成功退出;

5.若结点n不可扩展,则转第(2)步;

6.扩展结点n,生成其子结点ni(i=1, 2, …),计算每一个子结点的估价值f(ni)(i=1, 2, …),并为每一个子结点设置指向父结点的指针,然后将这些子结点放入Open表中;

7.根据各结点的估价函数值,对Open表中的全部结点按从小到大的顺序重新进行排序;

8.转第(2)步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值