课程教学目标 针对实际问题需求,进行数学建模并选择高效求解算法的训练,为提高学生的素质和创新能力打下必要的基础。主要内容涉及:面对实际问题建立数学模型、设计正确的求解算法、算法的效率估计、改进算法的途径、问题计算复杂度的估计、难解问题的确定和应对策略等等。本课程是算法课程的基础部分,主要涉及算法的设计、分析与改进途径,其他有关计算复杂性的内容将在后续课程中加以介绍。 课程内容安排 本课程的内容分成两大部分:算法的基础知识、通用算法设计技术与分析方法。 第一部分是算法基础知识,约占20%,主要介绍算法相关的基本概念和数学基础。比如,什么是算法的伪码描述?什么是算法最坏情况下和平均情况下的时间复杂度?算法时间复杂度函数的主要性质,算法复杂度估计中常用的数学方法,如序列求和及递推方程求解。 第二部分是通用的算法设计技术与分析方法,主要介绍分治策略、动态规划、贪心法、回溯与分支限界。主要介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。
贪心法是处理组合优化问题的常用算法。通过几个典型例子说明了贪心法的设计思想,同时重点阐述了贪心策略正确性的证明方法。针对某些不能保证对所有的输入都得到最优解的贪心策略讨论了其适用范围。
先介绍一下本周的教学内容。本周呢主要介绍贪心法的设计要素。 首先呢,我们先用一个例子,就是活动选择问题 来介绍一下贪心法的设计过程。 然后呢我们就来讲一下贪心法的证明。 活动选择问题是按步骤进行归纳证明,这是第一种证明方法。 然后我们用装载问题做第二个例子,介绍贪心法的 另一种证明方法,对问题的规模进行归纳。 这两种证明方法都是数学归纳法。 后面我们再介绍第三个例子,用最小延迟调度, 它是使用的交换论证的方法来证明的, 这是两类主要的证明方法。再把这些证明方法介绍完了以后, 我们最后会讲一下当得不到最优解的时候,应该怎么样处理, 这就是参数化的分析。这也用一个例子来说明,就是 找零钱问题。这是本周的主要教学的内容。
