算法分析与设计课程教学大纲
- 格式:docx
- 大小:68.76 KB
- 文档页数:8
《算法设计与分析》教学大纲适用于四年制本科计算机应用技术、信息与计算科学专业(参考学时数:64 学时)一、课程代码7100450,7100451二、课程的性质、任务算法设计与分析是计算机科学的核心问题之一,这门课是计算机专业以及相关专业的一门重要的课程。
本课程的教学目的是:在学生学习掌握了编程的基本技术,掌握了数据结构的基本知识、理论的基础上,比较系统的学习算法理论中的基础部分内容。
在这一课程教学中,培养学生掌握算法设计的方法论,掌握常用的算法设计的方法;掌握算法分析的基本工具、方法、技巧,在解决实际问题时,对于较复杂的问题能抽象出问题的数学模型,设计出有效的算法。
在此基础上学习本课程的中级篇:结构上的算法设计(分类、图的高级部分、流),学生通过这部分的学习,了解算法优化的实现途径,很好的解决数据结构中未能解决的问题、最后是本课程的高级篇:NP完全理论、现代优化计算方法简介。
学生通过这部分的学习初步了解计算复杂性理论的基本内容、现代算法的几个主要发展分支,为今后实际应用或者搞理论研究打下一些必备的理论基础。
三、课程基本要求学生必备的先行课是:高等数学、离散数学、程序设计、数据结构。
本课程不能求快,应循序渐进,培养学生浓厚的学习热情和求知欲。
教学中注重和前期课程数据结构的衔接,使学生明白这门课不同于数据结构的是:数据结构是讨论三种基本数据结构上的基本操作的实现,它是完成“如何做”,算法设计与分析这门课强调的是:怎么巧做,做的更好。
在本课程的后期教学中,特别提倡学生广泛阅读参考书、独立思考、结合实际问题展开讨论的教学方式,并以此达到教师精讲、学生宽学的目的。
课程的基本要求是:1.掌握7种常用的算法设计方法,并能综合、灵活的使用这些基本方法,同时用所学到的知识解决一些实际问题;2.掌握算法分析的基本工具、基本技巧、基本方法;3.掌握数据结构中未能详细、深入了解的部分内容(内存分类,图的高级部分、流上的算法);4.了解计算复杂性理论中的基本内容,包括:机器模型,NP完全、NP难题,近似计算;5.了解现代的计算算法和算法理论的发展趋势走向。
算法分析与设计课程(本科)教学大纲一、课程编号二、课程类别:选修课三、先修课程:程序设计、数据结构四、适用专业:计算机科学与技术,信息安全五、课程学分/学时: 2.5学分/40学时六、课程的性质与任务:计算机科学是一种创造性思维活动,其教育必须面向设计。
计算机算法分析与设计是面向设计的,因此,它是计算机科学和计算机应用的核心。
无论是计算机系统、系统软件和解决计算机的各种应用课题都可归结为算法的设计。
通过本课程的学习,使学生掌握计算机领域中许多常用的非数值的精确的描述:分治法、贪心法、动态规划、回溯法等。
并掌握算法分析的方法。
从而将学生分析问题和解决问题的能力提高到高层理论的高度。
七、教学主要内容及学时分配(一)、引论(4学时)1.算法的定义及其特点2.算法分析的方法(二)、分治法(8学时)1.分治法的思想2.二分检索、归并分类法、快速分类法及其它们的算法分析3.Strassen矩阵乘法4.其他问题(三)、贪心方法(6学时)1.贪心方法的思想2.背包问题、最小生成树、单源最短路径问题3.其他问题(四)、动态规划(6学时)1.动态规划的思想2.多段图、每队节点之间的最短路径、0/1背包问题和货郎担问题3.其他问题(五)、基本检索与周游方法(4学时)1.二元树周游、树周游、图的检索和周游的一般方法(六)、回溯法(6学时)1.回溯法的思想2.8-皇后问题、背包问题3.以上算法的算法分析4.其他问题(七)、N P难度和NP完全问题(2学时)1.NP难度和NP完全概念(八)、其他有关方法简介(4学时)1.常见概率算法2.并行算法基本概念3.其它相关知识八、教学基本要求(一)、掌握算法的定义及其特点;掌握算法分析的方法。
(二)、掌握分治法的思想;重点掌握二分检索、归并分类法、快速分类法及其它们的算法分析;了解Strassen矩阵乘法。
(三)、掌握贪心方法的思想;理解背包问题、最小生成树、单源最短路径问题;理解以上算法的算法分析。
课程代码:《算法分析设计》课程实验教学大纲【编写】朱少林【审核】【课程类别】专业选修【课程学时】 34【开课学期】【实验学时】 16 - 34【授课专业】电子商务/信息管理/计算机科学与技术一、实验教学任务和目的无论是在计算机科学与技术的研究中,还是在计算机应用(包括管理信息系统和电子商务系统开发)中,都涉及大量的程序设计问题,而且随着研究和应用的深入,所遇到的问题越来复杂,对处理问题的效率要求也越来越高,了解和掌握求解问题的方法(算法)、设计出好的算法也就成为解决这些问题的关键,甚至成为其决定因素。
《算法分析与设计》课程的主要内容是讲授在计算机科学研究和应用中经常用到的一些算法,包括分枝法、贪心法、动态规划法、回溯法等,介绍这些算法设计的思路和算法的一般框架,并针对多个具体的应用问题设计出了相应算法。
其目的就是让学过该课程的学生掌握算法设计的基本思想和技巧,掌握几个基本和常用的算法。
《算法分析与设计》是一门实践性很强的课程,课程教学过程中,需要与课程实验相结合。
算法分析与设计实验的主要任务是针对给定的问题,设计出一个合适的算法或几个可供选择的算法,然后将算法用合适的程序设计语言实现并上机调试,并用合适的数据验证运行。
只有通过实验,通过让学生进行算法设计和编程实践并上机验证,才能让学生理解算法的思想,掌握算法设计的方法和掌握算法的精髓。
同时,通过算法实验,让学生掌握调试程序、改进算法的方法,学会通过对比选择最适合问题求解算法的方法;使学生将以前所学如《C语言程序设计》、《数据结构》等课程知识能有机结合并融会贯通;进一步培养学生的分析问题、解决问题的能力,提高学生素质,使其能更好地适应社会,满足社会对人才的需求。
二、实验教学基本要求1.程序设计语言与实验要求算法实验需要将算法转换成程序并上机验证,实验的主要工作是验证算法的正确性并测试算法的时空复杂度。
学生可以根据自己的喜好或对程序设计语言的掌握程度选择一个程序设计语言,如C/C++、PASSCAL等支持递归程序设计的语言,实验硬件环境要求是支持学生选定程序设计语言的计算机系统,(包含打印机更佳),学生应能熟练掌握计算机系统的使用,并具备熟练编写、输入和调试程序的能力。
算法分析与设计教学大纲一、课程概述二、预修条件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周:复习与总结备注:以上为算法分析与设计教学大纲的基本框架和内容,具体教学安排和进度可根据实际情况进行调整补充。
算法设计与分析一、课程说明课程编号: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培养学生对算法美的认识,运用不同的算法也许都能够得到正确的结果,好的算法是有数学美的。
算法设计与分析课程设计教学大纲课程代码:10115102 课程名称:算法设计与分析课程设计学时:1周学分:1学分适应专业:;软件工程(本科)执笔人:银星编写日期:2007年8月一、课程设计的教学目的和任务通过本课程设计教学所要达到的目的是:培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
本课程设计的任务是:学生应该根据所选题目完成方案设计、程序设计和调试等任务,并完成相关文档的撰写。
二、课程设计的内容和基本要求利用《算法设计与分析》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
课程设计的题目可由指导教师根据具体情况和大刚的要求来确定,参考题目:题目一,棋牌游戏设计五子棋;象棋;围棋;军棋;跳棋;24点;斗地主等,要求:包涵部分格局;设计游戏的核心算法;可视化的软件设计;参考的知识:回溯法;程序语言不限;题目二,地图着色问题(限1 人完成)设计要求:已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少.题目三,校园导航问题(限1 人完成)设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径).题目四,学校超市选址问题(带权有向图的中心点)(限1 人完成) 设计要求:对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同.请为超市选址,要求实现总体最优.题目五,走迷宫游戏(限1 人完成)程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓.游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处.要求:老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;迷宫的墙足够结实,老鼠不能穿墙而过;正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路,路变墙;找出走出迷宫的所有路径,以及最短路径。
算法设计与分析课程设计教学大纲课程编码:090151145 周/学分:2周/4学分一、大纲使用说明本大纲根据信息与计算科学专业2017—2020版教学计划制订(一)适用专业信息与计算科学专业(二)课程设计性质必修课(三)主要先修课程和后续课程1.先修课程:C语言程序设计2.后续课程:大数据算法二、课程设计目的及基本要求本课程设计是信息与计算科学专业的重要实践性课程,隶属于《算法设计与分析》课程的一个重要部分,是课程结束后进行的一次全面的综合练习。
设计一个高效的程序不仅需要编程小技巧,更需要合理的数据结构和清晰高效的算法,这正是计算机科学领域数据结构与算法设计所研究的主要内容。
算法设计与分析正是一门面向设计,且处于计算机学科核心地位的教育课程。
通过对计算机算法系统的学习与研究,掌握算法设计的主要方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定坚实的理论基础,对每一位从事计算机系统结构、系统软件和应用软件研究与开发的科技工作者都是非常重要和必不可少的。
设计目的如下:1.加深对常用算法以及计算复杂性的基本概念、基本原理和方法的理解。
2. 加强对分治法、动态规划、贪心法、回溯法、分支限界法设计策略的理解和实际运用能力的培养,能理论与实际相结合。
3. 能运用已有的算法分析的方法较准确地对算法进行分析,具有一定的分析能力;增强学生的科学实验素质。
要求学生具有理论联系实际和实事求是的科学作风、严肃认真的工作态度。
4. 能运用已有的算法设计技术来设计实际问题的有效算法,具有较强的设计能力和一定的创新能力。
注重创新实践、突出个性发展,努力培养面向软件行业的高素质应用型人才。
为了使学生从课程设计中尽可能取得比较大的收获,对课程设计题目分成二类,一类为基础训练题目,学生从中学习到程序设计的常用算法。
另一类为综合题目,学生从这两类型题目中各选择部分完成。
基本要求:要求学生做好预习,掌握设计过程中涉及到的算法,按设计流程编程,上机调试通过,验证结果并进行分析、完成论文。
算法分析与设计课程教学大纲《算法分析与设计》课程教学大纲一、课程基本信息课程代码:110426课程名称:算法分析与设计英文名称:Analysis and Design of Algorithms课程类别:专业基础课学时:45学分:2适用对象: 信息与计算科学专业本科生考核方式:考试(平时成绩占总成绩的30%)先修课程:数学分析、高级语言程序设计、数据结构二、课程简介中文简介《算法分析与设计》是软件开发人员必修专业课,软件的效率和稳定性取决于软件中所采用的算法;对于一般程序员和软件类专业学生,学习算法设计与分析课程,可以开阔编程思路,编写出优质程序。
英文简介Analysis and Design of Algorithms is a compulsory specialty course for software developer. Efficiency and stability of software depends on algorithms used in it. For common coders and software relative students, learning this course could expand their programming vision and help them programming high quality codes.三、课程性质与教学目的通过对常用的、有代表性的算法的研究,让学生理解并掌握算法设计的基本技术。
培养学生分析算法复杂度的初步能力,锻炼其逻辑思维能力和想象力,并使之了解算法理论的发展。
鼓励学生运用算法知识解决各自学科的实际问题,培养学生的独立科研的能力和理论联系实践的能力。
四、教学内容及要求第一章算法概述(一)目的与要求掌握算法,算法复杂度的基本概念,及时间复杂度的估算方法。
(二)教学内容1.主要内容算法,算法复杂度的基本概念,及时间复杂度。
2.基本概念和知识点算法,算法复杂度的基本概念,及时间复杂度。
3.问题与应用(能力要求)掌握算法,算法复杂度的基本概念,及时间复杂度的估算方法。
(三)课后练习函数的渐进表达式。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
第二章递归与分治法(一)目的与要求1.掌握递归的概念,学会用递归方法解决实际问题;2.熟练掌握利用分治法解决问题的基本思想,会用某高级语言对算法进行描述,并对算法复杂度(时间和空间)进行分析。
(二)教学内容1.主要内容递归概念,分治法基本思想,二分搜索技术,大整数乘法,矩阵乘法,棋盘覆盖,合并排序,快速排序,线性时间选择,最接近点对问题,循环赛日程表。
2.基本概念和知识点递归概念,分治法,二分搜索,大整数乘法,矩阵乘法,棋盘覆盖,合并排序,快速排序。
3.问题与应用(能力要求)掌握递归的概念,学会用递归方法解决实际问题,熟练掌握利用分治法解决问题的基本思想,会用某高级语言对算法进行描述,并对算法复杂度(时间和空间)进行分析。
(三)课后练习Hanoi塔问题的非递归算法。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
第三章动态规划(一)目的与要求1.熟练掌握利用动态规划方法解决问题的基本思想;2.学会如何将问题化为多阶段图的方法;3.能对具体问题写出正确的递推公式。
(二)教学内容1.主要内容动态规划的基本要素,矩阵连乘,最长公共子序列,最大子段和,凸多边形最优三角剖分,多边形游戏,图像压缩,电路布线,流水作业调度,0-1背包问题,最优二叉搜索树。
2.基本概念和知识点动态规划的基本要素,最长公共子序列,最大子段和,凸多边形最优三角剖分,0-1背包问题,最优二叉搜索树。
3.问题与应用(能力要求)熟练掌握利用动态规划方法解决问题的基本思想。
(三)课后练习最长单调递增子序列。
(四)教学方法与手段课堂讲授为主,结合分组课堂讨论。
第四章贪心算法(一)目的与要求1.掌握利用贪心算法解决问题的基本思想;2.会用某高级语言编写用贪心算法解决问题的程序,并能对算法的复杂度,可靠性进行分析。
(二)教学内容1.主要内容贪心算法的基本要素,活动安排问题,最优装载,哈夫曼编码,单源最短路径,最小生成树,多机调度。
2.基本概念和知识点贪心算法,哈夫曼编码,单源最短路径,最小生成树。
3.问题与应用(能力要求)掌握利用贪心算法解决问题的基本思想。
(三)实践环节与课后练习活动安排问题的贪心选择算法。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
第五章回溯法(一)目的与要求1.掌握利用回溯法解决问题的基本思想;2.会用回溯法解决:n个皇后问题,图的m着色问题,批处理作业调度问题等,并能准确地分析回溯法的效率及稳定性。
(二)教学内容1.主要内容回溯法的算法框架、符号,三角形问题,n个皇后问题,最大团问题,图的m着色问题,旅行售货员问题,圆排列问题,连续邮资问题,电路板排列问题。
2.基本概念和知识点回溯法,三角形问题,n个皇后问题,最大团问题,图的m着色问题,旅行售货员问题。
3.问题与应用(能力要求)掌握利用回溯法解决问题的基本思想。
(三)课后练习装载问题的改进回溯法。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
第六章分支限界法(一)目的与要求1.掌握利用分支限界法解决问题的基本思想;2.能用多种不同方法解法同一问题,并分析各方法的效率。
(二)教学内容1.主要内容分支限界的基本思想,单源最短路径,布线问题,0-1背包问题,批处理作业调度问题。
2.基本概念和知识点分支限界,单源最短路径,布线问题,0-1背包问题,批处理作业调度问题。
3.问题与应用(能力要求)掌握分支限界法解决问题的基本思想,能用多种不同方法解法同一问题,并分析各方法的效率。
(三)实践环节0-1背包问题的栈式分支限界法。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
*第七章概率算法(选学)(一)目的与要求1.掌握利用概率算法的基本思想;2.会用概率算法解决有关问题。
(二)教学内容1.主要内容概率算法的基本思想,随机数,数值概率算法,舍伍德算法,拉斯维加斯算法,蒙特卡罗算法。
2.基本概念和知识点概率算法,随机数,数值概率算法,舍伍德算法,拉斯维加斯算法,蒙特卡罗算法。
3.问题与应用(能力要求)掌握利用概率算法的基本思想,会用概率算法解决有关问题。
(三)实践环节与课后练习模拟正态分布随机变量。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
*第八章线性规划和网络流(自学)(一)目的与要求1.了解线性规划模型的特点、线性规划问题的标准型及退化处理;2.掌握线性规划问题解的概念、有关解的基本定理;3.掌握单纯形法的的原理和求解方法;4.掌握实践中常见问题的建模方法;5.掌握最大网络流问题的求解方法和最小费用流问题的求解方法。
(二)教学内容1.主要内容线性规划的基本概念、定理及单纯形算法,最大网络流和最小费用流问题的解法。
2.基本概念和知识点线性规划概念、定理及单纯形算法,最大网络流和最小费用流问题的解法。
3. 应用(能力要求)掌握线性规划问题解的概念、有关解的基本定理;掌握单纯形法的的原理和求解方法;掌握实践中常见问题的建模方法。
掌握最大网络流问题的求解方法和最小费用流问题的求解方法。
(三)实践环节与课后练习单源最短路径与线性规划。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
*第九章 NP完全性理论与近似算法(选学)(一)目的与要求1.了解NP完全性问题;2.掌握P类与NP类问题的划分;3.掌握利用近似算法解决问题的基本思想,能对其可靠性进行分析。
(二)教学内容1.主要内容计算模型,P类与NP类问题,NP完全问题,合取范式(CNF)顶点覆盖问题,哈密顿回路问题;近似算法的基本思想及性能,顶点覆盖问题的近似算法,集合覆盖问题的近似算法,子集合问题的近似算法。
2.基本概念和知识点计算模型,P类与NP类问题,NP完全问题,合取范式(CNF)顶点覆盖问题,哈密顿回路问题。
3.问题与应用(能力要求)了解NP完全性问题,掌握P类与NP类问题的划分。
掌握利用近似算法解决问题的基本思想,能对其可靠性进行分析。
(三)实践环节与课后练习RAM和RASP程序。
(四)教学方法与手段课堂讲授为主,结合课堂分组讨论。
六、推荐教材和教学参考资源推荐教材:王晓东,计算机算法设计与分析(第二版),北京:电子工业出版社,2004。
教学参考资源:1. D.E.Knuth著,管纪文译,计算机程序设计技巧第一卷(1978),第二卷(1982),长沙:国防工业出版社,1978。
2. 卢开澄,计算机算法导引,北京:清华大学出版社,2000。
七、其他说明大纲修订人:吴东庆修订日期:2007.4.9大纲审定人:胡小健审定日期:2007.5.28。