python简单有向无环图,带有cicle检测器和拓扑排序工具。

sdag2的Python项目详细描述


带有cicle检测器和拓扑排序工具的python简单有向图。

项目主页

此项目位于Github上。

安装

使用Python PIP Project安装它。

pip install sdag2

脚本

tsort.py

标准输入源:

echo -e 'C A\nA B\nB D\nC D'| tsort.py

来自其他文件的源:

echo -e 'C A\nA B\nB D\nC D' > verticies.txt
tsort.py verticies.txt

更多选项:

tsort.py --help
Usage: tsort.py [options][FILE [OUT_FILE]]

Options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  With no FILE, or when FILE is -, read standard input.
  -o OUT_FILE, --out-file=OUT_FILE
                        Write result to OUT_FILE, default is standard output.
  -s SEP, --separator=SEP
                        Items separator, default is \s regex.
  -q QUIT_SEQ, --quit-sequence=QUIT_SEQ
                        Stop read FILE where line equals QUIT_SEQ, default is
                        :quit.

测试

importunittestfromsdag2importDAG,CycleDetectedExceptionclassDAGTest(unittest.TestCase):deftest_simple(self):'''
        Tests the verticles order in:

        C --> A --> B --> D
        '''dag=DAG()a=dag.add("A")b=dag.add("B")c=dag.add("C")d=dag.add("D")dag.add_edge(c,a)dag.add_edge(a,b)dag.add_edge(b,d)dag.add_edge(c,d)rs=dag.topologicaly()self.assertTrue(rs.index("C")<rs.index("A"))self.assertTrue(rs.index("A")<rs.index("B"))self.assertTrue(rs.index("B")<rs.index("D"))self.assertTrue(rs.index("C")<rs.index("D"))deftest_cicle_detect(self):'''
        Tests the verticles order in:

        C --> A --> B --> D -> C
        '''dag=DAG()a=dag.add("A")b=dag.add("B")c=dag.add("C")d=dag.add("D")dag.add_edge(c,a)dag.add_edge(a,b)dag.add_edge(b,d)dag.add_edge(c,d)try:# add cicle at A --> C --> Adag.add_edge(a,c)raiseException("Cycle not detected")exceptCycleDetectedException:passdefmain():unittest.main()if__name__=="__main__":main()

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

推荐PyPI第三方库


热门话题
java如何序列化数字?   java如何用我的Mainclass扩展ListActivity类和Fragment类?   JavaJersey、Jackson和JAXRS发布了多种JSON格式   java如何使用JavaFXKeyCombination覆盖系统默认的键盘快捷键,如Ctrl+C、Ctrl+V?   java Jersey类路径扫描示例Jersey。配置。服务器供应商。类路径   java什么样的数据结构可以作为一个数组,但在同一索引下给定多个值时会自动增长到第二维度?   java如何序列化非持久实体中的嵌套PersistentEntityResource   协议缓冲区我可以让protoc在Java中生成int数组吗?   在GregorianCalendar ArrayList Java中添加日期元素   从html模板动态生成pdf文件并用java生成目录   java Gridgain 6.5.5开源多个节点速度较慢。。?   java如何检查数组中所有整数的不相等性?   java在Eclipse中,如何多次运行JUnit测试用例   java侦听器不能处理特定的片段   java不是一个声明?(蓝色J)   找不到Attributer类型的PersonId的java定义