图(拓扑排序和关键路径)
2013-07-24 15:47
288 查看
一:何谓“拓扑排序”?
假设以有向图表示一个工程的施工图或程序的数据流图(AOV网),则图中不允许出现回路。
检查有向图中是否存在回路的方法之一,是对有向图进行拓扑排序。
对有向图进行如下操作:
按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系。由此所得顶点的线性序列称之为拓扑有序序列。
二:如何进行拓扑排序?
一、从有向图中选取一个没有前驱
的顶点,并输出之;
二、从有向图中删去此顶点以及所
有以它为尾的弧;
重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。
拓扑排序算法
总是删除入度为0的顶点并输出之。
注意:拓扑排序的结果不一定是唯一的。
2.2 关键路径
问题:
假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程所需时间。
问:哪些子工程项是“关键工程”?
即:哪些子工程项将影响整个工程的完成期限的。
用边表示活动的网络(AOE网络)
l如果在无有向环的带权有向图中
• 用有向边表示一个工程中的各项活动(Activity)
• 用边上的权值表示活动的持续时间(Duration)
• 用顶点表示事件(Event)
则这样的有向图叫做用边表示活动的网络,简称AOE (Activity On Edges)网络。
AOE网络在某些工程估算方面非常有用。例如,可以使人们了解:
(1) 完成整个工程至少需要多少时间
(2) 为缩短完成工程所需的时间, 应当加快哪些活动?
AOE 网(活动在边上),边代表活动或任务,顶点代
表事件。
l在AOE网络中, 有些活动顺序进行,有些活
动并行进行
l事件i发生后,其后继活动a(i,*)都可以开始
只有所有先导活动a(*,j)都结束后,事件j才
发生。
整个工程完成的时间为:从有向图的源点到汇点的最长路径。
例如:
“关键活动”指的是:该弧上的权值增加将使有向图上的最长路径的长度增加。
从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同。完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,整个工程才算完成。
因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和。这条路径长度最长的路径就叫做关键路径(Critical
Path)。
要找出关键路径,必须找出关键活动,即不按期完成就会影响整个工程完成的活动。关键路径上的所有活动都是关键活动。因此,只要找到了关键活动,就可以找到关键路径
三:关键路径具体算法如下:
算法的实现要点:
显然,求ve的顺序应该是按拓扑有序的次序;
而求vl的顺序应该是拓扑有序序列的逆序列即拓扑逆序的次序;
因此,应该在拓扑排序的过程中,另设一个“栈”记下拓扑有序序列。
在拓扑排序求Ve[i]和逆拓扑有序求Vl[i]时,
所需时间为
O(n+e),
求各个活动的e[k]和l[k]时所需时间为O(e),
总共花费时间仍然是O(n+e)。
假设以有向图表示一个工程的施工图或程序的数据流图(AOV网),则图中不允许出现回路。
检查有向图中是否存在回路的方法之一,是对有向图进行拓扑排序。
对有向图进行如下操作:
按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系。由此所得顶点的线性序列称之为拓扑有序序列。
二:如何进行拓扑排序?
一、从有向图中选取一个没有前驱
的顶点,并输出之;
二、从有向图中删去此顶点以及所
有以它为尾的弧;
重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。
拓扑排序算法
总是删除入度为0的顶点并输出之。
注意:拓扑排序的结果不一定是唯一的。
2.2 关键路径
问题:
假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程所需时间。
问:哪些子工程项是“关键工程”?
即:哪些子工程项将影响整个工程的完成期限的。
用边表示活动的网络(AOE网络)
l如果在无有向环的带权有向图中
• 用有向边表示一个工程中的各项活动(Activity)
• 用边上的权值表示活动的持续时间(Duration)
• 用顶点表示事件(Event)
则这样的有向图叫做用边表示活动的网络,简称AOE (Activity On Edges)网络。
AOE网络在某些工程估算方面非常有用。例如,可以使人们了解:
(1) 完成整个工程至少需要多少时间
(2) 为缩短完成工程所需的时间, 应当加快哪些活动?
AOE 网(活动在边上),边代表活动或任务,顶点代
表事件。
l在AOE网络中, 有些活动顺序进行,有些活
动并行进行
l事件i发生后,其后继活动a(i,*)都可以开始
只有所有先导活动a(*,j)都结束后,事件j才
发生。
整个工程完成的时间为:从有向图的源点到汇点的最长路径。
例如:
“关键活动”指的是:该弧上的权值增加将使有向图上的最长路径的长度增加。
从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同。完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,整个工程才算完成。
因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和。这条路径长度最长的路径就叫做关键路径(Critical
Path)。
要找出关键路径,必须找出关键活动,即不按期完成就会影响整个工程完成的活动。关键路径上的所有活动都是关键活动。因此,只要找到了关键活动,就可以找到关键路径
三:关键路径具体算法如下:
算法的实现要点:
显然,求ve的顺序应该是按拓扑有序的次序;
而求vl的顺序应该是拓扑有序序列的逆序列即拓扑逆序的次序;
因此,应该在拓扑排序的过程中,另设一个“栈”记下拓扑有序序列。
在拓扑排序求Ve[i]和逆拓扑有序求Vl[i]时,
所需时间为
O(n+e),
求各个活动的e[k]和l[k]时所需时间为O(e),
总共花费时间仍然是O(n+e)。
相关文章推荐
- 图(3)--拓扑排序与关键路径
- 「数据结构作业」最短路,拓扑排序,关键路径,最小生成树
- 详解图的应用(最小生成树、拓扑排序、关键路径、最短路径)
- 拓扑排序之关键路径(深度优先搜索)
- 求关键路径(包含邻接表的建立、拓扑排序)
- HDU 4109 拓扑排序(最短路思想)关键路径
- 拓扑排序关键路径
- 拓扑排序和关键路径
- 拓扑排序和关键路径
- 图功能的实现C++(最短路径,关键路径,拓扑排序,关节点,~~~~~~~~~~等等)
- 图的顶点的拓扑排序,返回关键路径长度
- 拓扑排序和关键路径
- 拓扑排序和关键路径
- 拓扑排序(关键路径)
- 拓扑排序和关键路径
- 数据结构-----图的拓扑排序和关键路径算法
- 拓扑排序和关键路径分析
- 数据结构---->图的应用(拓扑排序,关键路径)
- 拓扑排序--关键路径
- PAT 关键活动 拓扑排序-关键路径