1、首先将起始点添加进“开启列表”。
2、重复如下步骤:
a) 寻找开启列表中F值最低的节点。我们称其为“当前节点”。
b) 把它从“开启列表”中移除,并添加进“关闭列表”。
c) 检查“当前节点”是否是“目标节点”
* 如果是,停止搜索,跳到第 3 步;
* 如果不是,继续下面步骤;
d) 寻找“当前节点”邻近的节点
* 如果它不可通过或者已经在关闭列表中,略过它。反之如下。
* 如果它不在开启列表中,把它添加进开启列表。把当前节点作为这一节点的父节点。记录这一格的F,G和H值。
* 如果它已经在开启列表中,检查新路径对它G值的产生的影响
a. 如果它的G值因为新路径变大,那么保持原来的状态,不作任何改变;
b. 如果G值变小,说明新路径更好,将其父结点改为“当前结点”,更新G和F值。
e) 检查列表是否为空,如果为空,说明路径未找到,直接返回,不继续任何步骤。
3、保存路径。从目标节点开始,沿着每一节点的父节点移动直到回到起始节点。这就是我们要找的路径。