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

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

回溯法

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背包问题可以使用动态规划,不需要对接点进行排序;采用回溯法和分支限界法需要通过单位质量进行排序

分支限界法

算法分析与设计期末总复习下(回溯,分支限界法部分)_第1张图片
算法分析与设计期末总复习下(回溯,分支限界法部分)_第2张图片算法分析与设计期末总复习下(回溯,分支限界法部分)_第3张图片

0-1背包问题

一、动态规划

算法分析与设计期末总复习下(回溯,分支限界法部分)_第4张图片

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

三、子集树—回溯法

1、算法思想

算法分析与设计期末总复习下(回溯,分支限界法部分)_第5张图片

2、剪枝函数

算法分析与设计期末总复习下(回溯,分支限界法部分)_第6张图片算法分析与设计期末总复习下(回溯,分支限界法部分)_第7张图片

3、时间复杂度:

在这里插入图片描述

4、代码:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第8张图片

四、分支限界法

1、算法思想:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第9张图片

2、代码:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第10张图片

3、应用

算法分析与设计期末总复习下(回溯,分支限界法部分)_第11张图片
算法分析与设计期末总复习下(回溯,分支限界法部分)_第12张图片

装载问题

一、贪心法

1、算法思想:

最轻的先装

2、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第13张图片

3、性质证明:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第14张图片

二、回溯法

1、算法思想:

(1)首先将第一艘轮船尽可能装满;
(2)将剩余的集装箱装上第二艘轮船。

2、剪枝策略:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第15张图片

3、时间复杂度:

在每个结点处算法花费O(1)时间,子集树中结点个数为O(2n),时间复杂度为O(n2n);如果需要记录子集树的最优解的选择,则需要O(n)的递归栈空间,时间复杂度为O(n2n)。

4、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第16张图片

子集树—最大团问题:

一、回溯法

1、算法思想:

首先设最大团为一个空团,往其中加入一个顶点,然后依次考虑每个顶点,查看该顶点加入团之后仍然构成一个团,如果可以,考虑将该顶点加入团或者舍弃两种情况,如果不行,直接舍弃,然后递归判断下一顶点。对于无连接或者直接舍弃两种情况,在递归前,可采用剪枝策略来避免无效搜索。
为了判断当前顶点加入团之后是否仍是一个团,只需要考虑该顶点和团中顶点是否都有连接。

2、剪枝策略:

如果剩余未考虑的顶点数加上团中顶点数不大于当前解的顶点数,可停止继续深度搜索,否则继续深度递归
当搜索到一个叶结点时,即可停止搜索,此时更新最优解和最优值。
算法分析与设计期末总复习下(回溯,分支限界法部分)_第17张图片

3、时间复杂度: O(n2n)
4、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第18张图片

5、应用

算法分析与设计期末总复习下(回溯,分支限界法部分)_第19张图片

二、分支限界法—优先队列式

1、算法思想

算法分析与设计期末总复习下(回溯,分支限界法部分)_第20张图片

2、应用

算法分析与设计期末总复习下(回溯,分支限界法部分)_第21张图片

3、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第22张图片

排列树—N皇后问题

1、算法思想:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第23张图片

2、剪枝策略:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第24张图片

3、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第25张图片

4、应用

算法分析与设计期末总复习下(回溯,分支限界法部分)_第26张图片

排列树–TSP问题

这个其实是重点,但是最后没时间了只是很潦草地看了一下

1、算法思想:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第27张图片
算法分析与设计期末总复习下(回溯,分支限界法部分)_第28张图片

2、应用:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第29张图片

3、代码:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第30张图片

排列树–符号三角问题

1、算法思想:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第31张图片

2、剪枝策略:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第32张图片

3、算法复杂度:

在这里插入图片描述

4、代码:

算法分析与设计期末总复习下(回溯,分支限界法部分)_第33张图片

排列树–图的m着色问题

1、算法思想

算法分析与设计期末总复习下(回溯,分支限界法部分)_第34张图片

2、剪枝函数

算法分析与设计期末总复习下(回溯,分支限界法部分)_第35张图片

3、时间复杂度

算法分析与设计期末总复习下(回溯,分支限界法部分)_第36张图片

4、代码

算法分析与设计期末总复习下(回溯,分支限界法部分)_第37张图片

随机化算法

算法分析与设计期末总复习下(回溯,分支限界法部分)_第38张图片

你可能感兴趣的:(算法分析与设计)