码迷,mamicode.com
首页 > 编程语言 > 详细

A*算法的实现步骤

时间:2019-10-18 18:53:29      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:提前   记录   核心   区域   a星算法   距离   因子   拓展   开始   

 

核心公式:F=G+H

F - 方块的总移动代价

G - 开始点到当前方块的移动代价(拓展: G = 移动代价 * 代价因子)

H - 当前方块到结束点的预估移动代价(即为当前点到结束点的曼哈顿距离)

A星算法还需要用到两个列表:

开放列表 - 用于记录所有可考虑选择的格子

封闭列表 - 用于记录所有不再考虑的格子

提前将寻路区域分为若干网格,计入障碍物代表网格,在确定了寻路的开始点,结束点的情况下,假定每个方块都有一个F值,该值代表了在当前路线下选择走该方块的代价。

而A星寻路的思路很简单:从开始点,每走一步都选择代价最小的格子走,直到达到结束点。

 

A星算法伪码:

a、将开始点记录为当前点P

b、将当前点P放入封闭列表

c、搜寻点P所有邻近点,假如某邻近点既没有在开放列表或封闭列表里面,则计算出该邻近点的F值,并设父节点为P,然后将其放入开放列表

d、判断开放列表是否已经空了,如果没有说明在达到结束点前已经找完了所有可能的路径点,寻路失败,算法结束;否则继续。

e、从开放列表拿出一个F值最小的点,作为寻路路径的下一步。

f、判断该点是否为结束点,如果是,则寻路成功,算法结束;否则继续。

g、将该点设为当前点P,跳回步骤c。

A*算法的实现步骤

标签:提前   记录   核心   区域   a星算法   距离   因子   拓展   开始   

原文地址:https://www.cnblogs.com/wangqijun/p/11700026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!