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

本文深入探讨了回溯法的概念,包括问题的解空间、基本思想、生成问题状态的方法以及剪枝函数。回溯法通过深度优先搜索解空间并利用限界函数避免无效搜索,有效地减少了计算量。同时,介绍了递归和迭代两种回溯法的实现方式,以及回溯法效率的关键因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第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背包问题)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值