Dijkstra /A*

Dijkstar的Python项目详细描述


dijkstar是dijkstra的单源最短路径的实现 算法。如果给定了目标节点,则当 已到达节点;否则它将继续,直到源节点的路径 找到所有其他节点。

接受将调用的可选成本(或“权重”)函数 每次迭代。

还接受一个可选的启发式函数,该函数用于 向目的地的算法,而不是在 方向。使用这种启发式函数将dijkstra转换为*(和 这就是“dijkstar”这个名字的由来。

在有100000多个节点的图上,性能相当不错。大约在0.5左右 平均秒数。

示例:

>>> from dijkstar import Graph, find_path
>>> graph = Graph()
>>> graph.add_edge(1, 2, {'cost': 1})
>>> graph.add_edge(2, 3, {'cost': 2})
>>> cost_func = lambda u, v, e, prev_e: e['cost']
>>> find_path(graph, 1, 2, cost_func=cost_func)

成本函数传递给当前节点(u),即 当前节点,连接U到V的边,以及 以前遍历以到达当前节点。在上面的例子中, cost函数只返回边的cost

图形可以保存到磁盘(pickled),如下所示:

>>> graph.dump(path)

像这样读回(load是一个类方法,它返回 填充的图形实例):

>>> Graph.load(path)

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

推荐PyPI第三方库


热门话题
java如何序列化数字?   java如何用我的Mainclass扩展ListActivity类和Fragment类?   JavaJersey、Jackson和JAXRS发布了多种JSON格式   java如何使用JavaFXKeyCombination覆盖系统默认的键盘快捷键,如Ctrl+C、Ctrl+V?   java Jersey类路径扫描示例Jersey。配置。服务器供应商。类路径   java什么样的数据结构可以作为一个数组,但在同一索引下给定多个值时会自动增长到第二维度?   java如何序列化非持久实体中的嵌套PersistentEntityResource   协议缓冲区我可以让protoc在Java中生成int数组吗?   在GregorianCalendar ArrayList Java中添加日期元素   从html模板动态生成pdf文件并用java生成目录   java Gridgain 6.5.5开源多个节点速度较慢。。?   java如何检查数组中所有整数的不相等性?   java在Eclipse中,如何多次运行JUnit测试用例   java侦听器不能处理特定的片段   java不是一个声明?(蓝色J)   找不到Attributer类型的PersonId的java定义