第5章 回溯法

5.1 回溯法

1.回溯法的提出
 有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。

2. 问题的解空间
(1)问题的解向量:回溯法希望一个问题的解能够表示成一个n元式(x1,x2,…,xn)的形式。
(2)显约束:对分量xi的取值限定。
(3)隐约束:为满足问题的解而对不同分量之间施加的约束。
(4)解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。

3. 回溯法的基本思想
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

4. 生成问题状态的基本方法

(1)相关概念:
  扩展结点:一个正在产生儿子的结点称为扩展结点
  活结点:一个自身已生成但其儿子还没有全部生成的节点称做活结点
  死结点:一个所有儿子已经产生的结点称做死结点
(2)深度优先的问题状态生成法:
  如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)
(3)广度优先的问题状态生成法:
  在一个扩展结点变成死结点之前,它一直是扩展结点
(4)回溯法:
  为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函数的深度优先生成法称为回溯法

5. 常用剪枝函数
(1)用约束函数在扩展结点处剪去不满足约束的子树(01背包问题)
(2)用限界函数剪去得不到最优解的子树(旅行商问题)

6.计算空间
  用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为O(h(n))。而显式地存储整个解空间则需要O(2h(n))或O(h(n)!)内存空间。

7.算法框架
(1)递归回溯
  回溯法对解空间作深度优先搜索,因此,在一般情况下用递归方法实现回溯法。

(2)迭代回溯
  采用树的非递归深度优先遍历算法,可将回溯法表示为一个非递归迭代过程。

(3)子集树算法框架
  遍历子集树需O(2n)计算时间


(4)排列树算法框架
  遍历排列树需要O(n!)计算时间


8.回溯法效率分析

回溯算法的效率在很大程度上依赖于以下因素:
(1)产生x[k]的时间;
(2)满足显约束的x[k]值的个数;
(3)计算约束函数constraint的时间;
(4)计算上界函数bound的时间;
(5)满足约束函数和上界函数约束的所有x[k]的个数。
好的约束函数能显著地减少所生成的结点数。但这样的约束函数往往计算量较大。因此,在选择约束函数时通常存在生成结点数与约束函数计算量之间的折衷。

算法设计与分析第5章 回溯法(一)【回溯法】相关推荐

  1. 算法设计与分析第七章分支限界算法(完结篇)

    算法设计与分析第七章分支限界算法 一.分支界限算法概述 1.分支限界法类似于回溯法,是一种在问题的解空间树上搜索问题解的算法. 分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解 ...

  2. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

    复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...

  3. 算法设计与分析第5章 回溯法(二)【回溯法应用】

    第5章 回溯法 5.2 应用范例 1.0-1背包问题 有n件物品和一个容量为c的背包.第i件物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和 ...

  4. [XJTUSE 算法设计与分析] 第五章 回溯法

    第五章 回溯法 填空题会有代码填空,大题会手动回溯 学习要点 理解回溯法的深度优先搜索策略. 掌握用回溯法解题的算法框架 (1)递归回溯 (2)迭代回溯 (3)子集树算法框架 (4)排列树算法框架 5 ...

  5. 算法设计与分析基础 第一章谜题

    习题1.1 10.b 欧几里得游戏 一开始,板上写有两个不相等的正整数,两个玩家交替写数字,每一次,当前玩家都必须在板上写出任意两个板上数字的差,而且这两个数字必须是新的,也就是说,不能与板上任何一个 ...

  6. 【算法设计zxd】第四章蛮力法 1.枚举法 02穷举查找

    目录 蛮力法(brute force): [例4-1]链环数字对  问题分析  计算模型 pair_digital(int n): 代码: [例4-2]解数字迷: 思考题:ACM预测:​ 问题分析 ...

  7. 算法设计与分析——第五章回溯法 批处理作业调度 + 最大团问题+图的m着色问题

    文章目录 6.批处理作业调度(排列树) 7.最大团问题 8.图的m着色问题 6.批处理作业调度(排列树) 每一个作业Ji都有两项任务分别在2台机器上完成.每个作业必须先有机器1处理,然后再由机器2处理 ...

  8. 算法设计与分析第1章 算法概述

    第1章 算法概述(穷举算法) 重要人物:Alan Turing(图灵机).Donald Knuth(TEX系统) 算法:解决问题的一种方法或一个过程 特性:有穷性(Finiteness).确定性(De ...

  9. 算法设计与分析第4章 动态规划(二)【DP序列问题】

    第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...

最新文章

  1. LeetCode: 66. Plus One
  2. 认真了解一下javascript
  3. jQuery实现星星评分功能
  4. CodeForces - 1245C Constanze's Machine(思维+找规律)
  5. 深度学习(十九)——FCN, SegNet, DeconvNet, DeepLab, ENet, GCN
  6. php如何在类的外部修改成员属性,php中如何在外部修改类的私有或受保护属性值...
  7. java中的Iterator和Iterable 区别
  8. Computed property “value1“ was assigned to but it has no setter.
  9. windows下sublime通过sftp扩展上传文件到linux服务器上
  10. boost基础——any(二)
  11. QCon全球软件开发大会:推动创新,实现技术落地
  12. 标志寄存器02 - 零基础入门学习汇编语言55
  13. 如何判断对象是否存活/死去
  14. 《近世代数》课程感想
  15. 在线制作车牌效果图_在线快速生成,苹果设备在线样机
  16. 苹果x Android,中国发明安卓iPhoneX 安卓iPhoneX有何特别之处?
  17. 苹果计算机的优势,苹果笔记本的优缺点详细分析
  18. 冰点还原标准版-中文版(全面支持Windows 7)7.0.020.3172(最新版)下载与注册
  19. 【NOTE】python3.6下scons运行提示找不到SCons.Script解决方式
  20. Thumbnails生成缩略图透明底图变黑bug修改

热门文章

  1. Spring Boot整合Spring Data JPA操作数据
  2. Chrome不支持showModalDialog的解决方案
  3. 2022-2028年中国再生金属行业投资分析及前景预测报告
  4. 2017 年已读书单总结
  5. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册
  6. vscode 高效使用指南
  7. 只有变强大,才能照亮他人
  8. sqlplus连接时出现错误:shared memory realm does not exist 解决
  9. 汇编语言中将数据、代码、栈放入不同的段
  10. LeetCode简单题之找出两数组的不同