算法分析与设计教案Word文档格式.docx
《算法分析与设计教案Word文档格式.docx》由会员分享,可在线阅读,更多相关《算法分析与设计教案Word文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
学
目
的
理解程序与算法的概念、区别与联系;
掌握算法在最坏情况、最好情况和平均情况下的计算复杂性概念;
掌握算法复杂性的渐近性态的数学表述;
理解递归的概念。
教学
重点
及
突出
方法
重点:
程序与算法的概念、算法的时间复杂性、算法复杂性的渐近性态的数学表述以及递归的概念。
通过讲解、举例方法。
难点
突破
难点:
算法复杂性与递归
通过讲解、举例、提问与引导方法。
相关
内容
素材
此部分内容基础知识可参考清华大学出版社出版严蔚敏编著的《数据结构》
过
程
(教师授课思路、设问及讲解要点)
回顾数据结构课程中的算法概念、排序算法等知识,从而引出本课程内容。
提问算法与程序的区别、联系以及算法具有的特性。
讲解算法的复杂性,主要包括时间复杂性与空间复杂性。
讲解最坏情况、最好情况与平均情况的时间复杂性。
讲解算法复杂性在渐近意义下的阶,主要包括
、
与o,并通过具体例子说明。
通过具体例子说明递归技术。
主要包括阶乘函数、Fibonacci数列、Ackerman函数、排列问题、整数划分问题、Hanoi塔问题等。
第页
第2章2.2~2.5
掌握设计有效算法的分治策略,并掌握范例的设计技巧,掌握计算算法复杂性方法。
分治法的基本思想及分治法的一般设计模式。
计算算法复杂性。
通过生活中解决复杂问题的分解方法,引出分治方法。
讲解分治法的基本思想及其一般算法的设计模式,介绍分治法的计算效率。
通过具体例子采用分治思想来设计有效算法。
主要包括二分搜索技术、大整数乘法、Strassen矩阵乘法。
1、二分搜索技术
先介绍顺序搜索方法;
然后介绍二分搜索算法;
最后分析算法的时间复杂性。
2、大整数乘法
先介绍当计算机硬件不能直接处理整数时的问题;
然后引出用软件方法实现大整数乘法算法;
最后分析算法的效率。
3、Strassen矩阵乘法
先引入一般矩阵乘法算法并分析时间复杂性;
然后再给出另一种方法,但其效率并没有提高;
最后介绍提高矩阵乘法效率的算法并分析时间复杂性。
第2章2.6~2.8
掌握设计有效算法的分治策略,并掌握范例的设计技巧,主要包括棋盘覆盖、合并排序与快速排序,掌握计算算法复杂性方法。
回顾分治法的基本思想及其一般算法的设计模式,介绍分治法的计算效率。
通过棋盘覆盖、合并排序与快速排序具体例子讲解采用分治思想设计有效的算法。
1、棋盘覆盖
先介绍问题描述;
然后介绍如何使用分治方法解决棋盘覆盖问题;
2、合并排序
先介绍使用分治策略的递归排序算法并分析算法时间复杂性;
然后介绍非递归算法及自然合并排序算法;
3、快速排序
先介绍使用分治策略的快速排序算法的基本思想;
然后给出基于分治策略的快速排序算法并分析时间复杂性;
最后介绍随机化的快速排序算法。
第2章2.9~2.11
掌握设计有效算法的分治策略,并掌握范例的设计技巧,主要包括线性时间选择与最接近点对问题,掌握计算算法复杂性方法。
鸽舍原理与二维点集算法。
通过线性选择问题与最接近点对问题具体例子讲解采用分治思想设计有效的算法。
1、线性时间选择
先介绍元素选择问题的一般提法;
然后介绍如何使用分治方法解决线性时间选择问题;
2、最接近点对问题
先介绍分治策略的最接近点对问题的提法并给出常用的解决方法并分析算法时间复杂性;
然后介绍一维与二维情形下的最接近点对算法;
第3章3.1~3.2
理解动态规划算法的概念,掌握动态规划算法的基本要素,掌握设计动态规划算法的步骤,并通过应用范例学习动态规划算法的设计策略。
动态规划算法的基本思想及设计动态规划算法的步骤。
最优子结构性质、重叠子问题性质与计算最优值。
回顾分治法的基本思想及其一般算法的设计模式,介绍动态规划算法的基本思想并给出他们之间的区别。
1、设计动态规划算法的步骤
1)找出最优解的性质,并刻画其结构特征。
2)递归定义最优值。
3)以自底向上的方式计算出最优值。
4)根据计算最优值时得到的信息,构造最优解。
2、矩阵连乘问题
1)根据矩阵乘法满足的结合率,介绍矩阵连乘可归结为两个矩阵的相乘,其中主要涉及完全加括号的矩阵连乘积的递归定义。
介绍矩阵的连乘积的计算次序与计算量有密切关系。
从而引出动态规划法解矩阵连乘问题。
2)动态规划法解矩阵连乘问题
△分析最优解的结构-最优子结构性质
△建立递归关系-递归定义最优值
△计算最优值-动态规划算法及算法复杂性
△构造最优解-算法
3、动态规划算法的基本要素
1)最优子结构性质
2)子问题重叠性质
3)备忘录算法及算法复杂性
第3章3.3~3.4
掌握设计动态规划算法的步骤,理解子序列、公共子序列与最长公共子序列的定义,掌握构造最长公共子序列的算法,掌握最大字段和问题的动态规划算法,并能够分析算法的时间复杂性。
最长公共子序列的结构、子问题的递归结构、最优值的求法与如何构造最长公共子序列;
求最大子段和问题的不同算法。
回顾动态规划算法的基本思想。
2、最长公共子序列问题
1)子序列、公共子序列及最长公共子序列的定义。
2)动态规划法解最长公共子序列问题
△最长公共子序列问题的最优子结构性质
△计算最优值-算法及复杂性
△构造最长公共子序列
3)算法的改进
3、最大子段和问题
1)介绍最大子段和问题的简单算法、分治算法、动态规划算法。
2)分析上述算法的复杂性。
第3章3.5、3.7
掌握凸多边形及最优三角剖分的概念,理解凸多边形的三角剖分的语法树表示,掌握凸多边形最优三角剖分的动态规划算法,并能够分析算法的时间复杂性;
理解图像的表示以及图像的变位压缩存储格式,掌握构造图像压缩问题的动态规划算法及复杂性。
凸多边形的三角剖分的语法树表示、最优子结构性质、凸多边形最优三角剖分的动态规划算法、时间复杂性;
图像的变位压缩存储格式,构造图像压缩问题的动态规划算法及复杂性。
最优子结构性质、图像的变位压缩存储格式、复杂性分析。
2、凸多边形最优三角剖分问题
1)多边形、凸多边形、多边形的三角剖分及凸多边形的最优三角剖分的概念。
2)动态规划法解凸多边形最优三角剖分问题
△凸多边形最优三角剖分问题的最优子结构性质
△构造凸多边形最优三角剖分
3、图像压缩问题
1)图像变位压缩存储格式、使用变长模式的步骤及举例说明。
2)动态规划解决图像压缩算法并分析算法的复杂性。
第3章3.10~3.11
理解0-1背包问题,掌握该问题的动态规划算法,并能够分析算法的时间复杂性;
理解最优二叉搜索树问题,掌握最优二叉搜索树的动态规划算法,并能够分析算法的时间复杂性;
了解该问题的改进算法及时间复杂性。
最优子结构性质及递归关系。
递归关系及时间复杂性分析。
2、0-1背包问题
1)0-1背包问题的形式化描述。
2)动态规划法解0-1背包问题
△问题的最优子结构性质。
△建立递归关系-递归定义最优值。
△计算最优值-算法及复杂性。
△构造最优解。
3、最优二叉搜索树问题
1)二叉搜索树与最优二叉搜索树的概念。
2)动态规划解决最优二叉搜索树算法并分析算法的复杂性。
第4章4.1~4.2
理解贪心算法的概念,掌握贪心算法的基本要素,理解贪心算法与动态规划算法的差异,理解贪心算法的一般理论,通过活动安排问题、最优装载问题范例学习贪心设计策略。
贪心算法的基本要素及一般理论,贪心算法与动态规划算法的差异。
贪心算法的基本要素。
回顾动态规划算法的基本思想,然后通过找硬币例子引出贪心算法,并说明有些问题即可以用动态规划方法求解,也可以用贪心算法求解。
1、贪心算法的概念并强调贪心选择方法不一定得到整体最优解。
2、活动安排问题
1)活动安排问题的描述。
2)贪心算法求解活动安排问题
△解活动安排问题的算法及时间复杂性。
△通过实例讲解计算过程。
3、用贪心算法求解的问题的一般特征
1)详细讲解贪心选择性质与最优子结构性质。
2)讲解动态规划算法与贪心算法的差异,并通过0-1背包问题与背包问题介绍它们的不同,重点介绍用贪心算法求解背包问题。
4、详细讲解使用贪心算法求解最优装载问题
1)最优装载问题的贪心选择性质。
2)最优装载问题的最优子结构性质。
3)算法描述。
第4章4.3、4.7
理解贪心算法的概念,掌握贪心算法的基本要素,理解贪心算法与动态规划算法的差异,理解贪心算法的一般理论,通过最优装载问题、多机调度问题范例学习贪心设计策略。
回顾用贪心算法求解的性质。
2、详细讲解使用贪心算法求解最优装载问题
3)算法描述。
3、用贪心算法求解多机调度问题
1)详细讲解贪心选择性质。
2)讲解近似算法。
3)举例说明。
第5章5.1~5.2
理解回溯法的深度优先搜索策略,掌握用回溯法解题的算法框架,包括递归回溯、迭代回溯、子集树算法框架、排列树算法框架。
掌握装载问题使用回溯法的设计策略。
回溯法的基本思想及解题步骤,递归回溯、迭代回溯、子集树算法框架以及排列树算法框架、装载问题使用回溯法的设计策略。
回溯法的递归与迭代实现。
回顾数据结构中的深度优先搜索算法,并重点说明回溯思想。
1、问题的解空间
解空间的定义、解空间的组织。
2、回溯法
回溯法的基本思想、通过两个例子说明回溯法、讲解剪枝函数、回溯法解题步骤。
3、回溯法的实现
递归回溯实现、迭代回溯实现、空间复杂性
4、两类典型的空间树
子集树、排列树、用回溯法搜索子集树的一般算法、用回溯法搜索排列树的一般算法。
5、装载问题
问题描述、举例、解决策略、算法中的约束函数、算法及分析
第5章5.5、5.8
掌握n后问题、图的m可着色问题的回溯法的设计策略。
隐约束变为显式约束、解空间树、递归算法与迭代算法。
隐约束变为显式约束、解空间树。
回顾回溯法的基本思想。
2、回溯法求解n后问题
隐约束变为显式约束、解空间树-完全n叉树、递归算法与迭代算法。
3、回溯法求解图的m着色问题
概念:
图的色数、图的m可着色优化问题、可平面图、单连通区域特殊问题:
四色猜想。
解空间树
递归回溯实现、时间复杂性
第6章6.1~6.2、6.4
理解分支限界法的基本思想与剪枝搜索策略;
掌握分支限界法的算法框架,包括队列式(FIFO)分支限界法与优先队列式分支限界法;
并通过单源最短路径问题与布线问题掌握分支限界法的设计策略。
分支限界法的基本思想与剪枝搜索策略、队列式(FIFO)分支限界法与优先队列式分支限界法。
剪枝搜索策略、队列式(FIFO)分支限界法与优先队列式分支限界法。
回顾回溯法的基本设计策略,引出分支限界法。
1、分支限界法的基本思想
✓介绍基本思想
✓介绍两种活节点扩展方式
✓举例
例1:
0-1背包问题
对该问题采用两种节点扩展方式讲解求解过程;
并介绍加速搜索策略。
例2:
旅行售货员问题
2、单源最短路径问题
✓问题描述
✓优先队列式分支限界法扩展节点
✓算法
3、布线问题
✓队列式分支限界法扩展节点
第5章5.2~5.3
。