用cython实现的a*搜索算法

astarlib的Python项目详细描述


Build Status

阿斯塔利布

astarlibgraph2-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

文件

documentations

许可证

astarlibMIT License下获得许可

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jasper集成到jhipster项目中   java无法忽略lombok注释   关于tomcat日志的java问题   java@Autowired未设置字段>NullPointerException   GUI提交按钮不工作   java气泡和选择排序   java如何编写规则来匹配两个数组?   java如何找出某个字符在字符串中的第一次、第二次或第三次出现?   java通过字符串引用id   javascript在网络视图中加载在线图表   java保留web应用程序中用户更改的日志   在安卓中尝试使用Mandrill SMTP发送电子邮件时出现java错误   用java语言将a2b4c5等字符串转换为AABBCCCCC的程序是什么?   java无需TODO即可删除所有注释   java JMX MBean在应用程序部署时自动注册   java如何使用JSON解析从任何url解析数据   java@transactional注释类使用代理包装,但未创建事务   JavaFx转换和打印