高性能A星算法实现,使用pairs_heap优化Open列表,去掉原有Closed列表改为Visited记录已经开启坐标,并优化启发函数。
支持 4、6(六边形)、8 方向寻路,支持限制最大搜索深度
A High-Performance A* Pathfinding Algorithm Implemented in Pure Erlang
$ rebar3 compile
$ rebar3 eunit
1> StartGrid = {1, 1}.
2> EndGrid = {50, 50}.
2> BlockList = [{47,1},{24,2}, {2,25}, {20,31}, {20,21}, {50,20}, ...].
3> ValidFun = fun({X,Y}) -> not lists:member({X,Y}, BlockList) end.
4> Options = [],
5> {ok, Path} = astar:search(StartGrid, EndGrid, ValidFun, Options).