算法分析与设计

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

目录

  • 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)n皇后问题;4)0-1背包问题; 5)最大团问题;6)旅行售货员问题;7)连续邮资问题。 

重点:要正确把握回溯法的思想。采用回溯法解题时,通常遇到的两类解空间树:子集树和排列树。许多问题的解空间树都可以用这两类树来描述。针对具体问题,学会如何定义解空间,以及如何组织它们。在判断以某结点为根的子树是否包含问题的解时,需要依据限界函数或约束函数进行判断,针对不同的问题需要正确描述限界函数或约束函数。

难点:针对具体问题,定义并组织好问题的解空间,确定合适的回溯策略,设计有效的回溯算法。 

结合范例,分析问题的特征,定义问题的解空间,确定正确的解空间结构,诸如子集树或排列树。采用合适的回溯策略,实现回溯算法。 

子集树,排列树,递归回溯,迭代回溯。