A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。
这里有一篇前辈的文章,很适合新手学习 莫水千流:A星寻路算法介绍 http://www.cnblogs.com/zhoug2020/p/3468167.html 。
对A星算法的理解还是要从公式 F = G + H开始:在节点化的地图上,每一步的操作,使得已走距离 + 距离终点距离最小。具体的实现上是维护一个open表和一个closed表。(看到一篇用递归实现的文章,也是很赞。)
花了一点时间,也参考了一些别人的实现,用Lua实现了自己的A*。
完整的Lua代码请到我的GitHub上下载。https://github.com/MagicDavid20/LuaProj/blob/master/DOD/src/app/arithmetic/AStarFindRoute.lua
这是关键实现:
while (table.nums(OPEN_LIST) > 0