A*算法总结 - chunlieater/chunlifeet GitHub Wiki
A*算法的几个组成部分:
-
- 当前结点
-
- 目标结点
-
- 结点间路径长度
-
- 待检测列表
-
- 已完成列表
-
- 当前结点总距离F = G(从起始点到当前结点的总路径长度) + H(从当前结点到目标结点的估值) 伪代码流程: 把开始结点放入待检查列表,开始执行循环:
- 选择待检查列表中F最小的结点,设置成当前结点。
- 如果该结点是目标结点,则跳到6。
- 如果待检查列表为空,则跳到7。
- 循环检查当前节点的子节点,如果子节点不可移动或者在已完成列表中,则忽略。
- 计算该子节点的F,如果该子结点在待检测列表中,则比较新的F和旧的F,如果新的F更小,则把该子节点的父结点换成当前节点并更新F(如果点和点之间的路径都是直线,则可以忽略这步),如果该子结点并未检测过,则把该子结点的父结点设置成当前结点并记录F,并加入到待检查列表中。
- 找到目标结点,建立返回路径。
- 没找到目标结点,查找失败。