安徽科技学院理学院教学大纲课程名称:算法设计适用专业:计算机科学与技术(本科)计算机科学技术专业教研室制2006.6《算法设计》理论课教学大纲课程名称:算法设计(AlgrithmDesign)课程编号:课程类别:选修课学时:36学时(理论36学时)学分:2学分考核方式:考试适用专业:计算机科学与技术本科专业前修课程:高等数学离散数学线形代数C语言程序设计数据结构建设开课学期:第6学期一、课程性质、目的任务随着计算机的广泛应用,对计算机算法的研究变得日益重要。《算法设计》是计算机科学与技术专业的一门选修课,本课程将覆盖计算机软件实现中的大部分算法,并具有一定的深度和广度,使学生对计算机常用算法有一个全盘的了解;本课程的任务是:培养学生具有针对给定问题设计和实现高效算法的能力。二、教学基本要求通过本课程教学,应使学生:1)熟悉、掌握课堂教学中所学的大部分算法设计思想;2)具有针对所给的问题设计和实现高效算法的能力。三、教学内容与学时分配教学内容学时第一章算法基础3第二章递归与分治策略10第三章动态规划8第四章贪心法7第五章回溯法4第六章分支限界法4第七章NP完全性问题0四、参考教材及图书资料1.王晓东.计算机算法设计与分析.北京:电子工业出版社2.卢开澄.计算机算法导引——设计与分析.北京:清华大学出版社3.顾立尧.霍义兴.算法设计分析的理论与方法.上海:上海交通大学出版社4.霍红卫.分布式算法导论.北京:机械工业出版社五、教学方法与考核1.教学方法为充分发挥学生的积极性、主动性,启发引导、培养学生具有自我开拓和获得知识的能力,在内容的讲授上本着“少而精”的原则,突出重点,分解难点,深入浅出,举一反三,着重培养学生分析问题和解决问题能力。并就课程的各部分内容,分别采用细讲法,培养学生的基本功;采用精讲法,培养学生主动获取知识的能力;采用引导启发式,培养学生分析问题、解决问题的能力。另不同程度采取课堂讨论式、自学提问式。2.课程考核方法主要有:理论课考查、作业评定。①平时占20%:理论课考查、作业评定;②期末考试占80%:综合笔试。六、大纲正文第一章算法基础[目的要求]1.了解算法与程序的概念;2.掌握算法复杂性分析及其有关的概念;[基本内容]1.算法的定义、特征,算法与程序;2.冒泡排序;3.伪代码使用约定;4.算法复杂度分析;5.算法的运行时间;[重点难点]1.重点:算法的定义与特征、冒泡排序、算法复杂度分析2.难点:算法复杂度分析[课时安排]建议:3学时。第二章递归与分治策略[目的要求]1.理解递归的概念;2.掌握递归方程构建的思想;3.掌握递归方程的求解方法;4.了解分治法的基本思想;5.掌握二叉查找算法;6.掌握用分治法求最大值与最小值的算法;7.掌握Strassen矩阵算法;8.理解整数相乘算法;9.掌握合并排序和快速排序算法;10.了解线性时间选择算法;11.了解最近点对问题算法[基本内容]1.递归的概念;2.递归方程构建的思想;3.递归方程的求解方法(递归树与主方法);4.分治法的基本思想;5.二叉查找算法;6.用分治法求最大值与最小值的算法;7.Strassen矩阵算法;8.整数相乘算法;9.合并排序和快速排序算法;10.线性时间选择算法;11.最近点对问题算法[重点难点]1.重点:递归方程的求解方法(递归树与主方法)、二叉查找算法、Strassen矩阵算法、合并排序和快速排序算法2.难点:递归方程构建、递归方程的求解方法(递归树与主方法)、Strassen矩阵算法、合并排序和快速排序算法、线性时间选择算法、最近点对问题算法[课时安排]建议:10学时。第三章动态规划[目的要求]1.掌握动态规划算法的概念和步骤;2.掌握0-1背包问题的算法设计和分析;3.掌握矩阵链乘算法设计和分析;4.掌握动态规划算法的基本要素;5.理解备忘录方法;6.了解装配线调度问题算法设计和分析;7.理解最长公共子序列问题算法设计和分析;8.掌握最优二分检索树算法设计和分析。9.了解凸多边形最优三角剖分算法;[基本内容]1.动态规划算法的概念和步骤;2.0-1背包问题;3.矩阵链乘;4.动态规划算法的基本要素;5.备忘录方法;6.装配线调度问题;7.最长公共子序列问题;8.最优二分检索树。9.凸多边形最优三角剖分;[重点难点]1.重点:动态规划算法的概念和步骤、0-1背包问题、矩阵链乘、动态规划算法的基本要素、最优二分检索树2.难点:0-1背包问题、矩阵链乘[课时安排]建议:8学时。第四章贪心法[目的要求]1.掌握贪心算法的概念、思想;2.掌握贪心算法的基本要素;3.掌握背包问题的算法设计和分析;4.理解活动选择问题算法设计和分析;5.理解哈夫曼编码的算法分析;6.掌握最小生成树的Prim和Kruskal算法的设计与分析;7.了解最小生成树的Boruvka算法的设计与分析;8.掌握单源最短路径的Dijkstra算法的设计与分析;9.理解贪心算法的理论基础;[基本内容]1.贪心算法的概念、思想;2.贪心算法的基本要素;3.背包问题的算法设计和分析;4.活动选择问题算法设计和分析;5.哈夫曼编码的算法分析;6.最小生成树的Prim、Kruskal算法和Boruvka算法;7.单源最短路径的Dijkstra算法;8.贪心算法的理论基础;[重点难点]1.重点:贪心算法的概念、思想、贪心算法的基本要素、背包问题、最小生成树的Prim和Kruskal算法、单源最短路径的Dijkstra算法、贪心算法的理论基础2.难点:贪心算法的思想、背包问题、单源最短路径的Dijkstra算法、贪心算法的理论基础[课时安排]建议:7学时。第五章回溯法[目的要求]1.掌握回溯法的概念、思想;2.掌握子集树、排列树、搜索树的构造;3.理解N皇后问题的算法设计和分析;4.理解子集和数问题算法设计和分析;5.理解0-1背包问题算法设计和分析;6.了解着色问题算法的设计与分析;[基本内容]1.回溯法的概念、思想;2.子集树、排列树、搜索树的构造;3.N皇后问题;4.子集和数问题;5.0-1背包问题;6.着色问题;[重点难点]1.重点:回溯法的思想、子集树的构造、排列树的构造、搜索树的构造、N皇后问题、子集和数问题、背包问题2.难点:回溯法的思想、N皇后问题、子集和数问题、背包问题[课时安排]建议:4学时。第六章分枝限界法[目的要求]1.掌握分枝限界法的概念、思想;2.理解0-1背包问题算法设计和分析;3.理解作业调度问题的算法设计和分析;[基本内容]1.分枝限界法的概念、思想(先进先出状态空间树、优先队列状态空间树);2.0-1背包问题算法设计和分析;3.作业调度问题的算法设计和分析;[重点难点]1.重点:分枝限界法的思想、0-1背包问题算法设计和分析2.难点:分枝限界法的思想、0-1背包问题算法设计和分析[课时安排]建议:4学时。第七章NP完全性问题[目的要求]1.了解NP完全性问题的概念;2.了解P类问题和NP类问题;3.了解NP完全问题;4.了解一些典型的NP完全问题;[基本内容]1.NP完全性问题的概念;2.P类问题和NP类问题;3.NP完全问题;4.一些典型的NP完全问题;[重点难点]1.重点:P类问题和NP类问题、NP完全问题2.难点:P类问题和NP类问题、NP完全问题[课时安排]建议:自学。课程负责人:大纲主撰人:刘斌大纲审核人:计算机科学技术教研室2006.5