
一.问题描述
关键路径是指设计中从输入到输出经过的延时最长的逻辑路径。优化关键路
径是一种提高设计工作速度的有效方法。一般地,从输入到输出的延时取决于信
路径法可以反复使用,直到不可能减少关键路径延时为止。号所经过的延时最大
路径,而与其他延时小的路径无关。
在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边
上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称 AOE
网。AOE 网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点
(或汇点)。待完成的任务之间通常都会存在着某些依赖关系,这些关系会对它
们的执行顺序形成部分约束。对于这种依赖关系,我们通常很容易将其表示成一
个有向无环路图(DAG),并将寻找其中依赖顺序的过程(寻找所有沿着特定顺
序前进的边与点)成为拓扑排序(topological sorting)。
拓扑排序对应施工的流程图具有特别重要的作用,它可以决定哪些子工程必
须要先执行,哪些子工程要在某些工程执行后才可以执行。为了形象地反映出整
个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶
点代表活动(子工程),图中的有向边代表活动的先后关系,即有向边的起点的活
动是终点活动的前序活动,只有当起点活动完成之后,其终点活动才能进行。
二.算法设计
本程序主要使用邻接表形式存储图,设计基本链栈,来辅助进行图的拓扑排
序,然后利用全局变量数组统计入度,利用数组储存拓扑排序后的顶点下标。主
要设计 CreateUDG 函数创建图的邻接链表,其中通过 LocateVex 可以定位到邻接表
代表元素的数组下标并进行连接 TopologicalSort 函数调用链栈对图的所有结点进