数据结构课程设计报告—关键路径(共24页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构课程设计报告—关键路径(共24页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告—关键路径(共24页).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上算法与数据结构课程设计题目:关键路径院、 系: 学科专业: 姓 名: 学 号: 指导教师: 年 月 日专心-专注-专业数据结构课程设计报告摘 要关键路径是我们估算某些工程非常有用,是一种非常重要的估算一项工程所需的最短时间的依据。本文对如何求一个工程的关键路径做了详细的说明,包括需求分析、概要设计、详细设计、测试与分析、总结、源程序清单。首先,做了需求分析,解释了什么是关键路径,并指出它在估算工程中的重要作用。然后给出求关键路径的概要设计,包括程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。在概要设计的基础上,又给出了详细的算法设
2、计,实现概要设计中定义的所有函数,对每个函数写出核心算法,并画出了流程图。然后对编码进行了测试与分析(并在最后附上C语言编写的程序代码)。最后对整个设计过程进行了总结关键词:关键路径;抽象数据类型;程序模块;核心算法;流程图。目 录摘要11 绪论 31.1前言 31.2研究意义 31.3结构安排 32 需求分析 52.1问题描述 5 2.2基本要求 5 2.3目的 53概要设计 73.1算法分析 7 32算法步骤 7 3.3数据结构8 3.3.1数据结构 8 332程序模块 8 333各模块间的调用关系94详细设计 10 4.1主要函数的核心代码10 4.2程序流程图105测试 116总结 1
3、6参考文献18附录:原程序清单191绪论11前言 :我们通常把计划、施工过程、生产流程、程序流程等都当成一个工程。工程通常分为若干个称为“活动”的子工程。完成了这些“活动”,这个工程就可以完成了。 我们通常用AOE-网来表示工程。AOE-网是一个带权的有向无环图,其中,顶点表示事件(EVENT),弧表示活动,权表示活动持续的时间。AOE-网可以用来估算工程的完成时间。他可以使人们了解:1. 研究某个工程至少需要多少时间?2. 哪些活动是影响工程进度的关键?由于AOE-网中的有些活动可以并行进行,从开始点到各个顶点,以致从开始点到完成点的有向路径可能不止一条,这些路径的长度也可能不同。完成不同路
4、径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,这个工程才算完成。因此,完成工程所需的最短时间是从开始点到完成点的最长路径的长度,即在这条路径上的所有活动的持续时间之和.这条路径长度就叫做关键路径(Critical Path)。12研究意义 :关键路径可以很方便的让我们估算出某个工程最短的时间开销,以及这个工程中哪些活动,即哪些项目是主要的,是影响工程进度的关键,从而让我们对工程的实施作出更好的时间安排,并且可以分清主次,抓住核心工程,做到有的放矢。总的来说,正因为关键路径可以帮助我们对工程进行非常有必要的估算,让我们得以看清全局,作出更为优化的安排,所以可见关键路径的求出对一项
5、工程而言是非常必要的。这亦是本次对关键路径求法的研究意义所在。13结构安排 :第一章绪论介绍了研究背景以及研究意义。 第二章需求分析介绍了问题描述以及基本要求,和这次课程设计所需达到的目的。 第三章概要设计主要介绍了求关键路径的算法分析,算法步骤,和数据结构,其中数据结构包括了基本的抽象数据结构,所要用到的函数模块,以及各模块之间的调用关系。 第四章详细设计介绍了主要函数及其核心代码,以及程序流程图。 第五章对程序代码进行了测试。 第六章对这次数据结构课程设计进行了总结。 参考文献。 附录:原程序清单。 2 需求分析21问题描述 :(1)选取建图的一种算法建立图,有邻接矩阵,邻接表,十字链表,
6、邻接多重表等多种方法,要选取一种适当的方法建立图,才能提高算法效率,降低时间复杂度和空间复杂度。(2)两个相邻顶点与它们之间的边表示活动,边上的数字表示活动延续的时间。对于给出的事件AOE网络,要求求出从起点到终点的所有路径,经分析、比较后找出长读最大的路径,从而得出求关键路径的算法,并给出计算机上机实现的源程序。完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,这个工程才算完成。具体要解决的问题有如下四个:1) 将项目中的各项活动视为有一个时间属性的结点,从项目起点到终点进行排列; 2) 用有方向的线段标出各结点的紧前活动和紧后活动的关系,使之成为一个有方向的网络图;
7、3) 用正推法和逆推法计算出各个活动的最早开始时间,最晚开始时间,最早完工时间和最迟完工时间,并计算出各个活动的时差; 4) 找出所有时差为零的活动所组成的路线,即为关键路径; 22基本要求 :(1)选取建图的一种算法建立图;选取邻接表的算法来建立图,是一种顺序+ 链式存储结构。用顺序表存放顶点,为每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边或以该顶点为尾的弧。(2)两个相邻顶点与它们之间的边表示活动,边上的数字表示活动延续的时间 参照该工程所化的AOE-网,求出从起点到终点的所有路径,然后通过拓扑排序和逆拓扑排序求出最早与最晚发生时间,找出长度最大的路径,从而求得关键路径。 2
8、3目的:在该部分,即需求分析中,根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么,以及限制条件是什么。 程序所能达到的功能:通过输入所要构建的图的顶点数,弧数,创建图,并打印出来,对图进行拓扑排序,求得此图的最早发生时间和最迟发生时间,并求得关键活动和关键路径,打印出来。3 概要设计31算法分析:(1)求关键路径必须在拓扑排序的前提下进行,有环图不能求关键路径;(2)只有缩短关键活动的工期才有可能缩短工期;(3)若一个关键活动不在所有的关键路径上,减少它并不能减少工期; (4)只有在不改变关键路径的前提下,缩短关键活动才能缩短整个工期。(5)关键路径:从源点到汇
9、点的路径长度最长的路径叫关键路径。(6)活动开始的最早时间e(i);(7)活动开始的最晚时间l(i);(8)定义e(i)=l(i)的活动叫关键活动;(9)事件开始的最早时间ve(i);(10)事件开始的最晚时间vl(i)。设活动ai由弧(即从顶点j到k)表示,其持续时间记为dut(),则: e(i)=ve(j) l(i)=vl(k)-dut() 求ve(i)和vl(j)分两步: 1.从ve(1)=0开始向前递推ve(j)=Max ve(i)+dut() T,2=j=n 其中,T是所有以j为弧头的弧的集合。 2.从vl(n)=ve(n)开始向后递推 vl(i)=Min vl(j)-dut() S
10、,1=i=n-1 其中,S是所有以i为弧尾的弧的集合。两个递推公式是在拓扑有序和逆拓扑有序的前提下进行。32算法步骤:(1)输入e条弧,建立AOE网的存储结构。(2)从源点v1出发,令ve(1)=0,求 ve(j),2=j=n。(3)从汇点vn出发,令vl(n)=ve(n),求 vl(i) 1=i=n-1。(4)根据各顶点的ve和vl值,求每条弧s(活动)的最早开始时间e(s)和最晚开始时间l(s),其中e(s)=l(s)的为关键活动。33数据结构:33. 1数据结构:typedef struct node/边表结点 int adjvex; /邻接点编号int dut; /弧的信息 struc
11、t node *next; /下一条弧指针edgenode; typedef struct /顶点表结点 int projectname;/顶点域 int id;/顶点的入度信息 edgenode *link; /边表头指针 vexnode; 33. 2程序模块: int main() 界面程序的主函数void seekkeyroot()求关键路径的主函数 void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber)函数建立AOE图 int SearchMapPath(vexnode* Graphicmap
12、,int projectnumber,int activenumber,int& totaltime) 求出最大路径,并打印出关键路径 33. 3各模块间的调用关系:主函数void main()要调用:求关键路径的函数seekkeyroot();求关键路径的函数seekkeyroot()要调用:创建图的函数CreateGraphic(Graphicmap,projectnumber,activenumber)求最大路径并打印出关键路径的函数int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int&
13、totaltime) 4 详细设计 41主要函数的核心代码:1. 创建图的函数2. 求出最大路径,并打印出关键路径的函数3. 球关键路径的函数4. 主函数 具体代码请见附录:源程序清单。42程序流程图:5 测试1. 开始界面2进入求关键路径的系统2. 输入节点数和活动个数3. 输入某项目的信息(弧头,弧尾,权值)4. 打印出关键路径5.课本上图7.29的程序测试 求上述AOE-网的操作为:求的关键路径为:5. 错误测试应输入的数为整形,若输入非整形的数据,则程序遇到问题关闭。6回路测试6 总结 历时一周的课程设计终于结束了,现在来做一下总结。首先,关于程序方面,我发现即使对设计思路有了眉目,知
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 关键 路径 24
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内