算法设计与分析6回溯法PPT课件

合集下载

回溯法_ppt课件

回溯法_ppt课件
//h(i)表示在当前扩展节点处x[t]的第i个可选值
实 现 递 归
} }
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --;
if (Constraint(t) &&Bound(t) ) { if (Solution(t)) Output(x); else t ++; } else t --; 分析:
算法设计与分析 >回溯法
5、回溯法解题步骤: 1).针对所给问题,定义问题的解空间 2).确定解空间结构. 3).以深度优先方式搜索解空间.
算法模式 Procedure BACKTRACK(n); {k:=l; repeat if TK (x1,x2,...xK-1 )中的值未取遍 then { xK:=TK (x1,x2,..., x K-1 )中未取过的一个值; if BK (x1, x2, ..., x K) then //状态结点(x1,...xk)被激活 if k=n then output(x1, x2, ..., xk) //输出度优先 e1se k:=k-l; //回溯 until k=0; end;{BACKTRACK}
if (Constraint(t)&&Bound(t) ) Backtrack(t + 1); if语句含义:Constraint(t)和Bound(t)表示当前扩展 节点处的约束函数和限界函数。 Constraint(t): 返回值为true时,在当前扩展节点处 x[1:t]的取值问题的约束条件,否则不满足问题的约束条 件,可剪去相应的子树 Bound(t): 返回的值为true时,在当前扩展节点处 x[1:t]的取值为时目标函数越界,还需由Backtrack(t+1) 对其相应的子树做进一步搜索。否则,当前扩展节点处 x[1:t]的取值是目标函数越界,可剪去相应的子树 for循环作用:搜索遍当前扩展的所有未搜索过的 子树。 递归出口:Backtrack(t)执行完毕,返回t-1层继续 执行,对还没有测试过的x[t-1]的值继续搜索。当t=1时, 若以测试完x[1]的所有可选值,外层调用就全部结束。

算法设计与分析-第8章-回溯法PPT课件

算法设计与分析-第8章-回溯法PPT课件
{ ( ), (1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3) }
(2)可能解由一个等长向量{x1, x2, …, xn}组成,其中 xi=1(1≤i≤n)表示物品i装入背包,xi=0表示物品i没有装入背包, 当n=3时,其解空间是:
{(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }
4 34 2 2 3 4 3 4 13 1 4 24 12 12 3 3 12 1 5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65
解向量:由根结点到叶结点的路径所定义
图8.1.1-3 n=4的八皇后问题解空间树
1
1
0
2
1
0
6
9
1
0
10
13
不可行解
1
0
1
0
1
0
8
11
12
14
15
不可行解 价值=20 价值=55 价值=30 价值=25 价值=0
.
15
8.1.2 回溯法的设计思想
TSP问题搜索解空间的方法---应用目标函数剪枝
再如,对于n=4的TSP问题,其代价矩阵如图所示,
∞3 6 7 C= 12 ∞ 2 8
.
21
8.1.3 回溯法的求解过程
简言之:
1) 逐级扩展解向量 x1 ,x2 , … , xi-1
xi
2) 动态测试部分解
用 Bi (x1 , x2 ,… ,xi-1 ,xi) ---剪枝函数动态测试, 判定路径 x1 x2 … xi-1 xi 是否可行。

第5章回溯法PPT课件

第5章回溯法PPT课件

二、回溯的一般描述
一旦某个j元组(x1,x2,…,xj)违反D中仅涉及 x1,x2,…,xj 的一个约束,就可以肯定,以(x1, x2,…,xj)为前缀的任何n元组
(x1,x2,…,xj,xj+1,…,xn)都不会是问题P 的解。
三、回溯的一般步骤
回溯法正是针对这类问题,利用这类问题的 上述性质而提出来的比枚举法效率更高的算 法。
由于这是第一次用计算机证明数学定理,所以哈肯 和阿佩尔的工作,不仅是解决了一个难题,而且从 根本上拓展了人们对“证明”的理解,引发了数学 家从数学及哲学方面对“证明”的思考。
实例—n皇后问题
在一个n×n的棋盘上放置n个国际象棋中 的皇后,要求所有的皇后之间都不形成攻 击。请你给出所有可能的排布方案数。
n
4
5
6
7
8
总数
2
10
4
40
92
n皇后问题
对于n皇后问题而言,我们很难找出很合适的方法 来快速的得到解,因此,我们只能采取最基本的枚 举法来求解。
但我们知道,在n×n的棋盘上放置n个棋子的所有
回溯算法(一)
什么是回溯
入口回溯
▪迷宫游戏
回溯
➢什么是回溯法
回溯
▪回溯法是一个既带
有系统性又带有跳跃
性的的搜索算法
回溯
▪回溯法是以深度优先的方式系统地搜索问题 出口 的解, 它适用于解一些组合数较大的问题。
回溯(Trackback)是什么?
为什么回溯?
怎样回溯?
What
Why
How
一、回溯的概念
解问题P的最朴素的方法就是枚举法,即对E 中的所有n元组逐一地检测其是否满足D的全 部约束,显然,其计算量是相当大的。

算法设计与分析课件--回溯法-n皇后问题

算法设计与分析课件--回溯法-n皇后问题

8
5.5 n皇后问题
对于n皇后问题,搜索树有1+n+n2+…+nn个结点。 1+n+n2+…+nn= (nn+1 -1)/(n-1) <= (nn+1)/(n/2) = 2nn(n>=2) 在每个结点处,要判断该位置的皇后是否与已经放置的皇后相 互攻击,最多要看3n个位置(沿列的方向、主与副对角线方向)是 否已有皇后,故n皇后问题的该算法最坏时间复杂度为 O(3n*2nn)=O(nn+1),这是个粗略的估计。
1个皇后所在的列,即仅有n-i+1个位置可供选择。令 S={1,2,…,n},则xi∈S-{x1,x2,…,xi-1}。显然,满足显式约束的n 元组共有n!种,它构成n皇后问题的解空间。 排列树
10
5.5 n皇后问题
n皇后问题的分析: • 解空间树 – 排列树。这里n=4。
11
5.5 n皇后问题
9
5.5 n皇后问题
n皇后问题的分析(二):
✓ 问题解的形式:表示为n元组(x1, x2,…, xn)的形式,其中xi(i=1, 2,…, n)表示第i个皇后放置在第i行第xi列;
✓ 显式约束:n个皇后不同行且不同列; ✓ 隐式约束:n个皇后不在正反对角线上; ✓ 解空间:根据显式约束,第i(i=1,2,…,n)个皇后不能放置在前i-
if t > n then
OUTPUT(x);
else
for i 1 to n do
x[t] i;
//第t个皇后放到第i列,不去判断列是否冲突
if PLACE(t) then
BACKTRACK-NQUEEN1-REC(t+1);

算法设计与分析课件--回溯法-图的m着色问题

算法设计与分析课件--回溯法-图的m着色问题

4
5
C
C
n=5, m=3的GCP: 解形式(x1,x2, x3, x4, x5) xi =1(红色), 2(绿色), 3(蓝色)
X3=3
D
9
5.6 图的m着色问题
GCP示例
1
A
AA
A
A X1=1
2
3
X1=1
X1=1 X1=1
B
B
B
B X2=2
4
5
X2=2
C
X2=2
C
C X3=3
n=5, m=3的GCP: 解形式(x1,x2, x3, x4, x5) xi =1(红色), 2(绿色), 3(蓝色)
7
5.6 图的m着色问题
GCP示例
1
AA
A
2
3
X1=1
X1=1
B
B
X2=2
4
5
C
n=5, m=3的GCP: 解形式(x1,x2, x3, x4, x5) xi =1(红色), 2(绿色), 3(蓝色)
8
5.6 图的m着色问题
GCP示例
1
AA
A
A
2
3
X1=1
X1=1 X1=1
B
B
B
X2=2 X2=2
A
X1=1
2
3
B
X2=2 X2=3
4
5
C
X3=3
G
X3=2
n=5, m=3的GCP: 解形式(x1,x2, x3, x4, x5) xi =1(红色), 2(绿色), 3(蓝色)
D
X4=1
E
X5=3
F
H
X4=1

回溯法ppt课件

回溯法ppt课件
分析:
可能解由一个等长向量(x1, x2, …, xn)组成, 其中
xi=1(1≤i≤n)表示物品i装入背包 xi=0(1≤i≤n)表示物品i没有装入背包
如:
当n=3时,其解空间是:
{ (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)}
第5章 回溯法
学习要点
5.1 回溯法概述 5.2 回溯法的典型示例 5.3 回溯法的效率分析 本章小结
1
5.1 回溯法概述
5.1.1 问题的解空间 问题的解空间 两类典型的解空间
5.1.2 回溯法的基本思想 回溯法的基本思想 算法的框架 例:排列与组合 小结
15
排列树
分析
求赋权图G的具有最小权的Hamilton圈1
1解空间30:
2
2 34
64
5 10
3 42 4 2 3
3
4
20
4
34
23
2
当起点1固定时,上图有3!个周游路线(排列问题)
16
回溯法的基本思想
回溯法
回溯法是一种选优搜索法,按选优条件向前搜 索,以达到目标。
但当探索到某一步时,发现原先选择并不优或 达不到目标,就退回一步重新选择,这种走不 通就退回再走的技术为回溯法,而满足回溯条 件的某个状态的点称为“回溯点”。
若(x1, x2,… xi xi+1)满足约束条件, 则继续添加 xi+2 ;
若所有可能的xi+1 si+1均不满足约束条件,则去 掉xi , 回溯到(x1, x2,… xi-1), 添加尚未考虑过的xi;

算法设计与分析课件--回溯法-作业调度问题

算法设计与分析课件--回溯法-作业调度问题
❖ 计算任务由计算机的中央处理器完成,打印输出任务 由打印机完成。
❖ 计算机处理器是机器1,打印机是机器2。
5
5.4 作业调度问题
tmi 作业J1 作业J2 作业J3
机器m1 2 3 2
机器m2 1 1 3
调度一:1, 2, 3
F11=2 F21=3 F12=5 F22=5+1=6 F13=7 F23=7+3=10 f = F21+F22+F23 = 19
cf<bestf,限界条件满 K L
足,扩展生成的结点
J成为活结点。
24
5.4 作业调度问题
tmi 机器m1 机器m2
作业J1
2
1
作业J2
3
作业J3
2
1
A
3
x1=1 x1=2
B
C
x1=3 D
◼ 沿着结点 J 的x3=1 x2=2 x2=3 x2=1 x2=3 x2=1 x2=2
的分支扩展:
E
FG
H
//更新完成时间之和
if (f < bestf)
//判断与当前最优解之间的关系
Swap(x[i], x[j]);
//将j位置上的任务序号与i位置上的互换
backtrack(i+1);
//递归进行下一层的调度
Swap(x[i], x[j]);
//回溯,还原,执行第i层的下一个任务
f1 f1 - M[x[j]][1]; //出栈要回溯到父亲节点,先恢复数据;
K
L
❖此 时 , 找 到 比 先 前 更 优 的 一 种 调 度 方 案 (1,3,2) , 修 改 bestf=18 。
14

算法与结构课件-第8章回溯法

算法与结构课件-第8章回溯法

下图为n=3和m=3时,问题的解空间树。
在回溯算法Backtrack中,当i>n时,表示算法已搜索至一个 叶结点,得到一个新的m着色方案,因此当前已找到的可m着色 方案数sum增1。当i≤n时,当前扩展结点Z是解空间树中的一个 内部结点。该结点有x[i]=1,2,…,m。对当前扩展结点Z的每一个 儿子结点,由函数 Ok检查其可行性,并以深度优先的方式递归地 对可行子树进行搜索,或剪去不可行子树。
计算机算法设计与分析
Computer Algorithms Design & Analysis
第六章 回溯算法(Backtrack Algorithm)
★ 回溯法的算法框架 ★ 0/1背包问题 ★ 旅行售货员问题 ★ n后问题
问题的解空间
复杂问题常常有很多的可能解,这些可能解 构成了问题的解空间。解空间也就是进行穷举的 搜索空间,所以,解空间中应该包括所有的可能 解。
E (10,20)
x3=1
x3= 0
J (10,20) K
F (5,15)
x3=1
x3=0 x3=1
(15,25)
L M (5,15)
N
G (0,0)
x3=0
O (0,0)
(15,35)
当前最优解 可行解
(15,35) (20,40)
中间计算结果
(20,40) (20,40)
(20,40)
旅行售货员问题
for (i=1; i<k; i++) if (x[k]= =x[i] | | abs(k-i)= =abs(x[k]-x[i])) return false; return true;
}
§5 图的着色问题

算法分析与设计回溯法ppt课件

算法分析与设计回溯法ppt课件
上图显示了在4-皇后问题中求上述一个解的树的实际生成 部分。结点按它们生成的次序被编号。由限界函数所杀死 的结点则在其下方写上B。
回溯法的算法
算法的三个步骤:
针对所给问题,定义问题的解空间;
应用回溯法解问题时,首先应明确定义问题的 解空间。问题的解空间应至少包含问题的一个 (最优)解。
确定易于搜索的解空间结构; 以深度优先的方式搜索解空间,并且在搜
索过程中用剪枝函数避免无效搜索;
回溯算法的形式描述
假设回溯算法要找出所有的答案结点而不是仅 仅只找出一个。 ① 设(x1,x2,…,xi-1)是状态空间树中由根到一个 结点(问题状态)的路径。 ② T(x1,x2,…,xi-1)是下述所有结点的xi的集合, 它使得对于每一个xi, (x1,x2,…,xi)是一条由 根到结点xi的路径 ③ 存在一些限界函数Bi(可以表示成一些谓词), 如果路径(x1,x2,…,xi)不可能延伸到一个答案 结点,则Bi(x1,x2,…,xi)取假值,否则取真值。
问题求解的方法
硬性处理法
列出所有候选解,逐个检查是否为所需要的解 理论上,候选解数量有限,并且通过检查所有或部分
候选解能够得到所需解时,上述方法可行
实际中则很少使用,因为候选解的数量通常都非常大 (比如指数级,甚至是大数阶乘),即便采用最快的 计算机也只能解决规模较小的问题。
回溯或分枝限界法
避免对很大的候选解集合进行完全检查 大大减少问题的求解时间 通常用来求解规模较大的问题
回溯法求解的经典问题(1) 8-皇后问题
在一个8*8棋盘上放置8个皇后,且使得每两个 之间都不能互相“攻击”,也就是使得每两个 都不能在同一行、同一列及同一条斜角线上。
8皇后问题的解可以表示为8-元组(x1,…,x8) , 其中其中xi是第i行皇后所在的列号。

算法设计与分析6回溯法PPT课件

算法设计与分析6回溯法PPT课件
n
m a x w i x i i1
n
s . t . S i x i C i1
1.解空间 x1,x2, ,xn,xi x i0,1{0 , 1 } , 1 i n
2.解空间结构树:高度为n+1的完全二叉树,结点总数为 2n1 1,左孩子为1,
右孩子为0.
2021/3/12
8
0-1背包问题的具体求解过程
1
W=(30,12,44,46,50)
1
1.令Wup=0,将物体的序号按价值体积比
2 1
排序结果是(2,1,3,4,5)
3
2.生成部分解(1,1,1,0),估计当前部分解 1
的价值为Weva=94.3,Weva>Wup
4 0
3.继续向下搜索生成结点6,得到可行解 (1,1,1,0,0),得到价值为86,更新
5 0
Wup=86
6
2021/3/12
12
实例1:0-1背包问题
4.回溯:沿右孩子回溯到左孩子4,生成 相应右孩子7,得到部分解(1,1,0,1),此时 Weva=93 5.因为Weva>Wup,继续生成结点8,9, 得到可行解(1,1,0,1,0),价值为88,更新 Wup=88
2021/3/12
0-1背包问题
问题描述:3个物W=[16,15,15] ,S=[45,25,25] ,C=30 1.定义解空间: (0,0,0),(0,0,1)…(1,1,1),含有2 n 个解。 2.确定解空间的结构(二叉树)如图 3.进行深度优先搜索
n=3时的0-1背包问题用完全二叉树表示的解空间
2021/3/12
求解过程:
1.初始化:目标函数置为0,将物品按价值体积比的非增顺序排 序

回溯法 ppt课件

回溯法 ppt课件

回溯法举例:
[旅行商问题] 在这个问题中 ,给出一个n 顶点网络(有向 或无向) ,要求找出一个包含所有n 个顶点的具有最小耗 费的环路 。任何一个包含网络中所有n 个顶点的环路被称 作一个旅行(t o u r )。在旅行商问题中 ,要设法找到一 条最小耗费的旅行。 [分析]图给出了一个四顶点网络 。在这个网络中 ,一些旅
Bound(t) : 返回的值为true时 , 在当前扩展节点处 x[1: t]的取值为时 目标函数越界 , 还需由Backtrack(t+1) 对其相应的子树做进一步搜索 。否则 , 当前扩展节点处 x[1: t]的取值是目标函数越界 ,可剪去相应的子树
for循环作用: 搜索遍当前扩展的所有未搜索过的 子树。
si+1均不满足约束条件,则去掉xi , 回溯到(x 1 , x 2 , … xi-1), 添加尚 未考虑过的xi , 如此反复进行,直到(x1 , x2 , … xk) k n满足所有的 约束条件或证明无解.
E= { (x1 , x2 , … xn), xi si , si为有限集 }称为问题的解空间.
5. 1 回溯法基本思想
穷举法技术建议我们先生成所有的候选解 , 然后找出那个 具有需要特性的元素
1 、 回溯法主要思想是每次只构造解的一个分量 ,然后按照 鲜明的方法来评估这个部分构造解 。如果一个部分构造解可以进一 步构造而不会违反问题的约束 , 我们就接受对下一个分量所作的第 一个合法选择 。如果无法对下一个分量进行合法的选择 , 就不对剩 下的任何分量再做任何选择了 。在这种情况下 ,该算法进行回溯 , 把部分构造解的最后一个分量替换为它的下一个选择。
算法模式 Procedure BACKTRACK (n); {k := l;

算法设计与分析》-回溯ppt课件

算法设计与分析》-回溯ppt课件

电路板陈列问题
其中两个能够的陈列如下图,那么该 电路板陈列的密度分别是2,3
左以下图中,跨越插槽2和3,4和5,以及 插槽5和6的连线数均为2。插槽6和7之间 无跨越连线。其他插槽之间只需1条跨越 连线。
算法分析
电路板陈列问题是NP难问题,因此
NP难 问题
不大能够找到解此问题的多项式时间
算法。思索采用回溯法系统的搜索问
陈列树 解空间大小: n!
满足约束条件的解,解 空间中的一个子集
可行解
最优解
使目的函数取极值〔极 大或极小〕的可行解, 一个或少数几个
可行解和 最优解
当前扩展结点成为死结点时,应往回挪动〔回溯〕至最近的 一个活结点处,并使这个活结点成为当前的扩展结点
所搜索到的结 点不是叶结点, 且满足约束条 件和目的函数 的界,其儿子 结点还未全部 搜索终了
now[j]>0且now[j]!=total[j]。用
这个条件来计算插槽i和i+1间的连线
密度。
算法效率
在解空间陈列树的每个节点处,算法 Backtrack破费O(m)计算时间为每个儿 子节点计算密度。因此计算密度所耗费 的总计算时间为O(mn!)。另外,生成陈 列树需求O(n!)时间。每次更新当前最优 解至少使bestd减少1,而算法运转终了 时bestd>=0。因此最优解被更新的额次 数为O(m)。更新最优解需求O(mn)时间 。综上,解电路板陈列问题的回溯算法 Backtrack所需求的计算时间为O(mn!)
树的搜索, 否那么,进 逐层向其祖 入该子树, 先结点回溯 继续按深度
优先战略搜
4索
5
搜索方式
内留意:这棵解空间 树不是遍历前预先建 立的,而是隐含在遍 历过程中。 容

计算机算法回溯法课件

计算机算法回溯法课件
并行计算
利用并行计算技术,将问题分解为多个子问题,同时求解,提高计 算能力。
人工智能应用
结合人工智能技术,如机器学习、深度学习等,对回溯法进行优化和 改进。
THANK YOU
VS
详细描述
回溯法在排列组合问题中的应用是通过递 归和剪枝实现的。首先,算法会生成一个 解,然后递归地生成下一个解。在生成过 程中,算法会检查当前解是否满足约束条 件,如果不满足则回溯到上一个状态重新 尝试。通过不断回溯和尝试,最终找到所 有合法的解。
05
回溯法的优化与改进
记忆化搜索技术的应用
总结词
特点
回溯法适用于解决组合优化问题,特 别是约束满足问题,它能够找到所有 可能的解,但可能存在解的质量和数 量的问题。
适用场景
约束满足问题
回溯法适用于解决约束满足问题,如旅行商问题、排班问题等。
组合优化问题
回溯法也适用于解决一些组合优化问题,如背包问题、图着色问题 等。
决策问题
回溯法还可以用于解决决策问题,如逻辑推理、游戏AI等。
在分析算法的效率时,需要考虑算法 的时间复杂度和空间复杂度。
通过分析算法的效率与复杂度,可以 评估回溯法在不同问题上的适用性和 性能表现。
04
回溯法的应用实例
N皇后问题
总结词
N皇后问题是一个经典的回溯法应用实例,通过在N×N棋盘上放置N个皇后,使得任意两个皇后都不能处于同一 行、同一列或同一对角线上。
通过记忆已搜索的节点,避免重复搜索,提高回溯法的效率 。
详细描述
在回溯法中,经常会在搜索树中重复搜索相同的节点。为了 解决这个问题,可以使用记忆化搜索技术,将已搜索的节点 存储在特定的数据结构中,以便在后续的搜索中快速跳过这 些节点,减少不必要的计算。

算法设计与分析课件--回溯法-算法框架

算法设计与分析课件--回溯法-算法框架

32
5.2 回溯法算法框架
解空间: • 对于待求解问题,满足约束的所有解构成了 该问题的一个解空间 (Solution Space)。 • 通常情况下,解空间越小,算法的搜索效率 越高。 • 为了方便搜索,一般用树或图的形式将问题 的解空间有效地组织起来。
• 解空间树: • 三种解空间树:子集树、排列树、满m叉树。
5.1 搜索概述
搜索法: • 假设问题的初始状态、目标状态和算法定义都已确定, 那么问题的解空间就是确定的。问题的求解就是指如 何有效地搜索这个确定的解空间,从中找出问题的真 正解。 • 包括穷举搜索、深度优先搜索、广度优先搜索等。
5
5.1 搜索概述-穷举法
穷举搜索思想:
• 针对问题的可能解是有限种的情况,逐一检查所有可 能的情况,从中找到问题真正的解。
19
5.2 回溯法算法框架
回溯法的搜索思想: • 搜索过程直到找到问题的解或根结点变成死结
点为止。 • 递归式搜索 或 迭代式搜索。
20
5.2 回溯法算法框架
• 举例:0-1背包问题: 1.A是活节点
• w = (16, 15, 15),v = (45, 25, 25),W = 30 2.选择B扩展后,B 变为当前扩展结点。 A和B都是活结点
34
5.2 回溯法算法框架
子集树:
• 初始状态(根)、中间状态(中间)、结束状态(叶子)。
• 树中从根到叶子的路径描述了一个n元0-1向量,该n元 0-1向量表示集合S的一个子集,这个子集由对应分量 为1的元素组成。如(1,0,1,1,0) 表示子集{x1,x3,x4}
35
5.2 回溯法算法框架
17
5.2 回溯法算法框架
深度优先的问题状态生成法:在一个扩展结点变成 死结点之前,它一直是扩展结点。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-
10
由部分解估计目标函数值最大值的方法
4.回溯:当前估计值小于上界时向上回溯, 若当前结点是左孩子,则转向搜索右孩子; 若当前结点是右孩子,则继续向上回溯,直到左孩子为
止。 然后转到相应的左孩子结点,重复(2),(3)
-
11
实例1:0-1背包问题
问题描述:C=50,S=(15,5,25,27,30) W=(30,12,44,46,50)
1.子集树: 当所给问题是从n个元素的集合s中找到满足
某种性质的子树集时相应的解空间树,如0-1背 包问题。 2.排列树:
当所给问题是确定n个元素是否满足某个性质 的排列时相应的解空间树成为排列树,如TSP问 题。
-
7
0-1背包问题的具体求解过程
问题描述:n个物品,第i个物品的体积为Si,价值为Wi,背包容量为C。 变量Xi表示物体i放入背包的情况,0表示不放,1表示放。
第6章
回溯法
-
1
回溯法的基本思想
回溯法是一种通用性解法,可以将回溯法看作是带优化的穷举法。
回溯法的基本思想是在一棵含有问题全部可能解的状态空间树上 进行深度优先搜索,解为叶子结点。搜索过程中,每到达一个结 点时,则判断该结点为根的子树是否含有问题的解,如果可以确 定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上 层父结点,继续下一步深度优先搜索过程。
续向下搜索直到满足
k 1
k m
k 1
k m
x isi si C 且 x isi si sk m 1 C
i 1
i k 2
i 1
i k 2
3.能够找到得最大价值不会超过
k i 1 1x iw i i k k m 2w i C k i 1 1x isi i k k m 2si w sk k m m 1 1
6.回溯到8生成10,得到部分解 (1,1,0,0),估计部分解Weva=92>88
7.继续生成结点11,得到可行解 (1,1,0,0,1), 更新Wup=92
8.因为11是左孩子,生成其对应的 右孩子结点12,得到另一个可行解 (1,1,0,0,0)
1
1
2 1
3 1
0
4
7
0
01
10
58
1
0
0 6
0 11 9
1 30 2
65 3
4 20
10 4
A
1
2
B 3
4
C
D
E
3 4 242 3
F GH I J K
43 42 32
L MN O P Q
-
5
剪枝函数
回溯法:在解空间树中按深度优先策略从根节点 出发搜索解空间树
剪枝函数: 1.用约束函数剪去不满足的子树 2.用限界函数剪去肯定得不到最优解的子树
-
6
解空间树的两种常用结构
1.令Wup=0,将物体的序号按价值体积比
1
1
2 1
排序结果是(2,1,3,4,5)
3
2.生成部分解(1,1,1,0),估计当前部分解 1
的价值为Weva=94.3,Weva>Wup
4 0
3.继续向下搜索生成结点6,得到可行解
5
(1,1,1,0,0),得到价值为86,更新
0
Wup=86
6
-
12
实例1:0-1背包问题
12
-
14
实例1:0-1背包问题
6.回溯,沿结点12向上回 溯到结点3生成结点13,得 到部分解(1,0),此时 Weva=90<92,
7.向上继续回溯生成结点 14,得到部分解(0),此时得 到的Weva=91<92
1
10
2
14
1
0
3 1
0 13
4
7
01 0
58 00 69
10
10
11 12
n=3时的0-1背包问题用完全二叉树表示的解空间
Hale Waihona Puke -4旅行商(TSP)问题
问题描述:某售货员要到若 干城市去推销商品,给出各 城市之间的路程,他要选定 一条从驻地出发,经过每个 城市一遍,最后回到住地的 路线,使总的路程最短。
该问题是一个NP完全问题, 有(n-1)!条可选路线
最优解(1,3,2,4,1),最优 值25
求解过程:
1.初始化:目标函数置为0,将物品按价值体积比的非增顺序排 序
2.搜索:从根节点出发,尽量沿左孩子结点前进,当不能继续沿 左孩子前进时,得到问题的一部分解,把搜索转到右子树。
3.估计由部分解所能得到的最大价值:如果估计价值高于上界, 继续向下搜索,直到找到可行解保存可行解,并用可行解得到的 目标函数的值更新目标函数的上界,向上回溯,寻找其他可行解。
n
m a x w i x i i1
n
s . t . S i x i C i1
1.解空间 x1,x2, ,xn, xi x i0,1{0 , 1 } , 1 i n
2.解空间结构树:高度为n+1的完全二叉树,结点总数为 2n1 1,左孩子为1,
右孩子为0.
-
8
0-1背包问题的具体求解过程
若估计值小于目标函数的上界,则丢弃当前的部分解,向上回溯。
-
9
由部分解估计目标函数值最大值的方法
1.假定当前部分解为 x1,x2, ,xk ,并且满足
k xisi C且 k xisisk1C
i1
i1
2.将得到新的部分解 x 1 ,x2 , ,xk,xk 1且 xk 10,由这个部分解继
-
15
实例2:n皇后问题
问题描述:在一个n n的棋盘上,布置n个皇后,使 任意皇后之间不能相互攻击(不能同时在 同一行,同一列,同一正反对角线上)
1.解空间
2.树
-
16
回溯法的效率分析
产生一个结点的时间 结点的个数
在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而 是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。
-
2
回溯法的基本步骤
1、针对所给问题,定义问题的解空间;
2、确定易于搜索的解空间结构(树);
3、以深度优先方式搜索解空间,尽量避 免无效搜索;
-
3
0-1背包问题
问题描述:3个物W=[16,15,15] ,S=[45,25,25] ,C=30 1.定义解空间: (0,0,0),(0,0,1)…(1,1,1),含有2 n 个解。 2.确定解空间的结构(二叉树)如图 3.进行深度优先搜索
4.回溯:沿右孩子回溯到左孩子4,生成 相应右孩子7,得到部分解(1,1,0,1),此时 Weva=93 5.因为Weva>Wup,继续生成结点8,9, 得到可行解(1,1,0,1,0),价值为88,更新 Wup=88
-
1
1
2 1
3 1
4 0 5 0 6
0 7 1
8 0 9
13
实例1:0-1背包问题
相关文档
最新文档