博客
关于我
图(三):拓扑排序、关键路径
阅读量:331 次
发布时间:2019-03-04

本文共 804 字,大约阅读时间需要 2 分钟。

拓扑排序与关键路径

目录

1. 拓扑排序

1.1 定义与背景

有向无环图(DAG)中,顶点表示活动,边表示活动之间的优先关系。拓扑排序是将这些顶点按照其相互关系排列成一个线性序列,使得前置活动始于后置活动。

1.2 方法

  • 在有向图中选一个没有前驱的顶点并输出。
  • 删除该顶点及其所有后驱边。
  • 重复上述步骤,直到所有顶点都被输出或图中不存在无前驱顶点。
  • 2. 算法实现

    2.1 数据结构

    • 邻接表:存储图的结构。
    • 入度数组:记录每个顶点的入度。

    2.2 步骤

  • 初始化入度数组为0。
  • 将所有入度为0的顶点加入栈。
  • while栈不为空:
    • 从栈顶取出顶点并输出。
    • 对其所有后驱顶点依次降低入度。
    • 若某顶点入度变为0,则加入栈。
  • 如果最终输出的顶点数等于总顶点数,则无环;否则存在环。
  • 3. 关键路径

    3.1 定义

    关键路径是完成整个工程所需时间最长的路径。它由一系列活动组成,且每个活动的最早开始时间等于其前驱活动的最早开始时间加上前驱活动的持续时间。

    3.2 寻找关键路径

  • 对图进行拓扑排序。
  • 从源点到汇点记录最长路径。
  • 这条路径即为关键路径。
  • 3.3 计算关键路径

  • 使用拓扑排序结果,从源点出发,逐步计算每个顶点的最早开始时间。
  • 当从源点到某顶点的路径达到最大值时,此时的路径即为关键路径。
  • 4. 应用示例

    假设有一个工程有11项活动和9个事件:

  • 完成整个工程至少需要多少时间?
  • 哪些活动是影响工程进度的关键?
  • 4.1 图示

    工程计划表示为有向图,每个事件表示其之前的活动已完成,之后的活动可以开始。

    4.2 解决方法

  • 通过拓扑排序确定最早开始时间。
  • 计算每个活动的最晚开始时间。
  • 找出最长路径,即关键路径。
  • 关键路径上的活动应优先执行,以缩短整体工期。
  • 4.3 计算结果

    • 最短时间:从源点到汇点的最长路径。
    • 关键活动:路径长度最长的活动。

    通过拓扑排序和关键路径分析,可以有效地优化项目进度管理,确保项目按时完成。

    转载地址:http://caih.baihongyu.com/

    你可能感兴趣的文章
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle script
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    oracle 创建字段自增长——两种实现方式汇总
    查看>>
    Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
    查看>>
    ORACLE 客户端工具连接oracle 12504
    查看>>
    Oracle 递归
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>