【寻路算法】A*算法入门笔记(一)

本文介绍了A*算法在游戏开发中的应用和设计,包括算法描述、数据结构、子算法设计以及与Dijkstra's Algorithm的比较。A*算法利用启发式信息提高搜索效率,适用于路径规划问题,而Dijkstra算法则不考虑启发式,适用于寻找最近目标。
摘要由CSDN通过智能技术生成

总结A*算法在游戏开发中的实现和设计

在阅读了以下有关A*算法的入门级介绍之后,自己打算再整理一遍,以便消化和进一步理解。


【英文原帖链接】Here
【针对原帖的翻译帖链接】Here


A*算法描述

1.将起始点添加至待处理集合A(原文中的OpenList) 2.循环重复以下步骤
a)寻找待处理集合A中F值最低的节点b;
b)将节点b从待处理集合A中移除,并添加至已处理集合B(原文中的ClosedList)
c)检测与节点b邻接的节点,进行以下处理:

①如果节点已经在集合B中,则不做任何处理;
②如果节点不在集合A中,则按照以下步骤处理:
——操作1:标记节点的父节点为当前节点b,并计算F/G/H的值;
——操作2:将节点添加至集合A。
③如果节点已经存在集合A中,则临时计算从当前节点b到该节点的F/G值,如果F值更小,则更新该节点的信息,既:更新节点的F/G,并修改其父节点为当前节点b(这表明从节点b到达该点为当前更好的路径)。

3.循环终止的条件
a)目标节点已经被添加至集合A(也可以控制成被添加至集合B作为条件)

b)还未找到目标节点时,集合A已经被掏空(集合A没有备选项了),此时表明这样的路径不存在。
4.保存路径
从目标路径的父节点开始一层一层向上直到起始点。

算法细节注释

1.循环工作的第一步:挑选代价消耗F最小的节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值