初识A寻路算法

  基本上我还是一个新手,最近开始学习,学到自动寻路算法。。基本上网上版本多

有的,我这个也是从网上下载过来的。不过就是多了点注释。。。自己看的时候更好

的了解他是什么意思。这里先说下A*寻路算法的基本思路吧
  首先我们要做的是搜索区域划分成方形的网络,简化搜索区域,把这个搜索区域简

化成一个二维数组,数组中的每一个元素代表网络中的一个方块,这些方块被标记为

可通过的和不可通过的。路径被描述为从A到B我们经过的方块的集合。一旦路径被找

到,我们的人就从一个方格的中心走向另一个,直到到达目的地。
 1,把起始格添加到开启列表。
 2,重复如下的工作:
      a) 寻找开启列表中F值最低的格子。我们称它为当前格。(第一次的时候当然

只有起点一个点,所以就他最低,后面等开启列表中节点数量的增加需要开始比较)
      b) 把它放到关闭列表。
      c) 对相邻的8格中的每一个开始检测
          * 如果它不可通过或者已经在关闭列表中,略过它。反之如下。
          * 如果它不在开启列表中,把它添加进去。把当前格作为这一格的父节点

。记录这一格的F,G,和H值。(可能他有很多个父节点)
          * 如果它已经在开启列表中,用G值为参考检查新的路径是否更好。更低的

G值意味着更好的路径。如果是这样,就把这一格的父节点改成当前格,并且重新计算

这一格的G和F值。如果你保持你的开启列表按F值排序,改变之后你可能需要重新对开

启列表排序。

      d) 停止,当你
          * 把目标格添加进了开启列表,这时候路径被找到,或者
          * 没有找到目标格,开启列表已经空了。这时候,路径不存在。
   3.保存路径。从目标格开始,沿着每一格的父节点移动直到回到起始格。这就是你

的路径。    
 

 

你可能感兴趣的:(算法,工作,F#)