a星算法

A星算法。比如说现在有一个魔兽争霸的游戏,我拥有一个英雄MK,让他从我的基地到达对方的基地。那么他肯定会走最短的距离,这里就是A星算法的经典应用。

F值
F=G+H
类似于优先队列的一个衡量标准。每一次我么都是选取F值最小的点加入到开启列表当中。

G值
从其实格到当前格的距离。这个值后期要更新,比如,如果我做1路公交车到起点,花G1块钱,坐2路公交到起点,花G2(G1>G2)块钱。那么当我知道以后我就坐2路公交车。因为便宜。

H值
这个值就是当前格到终点的估计距离。这个值是定性的,不一定完全准确。但是还是可以避免bfs的路径。


算法过程
1 把起始格添加到开启列表。
2 重复下面的工作
	2.1 寻找开启列表当中F值最小的格子,我们称它为当前格。
	2.2 从当前格开始,bfs他周围的点,叫做嗅探点。
	2.2.1 如果嗅探点不可经过(墙,水,火,妖怪),那么跳过。
	2.2.2 如果嗅探点不在开启列表,那么加入到开启列表当中。把当前点作为嗅探点		 的父节点。
	2.2.3 如果嗅探点在开启列表中,如果G值降低啦,把当前点作为嗅探点的父节点。		 更改嗅探点的G值和F值,但是H值不会改变。
	2.2.4 
  			  a如果目标格都存入啦关闭列表。路径找到
	  b如果目标格没有存入关闭列表,但是开启列表空拉。路径没有找到。
3 从目标格开始,沿着父节点移动,回到起始点。这条路径就是要找到的路径。

Dijkstra算法的本质就是A星算法。但是H值永远为0。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值