1、A*算法的**搜索区域 **
传统A星算法是将地图简化成栅格,计算路径时是用每个栅格的中心点作为单位进行计算。
搜索区域分为两部分:开放列表和封闭列表
开放列表可以进行访问,封闭列表则不可以访问(包括不可走 (unwalkable) 的方格)
从起点开始将起点加入开放列表,则以起点为中心与其相邻的栅格则作为搜索区域,通过遍历所有相邻方格,选取移动成本和估价成本最低的栅格。当该中心点的所有栅格都搜索一遍之后,则把该中心点放到封闭列表,不在作为搜素区域进行访问。当选取到移动成本和估价成本最低的栅格则把该栅格加入到开放列表,作为下次搜索的中心点。依次类推。
计算出组成路径的方格的关键公式:F = G + H
G = 从起点 A 移动到指定方格的移动代价,沿着到达该方格而生成的路径。
H = 从指定的方格移动到终点 B 的估算成本。
2、算法的核心:反复遍历 open list ,选择 F 值最小的方格。
- 把起点加入 open list 。
2.重复如下过程:
a.遍历 open list ,查找 F 值最小的节点,把它作为当前要处理的节点。
b. 把这个节点移到 close list 。
c. 对当前方格的相邻方格
◆ 如果它是不可抵达的或者它在 close list 中,则忽略它。
◆ 遍历所有相邻方格选取F值最小的方格把它加入 open list ,并且把当前方格设置为下一步搜索的的父节点并记录该方格的 F , G 和 H 值。
◆ 如果相邻方格已经在 open list 中,则检查这条路径 是否更好,用 F 值作参考。
d.停止,当你把终点加入到了 open list 中,此时路径已经找到了,或者查找终点失败,并且 open list 是空的,此时没有路径。
3.保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是寻找的最佳路径。
在这里插入图片描述