【AI算法】A星算法实现自己总结的步骤

以下算法是我对A星算法的初浅理解而写出来的,主要作为记录用,非常有可能有很多错误,想借来参考的请慎重,如果发现有问题的麻烦各路大神提出。谢谢大神。




A算法框架:

1、设置Open列表以及Close列表,Open列表代表可能要走的状态,Close表表示已经走过的状态。
2、先把A星寻路初始状态节点(寻路源头、初始状态),放入open表中。
3、检查open表,把 f(x) 最小的状态X找出来,将之移出open表,移进close表( f(x) = g(x)  + h(x)  g(x)初始状态到当前状态的移动累积代价,而h(x)则是从当前状态移动到目标状态的预测代价。)
4、判断最小的状态X是不是目标状态(寻路目的地),若不是则跳到状态5,若是则找到目标状态,这个目标节点一直回链上去,直到链到初始状态节点的整个链,就是最短路径。
5、找出刚才所找出的最小状态的所有相邻状态(所有X的相邻状态节点都有一个指针回链到状态X),并且剔除相邻状态中已经被走过的状态Ns(即在close表中已存在的状态),将这些相邻的但未被遍历过的状态s Ns放入Open表。 完成后跳到3。


自定义步骤:

1、定义一个状态的描述方式,能将任意状态与需要与之区分的状态区分开来。

2、预测一个状态可能跳转到的所以下一个状态(通常意为状态移动代价不是正无穷,或者非常非常大,会对所有的移动结果产生很大的影响)。

3、定义g(x)的计算规则,即定义从初始状态节点到当前节点的移动总代价。那首先得定义任意两个状态A和B,若A走到B,则这个状态跳转的实际代价计算规则。把已走过的路径的任意相邻状态的权重累加即能得到g(x)。通常把状态间不能跳转的设成正无穷以实现,让不能跳转的两个状态真的不能跳转。(可以把初始节点的g(x)设为0)

4、定义h(x)的计算规则,即定义当前状态A,如果跳到目标状态B(寻路终点),预测需要多少代价的计算规则。如果需要实现A星,一定要让预测的代价小于实际代价。即一定要让h(x)a-b<h*(x)a-b。个人的理解是要让h(x)a-b算出来的代价一定要小于最后g(x)a-b算出来的代价。

【对g(x)和h(x)计算规则的设计,特别是h(x)相对于g(x)相对规则的设计是A星算法质量的好坏,特别是】


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值