游戏寻路之A*算法(GUI演示)

一、A*算法介绍

A*算法是一种路径搜索算法,用于在图形网络中找到最短路径。它结合了Dijkstra算法和启发式搜索的思想,通过综合利用已知的最短路径和估计的最短路径来优化搜索过程。在游戏自动寻路得到广泛应用。

二、A*算法的基本思想

  1. 在图形网络中选择一个起点和终点。
  2. 维护两个列表:开放列表和关闭列表。开放列表用于存储待考虑的节点,关闭列表用于存储已考虑过的节点。
  3. 将起点加入开放列表。
  4. 循环以下工作
    1. 当openSet为空时,结束程序,此时找不到路径。
    2. 从开放列表中选择f值最小节点current(考虑用优先队列)。
    3. openSet移出当前节点,closeList加入当前节点。
    4. 如果找到目标,则搜索结束,回溯最终路径。
    5. 否则,枚举所有相邻节点neighbor,若neighbor不可通过或者在closeList,则跳过。
    6. 计算当前节点的gScore。
    7. 假如neighbor或者没在openSet,或者在openSet但g值比gScore大,则计算出g值和h值,并设父节点为当前节点,将该点放入openSet。

其中,价值函数f(n)=g(n)+h(n),如下图所示。在只知道当前点和目标点的路径情况下,

你可能感兴趣的:(从零开始搭建游戏服务器框架,java,A星,自动寻路)