怎么实现求关键路径的算法步骤算法动态演示

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

阅读已结束,下载本文需要

下载文档到电脑,同时保存到云知识,更方便管理

还剩2页未读, 继续阅读

状态:共49讲 更新完毕

《数据结构》作为一门独立的课程最早是美国的一些大学开设的,1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。从60年代末到70年代初,出现了大型程序,软件也相对独立,结构程序设计成为程序设计方法学的主要内容,人们就越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。

数据结构是计算机程序设计的重要理论技术基础,它对理论和实践的要求都相当高,具有相当的难度,且内容较多。本课程旨在讨论现实世界中数据(即事物的抽象描述)的各种逻辑结构在计算机中的存储结构,以及进行多种非数值基本运算的方法,让学生学习、分析和研究计算机加工数据对象的特性,掌握数据的组织方法,以便选择合适的数据的逻辑结构和存储结构,设计相应的操作运算,把现实中的问题转化为在计算机内部的表示和处理。在计算机应用领域中,尤其是在系统软件和应用软件的设计和应用中都要用到各种数据结构,这对提高程序编制和软件设计水平都有很大的帮助。

数据结构是计算机科学与技术专业的核心课程之一,属于专业基础课,是一门理论与实践相结合的课程。随着信息技术的发展,数据结构课程不仅是计算机科学与技术专业必修的核心课,同时也是电子工程、信息工程等专业的重要选修课程。本课程是针对我校非计算机专业本科生不同基础、不同能力和学习目标等情况而开设的。适合我校广大非计算机专业,包括理科、文科在内,本科生学习计算机程序设计的技术基础知识。

  • 数据结构及应用算法教学大纲

    第一章 预备知识(4学时)

    1.5 结构化程序设计

    第二章 数据结构导论(4学时)

    2.2 数据结构知识层次

    2.3 算法及算法分析概述

    第三章 线性结构(6学时)

    3.2 线性结构基本操作

    3.3 线性结构表示方法:数组表示(线性表及其基本操作的实现)

    3.4 线性结构表示方法:指针表示(线性表及其基本操作的实现)

    3.5 线性结构深入(双向链表、循环链表等,若干稍复杂的示例及算法分析)

    3.6 线性结构应用:特殊矩阵表示

    第四章 堆棧与队列(6学时)

    4.1 堆栈定义与表示

    4.3 堆栈应用示例(若干不同难度的示例)

    4.4 队列定义与表示

    4.6 队列应用示例(若干不同难度的示例)

    第五章 字符串(4学时)

    5.1 字符串定义与表示

    5.3 字符串应用示例

    5.4 字符串匹配算法(KMP等算法)

    第六章 树与二叉树(8学时)

    6.1 树的定义与表示i

    6.2 树的操作与应用示例

    6.3 二叉树定义与表示

    6.5 二叉树应用示例(树、森林与二叉树转换,Huffman树)

    *6.6 二叉树深入(AVL树、B树)

    7.1 图的定义与表示

    7.3 图的应用示例(连通、最小生成树、拓扑排序、关键路径和最短路径)

    7.4 图的深入(搜索与回溯等)

    第八章 查找算法(4学时)

    8.2静态查找(顺序、有序、树、索引等方式)

    8.3 动态查找(二叉树、B+树、键树、)

    *8.5 查找算法深入(2-3树,红黑树等)

    第九章 排序算法(6学时)

    9.4 选择排序(简单、树形、堆)

    第十章 文件结构(4学时)

    10.1 文件结构概述

    *第十一章 算法设计策略

    11.1 算法设计概述

    11.4 动态规划策略

    11.6 分支定界策略

spContent=本课程针对学习程序设计语言之后,需要开发软件而遇到问题不知怎么处理,怎么寻找解决问题的方法,怎么存储数据及关系,以及学习了《数据结构与算法》课程,但是写程序就感觉无从下手的同学。 关于本课程详细特色请见本页最后的常见问题。

    《数据结构与算法》课程是计算机科学与技术的学科基础课程,不仅是《计算机图形学》、《计算机网络》、《编译原理》、《计算机操作系统》等后续课程的基础理论之一,其应用范围也早已扩展到图像处理与模式识别、海量数据挖掘、科学数据处理、复杂网络分析等许多计算机前沿领域。

      本课程研究计算机处理数据的结构特性,学习线性表、树、图等常用数据结构的逻辑结构与存储结构;学习分治递归、动态规划、贪心算法等典型算法,掌握分析与推导算法效率的方法。  

   通过对本课程的学习,能够解决非数值计算与工程应用问题,达到选择或设计恰当的逻辑结构、存储结构及相应的算法的水平,为学生进一步理论学习和解决实际工程应用问题打下坚实的基础。通过理论知识的系统学习与工程实验的操作,初步培养学生的计算思维能力、算法设计与分析能力、程序设计与编程实现能力、计算机系统的认知、分析、设计和运用能力工程实践能力。

本课程面向计算机专业或者非计算机专业,但有程序设计语言基础的同学。

(3)    算法的定义及特性;算法的最坏复杂度性能分析,常见计算机算法的运行时间。

(1)    掌握:数据结构及算法的概念内涵、特点及作用;分析和计算算法的时间和空间复杂度。

(2)    理解:算法分析的数学基础,渐近表示的特点及其与精确数学表示的差异。

(3)    了解:项目开发基本流程;分析程序效率的基本方法;常见算法的运行时间。

多媒体课件结合板书面授

(1) 线性表的定义、逻辑结构特点。

(2) 线性表的存储结构——顺序存储和链式存储及其存储特点。

(3) 线性表的基本操作——查找、插入、删除在顺序存储及链式存储结构上的具体编程实现。

(4) 各种变形链表(循环链表、双向链表、带头结点的链表等)的含义及基本操作的编程实现。

(5) 数组的地址计算方法

(6)    栈、队列的定义,栈与队列在两种存储结构上的实现。循环队列的判满、判空方法。栈与队列的简单应用。

b)        顺序表和链表的一些常见操作及编程实现,及这两种线性结构各自适用的应用场合。运用线性表解决一些简单的实际问题。

(1) 多媒体课件结合板书面授;

(2) 多媒体课件结合示例代码讲解、分析和演示;

(3) 程序编写与调试演示;

(4) 上机编程练习与辅导

第三章   查找、排序与分治递归(3周,每个内容各1周)

(1)    查找的基本概念。顺序查找、折半查找、索引查找的方法。

(2)    哈希表的基本概念,哈希函数构造方法及冲突处理策略,哈希表的查找、插入、删除等操作方法。

(3)    排序的基本概念。各种内部排序算法,包括插入排序、快速排序、选择排序、归并排序。各种排序算法的性能及复杂度分析。

(4)    分治递归算法的思想,分治递归算法设计基本步骤,利用分治递归的思想设计:大整数乘法。

c)       直接插入排序、折半插入排序等插入排序算法;冒泡排序和快速排序等交换排序算法;简单选择排序算法;归并排序算法

(1) 多媒体课件结合板书面授;

(2) 多媒体课件结合示例代码讲解、分析和演示;

(3) 程序编写与调试演示;

(4) 上机编程练习与辅导。

(5) 程序编写与课堂讨论;

(3)    二叉树、树及森林的顺序存储及链式存储,各种遍历方法及相互间的转换。

(4)    二叉排序树、平衡二叉树的构建、结点查找、插入与删除。

B树、2-3树的定义及基本操作。

(1) 多媒体课件结合板书面授;

(2) 多媒体课件结合示例代码讲解、分析和演示;

(3) 提问式引导教学;

(4) 程序编写与调试演示,课题讨论;

(5) 上机编程练习与辅导

(1)    图的基本概念,基本操作和存储——邻接矩阵、邻接表(逆邻接表)。

(4)    图的生成树和最小生成树,最小生成树的两种构建方法——普里姆和克鲁斯卡尔。

(5)    图中两结点以及所有结点间最短路径的求取方法——迪杰斯特拉和弗洛伊德方法。

(1) 多媒体课件结合板书面授;

(2) 多媒体课件结合案例讲解工程开发流程;

(3) 上机编程练习与辅导。

(4) 项目驱动型教学;

(5) 程序编写与课堂讨论;

(3)    动态规划应用:包括0-1背包问题、矩阵链乘法问题、文本相似度对比问题、装配线调度问题、权重化的活动安排问题等。

b)      动态规划问题解题方法和典型应用:0-1背包问题、矩阵链乘法问题、文本相似度对比问题、权重化的活动安排问题。

动态规划的基本原理、指导原则、基本步骤和最优化思想。

其他各种动态规划算法及其变形。

(1) 多媒体课件结合板书面授;

(2) 多媒体课件结合案例讲解工程开发流程;

(3) 上机编程练习与辅导

(4) 项目驱动型教学;

(5) 程序编写与课堂讨论;

程序设计语言(C,C++,java,python等任何一门语言)

本课程以C语言为基础进行讲解,但学习了其他语言的同学可以无障碍学习本课程内的容并同样受益。

林劼,刘震,陈端兵,戴波. 数据结构与算法. 北京:北京大学出版社,2018.

吴跃,等. 数据结构与算法. 北京: 机械工业出版社, 2010.

王晓东. 算法设计与分析. 2版. 北京:清华大学出版社.

Q :  那么多《数据结构》或者《数据结构与算法》课程,我们课程明显特色是什么?

细心的同学可能发现不少名字叫做《数据结构》,或者名字叫《数据结构与算法》的课程,但其中算法部分只是包括了查找,排序等基本算法,而我们的算法课程除了其他课程的核心主要内容,还包括:递归与分治,贪心算法,动态规划。

这些算法经典而用途广泛,许多同学在学习其他数据结构课程的时候,常常有为什么这些人能够想到这种求解思路的困惑,或者有哪些规律,能够解决哪些类型的问题,我们课程中能够解答您的这些疑惑。举一个非常常见的 最小生成树 问题作为例子,其他课程您可能学习之后知道通过加点或者加边的方式能够得到最小生成树,但是您不会知道算法思想来自于贪心算法,也不知道为什么这种方法能够得到全局最优解,而比如找硬币问题,也可以采用贪心算法求解,可是却不一定能够得到全局最优解。通过这些典型算法的学习与应用,不但能够打下更加扎实的基础,还能够触类旁通,举一反三。

我们课程的另外1个特色,就是很多同学学习其他《数据结构》or《数据结构与算法》课程,会造成一种错觉:以为本课程就是一门理论课程,并不能解决寻找算法用程序编写软件解决大部分现实世界问题的能力。实际上,我们通过案例引导及分析,就是要让同学们不但能够找到解决问题的算法,还具有根据算法编写软件的能力。特别是第一章线性表,我们可以说是一步步的讲解怎么写程序实现基本操作,怎么写程序实现更加复杂的问题。

所以,学习本课程,不要满足于听懂,还要积极参与讨论,开拓您的思路;还要把所思所想转换成为代码程序,只有从基础开始多做思路转换为代码的编程练习,最终才具有解决复杂问题和未知问题的能力和编程水平!

Q :  课程采用C语言作为教学语言,我学的是python/c++/java/其他语言,能够学好本课程吗?怎么学?

A :  当然可以,我们虽然以C语言作为教学语言,但是原理都是通的,您只需要把我们的C语言代码用您熟悉代码展示,完成的作业或者测验也采用您的语言也是可以的。大部分作业或者测验,我们会考虑同学们编程语言不同的问题,尽量用算法或者伪代码描述,需要实际编程的不会限制语言。

我要回帖

更多关于 关键路径算法 的文章

 

随机推荐