当前位置:   article > 正文

人工智能 —— A算法_a算法open表closed表

a算法open表closed表

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)步。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/889766
推荐阅读
相关标签
  

闽ICP备14008679号