数据结构和算法-AOV与AOE网络和(逆)拓扑排序与关键路径

2023-12-18 06:28

本文主要是介绍数据结构和算法-AOV与AOE网络和(逆)拓扑排序与关键路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • AOV网络
  • 拓扑排序
  • 代码实现
    • 时间复杂度
  • 逆拓扑排序
    • 实现
    • DFS算法实现逆拓扑排序
    • 小结
  • AOE网络
    • 关键路径
    • 求关键路径
      • 求事件最早发生时间
      • 求事件最迟发生时间
      • 求活动最早发生时间
      • 求活动最迟发生时间
      • 求活动余量
    • 关键活动 关键路径的特性
    • 小结

AOV网络

必须是DAG图(有向无环图)
在这里插入图片描述

拓扑排序

在这里插入图片描述
在这里插入图片描述
排序序列不唯一
当前网中不存在无前驱的顶点即存在回路
在这里插入图片描述
在这里插入图片描述

代码实现

此时时邻接表存储
首先入度为0的点入栈
然后开始出栈,知道栈为空,每出一个保存到print数组中,然后将出栈的点指向的顶点入度减1,并把入度为零的顺便压入栈中
在这里插入图片描述

时间复杂度

在这里插入图片描述

逆拓扑排序

在这里插入图片描述

实现

逆邻接表
在这里插入图片描述

DFS算法实现逆拓扑排序

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

AOE网络

在这里插入图片描述
在这里插入图片描述

关键路径

下图关键路径标红
在这里插入图片描述
在这里插入图片描述
按关键路径从后往前推
在这里插入图片描述
在这里插入图片描述

求关键路径

所有事件的最早发生时间就是所有活动的最早发生时间
而所有事件的最迟发生事件并不等于所有活动的最迟发生时间
所有活动的最迟发生时间需要通过活动的执行时间和所有事件的最迟发生时间来求
在这里插入图片描述

求事件最早发生时间

在这里插入图片描述

求事件最迟发生时间

在这里插入图片描述

求活动最早发生时间

在这里插入图片描述

求活动最迟发生时间

在这里插入图片描述

求活动余量

在这里插入图片描述

关键活动 关键路径的特性

缩短到一定程度时,即再缩短也无法缩短整个工程的工期了

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述

这篇关于数据结构和算法-AOV与AOE网络和(逆)拓扑排序与关键路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507369

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

利用Python把路径转为绝对路径的方法

《利用Python把路径转为绝对路径的方法》在Python中,如果你有一个相对路径并且想将其转换为绝对路径,你可以使用Path对象的resolve()方法,Path是Python标准库pathlib中... 目录1. os.path.abspath 是什么?怎么用?基本用法2. os.path.abspat

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.