第5-2课:图的拓扑排序
拓扑排序常用来确定一个依赖关系集中、事物发生的顺序。一个典型的应用场景就是在项目管理或工程实施中安排各种生产活动的计划,在考虑各种活动的依赖关系的基础上,安排各种活动的开始时间,使得项目或工程能够以高效合理的速度完成。这些功能通常需要在基本的拓扑排序算法基础上进行适当的改造,本课仿照的项目管理软件功能实现的“根据活动开始时间排序”算法,就是一种这样的改造。图的拓扑排序涉及的概念有:有向无环图(Directed Acyclic Graph,DAG)、AOV 网、顶点的出度和入度等。在学习这一课的内容之前,希望大家对这些概念能有一些了解,好了,废话不多说,开始吧。
拓扑排序(Topological Sorting)
对有向无环图进行拓扑排序,是图论算法中的一个重要算法,它不仅是各种算法题目中常见的内容,在现实生活中也得到了广泛的应用,比如各种项目管理软件中的“按照开始时间排序”功能,其背后的算法支撑就是拓扑排序。这一课,我们用一个简化的工程活动安排这个题目为例,介绍一下拓扑排序算法的应用。
假如某工程分解后得到 P1 ~ P9 共 9 个活动,这些活动需要的时间和它们之间的依赖关系如下表所示:
活动名称 | 活动时间(天) | 前置依赖 |
---|---|---|
P1 | 8 | |
P2 | 5 | |
P3 | 6 | P1、P2 |
P4 | 4 | P3< |
第5-2课:图的拓扑排序相关推荐
- 有向无环图DAG 拓扑排序 代码解释
目录: DAG定义 举例描述 实际运用 算法描述 算法实战 算法可视化 定义 在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological ...
- 【图论】有向无环图的拓扑排序
1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...
- 有向无环图的拓扑排序
拓扑排序 对于一个有向无环图,我们可以这样确定一个图中顶点的顺序: 对于所有的u.v,若存在有向路径u-->v,则在最后的顶点排序中u就位于v之前.这样确定的顺序就是一个图的拓扑排序. ...
- 数据结构与算法之-----图(拓扑排序)
[ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据 ...
- BUCT数据结构——图(拓扑排序、关键路径)
文章目录 问题 A: 邻接矩阵存储的图,节点的出度和入度计算(附加代码模式) 问题 B: 算法7-12:有向无环图的拓扑排序 问题 C: 有向图是否存在环? 问题 D: 图-节点的最早发生时间 问题 ...
- 图的拓扑排序(AOV网络)
文章目录 拓扑排序 概念 实现 邻接表(队列) 邻接矩阵(栈) 总结 源代码 邻接表 邻接矩阵 拓扑排序 概念 拓扑排序是对有向无环图的顶点的一种排序. AOV网络 : 在有向图中, 用顶点表示活动或 ...
- P6560 [SBCOI2020] 时光的流逝 (博弈,反向建图,拓扑排序
洛谷P6560 [SBCOI2020] 时光的流逝 题意: 给定一个有向图(可能有环),给定起点和终点,两个人玩游戏,一人走一步,先到达终点的人赢或者先无法移动的人输 思路: 题解 因为是终点和叶子节 ...
- 图论算法—图的拓扑排序介绍和Kahn算法原理解析以及Java代码的实现
详细介绍了图的拓扑排序的概念,然后介绍了求拓扑序列的算法:Kahn算法的原理,最后提供了基于邻接矩阵和邻接表的图对该算法的Java实现. 阅读本文需要一定的图的基础,如果对于图不是太明白的可以看看这篇 ...
- 数据结构-考研难点代码突破 (C++实现有向无环图的拓扑排序)
文章目录 1. AOV网 2. 拓扑排序 C++代码 1. AOV网 AOV网∶若用DAG 图(有向无环图)表示一个工程,其顶点表示活动,用有向边<Vi,Vj>表示活动 Vi必须先于活动V ...
最新文章
- 刚刚!我被产品小姐姐的笔记本深深吸引了....
- java listfiles 使用_Java中list()和listFiles()方法之间的区别
- linux kvm usb设备,KVM usb passthrough配置
- 为什么使用Maven
- 小学数学里的必胜问题,在扑克牌游戏里的应用
- IOS学习笔记二十一(NSDictionary、NSMutableDictionary)
- 北工大计算机网络基础期末考试,2013北工大计算机网络应用复习提纲整理版.doc...
- 2021年广东开放大学期末考试方法,怎么查题,找答案
- 城八区和通州区限价房申请5月16日开始受理
- SpringBoot --- 整合Elasticsearch
- css固定图片大小 vue_img设置图片大小 vue_如何改变图片大小
- mysql校对集_MySQL校对集问题的教程
- 刷题总结——玉蟾宫(bzoj3039单调栈)
- Excel添加按键运行宏
- eureka:自我保护机制_对自我怀疑的开发人员:您足够好吗?
- 查找DOM,受控与非受控组件
- 【技巧分享】【数据分析】数据分析模型
- 成长的力量--销售技巧
- 我的Bug日常:spark基于yarn运行时抛错,内存不足Required executor memory (1024 MB), offHeap memory (0) MB。问题已解决,亲测有用~~~
- 《Unix编程艺术》重读笔记(三)