算法分析与设计期末总复习下(回溯,分支限界法部分)

本文详细介绍了回溯法和分支限界法在解决0-1背包问题、装载问题、最大团问题等经典问题中的应用。通过算法思想、剪枝策略、时间复杂度和代码实现,阐述了这两种搜索技术在解空间树中的深度优先搜索策略,以及如何通过剪枝减少无效计算,提高效率。
摘要由CSDN通过智能技术生成

这部分其实才是期末考的重点

回溯法

1、回溯法基本思想:
搜索:从根结点出发,按深度优先策略遍历解空间树,搜索满足约束条件的解。
剪枝:在搜索至树中任一结点时,先判断该结点对应的部分解是否满足条件(用约束函数在扩展节点处减去不满足约束的子树、用限界函数剪去找不到最优解的子树),也即判断该结点是否包含问题的解,如果肯定不包含,则跳过对以该结点为根的子树的搜索,即剪枝(Pruning);否则,进入以该结点为根的子树,继续按照深度优先的策略搜索。

2、算法步骤:
一般来讲,回溯法求解问题的基本步骤如下:
(1) 针对所给问题,定义问题的解空间;
(2) 确定易于搜索的解空间结构;
(3) 以深度优先方式搜索解空间,并在搜索过程中利用Pruning函数剪去无效的搜索。

3、解空间
子集树:当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间称为子集树。例如, 0-1背包问题所相应的解空间树就是一颗子集树。这类子集问题通常有2n个叶节点,其节点总个数为2(n+1)-1。遍历子集树的任何算法均需要O(2n)的计算时间。

排列树 :当所给问题是确定n个元素满足某种性质的排列时,相应的解空间树称为 排列树 。排列树通常有n!个叶子节点。因此遍历排列树需要O(n!)的计算时间。

4、解决01背包问题可以使用动态规划,不需要对接点进行排序;采用回溯法和分支限界法需要通过单位质量进行排序

分支限界法

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

0-1背包问题

一、动态规划

在这里插入图片描述

二、贪心法(背包问题)(略)

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值