A*搜索算法(python)学习思考和总结记录1

1.使用A*算法核心目的:在地图上,从起点到终点,寻找一条代价最小的路径。

2.核心公式:F=G+H

F:节点移动的总代价(可以理解为当前节点从起点到终点的距离)

G:起点到目标节点的代价(起点到目标节点走过的距离)

H:当前目标节点到终点的预估代价,忽略障碍的最小距离。

在计算H代价时,使用曼哈顿算法及设当前节点坐标位置为(x1,y1),终点为(x2,y2),

H=|x1-x2|+|y1+y2|。

3.算法设计思路:从起点开始,检查相邻的方块,向四周开始扩散检查,一直到寻找到目标节点为止。

(1)设置两个参数,一个为起点(start),一个为终点(final)。current为新节点,

(2)建立两个列表,一个为需要搜寻节点列表(search list),一个为已被搜寻节点的列表(over search list)。

(3)将起点放入到search list当中,设置一个循环遍历搜寻起点周围的所有方格,并将它们放入到search list当中。

(4)将起点(start)从search list中删除,添加到oversearch list当中。

(5)计算search list当中所有方格的F值,F=G+H,在计算H时,先忽略障碍的影响,使用曼哈顿算法计算距离。G为从起点start到当前方格的距离。然后开始比较search list当中方格F值,选取一个最小的方格设置为新的节点current。将这个current节点从search list里删除,添加到oversearch list当中。

(6)对当前的新节点附近的方格进行搜寻,对于障碍方格和在oversearch list当中的方格进行忽略 。将不在search list 当中新搜寻的方格添加到其中。计算search list当中方格的F值。如果当前新节点的相邻节点已经存在在search list 当中了,就要开始去判断新的相邻方格从起点到该店的G代价时否更小。如果G值更小,去计算F代价的值,无需改变H代价,因为该点到终点的值时固定的。如果G点更大,则不需要改变。

(7)将当前的节点current从search list 当中删除,添加到oversearch list当中,在search list当中寻找F代价最小的节点设置为current,寻找他的相邻方块,将没有在search list当中的方块添加到其中。再删除当前的节点,添加到oversearch list当中,如此往复寻找到一条能够通往终点的路径。

(8)结束判断的条件,再search list当中能够找到final这个节点,则表示已经找到终点,完成任务。或者是当所有的方块都已经搜寻完之后,search list已经为空,无法再继续进行搜寻下去,也结束判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值