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如何在用户输入的基础上使用applet绘制线条?在g为null的状态下发生的错误,如何修复   java频率源   java无法单击使用Selenium WebDriver创建的<div>下拉列表   java Wildfly 15在不同的机器上运行时不创建集群   Java:比较3个数字。得到他们中最伟大的   java与Maven/Hudson和TestNG一起使用多个类   java发生JNI错误(jdeveloper12c)   java在现实生活中同步多线程程序中的方法有什么意义   java Glassfish嵌入式JNDI模块范围查找   windows使用WMIC优雅地杀死Java进程   午夜(上午12点)java更新小部件失败   java无法解析方法“registerListener(com.xxx.xxx.MainActivity,安卓.hardware.SensorManager,int)”   java Hibernate版本属性在更改时调用自动更新?   java创建新线程是否会产生刷新缓存的副作用?   java saveAsTextFile性能改进   java如何自动化新的Facebook注册弹出窗口?   来自现有RDD的java Spark流媒体   AES256 OpenSSL C++和java加密:解密时的BADPADION异常