a星算法

来源:互联网 发布:北京哪里体检好 知乎 编辑:程序博客网 时间:2024/05/16 08:13
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。


 

原创粉丝点击