【教学课件】第5章回溯法.ppt
《【教学课件】第5章回溯法.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第5章回溯法.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 回溯法学习要点学习要点p5.1 回溯法概述回溯法概述p5.2 回溯法的典型示例回溯法的典型示例p5.3 回溯法的效率分析回溯法的效率分析p本章小结本章小结算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 2 5.1 回溯法概述5.1.1 问题的解空间问题的解空间问题的解空间问题的解空间两类典型的解空间两类典型的解空间5.1.2 回溯法的基本思想回溯法的基本思想回溯法的基本思想回溯法的基本思想算法的框架算法的框架例:排列与组合例:排列与组合小结小结算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 3 问题的解空间|复杂问题的求解复杂问题
2、的求解复杂问题常常有很多的可能解,这些可能解构成了问复杂问题常常有很多的可能解,这些可能解构成了问题的题的解空间解空间。解空间也就是进行穷举的搜索空间,所以,解空间中解空间也就是进行穷举的搜索空间,所以,解空间中应该包括所有的可能解。应该包括所有的可能解。|问题解的求解方法问题解的求解方法搜索问题的解空间,获得问题的解,依据搜索策略的搜索问题的解空间,获得问题的解,依据搜索策略的不同,可以分为:不同,可以分为:回溯法回溯法分支限界法分支限界法算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 4|问题的解向量:问题的解向量:问题的解可以表示成一个问题的解可以表示成一个n
3、元式元式(x1,x2,xn)的形式。的形式。|问题的解空间问题的解空间E=(x1,x2,xn)|xi si,si为有限集为有限集 称为问题的称为问题的解空间解空间|约束条件约束条件隐约束隐约束:元组的分量间满足函数关系元组的分量间满足函数关系 f(x1,.xn)显约束显约束:每个每个xi的范围都给定的约束。的范围都给定的约束。问题的解空间算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 5 问题的解空间|问题的解空间问题的解空间由笛卡儿积由笛卡儿积AS1S2Sn构成,且构成,且第第1层的根结点有层的根结点有|S1|棵子树,棵子树,第第2层共有层共有|S1|个结点,个结
4、点,第第3层共有层共有|S1|S2|个结点,个结点,依此类推,依此类推,第第n1层共有层共有|S1|S2|Sn|个结点,他们都是叶子个结点,他们都是叶子结点,代表问题的所有可能解。结点,代表问题的所有可能解。|显式图和隐式图显式图和隐式图算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 6 两类典型的解空间|两类典型的解空间两类典型的解空间子集树子集树排列树排列树算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 7 子集树|例例1:0-1背包问题背包问题(0-1 Knapsack Problem)|分析:分析:可能解由一个等长向量(可能解由一
5、个等长向量(x1,x2,xn)组成,)组成,其中其中xi1(1in)表示物品表示物品i装入背包装入背包xi0(1in)表示物品表示物品i没有装入背包没有装入背包如:如:当当n3时,其解空间是:时,其解空间是:(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 8 子集树可以用一棵满二叉树表示解空间树可以用一棵满二叉树表示解空间树|例如:例如:W(20,15,15),V (40,25,25),C30|问题的求解过程:问题的求解过程:相当于在解空间树
6、中搜索满足条件的叶结点。相当于在解空间树中搜索满足条件的叶结点。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 9 子集树|例例2:集合集合Aa1,a2,an,求,求A的所有子集合(如的所有子集合(如n3)。)。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 10 子集树|子集树(子集树(Subset Trees)当所给问题是从当所给问题是从n个元素的集合中找出满足某种性质个元素的集合中找出满足某种性质的子集时,相应的解空间树称为的子集时,相应的解空间树称为子集树子集树。在子集树中,一般地:在子集树中,一般地:|S1|S2|Sn|2,即每
7、即每个结点有个结点有2棵的子树。棵的子树。解空间为:解空间为:(0,0,0,0)(0,0,0,1)(1,1,1,1)算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 11 子集树|所以,所以,解空间有解空间有2n个元素。个元素。若表示为树形结构就是一棵有若表示为树形结构就是一棵有2n个叶结点的二叉树,个叶结点的二叉树,遍历子集树需遍历子集树需(2n)的计算时间。的计算时间。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 12 排列树|排列树(排列树(Permutation Trees):):当所给问题是确定当所给问题是确定n个元素满足某种性
8、质的排列时,个元素满足某种性质的排列时,相应的解空间树称为排列树。相应的解空间树称为排列树。在排列树中,通常情况下,在排列树中,通常情况下,|S1|n,|S2|n1,|Sn|1,解空间为:解空间为:(1,2,3,n1,n)(2,1,3,n1,n)(n,n1,3,2,1)算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 13 排列树|所以:所以:解空间有解空间有n!个元素个元素若表示为树形就是一个若表示为树形就是一个n度树,这样的树有度树,这样的树有n!个叶结个叶结点,遍历排列树需点,遍历排列树需(n!)计算时间。计算时间。算法设计与分析算法设计与分析回溯法回溯法四川师
9、范大学 计算机科学学院 刘芳 14 排列树|例:旅行商问题例:旅行商问题问题提出:问题提出:某售货员要到若干个城市去推销商品。已知各个城市某售货员要到若干个城市去推销商品。已知各个城市之间的路程(或旅费)。之间的路程(或旅费)。要选定一条从驻地出发,经过每个城市一遍,最后回要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使得总的路程(或总旅费)最小。到驻地的路线,使得总的路程(或总旅费)最小。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 15 1 12 23 34 43 33 33 33 34 44 44 44 42 22 22 22 2排列树|分析分
10、析求赋权图求赋权图G的具有最小权的的具有最小权的Hamilton圈圈|解空间:解空间:3065204101423当起点当起点1固定时,上图有固定时,上图有3!个周游路线(排列问题)个周游路线(排列问题)算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 16 回溯法的基本思想|回溯法回溯法回溯法是一种选优搜索法,按选优条件向前搜索,以回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。达到目标。但当探索到某一步时,发现原先选择并不优或达不到但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走目标,就退回一步重新选择,这种走不通
11、就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称的技术为回溯法,而满足回溯条件的某个状态的点称为为“回溯点回溯点”。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 17 回溯法的基本思想|主要应用主要应用解决一些复杂问题在求解的过程中,需要经过解决一些复杂问题在求解的过程中,需要经过若干步若干步骤骤,而每一个步骤都有若干种可能的分支,为了完成,而每一个步骤都有若干种可能的分支,为了完成这一过程,又必须这一过程,又必须遵守一些规则遵守一些规则,但这些规则又但这些规则又无法精确无法精确地用数学公式或语言来描述的地用数学公式或语言来描述的一类问题中。一类问题中。算
12、法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 18|1.基本思想基本思想设问题的解可表示为设问题的解可表示为n元组元组(x1,x2,xn),xi si,si为有限集为有限集,设已有满足约束条件的部分解设已有满足约束条件的部分解(x1,x2,xi)添加添加xi+1 si+1,若若(x1,x2,xi xi+1)满足约束条件满足约束条件,则继续添加则继续添加xi+2;若所有可能的若所有可能的xi+1 si+1均不满足约束条件均不满足约束条件,则去掉则去掉xi,回溯到回溯到(x1,x2,xi-1),添加尚未考虑过的添加尚未考虑过的xi;如此反复进行如此反复进行,直到直到(x
13、1,x2,xk)k n满足所有的约满足所有的约束条件或证明无解。束条件或证明无解。回溯法的基本思想算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 19 回溯法的基本思想|2.求解过程求解过程求解过程可表示为在一棵解空间树作深度优先搜索。求解过程可表示为在一棵解空间树作深度优先搜索。具体过程:具体过程:搜索按深度优先策略从根开始搜索按深度优先策略从根开始,当搜索到任一结点时,判断该点是否满足约束条件当搜索到任一结点时,判断该点是否满足约束条件D(剪枝函数剪枝函数),若满足则继续向下深度优先搜索,若满足则继续向下深度优先搜索,否则跳过该结点以下的子树否则跳过该结点以下的
14、子树(剪枝剪枝),向上逐级回溯。,向上逐级回溯。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 20 回溯法的基本思想|3.回溯法解题的步骤:回溯法解题的步骤:(1)针对所给问题,定义问题的解空间;针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。剪枝函数避免无效搜索。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 21 例:排列与组合|计算排列数计算排列数如何找出如何找出m个自然数个自然
15、数(1,2,3,m)中中n个数的所有排列。个数的所有排列。|分析分析设设(x1,x2,xn)一组解)一组解约束条件:约束条件:显约束:显约束:1xim隐约束:隐约束:xi xj (1ijn )|参考程序:参考程序:算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 22 例:排列与组合|计算组合数计算组合数算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 23 例:排列与组合|计算组合数:计算组合数:找出找出m个自然数个自然数(1,2,3,m)中中n个个数的组合。数的组合。要求:要求:输入:输入:m,n5 3输出:输出:Total10种种543
16、542532432541531431521421321算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 24 例:排列与组合|分析:分析:设设(x1,x2,xn)一组解)一组解约束条件:约束条件:显约束:显约束:1xim隐约束:隐约束:x1x2 xn i xi mni 即:即:xi-1 xi mni|参考程序:参考程序:算法设计与分析算法设计与分析n)output(x);else for(int j=f(n,i);j=g(n,i);j+)xi=h(j);if(constraint(i)&bound(i)backtrack(i+1);剪枝函数算法设计与分析算法设计与分析
17、回溯法回溯法四川师范大学 计算机科学学院 刘芳 26 算法的框架|一般来说,非递归回溯(迭代回溯)的算法过程:一般来说,非递归回溯(迭代回溯)的算法过程:1.数据初始化数据初始化2.如果如果当前状态合法当前状态合法 判断是否到达目标:判断是否到达目标:是,打印结果;然后换下一种情况是,打印结果;然后换下一种情况 不是,则继续向前探索不是,则继续向前探索 否则:否则:选择下一种可能;选择下一种可能;检查是否合法检查是否合法4.重复上述过程,直至所有情况都搜索完毕,结束。重复上述过程,直至所有情况都搜索完毕,结束。算法设计与分析算法设计与分析0)if(f(n,i)=g(n,i)for(int j=
18、f(n,i);j=g(n,i);j+)xi=h(j);if(constraint(i)&bound(i)if(solution(i)output(x);else i+;/for else i-;/while /iterativeBacktrack 算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 28 小结|回溯法解题的特征回溯法解题的特征在深度优先搜索过程中动态产生问题的解空间。在深度优先搜索过程中动态产生问题的解空间。几个术语几个术语扩展结点扩展结点:一个正在产生儿子的结点称为扩展结点一个正在产生儿子的结点称为扩展结点活结点活结点:一个自身已生成但其儿子还没有全部
19、生成的一个自身已生成但其儿子还没有全部生成的结点称做活结点结点称做活结点死结点死结点:一个所有儿子已经产生的结点称做死结点。一个所有儿子已经产生的结点称做死结点。需要注意的是:需要注意的是:问题的解空间树是虚拟的,并不需要在算法运行时构问题的解空间树是虚拟的,并不需要在算法运行时构造一棵真正的树结构。在任何时刻,算法造一棵真正的树结构。在任何时刻,算法只保存从根只保存从根结点到当前扩展结点的路径结点到当前扩展结点的路径。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 29 小结|避免无效搜索的策略避免无效搜索的策略回溯法的搜索过程涉及的结点(称为搜索空间)回溯法的搜
20、索过程涉及的结点(称为搜索空间)只是整个解空间树的一部分,在搜索过程中,通只是整个解空间树的一部分,在搜索过程中,通常采用两种策略避免无效搜索:常采用两种策略避免无效搜索:用约束条件用约束条件(约束函数)(约束函数)剪去得不到可行解的剪去得不到可行解的子树;子树;用目标函数(用目标函数(限界函数限界函数)剪去得不到最优解的)剪去得不到最优解的子树。子树。这两类函数统称为这两类函数统称为剪枝函数剪枝函数(Pruning Function)。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 30 5.2 回溯法的典型用例|几个应用专题几个应用专题图问题中的回溯法图问题中的
21、回溯法组合问题中的回溯法组合问题中的回溯法其他应用其他应用算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 31 应用专题一|图问题中的回溯法图问题中的回溯法例例1:n后问题后问题排列树的算法框架排列树的算法框架例例2:图的图的m着色问题着色问题例例3:TSP问题问题算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 32 例1:n后问题|问题描述:问题描述:在在nn格的棋盘上放置彼此不受攻击的格的棋盘上放置彼此不受攻击的n个皇后。按照个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同国际象棋的规则,皇后可以攻击与之处在同一行或同一列或
22、同一斜线上的棋子。一列或同一斜线上的棋子。n后问题等价于在后问题等价于在nn格的棋盘上放置格的棋盘上放置n个皇后,任何个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。个皇后不放在同一行或同一列或同一斜线上。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 33 例1:n后问题|例如:例如:88棋盘的一个可行放置。棋盘的一个可行放置。1 2 3 4 5 6 7 812345678QQQQQQQQ算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 34|分析:分析:解向量:解向量:(x1,x2,xn)约束条件约束条件显约束:显约束:xi=1,
23、2,n隐约束:隐约束:u不同列:不同列:xi xju不处于同一正、反对角线:不处于同一正、反对角线:|ij|xi-xj|过程演示过程演示例1:n后问题算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 35 例1:n后问题法法1:4后问题解空间的搜索过程(后问题解空间的搜索过程(nn)31422413算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 36 法法2:4后问题的解空间(排列树)后问题的解空间(排列树)例1:n后问题算法设计与分析算法设计与分析n)output(x);else for(int j=i;j=n;j+)swap(xj,xi
24、);if(legal(i)backtrack(i+1);swap(xj,xi);算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 38 例2:图的m着色问题|问题描述:问题描述:给定无向连通图给定无向连通图G和和m种不同的颜色。用这些颜色为种不同的颜色。用这些颜色为图图G的各顶点着色,每个顶点着一种颜色。是否有一的各顶点着色,每个顶点着一种颜色。是否有一种着色法使种着色法使G中每条边的中每条边的2个顶点着不同颜色。这个问个顶点着不同颜色。这个问题是题是图的图的m可着色判定问题可着色判定问题。若一个图最少需要若一个图最少需要m种颜色才能使图中每条边连接的种颜色才能使图中
25、每条边连接的2个顶点着不同颜色,则称这个数个顶点着不同颜色,则称这个数m为该为该图的色数图的色数。求。求一个图的色数一个图的色数m的问题称为图的的问题称为图的m可着色优化问题。可着色优化问题。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 39 例2:图的m着色问题|分析:分析:本题实际上就是著名的本题实际上就是著名的“地图四色地图四色”问题。无论地图问题。无论地图多么复杂,只需用四种颜色就可以将相邻的区域分开。多么复杂,只需用四种颜色就可以将相邻的区域分开。算法设计与分析算法设计与分析回溯法回溯法四川师范大学 计算机科学学院 刘芳 40 例2:图的m着色问题|数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 章回
限制150内