使用python处理有向图、偏序和拓扑排序的一些工具

digraphtools的Python项目详细描述


处理有向无环图、偏序和 用python进行拓扑排序

有向图工具是一种使用dags和partial的轻量级方法。 在轻量级中表示、排序和遍历依赖树的顺序 太好了。

代码位于github上的https://github.com/dbasden/python-digraphtools

图形表示

图表

图被表示为将节点映射到列表的dict 通过该节点的传出边连接的节点。

例如

graph = { 1: [2,3],
2: [3], 3: [] }

是由边(1,2)(1,3)(2,3)表示的DAG 其中边2的形式是(从,到)

deptools中有helper方法可以从 边列表,反之亦然

二元关系

如果DAG表示依赖项,则取边(1,2) 意思是“1依赖于2”,这是从二进制关系向后的。 (1,2)是关系2p 1

拓扑排序

有两种方法可以生成 依赖项(即必须在中处理订单项以满足依赖项 要求:

deptools.dfs_tosport_traversal

deptools.dfs_topsort_遍历将获取一个图形并在 单个有效的拓扑排序顺序

deptools.tosport.vr_tosport

deptools.tosport.vr_tosport将生成所有有效的线性扩展/ 给定初始“种子”线性扩展的拓扑序(例如 由deptools.dfs_tosport_traversal生成的)。

该方法不接受deptools使用的图形格式作为输入, 但是它确实有一个helper方法从 部分顺序集(可以使用 开发工具)。

请参阅tosport.py和test/test_tosport.py中的示例以了解如何执行此操作。

作者

DigraphTools最初由David Basden编写

谢谢

感谢Yaakov L.Varol和Doron Rotem的算法设计 在tosport.py中

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

推荐PyPI第三方库


热门话题
JavaSpringMVC控制器测试打印结果JSON字符串   若catch语句返回,那个么为什么它最终会阻塞呢?   java Grails中servletContext在哪里可用?   java Jhipster:如何为现有项目启用多种语言   java异常评估SpringEL表达式:“#fields.hasErrors('something')”   java如何验证SeleniumWebDriver中的文本颜色?   java在绘图时使用JPanel坐标   java如何初始化spring启动到project?   java如何通过JDBC的PreparedStatement将UUID数组插入HyperSQL数据库   java修改JVM以跨线程序列化文件访问   Javascript到Java正则表达式   使用Java运行时调用aspell程序时出现字符集问题。getRuntime()。执行官   执行RDP时的java Sukuli按钮识别   java如何使用okhttp更改connect请求的标头   java无法创建Maven Eclipse项目