用cython实现的a*搜索算法
astarlib的Python项目详细描述
阿斯塔利布
astarlib是graph或2-dimensional polygon space打包到可重用库中的Cython ("C-Extensions for Python")实现它最初是作为Mybattlesnake.io机器人的导航系统实现的(例如,找到敌人机器人周围的最小路径)。
示例
要在二维多边形中查找*路径,需要使用遍历空间的“映射”初始化aStar()
对象。
Note:给定array
的所有元素都将自动规范化为布尔状态在标准化之后,True
的元素被认为是可遍历的,并且False
被视为不可遍历的(例如障碍)。
>>fromastarlibimportaStar>>area=aStar(array=[[1,1,1,1,1,1],# see `normalization`[0,1,0,1,1,1],[0,0,0,0,0,1],[1,1,1,1,1,1],[0,1,0,1,0,1],[0,0,1,1,1,1],])
然后简单地设置起始/目的地信息,以找到有效的路径和路径成本在snake game中,“开始”是蛇头,“结束”是苹果
>>area.find_path(start=(0,0),end=(area.height-1,area.width-1))(((0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,5),(2,5),(3,5),(4,5),(5,5)),11)
由于保留了初始的“map”,您还可以多次为不同的遍历路径调用.find_path()
。
>>area.find_path(start=(0,0),end=(0,1))(((0,0),(0,1)),2)
如果没有路径,将引发PathNotFoundException
。
>>area.find_path(start=(0,0),end=(1,0))# `PathNotFoundException`
构建
用于开发的本地生成需要some dependencies来编译C扩展。
~$ make
安装
对于stable
频道:
~$ pip install astarlib==1.0.0
对于edge
频道:
~$ # sudo apt install gcc python-dev
~$ pip install git+https://github.com/initbar/astarlib.git
测试
~$ # pip install pytest ~$ make test
文件
许可证
astarlib在MIT License下获得许可