基本名称

  • 有向无环图 - DAG (Directed Acycline Graph)

    • 如果图的邻接矩阵中,对角线以上(或以下)均为零,则说明该有向图为无环图;反之,不一定成立
  • 顶点表示的活动网 - AOV网 (Activity On Vertex Network)
    • 弧上没有权值
    • 通常用于表示流程图
  • 弧表示的活动网 - AOE网 (Activity On Edge)
    • 弧上的权值 - 活动持续的时间
    • 通常用于估算工程完成的时间
    • 正常情况下(无环),图中只有一个入度为0的点(源点)和一个出度为0的点(汇点)
  • 弧尾 - 在结点A指向结点B的弧中,结点A为弧尾
  • 图中的结点数量 - n; 图中的弧数量 - e

拓扑排序 - 基于AOV网

  • 分类

    • 全序 - 拓扑有序

      • 集合中所有结点都可比较(经过零个或多个结点后可连接)
    • 偏序 - 只有部分结点是可比较的
  • 可以求拓扑排序的图中不存在环
  • 基本思想
    1.遍历图中没有前驱(入度为0)的结点
    2.选择并输出一个没有前驱的结点,循环与之相连的结点
    3.删除该结点,和以该顶点作为弧尾的弧
    4.如果下一结点为空,则重复2,3,直到所有结点均已全部输出(如果图中还存在有前驱的结点,则说明图中存在环)
  • 具体实现
    • 结点结构 - 数据域(结点的值)|链域(指向下一个结点)|数据域(结点的入度)
    • 引入栈
      • 初始化 - 遍历所有结点,保存所有入度为0的结点
      • 如果在输出结点并删除弧之后,有新增的入度为0的结点,再压入栈中
    • 时间复杂度O(n+e)

关键路径 - 基于AOE网

  • 定义

    • ve(i) - 事件i的最早开始时间
    • vl(i) - 事件i的最晚开始时间
    • 关键路径 - 长度最长的路径
    • 关键活动 - 关键路径上的所有活动,ve(i) = vl(i)
  • 求解关键路径需要在拓扑有序和逆拓扑排序的前提下进行,即图中也不能存在环
  • 基本思路
    1.从源点vi出发,令ve(i) = 0,按拓扑有序求ve(j),取路径中的最大值
    2.从汇点vn出发,在汇点上ve(n) = vl(n),按逆拓扑有序求vl(j),取路径中的最小值
    3.所有ve(i)=vl(i)的点都是关键活动,其相连即为关键路径
  • 具体实现
    • 逆拓扑有序 - 将拓扑排序的序列存储在栈中,再将栈中元素弹出,即可得到逆拓扑排序
  • 什么情况下,提高关键活动,才能对工程的进度产生影响
    • 提高关键活动可能导致关键路径的改变,所以必须在关键路径不变的前提下
    • 关键活动必须在所有关键路径上

转载于:https://www.cnblogs.com/break-dawnn/p/9780764.html

[Data Structure Algorithm] 有向无环图的拓扑排序及关键路径相关推荐

  1. 有向无环图DAG 拓扑排序 代码解释

    目录: DAG定义 举例描述 实际运用 算法描述 算法实战 算法可视化 定义 在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological ...

  2. 【图论】有向无环图的拓扑排序

    1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...

  3. 数据结构-考研难点代码突破 (C++实现有向无环图的拓扑排序)

    文章目录 1. AOV网 2. 拓扑排序 C++代码 1. AOV网 AOV网∶若用DAG 图(有向无环图)表示一个工程,其顶点表示活动,用有向边<Vi,Vj>表示活动 Vi必须先于活动V ...

  4. 判定有向无环图 (拓扑排序)

    问题描述: 给出一张有向图,问它是否存在环. 解题思路: 这里可以用到拓扑排序. 拓扑排序的定义 拓扑排序应用于有向无环图之中,排序完以后会出现这样的性质:对于一个点p,只对排序位置在它之后的点有边. ...

  5. C#实现有向无环图(DAG)拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...

  6. 有向无环图的拓扑排序

    拓扑排序 对于一个有向无环图,我们可以这样确定一个图中顶点的顺序:  对于所有的u.v,若存在有向路径u-->v,则在最后的顶点排序中u就位于v之前.这样确定的顺序就是一个图的拓扑排序.     ...

  7. 有向无环图的拓扑排序 关键路径

    拓扑排序:在不违背先决条件的基础上将有向无环图排成线性序列 - 排序结果不唯一 - 用一维数组Indegree存储各顶点的入度 - 采用邻接表与队列 bool TopSort(LGraph Graph ...

  8. 带你了解有向无环图和拓扑排序

    写在前面 如果觉得有所收获,记得点个关注和点个赞,感谢支持. 今天遇到有向无环图的一些问题,感觉挺有意思的,而且这些问题的思路特点都差不多,所以想着记录一下.在图论中,如果一个有向图无法从某个顶点出发 ...

  9. 有向无环图(DAG)拓扑排序的两种方法

    如下图的DAG: 第一种: (1)从AOV网中选择一个没有前驱的顶点并且输出它: (2)从AOV网中删除该顶点,并且上去所有该顶点为尾的弧: (3)重复上述两步,直到全部顶点都被输出,或者AOV网中不 ...

  10. BUCT数据结构——图(拓扑排序、关键路径)

    文章目录 问题 A: 邻接矩阵存储的图,节点的出度和入度计算(附加代码模式) 问题 B: 算法7-12:有向无环图的拓扑排序 问题 C: 有向图是否存在环? 问题 D: 图-节点的最早发生时间 问题 ...

最新文章

  1. MPB:EGFP荧光标记大肠杆菌的构建
  2. iOS开发工具篇:cocoaPods 添加第三方库链接报错
  3. base64转码java版
  4. 河北体检系统诚信企业推荐_应用多的隔膜计量泵价格诚信企业推荐
  5. openSSH离线升级(6.6->7.9),解决Linux安全漏洞(CVE-2018-15473)
  6. SpringBoot私人学习笔记
  7. request.getContextPath()
  8. eclipse中文版官方下载
  9. 想要糖尿病逆转,健康饮食必不可少
  10. 使用Matplotlib美化和修饰图形
  11. js 字符串 常用方法
  12. 第三阶段应用层——1.7 数码相册—电子书(4)—select支持多输入
  13. vue在filters中使用sort()无限循环踩坑实践
  14. excel模板报表转PDF下载
  15. 回顾2022,展望2023,笔耕不辍,钟情翰墨
  16. endNote教程-5、6-高效阅读文献+高效文献调研
  17. geopandas read_file报错RTreeError: Coordinates must be in the form (minx,
  18. 硕士期间两篇计算机sci二区,实验室两篇论文被SCI 2区期刊Neurocomputing接收
  19. python语言的变量_自兴人工智能------Python语言的变量认识及操作
  20. Read research papers and career advice | 怎么读论文/职场建议

热门文章

  1. matlib实现梯度下降法
  2. Linux系统目录结构解析(centos)
  3. OwinStartupAttribute
  4. 拖拽上传技术-----html5[转载]
  5. onfling滑动界面进行Activity切换
  6. 命令行管理sql server
  7. 永远不要因为这个工作不好而辞职、、、、
  8. Microsoft Updater Application Block 1.4.3 KeyValidator类设计 [翻译]
  9. Mac利用PD虚拟机安装Centos7
  10. debian软raid