数据结构,课程设计,全国铁路最佳经由问题,关键路径.docVIP

  • 9
  • 0
  • 约4.19万字
  • 约 10页
  • 2018-03-03 发布于重庆
  • 举报

数据结构,课程设计,全国铁路最佳经由问题,关键路径.doc

数据结构,课程设计,全国铁路最佳经由问题,关键路径

青岛理工大学 数据结构课程设计报告 题目一: 关键路径 题目二: 全国交通运输网最佳经由问题 院(系): 计算机工程学院 学生姓名: 刘善永 班级: 计算094 学号: 200907124 起迄日期: 2011年6月20日—2011年6月30日 指导教师: 张 艳 2010—2011年度 第 2 学期 题目一:关键路径 一、需求分析 1.问题描述: 给定一个AOE-网(即带权的有向无环图),求出此图的关键路径。AOE-网中,顶点表示事件,弧表示活动,权表示活动持续的时间。用AOE-网来估算某些工程完成的时间是非常有用。 2.基本功能 对于任意给定的AOE-网,显示出该图的关键路径。 3.输入输出 程序的输出格式为: 首先输出一句话判断是否是拓扑排序; 接着输出关键路径(格式如下): 起点 终点 dut ee el tag 输入数据:根据提示输入相应的数据。一般若依次输入多个数据时,中间要用空格隔 开。需要注意的是顶点的类型是字符串)。 测试数据如下: 二、概要设计 1.设计思路 首先对于图的存储结构采用了邻接表的存储结构。其次对于给定的有向无环图,先对其进行拓扑排序,在对其求关键路径。 拓扑排序的算法为: a. 在有向图中选一个没有前驱的顶点且输出之; b. 从图中删除该顶点和所有以它为尾的弧。 重复上述两步,直至全部顶点均以输出或者当前图中不存在无前驱的顶点为止。 关键路径的算法:(其中活动的最早发生时间e(i)和最迟发生时间l(i),事件的最早发 生时间ve(i)和最迟发生时间vl(i)) a. 从源点v0出发,令ve(0)=0,对拓扑有序求出其余各顶点的ve(i)。 b. 从汇点vn出发,令vl(n-1)=ve(n-1),按拓扑逆序求出各顶点的vl(i); c. 根据各顶点的ve和vl的值,求每条弧s的最早发生时间e(s)和最迟发生时间 l(s).若某条弧满足e(s)=l(s),则为关键活动。 2.数据结构设计 抽象数据类型图的定义如下: ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。 数据关系R: R={VR} VR={(v,w)| v,w∈V,(v,w)表示v和w之间存在路径} 基本操作P: LocateVex(G,v) 初始条件:图G存在,v和G中顶点有相同特征。 操作结果:若G中存在顶点v,则返回该顶点在图中位置;否则返回0 ,零号空 间不用。 CreateGraph(amp;G) 初始条件:输入顶点和边。 操作结果:根据输入的顶点和边,定义构造图。 FindInDegree(ALGraph G,int indegree[]) 初始条件:有向图G存在。 操作结果:对个顶点求入度indegree[0...vernum-1]。 TopologicOrder(ALGraph G,SqStack amp;T) 初始条件:有向图G存在,拓扑序列顶点栈T存在。 操作结果:若G无回路,则返回OK,否则返回ERROR。 CriticalPath(ALGraph G) 初始条件:有向图G存在。 操作结果:输出G的各项关键活动。 } ADT Graph ADT Stack{ 数据对象:D={ai|ai∈ElemSet,i=1,2,?,n,ngt;=0} 数据关系:R1={lt;a(i-1),a(i)gt;|a(i-1),a(i)∈D,i=2,...,n} 约定an端为栈顶,ai端为栈底。 基本操作: InitStack(amp;S) 操作结果:构造一个空栈S。 DestroyStack(amp;S) 初始条件:栈S已存在。 操作结果:销毁栈S。 StackEmpty(S) 初始条件:栈S已存在。 操作结果:若S为空栈,则返回TRUE,否则返回FALSE。 Push(amp;S,e) 初始条件:栈S已存在。 操作结果:在栈S的栈顶插入新的栈顶元素。 Pop(amp;S,amp;e) 初始条件:栈S已存在。 操作结果:删除S的栈顶元素,并以e返回其值。 } ADT Stack 3.软件结构设计 程序中包含的模块及模块间的关系说明。 (1)主程序模块: void main() { 初始化G,T; CreateGraph(G); CriticalPath(G); } (2)图模块——实现图的抽象数据类型 int LocateVex(ALGraph G,VertexType u); void CreateGraph(ALGraph amp;G); void FindInDegree(ALGraph G,int indegree[]); int Topol

文档评论(0)

1亿VIP精品文档

相关文档