A*在游戏寻路算法里使用很广,可是感觉很多介绍它的文章故意让人看不懂。
仔细看了看gamedev.net的一片文章(A* Pathfinding for Beginnershttp://www.gamedev.net/reference/articles/article2003.asp ),对A*更了解了一点,写点东西记录一下。
A*是一种启发式的算法,所谓的"启发式",就是对每一个搜索的位置进行评估,也就是把找的位置离目标的距离当成找点的一个依据,然后猜测这个点是否最佳("启发式"就是猜测)。
为了找到最佳的那个点
可以规定:
G = 从起点,沿着产生的路径,移动到网格上指定方格的距离。
H = 从网格上那个方格移动到终点B的预估移动距离。
F = G + H
F最小的点可以认为是该选的点。
引用一下原文的翻译:
我们令水平或者垂直移动的耗费为10,对角线方向耗费为14。我们取这些值是因为沿对角线的距离是沿水平或垂直移动耗费的的根号2(别怕),或者约1.414倍。为了简化,我们用10和14近似。比例基本正确,同时我们避免了求根运算和小数。