A*算法在许多即时战略游戏(如LOL)中被广泛应用。敌我双方都可以找到一条能到达目的地,且在过程中不和障碍物相撞的路径。
A*算法的思路:
1、首先从开始节点出发,将其放到开放的列表中
2、如果开放列表中有节点,那么继续进行以下过程
3、从开放列表中取出第一个节点,将其作为当前节点。(假设开放列表已经按最小代价排序)
4、获取当前节点的相邻节点,不包括障碍物节点
5、对于每个相邻节点,检查该节点是否在封闭表中。如果不在就用公式F=G+H计算(后面详细注释);
6、将总值存储于相邻节点中,同时把当前相邻节点存储为父节点。使用父节点数据来回溯实际路径
7、将该相邻节点放到开放列表中。把开发列表已到达目标点升序排序。
8、如果没有相邻节点要处理,就把当前节点放入封闭列表中,并从开发列表中移除
9、返回第2步