算法分析与设计

王新伟 华东师范大学 副教授

目录

  • 1 第一章 绪论
    • 1.1 本章导学
    • 1.2 第一节 算法概述
    • 1.3 本章试题
  • 2 第二章 递归与分治策略
    • 2.1 本章导学
    • 2.2 第一节 算法总体思想
    • 2.3 第二节 递归
    • 2.4 第三节 防治法
    • 2.5 本章试题
  • 3 第三章 动态规划
    • 3.1 本章导学
    • 3.2 第一节 动态规划算法的概念
    • 3.3 第二节 动态规划算法的基本步骤
    • 3.4 第三节 动态规划算法的基本要素
    • 3.5 第四节 动态规划算法设计策略
    • 3.6 本章试题
  • 4 第四章 贪心算法
    • 4.1 本章导学
    • 4.2 第一节 活动安排问题
    • 4.3 第二节 贪心算法的基本要素
    • 4.4 第三节 最优装载
    • 4.5 第四节 单源最短路径
    • 4.6 第五节 多机调度问题
    • 4.7 本章试题
  • 5 第五章 回溯法
    • 5.1 本章导学
    • 5.2 第一节 回溯法的基本思想
    • 5.3 第二节 回溯法解题的算法框架
    • 5.4 第三节 回溯法的设计策略
    • 5.5 本章试题
  • 6 第六章 分支限界法
    • 6.1 本章导学
    • 6.2 第一节 分支限界法的基本思想
    • 6.3 第二节 动态规划算法的基本步骤
    • 6.4 第三节 0-1背包问题
    • 6.5 第四节 旅行售货员问题
    • 6.6 本章试题
本章导学
  • 1
  • 2
  • 3

面对一个规模较大的问题,直接去求解有时是十分困难,甚至是不可能的。分治法的思想就是将一个难以直接解决的大问题分解成若干规模较小的相同小问题,以便各个击破,分而治之。在这样的过程中自然引出递归算法。在算法设计中将分治策略和递归同时应用,往往会提高算法的效率。 本章首先介绍递归的特征和分治策略,然后结合范例介绍分治和递归算法的设计模式。

1、 理解递归的概念。

2、 掌握设计有效算法的分治策略。

3、 通过范例学习分治策略设计方法。 应用范例包括: 1)二分搜索技术;2)大整数乘法; 3)棋盘覆盖; 4)合并排序;5)循环赛日程表。

重点:要正确把握递归算法和分治法的关系。学会实现递归算法,掌握分治法的设计模式。结合具体问题,正确运用分治策略实现有效的递归算法。

难点:运用分治策略设计算法时,如何将一个原问题分解成若干子问题,要求子问题互相独立,且与原问题相同。

在掌握递归和分治的概念的基础上,针对具体范例,采用合适的设计模式,用C语言实现有效的算法,并对这些算法的复杂性给出正确的评价。

递归算法,分治策略。