Python 拓扑排序

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。

在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting):每个顶点出现且只出现一次;

若A在序列中排在B的前面,则在图中不存在从B到A的路径。

from collections import defaultdict

class Graph:

def __init__(self,vertices):

self.graph = defaultdict(list)

self.V = vertices

def addEdge(self,u,v):

self.graph[u].append(v)

def topologicalSortUtil(self,v,visited,stack):

visited[v] = True

for i in self.graph[v]:

if visited[i] == False:

self.topologicalSortUtil(i,visited,stack)

stack.insert(0,v)

def topologicalSort(self):

visited = [False]*self.V

stack =[]

for i in range(self.V):

if visited[i] == False:

self.topologicalSortUtil(i,visited,stack)

print (stack)

g= Graph(6)

g.addEdge(5, 2);

g.addEdge(5, 0);

g.addEdge(4, 0);

g.addEdge(4, 1);

g.addEdge(2, 3);

g.addEdge(3, 1);

print ("拓扑排序结果:")

g.topologicalSort()

执行以上代码输出结果为:拓扑排序结果:

[5, 4, 2, 3, 1, 0]

python 拓扑排序_Python 拓扑排序相关推荐

  1. python set 排序_python set 排序_如何在Python中使用sorted()和sort()

    点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基  著 18财税3班 李潇潇    译 日期:2019年5月6日 一. 使用sorted() ...

  2. python程序字符串中字符排序_python字符串排序方法

    本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧.分享给大家供大家参考之用.具体方法如下: 一般情况下,python中对一个字符串排序相当麻烦: 一.p ...

  3. python数字排序_python数字排序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...

  4. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  5. 用python写希尔排序_python希尔排序介绍(实例)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...

  6. python文件信息排序_python文件排序的方法总结

    在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符:用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名'屏蔽'). (1 ...

  7. python中用def实现自动排序_Python sorted排序方法如何实现

    在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) sorted定义如下: sorted( iterable[, cmp[ ...

  8. python 列表排序_python列表排序有哪些

    python列表排序:1.冒泡排序,是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来:2.插入排序,通过构建有序序列,对于未排序数据,在已排序序列中 ...

  9. python几种排序_python各种排序算法

    #冒泡排序 def bubble_sort(arr): for i in range(len(arr)-1): for j in range(len(arr)-i-1): if arr[j]>a ...

最新文章

  1. 为什么安装Android SDK后无法安装flatform?
  2. Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
  3. [转]Eclipse Java注释模板设置详解
  4. LeetCode 70 爬楼梯
  5. python兔子和獾_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(三)
  6. hive编程指南_第三篇|Spark SQL编程指南
  7. Cors 跨域 共享
  8. 超硬核详解SpringClould之Gateway网管【含源码例子】
  9. PowerBuilder9.0 安装包及注意事项
  10. Python实现简易搜索引擎
  11. 线性方程组解的结构与判别
  12. 印度行——印度软件公司的印象
  13. 【SAP】SAP SD,中英日专业名词对照表
  14. OpenGL ES glut glew glfw glad freeglut
  15. 仓储绩效评价指标的原则
  16. java批量下载生成zip压缩包
  17. 【C++广度搜索入门】面积
  18. python的输出语法_Python入门语法综述
  19. 微信小程序:去掉button默认样式
  20. 四位行波进位加法器_行波进位加/减法器的硬件开销和性能分析

热门文章

  1. 常用的统计量和抽样分布
  2. 【python数据预处理笔记】——整齐数据(Tidy Data)
  3. ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)
  4. VxWorks网络编程
  5. vxworks issue: pcie msi interrupt
  6. c语言程序设计贪吃蛇需求分析,c语言贪吃蛇课程设计报告.docx
  7. MySQL ERROR 1366 (HY000): Incorrect string value: ‘\xB1\xB1\xBE\xA9‘ for a foreign key constraint ‘
  8. Mini USB接口定义的秘密
  9. XMind Mac高阶玩法,原来XMind 还可以这么玩
  10. 会议室电脑怎么无线投屏