python 拓扑排序_Python 拓扑排序
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 拓扑排序相关推荐
- python set 排序_python set 排序_如何在Python中使用sorted()和sort()
点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基 著 18财税3班 李潇潇 译 日期:2019年5月6日 一. 使用sorted() ...
- python程序字符串中字符排序_python字符串排序方法
本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧.分享给大家供大家参考之用.具体方法如下: 一般情况下,python中对一个字符串排序相当麻烦: 一.p ...
- python数字排序_python数字排序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...
- python列表反向排序_Python 列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- 用python写希尔排序_python希尔排序介绍(实例)
希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...
- python文件信息排序_python文件排序的方法总结
在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符:用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名'屏蔽'). (1 ...
- python中用def实现自动排序_Python sorted排序方法如何实现
在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) sorted定义如下: sorted( iterable[, cmp[ ...
- python 列表排序_python列表排序有哪些
python列表排序:1.冒泡排序,是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来:2.插入排序,通过构建有序序列,对于未排序数据,在已排序序列中 ...
- 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 ...
最新文章
- 为什么安装Android SDK后无法安装flatform?
- Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
- [转]Eclipse Java注释模板设置详解
- LeetCode 70 爬楼梯
- python兔子和獾_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(三)
- hive编程指南_第三篇|Spark SQL编程指南
- Cors 跨域 共享
- 超硬核详解SpringClould之Gateway网管【含源码例子】
- PowerBuilder9.0 安装包及注意事项
- Python实现简易搜索引擎
- 线性方程组解的结构与判别
- 印度行——印度软件公司的印象
- 【SAP】SAP SD,中英日专业名词对照表
- OpenGL ES glut glew glfw glad freeglut
- 仓储绩效评价指标的原则
- java批量下载生成zip压缩包
- 【C++广度搜索入门】面积
- python的输出语法_Python入门语法综述
- 微信小程序:去掉button默认样式
- 四位行波进位加法器_行波进位加/减法器的硬件开销和性能分析
热门文章
- 常用的统计量和抽样分布
- 【python数据预处理笔记】——整齐数据(Tidy Data)
- ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)
- VxWorks网络编程
- vxworks issue: pcie msi interrupt
- c语言程序设计贪吃蛇需求分析,c语言贪吃蛇课程设计报告.docx
- MySQL ERROR 1366 (HY000): Incorrect string value: ‘\xB1\xB1\xBE\xA9‘ for a foreign key constraint ‘
- Mini USB接口定义的秘密
- XMind Mac高阶玩法,原来XMind 还可以这么玩
- 会议室电脑怎么无线投屏