)
对于该节点每一个不在关闭列表中的相邻节点:
将该节点设置为当前相邻节点的父节点(主要用于后面的节点回溯)
计算当前相邻节点的 G 值(从开始点到当前相邻点的距离)并将其加入到开放列表中...或者 is_close 变量.你可以在节点中保存一个变量,用以表示节点是否在开放列表中或者关闭列表中.通过这种方式,当你需要搜索一个列表中的节点时,你就可以不用在整个列表中搜索节点,而是直接检查对应的变量值即可...现在,我们来看个例子,我们想寻找一条从 S 到 G 的路径,我们首先在低层级地图上(各个簇之间)进行一次 A* 寻路,然后,我们可以根据预计算数据(簇之间的连通数据)快速的得到一条完整的路径....(开放)列表中添加这个节点(因为这个节点在扩展其他节点时会被评估是否要加到开放列表中)....循环中我们创建了一个指向当前评估节点的指针 temp,然后我们检查他的 on_close 和 on_open 变量以获知其是否在关闭列表中或是在开放列表中.使用这种方法我们就避免了在传统 A* 算法中最大的一个性能问题