算法学习-回溯法(1)求幂集以及全排列相关问题

基础

复杂问题的解是由若干个小的决策步骤组成的决策序列,解决一个问题所有可能的决策序列构成该问题的解空间

使用回溯法求解问题的时候应该首先明确解空间。

解空间中满足约束条件的解就是可行解了,能用最低代价完成的可行解就是最优解

问题的解空间一般都是树的形式,所以也称为解空间树 -> 树根节点表示搜索的初始状态,每一层的节点是上一层节点做出决策之后状态的转换

比如下图就是求集合{a,b,c}的幂集的解空间树

求解过程分为3步,分别决定选择不选择a\b\c三个元素,每个叶子节点构成一个解

回溯法需要在包含所有解的解空间树中,使用DFS策略从根节点开始搜索解。之所以叫回溯法,就是在搜索过程中如果Si+1节点发现不满足条件,走不通,就会回退到Si节点中去,从这里再找其它路径。

在回溯法中,通常具有约束函数和限界函数来避免无效搜索,统称为剪枝函数

所以 回溯法 = DFS + 剪枝

求幂集

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值