欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > A*算法笔记

A*算法笔记

2025/5/14 21:52:34 来源:https://blog.csdn.net/qq_42936727/article/details/147915726  浏览:    关键词:A*算法笔记

A*算法概述

A算法是对dijstra算法广度优先搜索的优化,广度优先搜索是需要遍历每一个邻接节点,而A加入了方向引导,让搜索朝着最靠近目标的方向前进,而这个方向引导,通常是用对当前节点的下一个节点到目标节点的权值预估;我们选择该当前节点权值加预估权值最小的方向继续前进;通常我们会有一些预估的函数计算这个预估的权值,这函数也叫启发函数。也是因此收缩了广度优先查找的范围,除非极端情况,邻接节点的预估权值都一样;

伪代码描述如下

  1. 初始化open_node 集合与close_node集合(与广度优先或dijstra算法类似),open_node用来存储未搜索过的节点,close_node用来存储搜索过的节点;初始化时,close_node为空,open_node为起始节点;
  2. 从open_node集合中选取当前总权值最小的节点进行路径扩展,如果多个node权值想等,则任意(一般按顺序遍历了)选一个扩展,当前节点加入close_node。
  3. 对选取的节点,遍历其邻接节点,若不在open_node集合,则加入open_node集合,并记录其父节点;
  4. 若已在open_node集合,计算当前路径到达该节点是否比原到达该节点的路径权值更小,若是,则更新该节点的父节点指针,并更新权值,否则什么都不做;
  5. 重复2-4步骤,直到目标节点加入close_node集合,此时进行路径回溯即可;

案例代码

https://www.redblobgames.com/pathfinding/a-star/implementation.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词