当前位置:   article > 正文

A*简谈_a算法open表closed表

a算法open表closed表

A*搜索是启发式搜索的代表,其使用f(n) = g(n) +w h(n) 作为估价函数。其中g(n)为从初始状态到当前状态的成本,h(n)为从当前结点到目标结点的估计成本,即启发式函数。在搜索时,通过计算估价函数值,选择较优的路径,从而达到剪枝的目的(因为A*搜索是基于BFS实现的)。在实现时,我们一般使用OPEN表和CLOSED表,其中OPEN表用来存储待扩展的状态,CLOSED 表用来存储已经扩展的状态。在扩展状态时,通过遍历OPEN表和CLOSED 表,从而避免生成重复状态。在实现时,我们通过调整w值,对搜索的倾向进行调整。从相关研究上看,当w值随着搜索深度的增加而减小时,搜索的效果会比较好。也就是说,我们在搜索较浅的时候,应尽量使用启发值,在搜索较深的时候更倾向与BFS,以保证得到一个到达目标状态的路径。


以下是A*搜索的算法:

初始化OPEN表(优先队列)

初始化CLOSED表

将初始状态存入OPEN表

WHILE OPEN不为空

从OPEN表中取出最佳结点(即f值最小的结点)(PARENT)

如果PARENT是目标结点,程序结束

将PARENT存入CLOSED表中

对PARENT进行扩展(ADJ_NODE)

如果ADJ_NODE在CLOSED 表中

舍弃ADJ_NODE,并进行下一哥扩展

如果ADJ_NODE在OPEN 表中

比较两者g值,如果比OPEN表中优

抛弃OPEN表中结点

计算ADJ_NODE的f,g,h值

修改状态的父亲结点,为PARENT

将ADJ_NODEF放入OPEN表中

进入下次循环

        否则,计算ADJ_NODE的f,h值

设置ADJ_NODE的父亲结点为PARENT

将ADJ_NODE放入OPEN表中






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

闽ICP备14008679号