算法设计与分析教学大纲
算法设计与分析 教学大纲
《算法设计与分析》教学大纲适用于四年制本科计算机应用技术、信息与计算科学专业(参考学时数:64 学时)一、课程代码7100450,7100451二、课程的性质、任务算法设计与分析是计算机科学的核心问题之一,这门课是计算机专业以及相关专业的一门重要的课程。
本课程的教学目的是:在学生学习掌握了编程的基本技术,掌握了数据结构的基本知识、理论的基础上,比较系统的学习算法理论中的基础部分内容。
在这一课程教学中,培养学生掌握算法设计的方法论,掌握常用的算法设计的方法;掌握算法分析的基本工具、方法、技巧,在解决实际问题时,对于较复杂的问题能抽象出问题的数学模型,设计出有效的算法。
在此基础上学习本课程的中级篇:结构上的算法设计(分类、图的高级部分、流),学生通过这部分的学习,了解算法优化的实现途径,很好的解决数据结构中未能解决的问题、最后是本课程的高级篇:NP完全理论、现代优化计算方法简介。
学生通过这部分的学习初步了解计算复杂性理论的基本内容、现代算法的几个主要发展分支,为今后实际应用或者搞理论研究打下一些必备的理论基础。
三、课程基本要求学生必备的先行课是:高等数学、离散数学、程序设计、数据结构。
本课程不能求快,应循序渐进,培养学生浓厚的学习热情和求知欲。
教学中注重和前期课程数据结构的衔接,使学生明白这门课不同于数据结构的是:数据结构是讨论三种基本数据结构上的基本操作的实现,它是完成“如何做”,算法设计与分析这门课强调的是:怎么巧做,做的更好。
在本课程的后期教学中,特别提倡学生广泛阅读参考书、独立思考、结合实际问题展开讨论的教学方式,并以此达到教师精讲、学生宽学的目的。
课程的基本要求是:1.掌握7种常用的算法设计方法,并能综合、灵活的使用这些基本方法,同时用所学到的知识解决一些实际问题;2.掌握算法分析的基本工具、基本技巧、基本方法;3.掌握数据结构中未能详细、深入了解的部分内容(内存分类,图的高级部分、流上的算法);4.了解计算复杂性理论中的基本内容,包括:机器模型,NP完全、NP难题,近似计算;5.了解现代的计算算法和算法理论的发展趋势走向。
算法设计与分析课程教学大纲
算法设计与分析课程教学大纲【适用专业】计算机科学与技术【课时】理论课时:32【学分】 2【课程性质、目标和要求】《算法设计与分析》是计算机科学与技术专业的专业课。
无论是计算科学还是计算实践,算法都在其中扮演着重要角色。
本课程的教学目的是讲授在计算机应用中常常遇到的实际问题的解法,讲授设计和分析各种算法的基本原理、方法和技术,培养学生对算法复杂性进行正确分析的能力。
课程基本要求是⑴掌握算法分析的基本概念和理论。
⑵掌握算法设计技术和分析算法以及算法复杂性。
【教学时间安排】本课程计 2 学分,理论课时32, 学时分配如下:【教学内容要点】第一章算法引论一、学习目的要求1.了解算法的计算复杂性分析方法2.理解算法分析的基本理论3.掌握算法分析的基本概念二、主要教学内容1. 算法的基本概念2. 表达算法的抽象机制3. 采用Java语言与自然语言相结合的方式描述算法的方法4. 算法的计算复杂性分析方法第二章递归与分治策略一、学习目的要求1.理解典型范例中递归与分治策略应用技巧2.掌握递归与分治策略3.掌握数学归纳法证明算法正确性方法二、主要教学内容1. 递归的概念2. 分治法的基本思想3. 二分搜索技术4. 大整数的乘法5. Strassen阵乘法6. 棋盘覆盖7. 合并排序8. 快速排序9. 线性时间选择10. 最接近点对问题11. 循环赛日程表第三章动态规划一、学习目的要求1.理解典型范例中动态规划算法的设计思想2.掌握动态规划算法的基本要求以及算法的设计要点二、主要教学内容1. 矩阵连乘问题2. 动态规划算法的基本要素3. 最长公共子序列4. 最大子段和5. 凸多边形最优三角剖分6. 多边形游戏7. 图像压缩8. 电路布线9. 流水作业调度10. 0—l背包问题11. 最优二叉搜索树12. 动态规划加速原理三、课堂讨论选题1. 最长公共子序列2. 0—l背包问题第四章贪心算法一、学习目的要求1.了解贪心算法的理论基础及基本要素2. 理解典型范例中贪心算法的设计思想3. 掌握贪心算法的设计要点二、主要教学内容1. 活动安排问题2. 贪心算法的基本要素3. 最优装载4. 哈夫曼编码5. 单源最短路径6. 最小生成树7. 多机调度问题8. 贪心算法的理论基础三、课堂讨论选题1. 最优装载2. 单源最短路径第五章回溯法一、学习目的要求1.理解回溯法的效率分析方法2.掌握回溯法的算法框架和应用技巧二、主要教学内容1. 回溯法的算法框架2. 装载问题3. 批处理作业调度4. 符号三角形问题5. n后问题6. 0—l背包问题7. 最大团问题8. 图的m着色问题9. 旅行售货员问题10. 圆排列问题11. 电路板排列问题12. 连续邮资问题13. 回溯法的效率分三、课堂讨论选题1. 0—l背包问题2. 图的m着色问题第六章分支限界法一、学习目的要求1.理解分支限界法的基本思想2.掌握典型范例中分支限界法的应用技巧二、主要教学内容1. 分支限界法的基本思想2. 单源最短路径问题3. 装载问题4. 布线问题5. 0-1背包问题6. 最大团问题7. 旅行售货员问题8. 电路板排列问题9. 批处理作业调度三、课堂讨论选题1. 0-1背包问题2. 批处理作业调度第七章概率算法一、学习目的要求1.理解概率算法的基本思想2.掌握典型范例中概率算法的应用技巧二、主要教学内容1. 随机数2. 数值概率算法3. 舍伍德算法4. 拉斯维加斯算法5. 蒙特卡罗算法第八章 NP完全性理论一、学习目的要求1.了解P类与NP类问题2.了解典型的NP完全问题二、主要教学内容1. 计算模型2. P类与NP类问题3. NP完全问题4. 一些典型的NP完全问题第九章近似算法一、学习目的要求1.掌握近似算法的基本思想2.掌握常用近似算法的应用二、主要教学内容1. 近似算法的性能2. 顶点覆盖问题的近似算法3. 旅行售货员问题近似算法4. 集合覆盖问题的近似算法5. 子集和问题的近似算法第十章算法优化策略一、学习目的要求1.掌握算法优化策略2.掌握算法优化的基本方法二、主要教学内容1. 算法优化策略的比较与选择2. 动态规划加速原理3. 问题的算法特征4. 优化数据结构5. 优化搜索策略【教学(实验)内容要点】算法设计与分析实验是算法设计与分析课的一个实践性教学环节。
算法设计与分析教学大纲
算法设计与分析教学大纲一、课程介绍1.1 课程背景算法设计与分析是计算机科学的一门重要课程,其主要目的是教授学生算法设计的基本原理、常用算法的实现技巧以及算法性能的分析方法。
本课程旨在培养学生的算法设计能力和问题解决能力,为其今后从事计算机领域的研究和开发工作打下坚实的基础。
1.2 课程目标本课程的目标是使学生:- 掌握算法设计的基本思想和方法;- 熟悉常见的算法设计和实现技巧;- 理解算法的正确性和效率分析方法;- 能够运用所学算法解决实际问题。
二、教学内容2.1 算法基础- 算法的定义与特性;- 算法的表示方法;- 算法设计的基本思想;- 算法分析的基本概念。
2.2 常见算法设计技巧- 递归与分治法;- 贪心法;- 动态规划;- 回溯法。
2.3 数组与矩阵算法- 线性查找;- 二分查找;- 排序算法(如冒泡排序、快速排序等);- 矩阵运算与应用。
2.4 图算法- 图的基本概念与表示方法;- 图的遍历算法(如深度优先搜索、广度优先搜索等);- 最短路径算法(如Dijkstra算法、Floyd算法等);- 最小生成树算法(如Prim算法、Kruskal算法等)。
2.5 字符串算法- 字符串匹配算法(如朴素匹配算法、KMP算法等);- 字符串编辑距离算法;- 字符串压缩与编码算法。
三、教学方法3.1 理论讲授通过课堂讲授,介绍算法设计与分析的基本概念、原理和方法,并结合具体案例进行讲解,帮助学生深刻理解算法的设计思想和实现技巧。
3.2 课堂练习在理论讲授的基础上,组织学生进行算法设计的实践与练习,通过编写代码解决问题,培养学生的分析和解决问题的能力。
3.3 实验教学设置相关实验项目,让学生通过实验操作来巩固和应用所学算法知识,培养学生独立分析和解决实际问题的能力。
3.4 作业与考核布置实践作业,要求学生独立完成算法设计与实现,以检验学生对所学知识的掌握程度。
通过考核测试学生对算法设计和分析的理解与应用能力。
算法设计与分析课程教学大纲
算法设计与分析课程教学大纲【适用专业】计算机科学与技术【课时】理论课时:32【学分】 2【课程性质、目标和要求】《算法设计与分析》是计算机科学与技术专业的专业课。
无论是计算科学还是计算实践,算法都在其中扮演着重要角色。
本课程的教学目的是讲授在计算机应用中常常遇到的实际问题的解法,讲授设计和分析各种算法的基本原理、方法和技术,培养学生对算法复杂性进行正确分析的能力。
课程基本要求是⑴掌握算法分析的基本概念和理论。
⑵掌握算法设计技术和分析算法以及算法复杂性。
【教学时间安排】本课程计 2 学分,理论课时32, 学时分配如下:【教学内容要点】第一章算法引论一、学习目的要求1.了解算法的计算复杂性分析方法2.理解算法分析的基本理论3.掌握算法分析的基本概念二、主要教学内容1. 算法的基本概念2. 表达算法的抽象机制3. 采用Java语言与自然语言相结合的方式描述算法的方法4. 算法的计算复杂性分析方法第二章递归与分治策略一、学习目的要求1.理解典型范例中递归与分治策略应用技巧2.掌握递归与分治策略3.掌握数学归纳法证明算法正确性方法二、主要教学内容1. 递归的概念2. 分治法的基本思想3. 二分搜索技术4. 大整数的乘法5. Strassen阵乘法6. 棋盘覆盖7. 合并排序8. 快速排序9. 线性时间选择10. 最接近点对问题11. 循环赛日程表第三章动态规划一、学习目的要求1.理解典型范例中动态规划算法的设计思想2.掌握动态规划算法的基本要求以及算法的设计要点二、主要教学内容1. 矩阵连乘问题2. 动态规划算法的基本要素3. 最长公共子序列4. 最大子段和5. 凸多边形最优三角剖分6. 多边形游戏7. 图像压缩8. 电路布线9. 流水作业调度10. 0—l背包问题11. 最优二叉搜索树12. 动态规划加速原理三、课堂讨论选题1. 最长公共子序列2. 0—l背包问题第四章贪心算法一、学习目的要求1.了解贪心算法的理论基础及基本要素2. 理解典型范例中贪心算法的设计思想3. 掌握贪心算法的设计要点二、主要教学内容1. 活动安排问题2. 贪心算法的基本要素3. 最优装载4. 哈夫曼编码5. 单源最短路径6. 最小生成树7. 多机调度问题8. 贪心算法的理论基础三、课堂讨论选题1. 最优装载2. 单源最短路径第五章回溯法一、学习目的要求1.理解回溯法的效率分析方法2.掌握回溯法的算法框架和应用技巧二、主要教学内容1. 回溯法的算法框架2. 装载问题3. 批处理作业调度4. 符号三角形问题5. n后问题6. 0—l背包问题7. 最大团问题8. 图的m着色问题9. 旅行售货员问题10. 圆排列问题11. 电路板排列问题12. 连续邮资问题13. 回溯法的效率分三、课堂讨论选题1. 0—l背包问题2. 图的m着色问题第六章分支限界法一、学习目的要求1.理解分支限界法的基本思想2.掌握典型范例中分支限界法的应用技巧二、主要教学内容1. 分支限界法的基本思想2. 单源最短路径问题3. 装载问题4. 布线问题5. 0-1背包问题6. 最大团问题7. 旅行售货员问题8. 电路板排列问题9. 批处理作业调度三、课堂讨论选题1. 0-1背包问题2. 批处理作业调度第七章概率算法一、学习目的要求1.理解概率算法的基本思想2.掌握典型范例中概率算法的应用技巧二、主要教学内容1. 随机数2. 数值概率算法3. 舍伍德算法4. 拉斯维加斯算法5. 蒙特卡罗算法第八章 NP完全性理论一、学习目的要求1.了解P类与NP类问题2.了解典型的NP完全问题二、主要教学内容1. 计算模型2. P类与NP类问题3. NP完全问题4. 一些典型的NP完全问题第九章近似算法一、学习目的要求1.掌握近似算法的基本思想2.掌握常用近似算法的应用二、主要教学内容1. 近似算法的性能2. 顶点覆盖问题的近似算法3. 旅行售货员问题近似算法4. 集合覆盖问题的近似算法5. 子集和问题的近似算法第十章算法优化策略一、学习目的要求1.掌握算法优化策略2.掌握算法优化的基本方法二、主要教学内容1. 算法优化策略的比较与选择2. 动态规划加速原理3. 问题的算法特征4. 优化数据结构5. 优化搜索策略【教学(实验)内容要点】算法设计与分析实验是算法设计与分析课的一个实践性教学环节。
《算法设计与分析》实验大纲
《算法设计与分析》课程实验教学大纲Design and Analysis of Computer Algorithm总学时 16 总学分 0.5 实验学时 16一、基本情况1. 课程性质:专业实践2. 设课方式:独立设课3. 适用专业:计算机科学与技术专业4. 开课学期:第5学期5. 实验教材:《算法设计与分析》实验指导书6. 先修课程:高级语言程序设计、离散数学、数据结构二、课程简介算法设计与分析实验将覆盖计算机软件实现中的大部分算法,具有一定的深度和广度,目的是让学生掌握递归与分治策略、动态规划、贪心算法、回溯法、分支限界法等算法思想;能独立运用相关算法策略来分析、解决实际问题并编程实现。
同时,算法设计与分析实验是对学生在软件设计方面的综合训练,包括问题分析,总体结构设计,程序设计基本技能和技巧等,以培养良好的编程风格和科学作风。
通过理论联系实际,最终提高学生动手操作的能力以及分析问题和解决问题的能力,培养对算法的复杂性进行分析的逻辑思维能力。
三、实验目的与任务实验是教学内容的重要一环,其目的一方面是为了让学生掌握算法设计与分析中的一些常用的典型的算法设计思想和方法;另一方面是为了让学生切实掌握各种算法的具体实现方法,培养学生的实际动手能力,加强学生创新思维能力的培养。
四、课程的基本要求(1)了解实验目的,熟悉实验环境。
(2)预习实验,准备好实验题目和操作步骤。
(3)能编译调试源程序,分析错误原因并加以修改,得出正确结果。
(4)能运用所学的知识正确分析程序得出的结果,并能给出改进的方案。
(5)将上述各项要求及实验结果编写成实验报告。
实验前学生要认真预习实验内容,按要求编写源程序及准备测试数据。
实验中,要按操作规程操作计算机,集中精力调试程序,并认真测试实验数据。
对实验程序的故障应自行分析解决,不拷贝其它人的成果。
对实验得出的结果能加以分析,提出改进的具体措施。
掌握递归与分治策略、动态规划、贪心算法、回溯法、分支限界法等算法思想;能独立运用相关算法策略分析问题、解决实际问题并编程实现。
算法分析与设计教学大纲
算法分析与设计教学大纲一、课程概述二、预修条件1.数据结构基础知识。
2.编程语言基础。
三、授课目标1.掌握算法分析的基本方法和工具。
2.理解常见算法的设计思想和实现技巧。
3.能够独立设计、实现和优化算法解决实际问题。
四、教学内容1.算法基础知识(1)算法的概念和分类(2)算法分析的基本概念和方法(3)复杂度分析(4)递归与递归算法(5)分治法与减治法2.基本算法设计(1)贪心算法(2)动态规划算法(3)回溯算法3.高级算法设计(1)图算法:最短路径、最小生成树等(2)网络流算法:最大流、最小割等(4)近似算法:近似算法的基本思想与应用4.数据结构与算法分析(1)线性表和链表(2)栈和队列(3)树和二叉树(4)图和图的遍历算法五、教学方法1.理论课讲授:通过教师讲解、演示和示范等方式,让学生掌握算法基本知识和分析方法。
2.实践教学:通过课程设计和编程实践,让学生动手实践算法设计与实现,并对其进行分析和优化。
3.讨论与交流:组织学生进行小组讨论和互动交流,培养学生的合作学习能力和问题解决能力。
六、教学评估1.平时成绩:考察学生的课堂参与、作业完成情况和实验报告质量。
2.期中考试:考察学生对课程内容的掌握和理解。
3.期末考试:考察学生对课程内容的整体把握和综合应用能力。
七、参考教材1. 算法导论(第3版)- Thomas H. Cormen等2. 算法设计与分析基础(第4版)- Levitin A. V.八、教学资源1.电子课件和习题集。
2.在线编程平台和算法分析工具。
九、教学进度安排1.第1-2周:算法基础知识2.第3-5周:基本算法设计3.第6-8周:高级算法设计4.第9-11周:数据结构与算法分析5.第12-14周:综合应用与实践6.第15周:复习与总结备注:以上为算法分析与设计教学大纲的基本框架和内容,具体教学安排和进度可根据实际情况进行调整补充。
算法设计与分析教学大纲
算法设计与分析教学大纲课程概述算法设计与分析是计算机专业的核心课程。
学习该课程对学习其他专业课奠定了扎实的基础,也对培养计算思维和求解问题的能力起到重要作用。
面对各个应用领域的大量实际问题,最重要的是分析问题的性质并选择正确的求解思路,即找到一个好的算法。
特别是在当今复杂、海量信息的大数据处理中,一个好的算法往往起到决定性的作用。
本课程注重针对实际问题需求,进行数学建模并选择高效求解算法的训练,为提高学生的素质和创新能力打下必要的基础。
课程主要内容涉及:面对实际问题建立数学模型、设计正确的求解算法、算法的效率估计、改进算法的途径、问题计算复杂度的估计、难解问题的确定和应对策略等等。
本课程是算法课程的基础部分,主要涉及算法的设计、分析与改进途径,其他有关计算复杂性的内容将在后续课程"算法设计与分析(高级)"中加以介绍。
课程的内容分成两大部分:算法的基础知识和通用算法设计技术与分析方法。
算法基础知识部分主要介绍算法相关的基本概念和数学基础。
比如,什么是算法的伪码描述?什么是算法最坏情况下和平均情况下的时间复杂度?算法时间复杂度函数的主要性质,算法复杂度估计中常用的数学方法,如序列求和及递推方程求解。
通用算法设计技术与分析方法部分主要介绍分治策略、动态规划、贪心法、回溯与分支限界等算法设计技术。
重点介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。
授课目标本课程从算法复杂性分析的基本方法和原理入手,以讲授算法设计的基本方法和原理、算法优化的基本方法和技巧为主,通过典型的问题及其相应的求解算法,以及算法复杂性的分析,达到完善学生的知识体系、培养学生的分析能力、拓展学生的思维方法,并鼓励学生把理论与实践相结合。
课程大纲01第一周基础知识(1)算法的基本概念及伪码描述,函数的渐近的界。
课时1.1 本周教学内容简介1.2 算法设计的两个例子1.3 问题的计算复杂度:排序问题1.4 货郎问题与计算复杂性1.5 算法及其时间复杂度1.6 算法的伪码表示1.7 函数的渐近的界1.8 有关函数渐近的界的定理1.9 几类重要函数02第二周基础知识(2)序列求和方法,递推方程求解。
算法设计与分析(软件工程)教学大纲
算法设计与分析教学大纲一、说明(一)课程性质本课程是一门面向算法设计的计算机科学与技术专业的专业必修课程。
通过对这门课程的学习和研究,掌握算法设计的主要方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定坚实的理论基础。
(二)教学目的算法是计算机科学的核心。
算法设计与分析是计算机科学与技术专业的重要必修课程。
通过该课程的学习,使学生在算法设计、算法优化与算法分析等方面受到严格、系统的训练,从而能设计合适的算法解决实际问题,为后续专业课程的学习打下基础。
本课程于必修课程《程序设计》和《数据结构》之后开设,学生经过这两门课程的学习已掌握常用的数据结构和基本算法,也具备了编写程序实现算法的能力。
本课程将一步深化先修课程所学的内容,强化学生的理论基础和动手实践能力;同时也适当介绍若干算法研究领域的前沿课题,培养学生对算法研究的兴趣。
(三)教学内容课程的主要内容包括:算法分析的基本知识,渐进复杂度和大O记号,分治算法和递归关系,图的搜索,最短路、最大团算法,贪心算法,动态规划算法及其优化,NP完全问题的搜索算法和近似算法等。
(四)教学时数讲授: 54学时实验: 36学时总学时: 90学时(五)教学方式讲授为主, 讨论与实验为辅。
二、本文理论部分第1章算法概述教学要点:•理解算法的概念。
•理解什么是程序,程序与算法的区别和内在联系。
•掌握算法的计算复杂性概念。
•掌握算法渐近复杂性的数学表述。
教学时数:6学时教学内容:1.1 算法与程序(2学时)介绍算法的基本特征:有限步、无歧义、可实现;讲解描述算法的方式:伪代码、流程图和程序;给出简单的算法例子:计算斐波那契数列前n项的算法;介绍算法与程序的区别与内在联系。
1.2 算法复杂性分析(4学时)详解算法时间复杂度和空间复杂度的概念;介绍最坏复杂度和平均复杂度的概念;详解渐进复杂度的概念;给出大O记号的严格数学定义;通过不同复杂度算法运行时间的巨大差异来阐明降低算法复杂度的重要意义;详解分析递归算法复杂度的主要方法:解递归方程;以计算斐波那契数列的两种算法为例,使学生对多项式时间算法和指数时间算法有直观的认识。
算法设计与分析教学大纲
算法设计与分析教学大纲算法设计与分析教学大纲引言:算法设计与分析是计算机科学领域中的重要课程之一。
它涉及到计算机程序的设计、性能分析和优化,对于培养学生的计算思维和解决问题的能力至关重要。
本文将探讨算法设计与分析教学的目标、内容和方法。
一、教学目标1. 培养学生的算法设计能力:通过学习不同的算法设计方法,使学生能够运用适当的算法解决实际问题。
2. 提高学生的算法分析能力:学生应该能够分析算法的时间复杂度和空间复杂度,以便评估算法的效率。
3. 培养学生的团队合作和沟通能力:通过小组项目和讨论,学生将学会与他人合作解决问题,并能够清晰地表达他们的思想。
二、教学内容1. 算法基础知识:介绍算法的基本概念和术语,如输入、输出、控制结构、迭代和递归等。
2. 基本算法设计方法:介绍常见的算法设计方法,如贪心算法、分治算法、动态规划和回溯算法等。
3. 常见算法的实现与分析:通过实例讲解常见的排序算法、查找算法和图算法,并对它们的时间复杂度和空间复杂度进行分析。
4. 高级算法设计方法:介绍一些高级的算法设计方法,如分支限界法、随机化算法和近似算法等。
5. 算法的应用:通过实际案例,讨论算法在不同领域的应用,如网络优化、图像处理和人工智能等。
三、教学方法1. 理论讲解:通过课堂讲解,向学生介绍算法的基本概念和设计方法,并解释其原理和应用。
2. 编程实践:通过编写程序,学生将实际运用所学算法解决问题,并通过实验验证算法的正确性和效率。
3. 小组项目:学生将组成小组,共同解决一个复杂的问题,通过合作和讨论,培养团队合作和沟通能力。
4. 论文阅读与讨论:学生将阅读并讨论与算法设计与分析相关的研究论文,以拓宽他们的视野和思维。
结语:通过算法设计与分析的教学,学生将培养解决问题的能力和计算思维,为他们未来的学习和工作打下坚实的基础。
同时,通过小组项目和讨论,学生将学会与他人合作解决问题,并能够清晰地表达他们的思想。
希望学生们能够在这门课程中获得知识的同时,也能够培养出批判性思维和创新能力,为未来的发展做好准备。
算法设计与分析 教学大纲
算法设计与分析一、课程说明课程编号:130211Z10课程名称:算法设计与分析/Algorithm Design and Analysis课程类别:专业课学时/学分:48/3先修课程:数据结构、组合数学与图论、概率论、数理统计、程序设计基础适用专业:信息科学教材、教学参考书:1.《算法设计与分析基础》(第3版)Anany Levitin 著,潘彦译,清华大学出版社,20152.《算法设计技巧与分析》,M.H.Alsuwaiyel著,吴伟昶,方世昌等译,电子工业出版社,2005年3.《Introduction To Algorithms》(Second Edition),T.H.Cormen、C.E.Leiserson、R..L.Rivest and C.Stein,The MIT Press,20014.《计算机算法基础》(第二版),余祥宣、崔国华、邹海明,华中理工大学出版社,2003年。
二、课程设置的目的意义《算法设计与分析》是信息科学、计算机科学相关专业高年级本科生、研究生的一门重要专业基础课程。
通过本课程的学习,学生可以了解计算机应用中的各种常用算法,掌握设计和分析各种算法的基本原理、方法和技巧。
能运用所学到的知识熟练地分析各种算法并能指出解决同一问题的各种算法的好坏。
三、课程的基本要求知识要求:○1了解计算机应用中的各种常用算法。
○2了解评价算法的准则和方法。
○3掌握设计和分析算法的基本原理、方法和技巧。
○4用编程语言实现基本算法。
○5实际问题能够设计合理的算法并加以实现。
能力要求:○1培养学生利用算法设计的基本方法和理论等分析问题和解决实际问题的能力。
○2通过理论联系实际,以最终提高学生动手操作的能力以及分析问题的能力。
素质要求:○1使学生在解决实际问题、处理实际数据、进行编程时具备把算法设计的基本方法和理论用于实际应用的思想。
○2培养学生对算法美的认识,运用不同的算法也许都能够得到正确的结果,好的算法是有数学美的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析教学大纲
“算法设计与分析”是计算机学科的重点专业基础课程,也是学科核心专业基础课程。
本课程主要介绍算法设计与分析的基本方法以及算法复杂性理论基础。
课程概述
本课程主要介绍算法设计与分析的基本方法以及算法复杂性理论基础。
通过本课程的学习,要求学生理解并熟练掌握递归与分治法、贪心法、动态规划方法、回溯法、分支定界法,以及高级图论算法、线性规划算法等,理解并掌握算法复杂性的分析方法、NP完全性理论基础等计算复杂性的基本知识及完备性证明概要。
授课目标
本课程的培养目标是,通过教学和实践,培养学生从算法的角度运用数学工具分析问题和解决问题的基本能力,从而使他们能够正确地分析和评价一个算法,进一步设计出真正有效的算法。
此外,配合实验课程的教学,学生应理论联系实际,理论指导实践,通过规范地完成一系列算法设计实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。
课程大纲
01
算法概述及复杂性理论(授课人:张德富,曾华琳;总时长:1小时32分)
了解该课程要解决的问题;了解算法的概念;掌握算法的正确性证明方法;了解问题的下界的描述方法。
课时
1 问题
2 算法的概念
3 算法的正确性
4 算法的效率
5 问题的下界
02
算法分析方法(授课人:张德富;总时长:1小时37分)
掌握概率分析在算法复杂度分析中的应用;掌握分摊分析方法;了解实验分析方法。
课时
1 概率分析
2 合计方法
3 记账方法
4 势能方法
5 实验分析
03
递归(授课人:张德富;总时长:1小时19分)
了解递归的算法思想;根据选择排序和全排列生成问题掌握设计递归算法的一般步骤;求解递归方程。
课时
1 递归的算法思想
2 选择排序
3 生成排列
4 递归方程的求解
04
分治(上)(授课人:曾华琳;总时长:1小时31分)
了解分治的算法思想;根据案例掌握分治算法设计的一般步骤;
课时
1 算法思想
2 二分搜索
3 快速排序
4 归并排序
05
分治(下)与动态规划(上)(授课人:曾华琳;总时长:1小时35分)
根据残缺棋盘游戏进一步了解分治算法,难点在于理解分治算法“分”出的子问题必须具有相似的结构;初步了解动态规划算法,难点在于如何根据递推关系式填表;
课时
1 残缺棋盘游戏
2 大整数乘法
3 矩阵乘法
4 动态规划引言
5 动态规划算法思想
6 矩阵链乘法问题
06
动态规划(中)(授课人:张德富,曾华琳;总时长:1小时38分)
根据多个案例进一步了解掌握动态规划算法,难点在于递推关系式的推导;根据装配线调度问题了解动态规划的另一种求解方法:备忘录法;掌握如何使用递归方法构造最优解;
课时
1 最优二叉搜索树问题
2 最大字段和问题
3 装配线调度问题
4 最长公共子序列问题
07
动态规划(下)与贪心算法(上)(授课人:张德富;总时长:1小时33分)
由背包问题理解动态规划最优子结构性质;根据任务调度问题理解贪心算法;对比区分贪心算法与动态规划算法,难点在于贪心算法的证明;
课时
1 0/1背包问题
2 动态规划的基本性质
3 贪心算法思想
4 任务选择问题(上)
08
贪心算法(下)(授课人:曾华琳;总时长:1小时49分)
由任务选择问理解贪心算法;由背包问题进一步区分动态规划与贪心算法;理解Huffman编码中的贪心策略;
课时
1 任务选择问题(下)
2 背包问题
3 哈夫曼编码问题
4 任务选择实验
09
图算法(上)(授课人:张德富;总时长:1小时19分)
了解图的基本概念、表示方法、了解两种存储图的方式(邻接矩阵与邻接表)及各自优势;掌握图的深度优先搜索与广度优先搜索算法,难点在于DFS的递归与非递归实现;掌握图的最小生成树问题及其解法;
课时
1 图的表示
2 宽度优先搜索
3 深度优先搜索
4 最小生成树问题--Kruskal算法
10
图算法(下)(授课人:张德富;总时长:1小时21分)
了解最短路问题的定义;掌握两种基本最短路问题求解算法;掌握、区分Prim 算法与Kruskal算法;
课时
1最小生成树问题--Kruskal 与Prim 比较
2 最短路径问题
3 单源最短路径问题
4 所有点对的最短路径问题
11
网络流与匹配(授课人:张德富;总时长:1小时38分)
了解最大流问题的定义;掌握求解最大流问题的基本算法;了解最大费用流问题的定义;
课时
1 最大流问题
2 最大流问题求解
3 最小费用流
12
回溯(授课人:曾华琳;总时长:1小时27分)
了解回溯的定义;掌握0-1背包问题、货箱装载问题的基本解法;
课时
1 算法思想
2 货箱装载问题
3 0-1背包问题
4 着色问题
13
分支限界(授课人:曾华琳;总时长:1小时29分)
了解分支限界算法;掌握0-1背包问题、装载问题、旅行商问题的基本解法;并与回溯算法进行比较,加深理解;
课时
1 算法思想
2 装载问题
3 0/1背包问题
4 旅行商问题
14
NP完全理论(授课人:张德富;总时长:1小时31分)
初步了解算法复杂性理论,了解NP完全理论,以及P、NP和NPC问题的定义和意义。
课时
1 判定问题
2 P和NP问题
3 NPC的定义
4 电路可满足性问题
5 NPC的证明
预备知识
高等数学或数学分析、线性代数或高等代数、概率论与数理统计、离散数学(含图论、集合论、近世代数、数理逻辑基础)、数字逻辑、高级语言程序设计、数据结构
参考资料
《算法设计与分析》,张德富,高等教育出版社,2009
《Introduction to Algorithms》,The MIT Press,2001。