AOE网络的关键路径问题
关于AOE网络的基本概念可以参考《数据结构》或者search一下就能找到,这里不做赘述。
寻找AOE网络的关键路径目的是:发现该活动网络中能够缩短工程时长的活动,缩短这些活动的时长,就可以缩短整个工程的时长。因此,寻找关键路径就是寻找关键活动。
接下来开始寻找一个工程中的关键路径(关键活动)。
寻找关键路径,每本教材都会提及四个特征属性:Ve[],Vl[],e[],l[],此处可能还补充一个属性:活动ai的时间余量,也就是l[i]-e[i],当某个活动的时间余量=0时,该活动就是关键活动。所以,寻找关键路径(关键活动)也就是求解AOE网络中所有活动、事件的上述特征属性,然后发现时间余量为零的活动,这样的活动就是关键活动。
至此,我们分析出,求解四个特征属性就可以找到关键路径。
Ve[i]:事件Vi的最早可能发生时间。
按照就是以起始事件为源点,类似于逆迪杰斯特拉算法求解单源点的最长路径。
Vl[i]:事件Vi的最迟允许发生时间。
结束事件的最迟允许发生时间=最早可能发生时间,以此为基础,按照逆拓扑序列求解前驱事件的Vl[],每次减去关联两个事件的具有最短时长的活动。
e[i]:活动ai的最早可能开始时间。
若活动ai由弧<.vk,vj>表示,则活动ai的最早开始时间应该等于事件vk的最早发生时间Ve[k]。因而,有:e[i]=ve[k];(即:边(活动)的最早开始时间等于,它的发出顶点的最早发生时间)。
l[i]:活动ai的最迟允许开始时间。
若活动ai由弧<.vk,vj>表示,则ai的最晚开始时间要保证事件vj的最迟发生时间不拖后。 因而有:l[i]=Vl[j]-dur<.vk,vj>(为边(活动)的到达顶点的最晚发生时间减去边的权值)。
至此,所有计算完成,如果活动ai的e[i]=l[i],则ai是关键活动。
注意,如果某项工程中,多个关键活动构成了两条或更多关键路径,此时并不是缩短任意关键活动的时间都能缩短整个工程时间,而是要缩短所有关键路径的公共关键活动的时间。
例子或者详细概念,可以参考这篇博文:
http://blog.csdn.net/wang379275614/article/details/13990163
AOE网络的关键路径问题的更多相关文章
- AOE网络——求关键路径
1.计算每个活动的最早发生时间(正序) earliest[1]=0; earlest[k]=max{earliest[j],+dut[j][k]} 2.计算每个活动的最晚发生时间(逆序) lastes ...
- AOE 网络
1.定义 如果在无向环的带权有向图中 - 用有向边表示一个工程中的活动 - 用边上的权值表示活动的持续时间 - 用顶点表示事件 则这样的有向图叫做用边表示活动的网络,简称AOE网络 AOE在工程方面非 ...
- AOE网与关键路径简介
前面我们说过的拓扑排序主要是为解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题.如果我们要对一个流程图获得最短时间,就必须要分析它们的拓扑关系,并且找到当中最关键的流程, ...
- SDUT 2498 AOE网上的关键路径
AOE网上的关键路径 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 一个无环的有向图称为无 ...
- AOE网上的关键路径(最长路径 + 打印路径)
题目描述 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图. AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG ...
- 基于AOE网的关键路径的求解
[1]关键路径 在我的经验意识深处,“关键”二字一般都是指临界点. 凡事万物都遵循一个度的问题,那么存在度就会自然有临界点. 关键路径也正是研究这个临界点的问题. 在学习关键路径前,先了解一个AOV网 ...
- sdut AOE网上的关键路径(spfa+前向星)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...
- _DataStructure_C_Impl:AOE网的关键路径
//_DataStructure_C_Impl:CriticalPath #include<stdio.h> #include<stdlib.h> #include<st ...
- 数据结构实验之图论十一:AOE网上的关键路径【Bellman_Ford算法】
Problem Description 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图. AOE(Activity On Edge)网:顾名思义,用边 ...
随机推荐
- (转)Python格式化字符 %s %d %f
Python格式化字符 %s %d %f 原文:http://blog.csdn.net/huangfu77/article/details/54807835 格式 描述%% 百分号标记 #就是输出一 ...
- C++11并发编程:原子操作atomic
一:概述 项目中经常用遇到多线程操作共享数据问题,常用的处理方式是对共享数据进行加锁,如果多线程操作共享变量也同样采用这种方式. 为什么要对共享变量加锁或使用原子操作?如两个线程操作同一变量过程中,一 ...
- 负载均衡服务器中存在大量的TIME_WAIT怎么解决
首先需要明白什么是TIME_WAIT.TIME_WAIT是在tcp断开连接时进行四次回收的时候,主动断开端在收到被动关闭端的FIN包并发送ACK包给被动关闭后进入的状态.这个状态默认情况下是2倍的MS ...
- Enjoy coding
Enjoy coding iTerm配置 主题选择 Solarized Dark LiquidCarbon 字体选择 Cousine for Powerline(需要安装Powerline字体库), ...
- [转]ASP.NET Core基本原理(11)-管理应用程序状态
本文转自:http://zhuchenglin.me/fundamentals-11-app-state?utm_source=tuicool&utm_medium=referral ASP. ...
- java程序: 从kernel.ubuntu.com下载kernel - HttpURLConnection
用java实现从kernel.ubuntu.com下载内核的小工具 现在的最新的LTS版本是4.19,目前已经更新到4.19.13了. Kernel的更新通知里,经常有下面的陈述: 作为一个听劝的人, ...
- 【学习笔记】开源日志记录工具log4j使用方法
http://blog.csdn.net/zouqingfang/article/details/37558469 一.在MyEclipse中使用log4j的步骤比较简单,主要分为以下四个步骤: 1. ...
- 面试基础(二)-mem函数
常考的函数有下面三个,memset,memcpy,memmove,一定要记住三个函数的函数原型,熟记返回值类型和参数类型,当然也不能忘记参数检查 memset #include<iostre ...
- 转-vs2017安装并且安装包不占用C盘空间
平常的安装方式,不论是在线安装还是下载的离线安装包,都会在安装过程中将vs2017的安装包保存在C:\ProgramData\Microsoft\VisualStudio\Packages文件夹下并占 ...
- Java操作Mongodb(转载)
好文章,值得收藏 HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mo ...