Astar算法基本概念及其实现

本文介绍了A*算法的基本概念,包括启发式搜索、估价函数、开启列表和关闭列表。A*算法是BFS的一个特例,通过F = G + H的路径评分选择最优路径。估价函数G表示实际移动耗费,H是预估移动耗费。搜索过程中,使用曼哈顿估价函数简化计算。算法在理论上是最优的,但空间占用较大,可以通过迭代加深A*(IDA*)来优化。文章还详细阐述了搜索过程和路径显示的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先介绍几个概念有助于理解Astar算法,
启发式搜索:对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。可以省略大量不必要的搜索,提高效率。
估价函数:从当前节点移动到目标节点的预估费用,这个估计就是启发式的,在寻路问题和迷宫问题中,我们通常用曼哈顿估价函数(Manhattan)预估费用。 (如果搜索区域的划分不是正方形,就不用Manhattan算法(|x|+|y|),换成其他的)
Astar算法与BFS: BFS是Astar算法的一个特例。对BFS算法,从当前节点拓展出来的每一个没有被访问过的节点都要放入队列进一步拓展,正因为如此,BFS算法的估计函数H永远为0,没有启发式的信息,所以可以认为是最烂的Astar算法。
开启列表: 将要被遍历的点的集合。
关闭列表:已经被遍历的点的集合。

Astar算法特点: 理论上是时间最优的,缺点是空间呈指数增长。(IDAstar 算法:这种算法被称为迭代加深Astar算法,可以有效的解决 Astar 空间增长带来的问题,甚至可以不用到优先级队列。)

搜索区域 (绿色–起点A,红色–终点B,蓝色–墙)

搜索区域被划分成了方形网格(二维数组),像这样简化搜索区域,是寻路的第一步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值