AStar路径规划算法

AStar算法是一种结合Dijkstra算法和启发式方法的路径规划算法,通过起点逐步搜索并记录节点的最短距离。关键在于F值(G+H)的计算,其中G是实际距离,H是预估距离。算法使用开启列表和关闭列表管理节点,并根据F值选择下一步。正确的H值估算能优化性能,适用于各种地理环境。当终点首次出现在关闭列表,算法结束并提供最短路径。
摘要由CSDN通过智能技术生成

概要

AStar是一种路径规划算法,其思想包含Dijkstra算法和启发式算法。该算法也是通过起点开始,逐步记录能够搜索到的节点,并记录它们离起点的最短距离;同时还会估算搜索到的点离终点的距离。

公式

G --  当前节点离起点的距离
H –  估算当前节点离终点的距离
F = G + H


两个队列


开启列表 – 当前寻址到的节点,包含GHF三个值,但其值可能会在随后的迭代搜寻中被更新。在每次寻址的过程中,会有新的节点存入开启列表(除非当前节点寻址到的所有节点都已经在开启列表中),也会有一个节点从开启列表移动到关闭列表中;
关闭列表 – 其节点来之开启列表中的节点。关闭列表表示其GHF三个值不会再发生变动了,或者说已经是最小值了;


H的计算方法


因为是估算,H的公式是需要考虑实际情况的,尽可能选取准确率更高的方法。这样能使得算法迭代的次数更少,性能更优。比如像北京这样的平原城市,道路规划工整,这样的地方选择使用曼哈顿的距离公式就比较合适。反之像重庆这样的山城,城市依山而建,选用欧式距离可能更为合适。

算法思想


选取开启列表中F值最小的节点,寻址通过它

能直接到达的所有其它节点。这部分节点分为三类:一是已经出现在关闭列表中,忽略;二是没有出现在开启列表中,我们就把它直接放入开启列表,同时记录其父节点为当前节点;三是已经出现在开启列表中,需要计算通过当前节点到达新节点的G值,如果该值更小,则更新(同时更改父节点指向当前节点),否则忽略。
当终点第一次出现在关闭列表中时,算法停止。通过父节点指针倒推,获取到最短路径。


小结


AStar算法是一种快速路径规划算法,只要H值计算的正确率较高,其性能是非常好的;反之其性能就会比较糟糕。
与Dijkstra算法一样,该算法也包含开启列表与关闭列表,并通过每一步迭代寻址改变两个列表中的值。这种方式保证了算法的严谨性,算出的路径一定是最短的路径。
与Dijkstra算法不同的是,它并非使用离起点最短的节点作为下一次迭代的起始节点,反而使用的是F值最小的节点。这时就体现出启发函数的作用了。如果在某些场景完全估算不出H值,AStar算法也是无法使用的。


参考文献


https://zhuanlan.zhihu.com/p/101938680
https://www.gamedev.net/reference/articles/article2003.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值