AStar算法

本文介绍了AStar算法用于寻找两点间最短路径的基本原理和步骤。通过将搜索区域划分为节点,从起点开始,利用开放列表和封闭列表进行搜索,并通过F值(G值+H值)选择最优路径。文章详细解释了G值、H值的计算以及如何处理相邻节点,最终找到目标并形成路径。
摘要由CSDN通过智能技术生成

我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B ,中间蓝色是墙。

这里写图片描述

图 1
我们把要搜寻的区域划分成了正方形的格子,目的是简化搜索区域,我们的搜索区域简化为了二维数组。数组的每一项代表一个格子,它的状态就是可走和不可走,通过计算出从 A 到 B需要走过哪些方格,就找到了路径。一旦路径找到了,人物便从一个方格的中心移动到另一个方格的中心,直至到达目的地。

方格的中心点我们成为“节点 (nodes) ”。如果你读过其他关于 A* 寻路算法的文章,你会发现人们常常都在讨论节点。为什么不直接描述为方格呢?因为我们有可能把搜索区域划为为其他多变形而不是正方形,例如可以是六边形,矩形,甚至可以是任意多变形。而节点可以放在任意多边形里面,可以放在多变形的中心,也可以放在多边形的边上。我们使用这个系统,因为它最简单。

开始搜索(Starting the Search)
一旦我们把搜寻区域简化为一组可以量化的节点后,就像上面做的一样,我们下一步要做的便是查找最短路径。在 A* 中,我们从起点开始,检查其相邻的方格,然后向四周扩展,直至找到目标。

查找的方法如下:
1.从起点 A 开始,并把它就加入到一个由方格组成的 open list( 开放列表 ) 中。现在 open list 里只有一项,它就是起点 A ,后面会慢慢加入更多的项。 Open list 里的格子是路径可能会是沿途经过的,也有可能不经过。基本上 open list 是一个待检查的方格列表。

2.查看与起点 A 相邻的方格 ( 忽略其中墙壁所占领的方格,及其他障碍物的方格 ) ,把其中可走的方格也加入到 open list 中。把起点 A 设置为这些方格的父物体。当我们在追踪路径时,这些父节点的内容是很重要的。(根据当前节点的父,反推路径)

3.把 A 从 open list 中移除,加入到 close list( 封闭列表 ) 中, close list 中的每个方格都是现在不需要再关注的。
如下图所示,深绿色的方格为起点,它的外框是亮蓝色,表示该方格被加入到了 close list 。与它相邻的黑色方格是需要被检查的,他们的外框是亮绿色。每个黑方格都有一个灰色的指针指向他们的父节点,这里是起点 A 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值