A*算法总结 - chunlieater/chunlifeet GitHub Wiki

A*算法的几个组成部分:

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