常见算法思想6:回溯法

回溯法是一种试探性解题方法,通过逐步试探并适时回溯寻找问题解。基本步骤包括定义解空间、确定解空间结构、深度优先搜索并剪枝。效率分析涉及解空间、约束条件和状态树。适合解决无最优解要求的问题,N皇后问题是一个经典应用案例,通过限制每列仅有一个皇后来避免冲突。
摘要由CSDN通过智能技术生成

回溯法

回溯法也叫试探法,试探的处事方式比较委婉,它先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一进行枚举和检验。当发现当前候选解不可能是正确的解时,就选择下一个候选解。如果当前候选解除了不满足问题规模要求外能够满足所有其他要求时,则继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在试探算法中,放弃当前候选解,并继续寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。

使用回溯法解题的基本步骤如下所示:

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

回溯法为了求得问题的正确解,会先委婉地试探某一种可能的情况。在进行试探的过程中,一旦发现原来选择的假设情况是不正确的,马上会自觉地退回一步重新选择,然后继续向前试探,如此这般反复进行,直至得到解或证明无解时才死心。

效率分析

下面是回溯的3个要素。
(1)解空间:表示要解决问题的范围,不知道范围的搜索是不可能找到结果的。
(2)约束条件:包括隐性的和显性的,题目中的要求以及题目描述隐含的约束条件,是搜索有解的保证。
(3)状态树:是构造深搜过程的依据,整个搜索以此树展开。

回溯算法适合解决没有要求求最优解的问题。如果采用,一定要注意跳出条件及搜索完成的标志,否则会陷入泥潭不可自拔。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值