算法设计教学大纲详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽科技学院理学院教学大纲
课程名称:算法设计
适用专业:计算机科学与技术
(本科)
计算机科学技术专业教研室制
2006.6
《算法设计》理论课教学大纲
课程名称:算法设计(Algrithm Design)
课程编号:
课程类别:选修课
学时:36 学时(理论36学时)
学分:2学分
考核方式:考试
适用专业:计算机科学与技术本科专业
前修课程:高等数学离散数学线形代数 C语言程序设计数据结构
建设开课学期:第6学期
一、课程性质、目的任务
随着计算机的广泛应用,对计算机算法的研究变得日益重要。《算法设计》是计算机科学与技术专业的一门选修课,本课程将覆盖计算机软件实现中的大部分算法,并具有一定的深度和广度,使学生对计算机常用算法有一个全盘的了解;本课程的任务是:培养学生具有针对给定问题设计和实现高效算法的能力。
二、教学基本要求
通过本课程教学,应使学生:
1)熟悉、掌握课堂教学中所学的大部分算法设计思想;
2)具有针对所给的问题设计和实现高效算法的能力。
四、参考教材及图书资料
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.理解子集和数问题算法设计和分析;