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)