A*算法步骤

步骤如下:

先设定两个集合,open集,close集

1、将起始点加入open集(设置父亲节点为空)

2、在open集中选着一个F值最小的节点作为当前节点

2.1 将其添加到close集,并从open集中移除!

2.2 如果为终点节点,那么结束搜索

2.3 处理当前节点的所有邻接节点

如果不在open集中,那么就将其添加到open集,(最好设置该节点的父节点为当前节点,以便确定路径);

如果已经添加到open集中,重新计算G值,如果G值小于先前的G值,那么就跟新此值(同时跟新父节点);

如果该节点不可通过或者已经被添加到close集,那么不予处理;

3、如果open集不为空,那么转到步骤2继续执行。


需要注意的是:

1、如果搜索结束,当open集为空,可能获得一条路径,也可能搜索失败!

2、如果搜索结束,如果open集不为空,那么必定找到一条路径

3、如果搜索成功,对于close集中的每一个节点,可能属于路径上的一个节点,也可能不属于路径上的一个节点!

4、如果搜索成功,如何确定这一条路径:从最后一个节点起,根据节点的父亲节点依次往前确定这条路径!



  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值