tarjan算法的实现:循环deps的求解

tarjan的Python项目详细描述


tarjan算法的python实现

Tarjan的算法将有向(可能是循环)作为输入。图形和 以拓扑顺序返回其强连接组件作为输出。

示例

https://raw.githubusercontent.com/bwesterb/py-tarjan/master/doc/example.png
>>> tarjan({1:[2],2:[1,5],3:[4],4:[3,5],5:[6],6:[7],7:[8],8:[6,9],9:[]})
[[9], [8, 7, 6], [5], [2, 1], [4, 3]]

使用

循环依赖性

在各种情况下,依赖项可能是循环的,并且一组相互依赖的 动作必须同时执行。这种情况并不少见 模拟的执行是昂贵的。用Tarjan的算法,我们可以 确定执行相互依赖组的有效顺序 行动。

传递闭包

使用tarjan算法,可以有效地计算传递函数。 图的闭包。(给定一个图g,则g的传递闭包 是一个包含相同顶点并包含v 当且仅当存在从vg中的w的路径时,w

传递闭包在tarjan.tc

中实现。
>>> tc({1:[2],2:[1,5],3:[4],4:[3,5],5:[6],6:[7],7:[8],8:[6,9],9:[]})
{1: (1, 2, 5, 6, 7, 8, 9),
 2: (1, 2, 5, 6, 7, 8, 9),
 3: (3, 4, 5, 6, 7, 8, 9),
 4: (3, 4, 5, 6, 7, 8, 9),
 5: (8, 9, 6, 7),
 6: (8, 9, 6, 7),
 7: (8, 9, 6, 7),
 8: (8, 9, 6, 7),
 9: ()}

展开组层次结构

给定一个组图,可以使用传递闭包来确定 一个团体的所有间接成员。(某人是一个团体的间接成员, 如果它是某个组的成员,而该组的成员…是某个组的成员 组中的。)

安装

只需执行

easy_install tarjan

或从此源发行版运行

python setup.py install
https://travis-ci.org/bwesterb/py-tarjan.png

Tarjan变更日志

0.2.3.2(2016-12-28)

  • python 3.6支持

0.2.3.1(2015-11-22)

  • python 3.4&3.5支持

0.2.3(2015-02-19)

  • 修复打包错误[6]

0.2.2(2015-02-18)

  • 已删除动态版本说明符
  • 将文档转换为rst,以便在pypi上获得更好的文档

感谢:patrick gerken(github.com/d03cc)

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

推荐PyPI第三方库


热门话题
java如何为ConcurrentHashMap使用并设置适当的并发级别?   java泛型方法,运行时错误,   java在页面上显示加载的图像   java Paypal定期直接支付问题   java如何延迟重新绘制组件   JavaSpringBoot+Hibernate如何维护@Transient字段   java在其方法中获取关于类的信息   在java中将别名添加到枚举   java如何解决向google报告成绩时“需要重新连接客户端”的问题   清晰的java图像背景   java未找到适合JDateChooser的构造函数(字符串、字符串、字符)   java LRU缓存实现。某些测试用例的代码失败   if语句Java嵌套的if/Else条件   java JSoup“wrap”并非每次都按预期工作   Java Spring引导循环依赖于一个环境   ssl证书无法通过Java和IntelliJ连接到SOAP服务   带整数验证的Java扫描器   java在Flex中呈现具有动态列的datagrid   java Android:通过用户选择的选项将文件上载到服务器   子类中的java抛出错误、异常和运行时异常