另一个快速图形算法库
leaf的Python项目详细描述
多叶图形库
leafy是一个用cython编写的python图形库。这种混合使写作速度加快 c中的库,具有python绑定的优点。
用法
图形对象
leafy支持两种类型的图:稠密图和稀疏图。它们由
类leafy.graph.Graph
和leafy.graph.SparseGraph
。
要实例化一个graph对象,我们需要知道 图,如果图是有向的。图分解为无向图。
>>>fromleafy.graphimportGraph>>>g=Graph(4)>>>g.add_edge(0,1)>>>g.add_edge(2,3)>>>g.add_edge(2,1)>>>g.matrixarray([[0,1,0,0],[1,0,1,0],[0,1,0,1],[0,0,1,0]],dtype=int32)
相同的边可以定义为有向SparseGraph
>>>fromleafy.graphimportSparseGraph>>>g=SparseGraph(4,True)>>>g.add_edge(0,1)>>>g.add_edge(2,3)>>>g.add_edge(2,1)>>>g.list[[1],[],[3,1],[]]
搜索
leafy可以在图上运行深度优先搜索(dfs)和广度优先搜索(bfs),并且 返回图形搜索属性。
要运行搜索,我们需要定义要搜索的图形和要开始的节点。
在您可以查看属性之前,我们必须调用.run()
。
>>>fromleafy.searchimportDFS>>>graph=small_graph(request.param)>>>dfs=DFS(graph,0)>>>dfs.run()>>>dfs.simple_path(12)[0,1,2,11,12]>>>dfs.bridges[(1,3),(3,4),(3,5),(2,11),(11,12)]
有向图
对于diagraphs,leafy支持可以从leafy.digraph
>>>fromleafy.digraphimportDFS>>>dag=small_dag()>>>dfs=DFS(dag,0)>>>dfs.run()>>>dfs.is_dagTrue>>>dfs.topological_order()[0,6,2,3,5,4,9,11,12,10,1]