算法分析 | 回溯法 | 01背包问题

本文详细介绍了如何运用回溯法解决01背包问题,包括解空间的建立、搜索约束条件与限界条件的设定,以及算法优化策略。在代码实现部分,作者分享了递归程序的编写思路,并在后续章节分析了潜在的Bug及修复方案,最后提出对Bound函数的改进,以提高算法效率。
摘要由CSDN通过智能技术生成

零.前言

1.确立解空间

回溯法需要用到树的概念 . 这个树就是问题的解空间{x1,x2,x3....xn}.

其中,左右连线表示做出了某个选择;每个结点表示做出选择后的一个状态; 每一层代表一个数组元素

 

 

2.搜索解空间

约束条件:满足某个条件才能向左子树扩展,表示放入物品.

cw:已装入重量;    w[i]:当前物品的重量;    W:总容积

cw + w[i] <= W                                                                                                          时间复杂度=O(1)

 

限界条件:右子树扩展,即使不放入该物品,最后也可能产生最优解

cp:当前价值;    rp:剩下物品的总价值;    bestp:计算过程中当前的最优解

cp+rp>=bestp              只有满足限界条件,才有向右子树扩展的价值                 rp需要累加得解,时间复杂度=O(n)

 

③编写程序

递归程序的编写,是要在逻辑上的二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值