A*算法

A*算法是一种用于寻路的高效算法,适用于静态路网。它需要预先设定的地图、起点和终点,通过将地图划分为不可分割的格子并赋予不同权值来表示路况。A*结合了BFS(广度优先搜索)和DFS(深度优先搜索)的优点,以G(实际代价)和H(启发式估计代价)的和F作为每个格子的估值,通过不断选择代价最小的格子来找到最优路径。

1.2 A*算法要解决的问题

我们可以通过先了解A算法解决的问题来了解A算法的概念。A* 是一种用于寻路的算法,现在我们给计算机一张地图,标记了哪些地方能走,哪些地方不能走,然后告诉计算机起点A和终点B,计算机自动计算出一条从A点到B点的最短路径,我们的问题就解决了。A*算法就是用于快速解决这类问题的方法。

让我们先用抽象的方法看这个问题,首先,解决这类问题的前提条件有以下两个: 第一个条件是,地图必须是事先设计好的。也就是说地形、各点的位置等地图的属性是固定不变的,这种地图不能前一秒里面还有一条河,后一秒同样位置就没有这条河了。本着抽象的原则,我们把这种有固定属性的地图叫做静态路网。因此,A* 是一种基于静态路网的寻径算法
使用A* 的第二个条件是,已知起点和终点。在一些RPG游戏中,经常会有游戏迷宫这种设定,在游戏迷宫中,玩家只能确定自己的位置(仙剑3的一些迷宫里,因为有传送的概念,玩家甚至不能确定自己的位置),但是玩家并不知道迷宫的终点在哪里,这种情况下用A* 算法是不合适的。因此,A* 算法需要知道起点和终点才能求出最优路径。 符合这两个条件的问题,就是我们可以尝试用A算法解决的问题。和你预料的一样,A 算法被广泛应用在游戏编程之中。

1.3 A*算法的寻路思路

1.3.1 设定和定义地图、地貌、起点和终点

了解了A* 算法的概念之后,我们来看看A* 算法是怎么解决寻路这个问题的。 首先,我们给计算机一张地图的同时,我们也要给计算机一个处理地图的方式。在A* 中,处理地图的思想就是让计算机把一张大地图看成是由大小相等的格子拼出来的结构,这些格子都不可再分割成更小的格子,它们是地图上的最小完整单位。我们事先把每个格子的状态在电脑中标记起来,比如这个格子的地形不可通过,我们就打上一种标签;如果这个格子能通过,但是由于现实地形的原因(比如,这条路比较坎坷),这个格子就被打上另一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值