算法分析与设计

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

目录

  • 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、 理解分支限界法的基本思想:分支限界法是在问题的解空间树中遵循广度优先的策略搜索问题的解。因此,在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有子结点。此时,需要舍弃那些导致不可行解或非最优解的儿子结点。通常有两种方式从活结点表中选择下一扩展结点,导致两种不同的分支限界法:1)队列式分支限界法;2)优先队列式分支限界法。

3、 通过范例学习分支限界法的设计方法。应用范例包括: 1) 装载问题;2)0-1背包问题;3)旅行售货员问题;4)批处理作业调度问题。 

重点:要正确把握分支限界法的思想。采用分支限界法解题时,通常也是用子集树和排列树来组织解空间。遵循分支限界法的策略,在扩展结点处,先生成其所有的子结点,然后再从当前的活结点表中选择下一个扩展结点。为了提高搜索进程,在每一个活结点处计算一个函数值(限界),根据函数值从当前活结点表中选择最优的结点,使搜索在解空间中沿着最优解的方向前进,以便尽快得到一个最优解。

难点: 针对具体问题,定义并组织好问题的解空间,正确运用分支限界法的搜索策略,设计有效的分支限界算法。

结合范例,分析问题的特征,定义问题的解空间,确定正确的解空间结构,诸如子集树或排列树。针对具体问题,采用合适的搜索策略,运用分支限界法设计有效的算法。 

子集树,排列树,队列式分支限界法,优先队列式分支限界法。