课程设计-关键路径

合集下载

关键路径代码课程设计

关键路径代码课程设计

关键路径代码课程设计一、教学目标本课程的教学目标是使学生掌握关键路径法的基本概念、计算方法和应用技巧。

通过本课程的学习,学生将能够:1.理解关键路径法的定义、原理和作用。

2.掌握关键路径法的计算步骤和技巧。

3.应用关键路径法分析项目的进度和风险。

4.能够运用关键路径法解决实际项目管理和工程问题。

二、教学内容本课程的教学内容主要包括以下几个部分:1.关键路径法的定义和原理:介绍关键路径法的概念、特点和应用范围。

2.关键路径法的计算:讲解关键路径法的计算步骤、技巧和注意事项。

3.关键路径法的应用:通过案例分析,使学生掌握关键路径法在项目管理和工程中的应用。

4.关键路径法的扩展:介绍关键路径法的改进和扩展方法,如PERT图、CPM分析等。

三、教学方法为了实现上述教学目标,我们将采用以下教学方法:1.讲授法:通过讲解、演示和案例分析,使学生掌握关键路径法的基本概念和计算方法。

2.讨论法:学生进行小组讨论,分享学习心得和实际应用经验。

3.实验法:安排实践环节,让学生动手操作,提高实际应用能力。

四、教学资源为了支持本课程的教学内容和教学方法,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习材料。

2.参考书:推荐相关参考书籍,丰富学生的知识体系。

3.多媒体资料:制作PPT、视频等多媒体资料,增强课堂趣味性和实用性。

4.实验设备:准备项目管理软件、计算器等实验设备,方便学生进行实践操作。

五、教学评估本课程的教学评估将采用多元化方式,全面、客观地评价学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

2.作业:布置适量的作业,检查学生对知识的掌握和应用能力。

3.考试:设置期中考试和期末考试,全面测试学生的知识水平和运用能力。

4.项目实践:学生进行小组项目实践,评估学生在实际操作中的能力和团队协作精神。

六、教学安排本课程的教学安排将根据课程内容和学生的实际情况进行设计,确保教学进度合理、紧凑。

关键路径算法课程设计

关键路径算法课程设计
printf("%c",sv[i]);
if(sv[i]!=Graph[vexnumber-1].data)
printf("--->");
}
printf("\n");
printf("关键路径长度为:%d个单位时间\n",totaltime);
return 1;
}
void main( ) {
}
接着从终点出发,令事件最迟发生时间等于其最早发生时间,按你你逆拓扑排序求其余各顶点事件最迟发生时间vl[k];最后根据各顶点事件的ve和vl值,求所有活动最早开始时间ee和最迟开始时间el。如果某活动满足条件ee=el,则为关键活动。(代码如下)
if(el[i]==ee[i]) {
printf("此弧为关键活动");
if(el[i]==ee[i]) {
printf("此弧为关键活动");
sv[t]=Graph[j].data;t++;
}
printf("\n");
p=p->nextedge;
}
}
printf("关键路径节点为:");
sv[t]=Graph[vexnumber-1].data;
for(i=0;i<=t;i++){
}
同时,为计算各顶点事件的ve值是在拓扑排序的过程中进行的,因此需一个队列来记录拓扑排序,如果顶点的入度为0,则该顶点从队尾进入队列,拓扑排序时,从队头出队列。
if(Graph[k].ቤተ መጻሕፍቲ ባይዱd ==0)
topology_queue[++rear]=k;

数据结构课程设计报告——关键路径

数据结构课程设计报告——关键路径

《数据结构》课程设计报告课程题目:关键路径学院:班级:学号:XX:指导教师:完成日期:目录一、需求分析3二、概要设计4三、详细设计5四、调试分析11五、用户使用说明12六、测试结果13七、附录13一、需求分析1、问题描述AOE网(即边表示活动的网络),在某些工程估算方面非常有用。

它可以使人们了解:(1)研究某个工程至少需要多少时间?(2)哪些活动是影响工程进度的关键? 在AOE网络中,从源点到汇点的有向路径可能不止一条,但只有各条路径上所有活动都完成了,这个工程才算完成。

因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和,这条路径就叫做关键路径(critical path)。

2、设计步骤(1)、以某一工程为蓝本,采用图的结构表示实际的工程计划时间。

(2)、调查并分析和预测这个工程计划每个阶段的时间。

(3)、用调查的结果建立AOE网,并用图的形式表示。

(4 )、用CreateGraphic ()函数建立图的邻接表存储结构,能够输入图的顶点和边的信息,并存储到相应存储结构中。

(5)、用SearchMaxPath()函数求出最大路径,并打印出关键路径。

(6)、编写代码并调试、测试通过。

3、测试数据○v2○v5○v1○v4○v6○v36v1 v2 v3 v4 v5 v68v1 v2 a1 3v1 v3 a2 2v2 v4 a3 2v2 v5 a43v3 v4 a5 4v3 v6 a6 3v4 v6 a7 2v5 v6 a8 1二、概要设计为了实现上述函数功能:1、抽象数据类型图的定义如下:ADT Graph {数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。

数据关系R:R={VR};VR={<v,w>|v,w∈V,且P(v,w),<v,w>表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义和信息}基本操作:InitGraph(G);初始条件:图G存在。

关键路径-课程设计

关键路径-课程设计

关键路径-课程设计一、教学目标本章节的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。

1.知识目标:通过本章节的学习,学生需要掌握XXX(具体知识点),并能理解其背后的原理和应用。

2.技能目标:学生能够运用XXX(具体技能)解决实际问题,提高其在XXX领域的应用能力。

3.情感态度价值观目标:培养学生对XXX(学科或课程)的兴趣和热情,增强其对学习的自我驱动力,培养其团队协作和沟通能力。

二、教学内容根据课程目标,本章节的教学内容主要包括XXX(具体知识点)、XXX(具体技能)和XXX(相关案例分析)。

1.XXX(具体知识点):通过讲解和案例分析,使学生了解并掌握XXX的基本概念、原理和应用。

2.XXX(具体技能):通过实践操作和小组讨论,培养学生运用XXX解决实际问题的能力。

3.XXX(相关案例分析):分析具体案例,让学生了解XXX在实际中的应用和价值,提高其对XXX的认知水平。

三、教学方法为了达到本章节的教学目标,将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解XXX的基本概念和原理,使学生了解并掌握相关知识。

2.讨论法:分组讨论,让学生针对具体案例进行分析,培养其团队协作和沟通能力。

3.案例分析法:分析具体案例,让学生了解XXX在实际中的应用和价值,提高其对XXX的认知水平。

4.实验法:让学生动手操作,实际体验XXX的原理和应用,培养其实践能力。

四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习材料。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:准备充足的实验设备,确保每位学生都能动手操作,实际体验实验过程。

五、教学评估本章节的教学评估主要包括平时表现、作业和考试三个部分,以全面、客观、公正地评估学生的学习成果。

关键路径法

关键路径法
介绍
播放
课件
质疑
引导
分析
了解
观看
课件
思考
领悟
通过生活实例自然引入知识点
10
30
*动脑思考探索新知
概念
我们把从开始节点到终止节点的一条路,叫做一条路径,一条路径上的各工序的工期的和叫做路径的长度,长度最长的那条路经叫做关键路径,显然,关键路径上的工作能按时完成,其他路径上的工作也能完成.关键路径上的每一件工作都叫做关键工作,表示关键工作的两个节点叫做关键节点,关键路径的长度就是工程的总工期.例如上面的第一条路经就是关键路径,活动的总工期是26分钟.
任务内容
工时(分钟)
紧前工序
A
扫地
5
E
B
喂鸡
3
E
C
淘米
4
E
D
洗菜
5
E
E
打开炉子
1

F
烧水
10
E
G
煮饭
8
E、C
H
炒菜
7
E、D
注意到扫地、喂鸡、淘米、洗菜可与烧水煮饭同时进行,例如A、C、B、D工序可与F、G同时开工,它们是平行工序,因此需设虚工序I、J;但要注意,C不能太靠后进行,否则要影响到G.
实践
【教学备品】
教学课件.
【课时安排】
3课时.(135分钟)
【教学过程】
教学
过程
教师
行为
学生Βιβλιοθήκη 行为教学意图时间
*揭示课题
4.2关键路径法
我们已经知道,在编制计划的过程中,可以选择最佳可行的方案来实施项目计划.但在这个过程中,有一些(或个别)环节是必不可少的,那么我们如何来分析呢?

数据结构课程设计报告 关键路径的实现

数据结构课程设计报告 关键路径的实现

青岛理工大学数据结构课程设计报告题目:关键路径的实现院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2014.7.8—2014.7.19指导教师: 张艳一、需求分析1.问题描述找出实际工程中的关键路径,合理安排关键活动的施工顺序。

要求:(1)表示工程的图可以用邻接表或邻接矩阵存储;(2)应能以图形的方式输出图;(3)输出关键路径和关键活动。

2.基本功能(1)用邻接表存储有向图并建立AOE网 CreateGraph();(2)用图形的形式输出有向图Display();(3)输出关键路径和关键活动 SearchMapPath();3.输入输出输入: (1)有向图的顶点数和弧数,都是int型,中间用空格隔开;(2)图中的各个顶点的值,char型;(3)图中弧的权值、起点、终点,都是int型,中间用空格隔开;输出:起点(char)、终点(char) 、最早开始时间(int)、最迟开始时间(int)、差值(int)、是否为关键活动、关键路径。

二、概要设计1.设计思路:(1) 输入图的顶点数和弧数。

(2) 输入这个图中每段弧的起始点及权值。

(3) 用输入的数据建立AOE网。

(4) 用邻接表来存储图的这些信息。

(5) 用CreateGraph( )函数建立AOE图。

(6)用Display()函数输出AOE图。

(7) 用SearchMapPath ( )函数求出最长路径,并输出关键路径。

(8) 编写程序。

2.数据结构设计:(1)逻辑结构采用图状的结构。

图是一种较线性表和树更为复杂的数据结构。

在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素(即其孩子结点)相关,但只能和上一层中一个元素(即其双亲结点)相关;而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

策划方案中的关键路径和风险管理

策划方案中的关键路径和风险管理

策划方案中的关键路径和风险管理一、关键路径的概念和作用关键路径是指在项目计划中耗时最长的一条路径,该路径上的任务都是项目进度的关键节点。

关键路径的确定对项目的成功实施起着至关重要的作用。

在项目策划中,通过确定关键路径可以合理安排资源和时间,最大程度地减少延误和浪费。

二、关键路径的确定方法1.网络图法:通过绘制项目的工作流程图,标识出各个任务之间的关系,结合任务的时间、依赖性和可并行执行的任务等因素,计算出关键路径。

2.时间露点法:通过分析各个任务的最早开始时间(EST)和最晚结束时间(LFT),确定关键路径。

三、关键路径的管理意义1.资源分配:关键路径的确定能够帮助项目经理合理分配资源,确保关键任务能够按时完成。

2.风险识别:关键路径上的任务是项目成功的关键环节,能够帮助项目经理及时识别潜在风险,并采取相应的应对措施。

3.进度控制:关键路径的管理能够帮助项目经理掌握项目的进度情况,及时调整计划并采取相应的措施,确保项目能够按时交付。

四、风险管理的重要性风险是项目实施过程中难以避免的,但通过科学合理的风险管理可以最大程度地降低风险对项目的影响,确保项目的成功实施。

五、风险管理的步骤1.风险识别:通过对项目的各个环节进行细致的分析,识别出潜在的风险。

2.风险评估:对已识别出的风险进行评估,确定其严重程度和可能性,并进行优先级排序。

3.风险应对策略的制定:根据风险评估结果,制定相应的风险应对策略,确定如何应对和处理潜在风险。

4.实施风险应对措施:按照风险应对策略,采取相应的措施,对风险进行有效管理和控制。

5.风险监控和反馈:实施风险应对措施后,需要对风险的变化进行监控,并及时反馈给项目组,以便及时调整应对措施。

六、风险管理中的工具和方法1.概率论和统计学:通过概率论和统计学的方法,对风险进行量化分析,确定其发生的可能性和影响的程度。

2.风险矩阵:通过对风险的概率和影响程度进行评估,绘制风险矩阵,确定风险的优先级。

中职数学教案:关键路径法

中职数学教案:关键路径法
从开始节点①到终止源自点⑩有两条路:教学环节
教学活动内容及组织过程
个案补充




第一条路:E—F—G—H,需26分钟.
第二条路:E—I—A—C—B—D—H,需25分钟.
其中需要时间最多的是第一条路.
根据以上的讨论,最少需要26分钟才能完成此项活动.
概念:
我们把从开始节点到终止节点的一条路,叫做一条路径,一条路径上的各工序的工期的和叫做路径的长度,长度最长的那条路经叫做关键路径,显然,关键路径上的工作能按时完成,其他路径上的工作也能完成.关键路径上的每一件工作都叫做关键工作,表示关键工作的两个节点叫做关键节点,关键路径的长度就是工程的总工期.
重点
理解路径、路径的长度、关键路径的概念.了解关键工作、关键节点的意义
难点
通过总工期、关键路径及平行工作的学习,提高学生计算技能与计算工具使用技能.
教法
讲练结合
教学设备
多媒体一体机
教学
环节
教学活动内容及组织过程
个案补充




【课前导学】
复习:编制计划的有关概念
一.建构数学:
探究:
下面的图4-7是某同学设计的整个活动的工序流程图.
教学
环节
教学活动内容及组织过程
个案补充




【思考提升】:P135问题解决
四.课堂小结
本节课你掌握了哪些知识?
五.布置作业
P136习题12




教后札记
教研组长签字
签字日期
二.应用数学:
例1某工程的工作流程图如下:
试列出从开始节点1到终止节点10的所有路径,指出哪条路径是关键路径,并确定完成该工程的总工期。

关键路径问题数据结构课程设计

关键路径问题数据结构课程设计

关键路径问题数据结构课程设计一、引言二、关键路径问题概述1.定义2.应用场景三、关键路径问题算法分析1.活动网络图的表示方法2.计算活动最早开始时间和最晚开始时间3.计算活动最早结束时间和最晚结束时间4.确定关键路径及其长度四、数据结构设计与实现1.数据结构选择与设计思路2.程序实现流程图及详细说明五、测试与分析结果展示六、总结与展望一、引言在项目管理中,关键路径问题是一个重要的问题,它可以帮助我们确定项目完成所需的最短时间,并且能够帮助我们找到项目中的瓶颈点。

本文将介绍关键路径问题的概念和算法分析,并以数据结构课程设计为背景,详细阐述数据结构设计与实现。

二、关键路径问题概述1.定义关键路径指的是项目中最长的一条连续活动序列,这些活动之间没有任何浮动时间,也就是说如果这些活动出现了延误,整个项目都会受到影响。

因此,在项目管理中,我们需要找到这条关键路径,并尽可能地缩短它的长度。

2.应用场景关键路径问题在项目管理中有广泛的应用,例如建筑工程、软件开发等。

在建筑工程中,我们需要确定每个活动的时间和优先级,以便确定项目完成所需的最短时间。

在软件开发中,我们需要确定每个模块的依赖关系和优先级,以便确定项目完成所需的最短时间。

三、关键路径问题算法分析1.活动网络图的表示方法活动网络图是一种图形化表示方法,它可以帮助我们清晰地了解整个项目中各项任务之间的依赖关系。

在活动网络图中,每个任务都表示为一个节点,并且每个任务之间都有一条边表示它们之间的依赖关系。

2.计算活动最早开始时间和最晚开始时间在计算关键路径时,我们需要计算每个活动的最早开始时间和最晚开始时间。

最早开始时间指的是该活动可以开始执行的最早时间,而最晚开始时间指的是该活动必须开始执行的最晚时间。

3.计算活动最早结束时间和最晚结束时间与计算开始时间类似,在计算关键路径时,我们还需要计算每个活动的最早结束时间和最晚结束时间。

最早结束时间指的是该活动可以完成执行的最早时间,而最晚结束时间指的是该活动必须完成执行的最晚时间。

关键路径C语言课程设计

关键路径C语言课程设计

关键路径C语言课程设计一、课程目标知识目标:1. 学生能理解C语言中关键路径算法的基本概念,掌握关键路径的求解方法。

2. 学生能运用C语言实现图的邻接表表示,并能对其进行拓扑排序。

3. 学生能通过C语言编程识别关键路径,并计算出各个顶点的最早开始时间和最迟开始时间。

技能目标:1. 学生能运用C语言编写关键路径求解程序,提高编程能力。

2. 学生通过分析实际问题,培养解决问题的策略和逻辑思维能力。

3. 学生能运用所学知识,对实际项目进行时间管理和优化。

情感态度价值观目标:1. 学生在课程学习中,培养对计算机科学的兴趣和热情,增强学习动力。

2. 学生通过小组合作,培养团队协作精神和沟通能力。

3. 学生在学习过程中,树立正确的价值观,认识到编程在解决实际问题中的重要性。

课程性质:本课程为计算机科学与技术领域的基础课程,旨在帮助学生掌握C 语言在图论中的应用,提高编程能力和解决问题的能力。

学生特点:学生处于高年级阶段,已具备一定的C语言基础,具有较强的逻辑思维能力和独立解决问题的能力。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调编程实践,提高学生的动手能力。

通过案例教学,激发学生的兴趣,培养其团队协作和沟通能力。

在教学过程中,关注学生的情感态度,引导其树立正确的价值观。

将课程目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. 图的基本概念:图的定义、顶点和边、有向图和无向图、路径和连通性。

2. 邻接表表示:图的邻接表存储结构、邻接表的创建和遍历。

3. 拓扑排序:拓扑排序的概念、拓扑排序的算法实现。

4. 关键路径:关键路径的定义、关键路径的求解方法、最早开始时间和最迟开始时间的计算。

5. C语言实现关键路径算法:编写关键路径求解程序、调试和优化程序。

6. 实例分析:结合实际项目,分析关键路径的应用,进行时间管理和优化。

教材章节关联:第1节:图的基本概念(章节1.1)第2节:邻接表表示(章节2.3)第3节:拓扑排序(章节3.2)第4节:关键路径(章节4.3)第5节:C语言实现关键路径算法(章节5.1、5.2)第6节:实例分析(章节6.1)教学内容安排与进度:第1周:图的基本概念、邻接表表示第2周:拓扑排序第3周:关键路径、C语言实现关键路径算法第4周:实例分析、课程总结与拓展确保教学内容科学性和系统性,注重理论与实践相结合,引导学生通过实例掌握关键路径算法,提高编程能力和解决问题的能力。

课程设计寻找关键路径

课程设计寻找关键路径

课程设计寻找关键路径一、教学目标本课程的教学目标是让学生掌握寻找关键路径的方法和技巧,能够运用到实际问题中。

具体分为以下三个部分:知识目标:使学生了解关键路径的定义、特点和应用场景,理解关键路径的计算方法和步骤。

技能目标:培养学生运用关键路径法分析问题、解决问题的能力,能够独立完成寻找关键路径的操作。

情感态度价值观目标:培养学生对寻找关键路径的兴趣,使其认识到关键路径在项目管理和生活中的重要性,培养学生的团队合作意识和责任感。

二、教学内容本课程的教学内容主要包括以下几个部分:1.关键路径的定义和概念:介绍关键路径的定义、特点和应用场景,使学生了解关键路径的基本概念。

2.关键路径的计算方法:讲解关键路径的计算步骤,包括时间参数的确定、网络图的绘制和路径的查找等。

3.关键路径的应用:通过案例分析,使学生掌握关键路径在项目管理和生活中的实际应用。

4.寻找关键路径的技巧:介绍寻找关键路径的技巧和方法,提高学生解决问题的能力。

三、教学方法为了达到本课程的教学目标,将采用以下几种教学方法:1.讲授法:通过讲解关键路径的定义、计算方法和应用,使学生掌握基本知识。

2.案例分析法:通过分析实际案例,使学生了解关键路径在项目管理和生活中的应用。

3.实验法:让学生动手实践,绘制网络图和寻找关键路径,提高学生的操作能力。

4.讨论法:分组讨论,引导学生思考和探索寻找关键路径的技巧和方法。

四、教学资源为了支持本课程的教学内容和教学方法,将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料。

2.参考书:提供相关参考书籍,丰富学生的知识体系。

3.多媒体资料:制作课件、动画等多媒体资料,帮助学生形象地理解关键路径的概念和计算方法。

4.实验设备:准备实验器材,为学生提供动手实践的机会。

5.网络资源:利用网络资源,为学生提供更多实例和拓展知识。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答情况等,以体现学生的学习态度和积极性。

关键路径问题课程设计报告书

关键路径问题课程设计报告书

中北大学数据结构课程设计说明书2011年12月20日设计内容:设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。

1、对一个描述工程的AOE网,应判断其是否能够顺利进行。

2、若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。

设计要求:(1) 符合课题要求,实现相应功能;(2) 要求界面友好美观,操作方便易行;(3) 注意程序的实用性、安全性;1.本设计所采用的数据结构(图)程序流程图2.功能模块详细设计2.1 详细设计思想主函数switch()对条件进行选择判断,进入关键路径的程序,然后对结点数的接收,分配相应的存储空间,构建AOE-网,逐个对图结点信息(包括俩邻接点,权值)输入接收,并与分配存储空间。

寻找关键路径:构建栈用与存储拓扑排序序列,求得每个接点的相应最早发生时间,最迟完成时间,关键事件的求取,并输出关键路径。

2.2 核心代码#include "stdafx.h"#include <cstdio>#include <cstdlib>#include <iostream>#include <iomanip>#include <process.h>using namespace std;//#define PROJECTUNMBER 9//10//#define PLANNUMBER 11//13typedef struct node{int adjvex;int dut;struct node *next;}edgenode;typedef struct{int projectname;int id;edgenode *link;}vexnode;//vexnode Graphicmap[PROJECTNUMBER];void GreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber){int begin,end,duttem;edgenode *p;for(int i=0;i<projectnumber;i++){Graphicmap[i].projectname=i;Graphicmap[i].id=0;Graphicmap[i].link=NULL;}printf("某项目的开始到结束在图中的节点输入<vi,vj,dut>\n");printf("如:3,4,9回车表示第三节点到第四节点之间的活动用了9个单位时间\n");printf("*********************************************\n");for(int k=0;k<activenumber;k++){scanf("%d,%d,%d",&begin,&end,&duttem);p=(edgenode*)malloc(sizeof(edgenode));p->adjvex=end-1;p->dut=duttem;Graphicmap[end-1].id++;p->next=Graphicmap[begin-1].link;Graphicmap[begin-1].link=p;}}int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime){int i,j,k,m=0;int front=-1,rear=-1;int* topologystack=(int*)malloc(projectnumber*sizeof(int));//用来保存拓扑排列int* vl=(int*)malloc(projectnumber*sizeof(int));//用来表示在不推迟整个工程的前提下,vl允许最迟发生时间int* ve=(int*)malloc(projectnumber*sizeof(int));//用来表示vj最早发生时间int* l=(int*)malloc(activenumber*sizeof(int));//用来表示活动Ai最迟完成开始时间int* e=(int*)malloc(activenumber*sizeof(int));//表示活动最早开始时间edgenode *p;totaltime=0;for(i=0;i<projectnumber;i++) ve[i]=0;for(i=0;i<projectnumber;i++){if(Graphicmap[i].id==0){topologystack[++rear]=i;m++;}}while(front!=rear){front++;j=topologystack[front];m++;p=Graphicmap[j].link;while(p){k=p->adjvex;Graphicmap[k].id--;if(ve[j]+p->dut>ve[k])ve[k]=ve[j]+p->dut;if(Graphicmap[k].id==0)topologystack[++rear]=k;p=p->next;}}if(m<projectnumber){printf("\n本程序说建立的图有回路不可计算出关键路径\n");printf("将退出本程序\n");return 0;}totaltime=ve[projectnumber-1];for(i=0;i<projectnumber;i++)vl[i]=totaltime;for(i=projectnumber-2;i>=0;i--){j=topologystack[i];p=Graphicmap[j].link;while(p){k=p->adjvex;if((vl[k]-p->dut)<vl[j])vl[j]=vl[k]-p->dut;p=p->next;}}i=0;printf("|起点|终点|最早开始时间|最迟完成时间|差值| 备注|\n");for(j=0;j<projectnumber;j++){p=Graphicmap[j].link;while(p){k=p->adjvex;e[++i]=ve[j];l[i]=vl[k]-p->dut;printf("| %4d | %4d | %4d | %4d | %4d |",Graphicmap[j].projectname+1,Graphicmap[k].projectname+1,e[i],l[i],l[i]-e[i]);if(l[i]==e[i])printf("关键活动 |");printf("\n");p=p->next;}}return 1;}void seekkeyroot(){int projectnumber,activenumber,totaltime=0;system("cls");printf("请输出这个工程的化成图形的节点数:");scanf("%d",&projectnumber);printf("\n");printf("请输入这个工程的活动个数:");scanf("%d",&activenumber);printf("\n");vexnode*Graphicmap=(vexnode*)malloc(projectnumber*sizeof(vexnode));GreateGraphic(Graphicmap,projectnumber,activenumber);SearchMapPath(Graphicmap,projectnumber,activenumber,totaltime);printf("整个工程所用的最短时间为:%d个单位时间\n",totaltime);system("pause");}int main(){char ch;for(;;){do{system("cls");printf("| 欢迎进入求关键路径算法程序 |");for(int i=0;i<80;i++)printf("*");printf("\n");printf("%s","(S)tart 开始输入工程的节点数据并求出关键路径\n");printf("\n");printf("%s","(E)xit 退出\n");printf("\n");printf("%s","请输入选择:");scanf("%c",&ch);ch=toupper(ch);if(ch!='S'&&ch!='E')printf("请输入正确的字符!\n");system("pause");}while(ch!='S'&&ch!='E');switch(ch){case'S':seekkeyroot();break;case'E':return 1;}}}2.3程序运行结果输入S开始程序(如图)输入节点数和活动个数(如图)输入E,退出程序3.课程设计心得这次的课程设计主要是对基础知识的灵活使用,这就让我进一步提高了对数据结构知识的巩固。

C++实现关键路径算法课程设计报告

C++实现关键路径算法课程设计报告

有向图的关键路径计算机与软件工程学院课程设计说明书课程名称: 数据结构与算法课程设计课程代码: 题目:年级/专业/班:学生姓名: 学号:开始时间:2013 年 12 月18 日完成时间:2013 年12月 28 日课程设计成绩:学习态度及平时成绩(20)技术水平与实际能力(20)完成情况(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(35)总分(100)指导教师签名:年月日目录引言 (1)1需求分析 (1)1.1任务与分析 (1)1.2测试数据 (1)2 概要设计 (3)2.1设计思路 (3)2.2层次图 (3)3 详细设计 (4)3.1主函数的实现 (4)3.2数据录入实现 (5)3.3输出图的各顶点和弧的实现 (6)3.4计算各顶点的入度 (7)3.5输出关键路径 (8)4调试分析 (8)5用户使用说明 (9)6测试结果 (9)6.1录入数据 (9)6.2功能实现 (10)6.3测试结论 (11)致谢 (13)参考文献 (14)摘要具有最大路径长度的路径称关键路径,关键路径上的活动称关键活动。

课程设计主要要求求有向图的关键路径。

用领接表存储结构储存有向图。

用深度遍历的方式输出有向图的顶点和弧。

程序实现了存储有向图,输出有向图的各顶点和弧,计算顶点的入度和求有向图的关键路径这四个功能。

用领接表存储结构储存有向图,用深度遍历的方式输出有向图的顶点和弧,用遍历查找的方式计算顶点的入度。

求关键路径时先用拓扑排序函数判断有向图是否有回路,调用求关键活动的函数找到关键路径,最后输出。

关键词:领接表;入度;AOE网;关键路径;有向图的关键路径引言工程有很多的阶段,这些阶段之间有一定的先后关系和自己的时间。

我们可以用图来表示工程,将其输入程序中,可以用程序计算出工程的相关信息,如,工程完成的最短时间,哪些活动会影响工程的进度等。

要解决这些问题就可以用领接表储存图,并计算各个事件和各个阶段的最早发生时间和最晚发生时间,得到关键活动,从而的到关键路径。

数据结构课程设计报告 关键路径的实现

数据结构课程设计报告 关键路径的实现

青岛理工大学数据结构课程设计报告题目:关键路径的实现院(系):计算机工程学院学生姓名:班级:学号:起迄日期: 2014.7.8—2014.7.19指导教师: 张艳一、需求分析1.问题描述找出实际工程中的关键路径,合理安排关键活动的施工顺序。

要求:(1)表示工程的图可以用邻接表或邻接矩阵存储;(2)应能以图形的方式输出图;(3)输出关键路径和关键活动。

2.基本功能(1)用邻接表存储有向图并建立AOE网 CreateGraph();(2)用图形的形式输出有向图Display();(3)输出关键路径和关键活动 SearchMapPath();3.输入输出输入: (1)有向图的顶点数和弧数,都是int型,中间用空格隔开;(2)图中的各个顶点的值,char型;(3)图中弧的权值、起点、终点,都是int型,中间用空格隔开;输出:起点(char)、终点(char) 、最早开始时间(int)、最迟开始时间(int)、差值(int)、是否为关键活动、关键路径。

二、概要设计1.设计思路:(1) 输入图的顶点数和弧数。

(2) 输入这个图中每段弧的起始点及权值。

(3) 用输入的数据建立AOE网。

(4) 用邻接表来存储图的这些信息。

(5) 用CreateGraph( )函数建立AOE图。

(6)用Display()函数输出AOE图。

(7) 用SearchMapPath ( )函数求出最长路径,并输出关键路径。

(8) 编写程序。

2.数据结构设计:(1)逻辑结构采用图状的结构。

图是一种较线性表和树更为复杂的数据结构。

在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素(即其孩子结点)相关,但只能和上一层中一个元素(即其双亲结点)相关;而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

数据结构课程设计报告---关键路径

数据结构课程设计报告---关键路径

数据结构课程设计报告---关键路径数 据 结 构课 程 设 计报 告院系: 信息管理学院 专业: 软件工程班级: 软件Q1141学号: 11150038姓名: 李艳平 教师: 邓沌华时间: 2013.4.2理论成绩 实践成绩 总成绩目录一、问题的描述二、系统需求及分析1、简要介绍2、需求分析3、概要设计4、详细设计(1)数据结构(2)创建有向图的邻接表(3)计算各事件及活动的相关信息(4)输出有向图的相关信息(5)判断图中是否有回路(6)计算并输出关键活动(7)计算并输出关键路径(8)操作入口三、系统实现四、设计总结五、附件(完整源代码)一、问题的描述:关键路径问题(起评分:85)1、功能:设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。

2、数据:自行设计每个活动的前导活动和后续活动以及活动的进行时间,然后依据这些活动的前后次序,画出其网络图,选择存储结构。

3、操作:(1)求工程最短工期;(2)输出关键路径;(3)输出关键活动。

4、要求:界面友好,提示信息完整。

二、系统需求及分析:1、简要介绍:我们通常把计划、施工过程、生产流程、程序流程等都当成一个工程。

工程通常分为若干个称为“活动”的子工程。

完成了这些“活动”,这个工程就可以完成了。

我们通常用AOE-网来表示工程。

AOE-网是一个带权的有向无环图,其中,顶点表示事件(EVENT),弧表示活动,权表示活动持续的时间。

AOE-网可以用来估算工程的完成时间。

他可以使人们了解:(1). 研究某个工程至少需要多少时间?(2). 哪些活动是影响工程进度的关键?由于AOE-网中的有些活动可以并行进行,从开始点到各个顶点,以致从开始点到完成点的有向路径可能不止一条,这些路径的长度也可能不同。

完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,这个工程才算完成。

因此,完成工程所需的最短时间是从开始点到完成点的最长路径的长度,即在这条路径上的所有活动的持续时间之和.这条路径长度就叫做关键路径(Critical Path)。

求关键路径设计报告 数据结构课程设计毕业设计(论文)word格式

求关键路径设计报告 数据结构课程设计毕业设计(论文)word格式

数据结构课程设计题目:关键路径的设计报告科系:计算机科学与技术班级:姓名:题目:1、编写拓扑排序和求关键路径的程序2、单源顶点最短路径问题设计报告一.需求分析1.在实际工程中拓扑排序和求关键路径是经常使用来安排任务的先后顺序,以及找出关键的路径,合理的安排非关键任务的施工顺序。

2.对用邻接矩阵表示的有向图,从某一顶点出发(称为源点)到该图其它各顶点(称为终点)有无路径?最短路径是什么?路径长为多少?问题要求写一个程序从有向网中的某一顶点出发找出该顶点到其余各顶点的最短路径。

对邻接矩阵cost[n][n]中的每一个元素只能有三种情况:①当i=j时,cost[i][j]=0;②当顶点i和j无边时,cost[i][j]=∞;③当顶点i和j有边,且其权值为W ij时,cost[i][j]=W ij。

由于题目中没有规定输出格式,此程序以顶点序号的形式将最短路径输出到终端上去,并输出该最短路径的长度。

二.概要设计1.1抽象数据类型图的定义如下:ADT Graph{数据对象V:V是具有相同特性的数据元素的集合,称为顶点集.数据对象I:I是具有相同特性的数据元素的集合,称为顶点集.数据关系R:R={VR}VR={(v,w)|v,w属于V,(v,w)表示v和w之间存在路径}基本操作P:Creat_ALGraph(&G,V,VR,I)初始条件:V是图的顶点集,VR是图中边的集合,I是边的权值。

操作结果:按V和VR的定义构造图G。

DFS(&G, v)初始条件:v是图的一个顶点,图G存在。

操作结果:从v点深度优先遍历图G。

DFSTraverse(&G)初始条件:图G存在。

操作结果:深度优先遍历图G。

FindIngree( G,b[])初始条件:图G存在,数组b[]已知。

操作结果:图G的每个顶点的度放在数组b中。

TopologicalSort(&G)初始条件:图G存在。

操作结果:对图G进行拓扑排序。

求aoe网关键路径课程设计

求aoe网关键路径课程设计

求aoe网关键路径课程设计一、课程目标知识目标:1. 理解网络图的基本概念,掌握关键路径的定义和求解方法。

2. 学会使用算法找出aoe网中的关键路径,并能够解释其作用和意义。

3. 掌握关键路径在网络工程项目中的应用,了解其对项目进度的影响。

技能目标:1. 能够正确绘制aoe网,准确地表示活动、事件及它们之间的依赖关系。

2. 掌握运用关键路径法进行项目时间管理和进度控制的能力。

3. 培养逻辑思维和问题解决能力,通过案例分析和团队合作,解决实际网络工程问题。

情感态度价值观目标:1. 培养学生对网络图和项目管理知识的好奇心和探索欲,激发学生学习算法的兴趣。

2. 增强学生的团队合作意识,培养沟通协调能力和责任感。

3. 通过解决实际问题的过程,使学生认识到数学模型在工程项目中的重要性,增强实践能力。

本课程针对高年级学生,结合其认知能力和学科特点,注重理论与实践相结合。

课程设计以实际案例为引导,通过问题驱动,引导学生主动探究,培养其独立思考和解决问题的能力。

教学要求强调学生对关键概念的理解,关注学生技能的掌握和情感态度的培养,确保学习成果的实用性和可衡量性。

二、教学内容本章节教学内容主要包括以下几部分:1. 网络图基本概念:活动、事件、aoe网、关键路径等。

- 教材章节:第二章第一节2. aoe网的构建与表示方法:- 教材章节:第二章第二节3. 关键路径算法:- 教材章节:第二章第三节- 内容:包括最早开始时间(Earliest Start Time, EST)、最晚开始时间(Latest Start Time, LST)、最早完成时间(Earliest Finish Time, EFT)、最晚完成时间(Latest Finish Time, LFT)的计算方法,关键路径的识别。

4. 项目时间管理和进度控制:- 教材章节:第二章第四节- 内容:运用关键路径法进行项目进度规划,调整活动顺序,优化项目时间。

5. 案例分析与团队合作:- 教材章节:第二章综合案例- 内容:结合实际网络工程项目,进行小组讨论和协作,解决关键路径相关问题。

关键路径代码课程设计

关键路径代码课程设计

关键路径代码课程设计一、课程目标知识目标:1. 学生能理解关键路径代码的概念,掌握其在项目管理中的作用;2. 学生能够运用所学知识,识别并构建项目网络图,正确标注事件和活动;3. 学生能够运用关键路径法,计算出项目的关键路径和各个活动的浮动时间;4. 学生理解关键路径在项目进度管理和风险管理中的重要性。

技能目标:1. 学生能够独立完成项目网络图的绘制,准确地标识事件和活动;2. 学生能够运用关键路径法,进行项目的时间分析和进度规划;3. 学生能够通过计算和分析,判断项目中可能的风险点,提出相应的应对策略;4. 学生通过小组合作,提高沟通协调能力和团队合作能力。

情感态度价值观目标:1. 学生培养对项目管理学科的兴趣,认识到项目管理在现代生活中的重要性;2. 学生在学习过程中,形成积极向上的学习态度,养成主动探索和解决问题的习惯;3. 学生通过课程学习,树立时间观念,增强对项目进度的把控能力;4. 学生在小组合作中,学会尊重他人意见,培养团队协作精神,提高人际沟通能力。

本课程结合学科特点、学生年级(假设为高中二年级)和教学要求,以实用性为导向,旨在让学生掌握关键路径代码的相关知识,提高项目管理和时间规划能力。

通过具体、可衡量的课程目标,使学生和教师能够清晰地了解课程的预期成果,为后续的教学设计和评估奠定基础。

二、教学内容本章节教学内容围绕关键路径代码的原理和应用,依据课程目标进行选择和组织,确保科学性和系统性。

教学内容主要包括以下几部分:1. 项目管理基本概念:介绍项目管理的定义、特点以及项目管理过程,让学生了解项目管理在实际应用中的重要性。

2. 网络图绘制:讲解如何绘制项目网络图,包括事件、活动、箭头和节点等基本要素,以及如何识别关键路径。

3. 关键路径法:详细讲解关键路径法的计算步骤,包括事件最早开始时间、最晚开始时间、最早完成时间和最晚完成时间的计算,以及活动浮动时间的确定。

4. 项目时间分析与进度规划:通过实际案例,分析关键路径在项目时间管理和进度规划中的应用,使学生掌握项目进度监控和调整的方法。

策划方案关键路径分析

策划方案关键路径分析

策划方案关键路径分析策划方案是指在项目或活动进行中所制定的一种详细计划,它通过设定目标、明确任务、确定资源、规划时间等步骤,为项目或活动的顺利进行提供了指导和保障。

关键路径分析是对策划方案进行评估和优化的重要方法,它通过识别项目或活动中的关键活动,找出影响整个项目或活动时间进度的关键路径,从而提高项目或活动的执行效率和成功率。

一、关键路径的概念关键路径是指在一个项目或活动的时间进度计划中,影响整个项目或活动完成时间的一系列关键活动的顺序排列。

在关键路径上的所有活动都必须按时完成,否则就会导致整个项目或活动的延误。

因此,通过分析关键路径,可以确定项目或活动完成的最早时间和最晚时间,从而为制定可靠的项目或活动进度计划提供参考依据。

二、关键路径的确定方法确定关键路径的方法主要有两种,即网络图方法和计划表法。

其中,网络图方法是一种以图形的形式来描述和分析项目或活动的方法,它将项目或活动划分为一系列的活动节点和事件节点,并通过活动之间的相互依赖关系来描绘整个项目或活动的流程。

而计划表法则是通过制定和详细地填写项目或活动进度计划表,来确定关键路径。

三、网络图方法的步骤网络图方法的步骤主要包括:确定活动、确定活动之间的顺序关系、计算活动的最早开始时间和最晚开始时间、计算活动的最早完成时间和最晚完成时间、确定关键路径。

通过这一系列的步骤,可以分析项目或活动的活动流程、活动的时间进度以及影响项目或活动时间进度的关键活动。

四、计划表法的步骤计划表法的步骤主要包括:制定进度计划表、填写进度计划表、计算活动的最早开始时间和最晚开始时间、计算活动的最早完成时间和最晚完成时间、确定关键路径。

计划表法相比于网络图方法更加简单直观,适用于一些较为简单的项目或活动。

五、关键路径的意义关键路径是确定项目或活动完成时间的关键因素,它直接影响着项目或活动的进度控制和管理。

通过识别关键路径,可以帮助项目或活动的负责人合理安排资源和时间,优化活动流程,确保项目或活动的按时完成。

策划方案关键路径分析

策划方案关键路径分析

策划方案关键路径分析一、引言在任何项目中,都存在着一系列的任务与活动。

这些任务与活动的完成时间不同,会对整个项目的进度产生影响。

为了确保项目能够按时完成,我们需要对任务与活动进行细致的分析与规划。

而关键路径分析则成为了项目管理中的重要工具。

二、什么是关键路径关键路径是指在一个项目网络圈图中,所有活动完成时间的总和最长的路径。

即,这条路径上的活动无法延误,否则整个项目会受到影响。

在关键路径上的活动称为关键活动,对于项目的进度控制具有至关重要的作用。

三、关键路径分析的意义关键路径分析可以帮助项目经理和团队成员确定项目进度,及时发现潜在风险,加强资源的管理和调度,以更好地掌控项目的整体进展。

四、关键路径分析的步骤1. 绘制项目网络图:将项目中的所有活动按照先后顺序绘制出来,活动之间用箭头表示任务的先后关系。

2. 确定活动的持续时间:对每个活动进行估算,估计其完成所需的时间。

根据历史数据、专家判断等方法来确定活动的时间。

3. 根据前后关系和活动持续时间,计算活动的最早开始时间、最晚开始时间、最早完成时间和最晚完成时间。

通过逐步计算,得到所有活动的时间表。

4. 计算关键路径:根据计算所得的活动时间表,找出整个项目中的关键活动。

关键活动的最早开始时间和最晚开始时间相等,最早完成时间和最晚完成时间相等。

5. 进行项目进度跟踪与管理:对关键活动进行特别关注和管理,确保其按时完成。

五、关键路径分析的优点1. 确定项目最短时间:通过对项目的关键路径进行分析,可以找出项目最短的完成时间,从而为决策提供参考。

2. 明确工作重点:关键路径上的活动是项目进度的重中之重,项目团队可以把精力更多地放在关键活动上,以确保项目的进展。

3. 提前发现并解决问题:通过关键路径分析,可以提前识别出可能会影响项目进度的风险和问题,从而采取相应的措施予以解决。

六、关键路径分析的局限性1. 对资源的需求无法评估:虽然关键路径分析可以帮助项目管理者把握项目进度,但无法准确评估项目所需资源的多少,不适合用来进行资源的分配和调度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

荆楚理工学院课程设计成果学院: 班级:学生姓名: 学号:设计地点(单位)设计题目:完成日期:年月日指导教师评语:成绩(五级记分制):教师签名:数据结构课程设计报告摘要关键路径是我们估算某些工程非常有用,是一种非常重要的估算一项工程所需的最短时间的依据。

本文对如何求一个工程的关键路径做了详细的说明,包括需求分析、概要设计、详细设计、测试与分析、总结、源程序清单。

首先,做了需求分析,解释了什么是关键路径,并指出它在估算工程中的重要作用。

然后给出求关键路径的概要设计,包括程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。

在概要设计的基础上,又给出了详细的算法设计,实现概要设计中定义的所有函数,对每个函数写出核心算法,并画出了流程图。

然后对编码进行了测试与分析(并在最后附上C语言编写的程序代码)。

最后对整个设计过程进行了总结。

【关键词】:关键路径;抽象数据类型;程序模块;核心算法;流程图。

目录1. 需求分析 (1)1.1 问题描述 (1)1.2 基本要求 (1)1.3 目的 (1)2 概要设计 (2)2.1算法分析 (2)2.2算法步骤 (3)2.3 数据结构 (3)2.3.1 数据结构 (3)2.3.2程序模块 (3)2.3.3各模块间的调用关系 (4)3 详细设计 (4)3.1 主要函数的核心代码 (4)4 测试 (5)4.1 开始界面 (5)4.2进入求关键路径的系统 (5)4.2.1输入节点数和活动个数 (6)4.2.2输入某项目的信息(弧头,弧尾,权值) (6)4.2.3打印出关键路径 (7)4.2.4课本上图7.29的程序测试 (7)4.2.5错误测试 (9)4.2.6回路测试 (9)5 总结 (10)参考文献 (12)附录:源程序代码 (13)1.需求分析1.1 问题描述1)选取建图的一种算法建立图,有邻接矩阵,邻接表,十字链表,邻接多重表等多种方法,要选取一种适当的方法建立图,才能提高算法效率,降低时间复杂度和空间复杂度。

2)两个相邻顶点与它们之间的边表示活动,边上的数字表示活动延续的时间。

对于给出的事件AOE网络,要求求出从起点到终点的所有路径,经分析、比较后找出长读最大的路径,从而得出求关键路径的算法,并给出计算机上机实现的源程序。

完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,这个工程才算完成。

具体要解决的问题有如下四个:1)将项目中的各项活动视为有一个时间属性的结点,从项目起点到终点进行排列;2)用有方向的线段标出各结点的紧前活动和紧后活动的关系,使之成为一个有方向的网络图;3)用正推法和逆推法计算出各个活动的最早开始时间,最晚开始时间,最早完工时间和最迟完工时间,并计算出各个活动的时差;4)找出所有时差为零的活动所组成的路线,即为关键路径;1.2 基本要求1)选取建图的一种算法建立图;选取邻接表的算法来建立图,是一种顺序+ 链式存储结构。

用顺序表存放顶点,为每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边或以该顶点为尾的弧。

2)两个相邻顶点与它们之间的边表示活动,边上的数字表示活动延续的时间参照该工程所化的AOE-网,求出从起点到终点的所有路径,然后通过拓扑排序和逆拓扑排序求出最早与最晚发生时间,找出长度最大的路径,从而求得关键路径。

1.3 目的在该部分,即需求分析中,根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么,以及限制条件是什么。

程序所能达到的功能:通过输入所要构建的图的顶点数,弧数,创建图,并打印出来,对图进行拓扑排序,求得此图的最早发生时间和最迟发生时间,并求得关键活动和关键路径,打印出来。

2 概要设计2.1算法分析(1) 求关键路径必须在拓扑排序的前提下进行,有环图不能求关键路径;(2) 只有缩短关键活动的工期才有可能缩短工期;(3) 若一个关键活动不在所有的关键路径上,减少它并不能减少工期;(4) 只有在不改变关键路径的前提下,缩短关键活动才能缩短整个工期。

(5) 关键路径:从源点到汇点的路径长度最长的路径叫关键路径。

(6) 活动开始的最早时间e(i);(7) 活动开始的最晚时间l(i);(8) 定义e(i)=l(i)的活动叫关键活动;(9) 事件开始的最早时间ve(i);(10) 事件开始的最晚时间vl(i)。

设活动ai由弧<j,k>(即从顶点j到k)表示,其持续时间记为dut(<j,k>),则:e(i)=ve(j)l(i)=vl(k)-dut(<j,k>)求ve(i)和vl(j)分两步:1.从ve(1)=0开始向前递推ve(j)=Max{ ve(i)+dut(<i,j>) }<i,j>T, 2<=j<=n其中,T是所有以j为弧头的弧的集合。

2.从vl(n)=ve(n)开始向后递推vl(i)=Min{ vl(j)-dut(<i,j>) }<i,j>S, 1<=i<=n-1其中,S是所有以i为弧尾的弧的集合。

两个递推公式是在拓扑有序和逆拓扑有序的前提下进行。

2.2 算法步骤(1) 输入e条弧<j,k>,建立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)(5) 最晚开始时间l(s),其中e(s)=l(s)的为关键活动。

2.3 数据结构2.3.1 数据结构typedef struct node//边表结点{int adjvex; //邻接点编号int dut; //弧的信息struct node *next; //下一条弧指针}edgenode;typedef struct //顶点表结点{int projectname;//顶点域int id;//顶点的入度信息edgenode *link; //边表头指针}vexnode;2.3.2程序模块int main()界面程序的主函数void seekkeyroot()求关键路径的主函数void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber) 函数建立AOE图Int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime)求出最大路径,并打印出关键路径2.3.3各模块间的调用关系主函数void main()要调用:求关键路径的函数seekkeyroot();求关键路径的函数seekkeyroot()要调用:创建图的函数CreateGraphic(Graphicmap,projectnumber,activenumber) 求最大路径并打印出关键路径的函数int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime)3 详细设计3.1 主要函数的核心代码要求:1)建立一个AOE图,并输出结果确保创建成功;2)判断AOE图是一个拓扑有序序列,如果不是拓扑有序则报错;3)编写函数求AOE图的关键路径;4)打印输出关键路径;5)每一个函数要有必要的注释,在课程设计论文中有流程图。

具体代码请见附录:源程序清单。

3.2 程序流程图4 测试4.1 开始界面4.2进入求关键路径的系统4.2.1输入节点数和活动个数4.2.2输入某项目的信息(弧头,弧尾,权值)4.2.3打印出关键路径4.2.4课本上图7.24的程序测试求上述AOE-网的操作为:求的关键路径为:4.2.5错误测试应输入的数为整形,若输入非整形的数据,则程序遇到问题关闭。

4.2.6回路测试5 总结历时两周的课程设计终于结束了,现在来做一下总结。

首先,关于程序方面,我发现即使对设计思路有了眉目,知道了所要用到的数据结构、用邻接表来存储AOE-网、建立栈来求拓扑序列、输出的拓扑序列的个数少于节点数则有回路等等,要把这些方法写成函数代码,其实还是一件非常不容易的事情。

再加上要完善设计思路,构造整个程序框架在内,都是一件工作量非常大的工作。

幸好,有很多资料可以在网路上搜到。

所以课程设计的第一天,我们搜集了很多关于关键路径的资料,包括几种不同思路的程序代码,以及程序流程。

然后我们的工作就变成:尽量看懂并整理这些代码,然后再其基础上筛选需要的功能,按照自己的意愿来修改与完善。

在处理程序代码的时候,有两个问题始终解决不了。

一是程序输入时只能输入整形数据,而非整形的输入则会导致程序异常停止,但是因为整形的输入方式已贯穿整个程序,若要修改只能另外重做整个程序,所以暂不考虑修改,而打算做一个判错系统,判断若非整形的输入则报错;二是第一种错误的解决方案未能成功实行,于网络上搜索到了几种判断是否为整形数据的程序代码,但将其修改融合到求关键路径的程序中,虽然没有错误可以运行,但是却不能正确的报错并且这样做感觉有点超纲,不是本学期学到的运用到设计程序上。

于是,在尝试多种方案却仍不成功的前提下,我只好选择加上提示语,即:printf("请输入某项目的信息,并请用整形数字表示(格式:弧头,弧尾,权值):\n"); 。

不过在操作界面的人性化上,我倒尽可能的做得很完善,无论从美观角度还是方便清楚操作,都实行了非常人性化的方式。

因为通常清楚程序的人,知道怎么操作以及该输入什么,而不清楚的人却有很大可能在细节方面输入错误导致程序运行失败,或是根本不知道应该怎么输入。

所以,尽可能的人性化的设计是非常有必要的,让不懂程序的人也可以正确的操作运行。

其次,关于课程设计报告方面,大一时任正云我们的要求非常严格,对课程设计报告的要求与毕业设计的格式相当,但一大堆的要求、规定、格式等,完成起来却真的很麻烦也很辛苦。

然而,经过了几天的“努力报告”的状态,常常一弄就弄很长时间,时常做到很晚还在做报告内容、目录、页眉页脚、程序截图……再加上关键路径的课程内容,是在几天辛苦又充实。

我认为这样的课程设计比较有意义,独立完成资料的搜集以及课设的内容,然后团队的做出报告,让这个过程很完整,无论是知识方面、还是报告的书写方面,都学到了更多的东西,为毕业设计打下了良好的基础。

最后,做再次一下总结。

相关文档
最新文档