步骤如下:
先设定两个集合,open集,close集
1、将起始点加入open集(设置父亲节点为空)
2、在open集中选着一个F值最小的节点作为当前节点
2.1 将其添加到close集,并从open集中移除!
2.2 如果为终点节点,那么结束搜索
2.3 处理当前节点的所有邻接节点
如果不在open集中,那么就将其添加到open集,(最好设置该节点的父节点为当前节点,以便确定路径);
如果已经添加到open集中,重新计算G值,如果G值小于先前的G值,那么就跟新此值(同时跟新父节点);
如果该节点不可通过或者已经被添加到close集,那么不予处理;
3、如果open集不为空,那么转到步骤2继续执行。
需要注意的是:
1、如果搜索结束,当open集为空,可能获得一条路径,也可能搜索失败!
2、如果搜索结束,如果open集不为空,那么必定找到一条路径
3、如果搜索成功,对于close集中的每一个节点,可能属于路径上的一个节点,也可能不属于路径上的一个节点!
4、如果搜索成功,如何确定这一条路径:从最后一个节点起,根据节点的父亲节点依次往前确定这条路径!