课程教学目标 针对实际问题需求,进行数学建模并选择高效求解算法的训练,为提高学生的素质和创新能力打下必要的基础。主要内容涉及:面对实际问题建立数学模型、设计正确的求解算法、算法的效率估计、改进算法的途径、问题计算复杂度的估计、难解问题的确定和应对策略等等。本课程是算法课程的基础部分,主要涉及算法的设计、分析与改进途径,其他有关计算复杂性的内容将在后续课程中加以介绍。 课程内容安排 本课程的内容分成两大部分:算法的基础知识、通用算法设计技术与分析方法。 第一部分是算法基础知识,约占20%,主要介绍算法相关的基本概念和数学基础。比如,什么是算法的伪码描述?什么是算法最坏情况下和平均情况下的时间复杂度?算法时间复杂度函数的主要性质,算法复杂度估计中常用的数学方法,如序列求和及递推方程求解。 第二部分是通用的算法设计技术与分析方法,主要介绍分治策略、动态规划、贪心法、回溯与分支限界。主要介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。
介绍在算法分析中所需要的一些数学基础知识,如与程序迭代有关的序列求和公式,在估计递归计算工作量时常用的递推方程及其求解方法等。
下面介绍这一周的教学内容。 这一周的教学内容呢,主要是涉及到算法的数学基础。 首先第一个部分,就是序列求和。算法往往里边有循环, 它需要迭代操作。那么这个迭代,所产生的工作量怎么计算呢? 往往是形成一个序列的和。我们先介绍序列求和的方法,包括求和的公式。 有的时候求不出精确的和可以估计这个和式的上界。 这是有关的第一部分数学基础。 第二部分呢,涉及到的是递推方程。我们先介绍递推方程和算法分析的关系。 通过一些例子来说明这个关系。然后介绍递推方程的求解办法。 最简单的就是迭代的方法,包括基本的迭代法和换元的迭代方法。 那么当递推方程比较复杂的时候,需要先对它 进行化简,然后我们介绍通过差消法对递推方程进行化简。 递推方程的图形,它是一个递归树。 通过树这样一个图形来给出递推方程的模型。 这是有关递推方程的迭代的方法和它的表示,以及化简,以及模型。 另外一种求解递推方程的方法就是定理。 我们先给出这个定理,叫做主定理,并给出 它的证明。然后我们介绍主定理的应用。 所以这一部分数学基础主要是两个大的部分。一个是序列求和,一个是递推 方程的求解。这些个方法在后面的算法分析中经常要用到。