![b2cb6a0f13a0ea30d250f9b9e14bc4f6.png](https://i-blog.csdnimg.cn/blog_migrate/10d66eb91d2f5519e3b554927da3ff21.jpeg)
晓强Deep Learning的读书分享会,先从这里开始,从大学开始。大家好,我是晓强,计算机科学与技术专业研究生在读。我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向的基础知识和学习的论文;网络表征学习的相关论文解读。当然我每天的读书心得也会分享给大家,可能涉及我们生活各个方面的书籍。我也会不定时回答大家的问题与大家一同进步,共同交流,互相监督,结交更多的朋友。希望大家多留言,多交流,多多关照。我在这里等你一同学习,如果需要相关资料也可以私信我,进入我们的群大家庭。
【晓白】今天学习效率并不如昨天高,但是我们还是要坚持下去的,努力终会有收获。今天上午抽时间写了一篇回溯法的文章。希望大家点赞,关注,支持一下。谢谢精神合伙人的支持和鼓励。如果有准备秋招的同学,也可以来看一下,对大家很有帮助。有任何疑问可以私信,获得我们大家庭的联系方式,多多沟通,共同进步。
第五章 回溯法(Backtrack)
回溯法有“通用的解题法”之称。
回溯法可以求出问题的所有解或任一解。
回溯法的基本思想:
在解空间树中,按照深度优先的策略,从根出发进行搜索。搜索每到达解空间树的一个结点,总是先判断以该结点为根的子树是否肯定不包含问题的解。
如果不包含,则跳过对该子树,一层一层地向它的祖先回溯,直到遇上一个还有未被搜索过的儿子的结点,才转向该结点的一个未曾搜索过的儿子结点,继续搜索;
否则,进入该子树,继续按深优先的策略进行搜索
一、回溯法解题过程
1.问题的解空间
应用回溯法解问题时,首先应明确定义问题的解空间。问题的解空间应至少包含问题的一个(最优)解。
例:当n=3时,有n种可选物品的0-1背包问题的解空间:
{(0,0,0), (0,1,0), (0,0,1), (1,0,0), (0,1,1), (1,0,1), (1,1,0), (1,1,1)}
2. 解空间树 通常把解空间组织成解空间树。
例如:对于n=3时的0-1背包问题,其解空间用一棵完全二叉树表示,如下图所示。
![8b6576ebcd66ab6cf6be7abc2af78cdc.png](https://i-blog.csdnimg.cn/blog_migrate/ff64af49452eeedb862d7fe975aa00e8.png)
3. 搜索解空间树的过程
例1: n=3时的0-1背包问题,W={16,15,15},p={45,25,25},C=30。在其解空间树上搜索最优解的过程如下图所示。
![f0c27f1aa903e85167c7f33f9907b6de.png](https://i-blog.csdnimg.cn/blog_migrate/a728637c16db5245a253c00f764441db.jpeg)
例2:旅行售货员问题:某售货员要到若干城市推销商 品,已知各城市间的路程(或旅费)。他要选一条从驻地出发,经过每个城市一遍,最后回到驻地的路线使总的路程(总的旅费)最小
![e02cdb1c82217503d5ae880064f8a4c8.png](https://i-blog.csdnimg.cn/blog_migrate/3eb701400bc3b5b1c2cbd161a4db666d.png)
![379c8979862ef4a7673abe51ef42373d.png](https://i-blog.csdnimg.cn/blog_migrate/3773350f71b9a3a33fb9c1358b9730b7.png)
综上所述,回溯法解题包含以下步骤:
(1) 针对所给的问题,定义问题的解空间;
(2) 确定易于搜索的解空间结构—解空间树;
(3) 以深度优先的方式搜索解空间树,并在搜索过程中用剪枝函数(约束函数或限界函数)避免无效搜索。
例1和例2中的两棵解空间树是回溯法解题时常遇到的两类典型的解空间树。当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树。
例如,n个物品的0-1背包问题相应的解空间树称为子集树。子集树通常有2n个叶结点,其结点总个数为2n+1-1。 遍历子集树的任何算法均需Ω(2n)的计算时间。
当所给的问题确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。 例如,旅行售货员问题相应的解空间树称为排列树。排列树通常有n!个叶结点。遍历子集树的任何算法均需Ω(n!)的计算时间。
![7167f9c32ef54f96cd3914e875fd1ff4.png](https://i-blog.csdnimg.cn/blog_migrate/f793b2187866a93b313e92e28482cbbf.jpeg)
二、n后问题
1. 问题描述
n后问题要求在一个n*n格的棋盘上放置n个皇后,使得她们彼此不受攻击。一个皇后可以攻击与之在同一行或同一斜线上的其他任何棋子。因此,n后问题等价于:任何两个皇后不能在同行、同列、同一斜线上。
例子:四皇后问题
给4*4棋盘的行和列分别从左到右和从上到下编号为1,2,3,4,同时也给4个皇后分别编号为1,2,3,4。由于要求不同的皇后不能放在同一行,不失一般性,可设皇后i只放在第i行。
![e71ca719738d47ee97615d5bb5118db5.png](https://i-blog.csdnimg.cn/blog_migrate/db4c37ae945244b916888e025bf85e89.jpeg)
2. 算法设计
对n后问题,可用n元组x[1:n]表示它的解。其中,x[i]表示皇后i放在棋盘的第i行的第x[i]列。
若2个皇后放置的位置分别是(i,x[i])和(k,x[k]),则约束条件为:
x[i]≠x[k] (不在同一列)
x[i]-i≠ x[k]-k ,
i+ x[i] ≠k+ x[k] (不在同一斜线)
即|i- k|≠| x[i] - x[k] |
用回溯法解n后问题时,可以用一棵完全n叉树来表示其解空间。用可行性约束函数Place可剪去不满足行、列和斜线约束的子树。
![54885da9d6f7757d90e7c0815d88a160.png](https://i-blog.csdnimg.cn/blog_migrate/1cda15752ceae4ba71cf4521c3fe0726.jpeg)
用回溯法解题的一个显著特征:
问题的解空间是在搜索过程中动态生成的。在任何时刻,算法只保存从根结点到当前扩展结点的路径。若解空间树中从根到叶的最长路径长度为h(n),则回溯法所需的计算空间通常为O(h(n))。
三、图的m着色问题
1.问题描述
给定一个无向连通图G和m种不同的颜色。用这m种颜色为图G的各顶点着色,每个顶点着一种颜色,是否有使得G中任何一条边的2个顶点着有不同颜色的着色法。这个问题就是一个图的m可着色判定问题。
若一个图最少需要m种颜色才能使图中任何一条边连接的2个顶点着有不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。
著名的平面图的4色猜想 -----图的m可着色判定问题的特殊情形。
4色定理-----四色猜想于1976年由三个美国人依靠计算机做出证明。
显式存储整个解空间则需要O(2 h(n))。
2.算法设计
问题: 给定一个连通图G=(V,E)和m种颜色,如果这个图不是m可着色的,就回答“no”, 如果这个图是m可着色的,则要找出所有不同的着色方法。
本问题除了回溯法外,目前还没什么更好的方法。
![f41f064f1d74d0aaf56535d3e477cca3.png](https://i-blog.csdnimg.cn/blog_migrate/9becc0e1a8ffa58e250b1c215e42a169.jpeg)
![94c16343b05a5e5bda77973d4d66b17b.png](https://i-blog.csdnimg.cn/blog_migrate/74e724870a42351c9776d69ebfaac2ab.jpeg)
![01ff7ea8907141723f53499d5f698f48.png](https://i-blog.csdnimg.cn/blog_migrate/13f77296992c67f566e5083df223bec2.png)
![7a03b7527022b67ae763e6d8e815e502.png](https://i-blog.csdnimg.cn/blog_migrate/8211e5330f331339694d9b5d13641112.jpeg)
四、批处理调度问题
1.问题描述
给定n个作业的集合J=(J1,J2,…,Jn)。每个作业Ji都有两项任务要分别在2台机器上完成。每个作业必须先由机器1处理,然后再由机器2处理。
作业Ji需要机器j的处理时间为tij,i=1,2,…,n;j=1,2。
设Fij是作业i在机器j上完成处理的时间。则所有作业在机器2上完成处理的时间和 称为该作业调度的完成时间和。
批处理作业调度问题要求:对于给定的n个作业,制定一个最佳作业调度方案,使其完成时间和达到最小。
可以证明:批处理调度问题存在最佳作业调度使得机器1和机器2上作业以相同次序完成。
例: n=3
![4d444d3db17207205b82af4d8053a368.png](https://i-blog.csdnimg.cn/blog_migrate/3f3298a8aea301704c87f23141749f0b.png)
![328002a8b424b48c8340860cf6fa6a7d.png](https://i-blog.csdnimg.cn/blog_migrate/a2538a95fe3e38718996a1fde0e90870.png)
![1a800724db46ba0d00804f24c51a80ec.png](https://i-blog.csdnimg.cn/blog_migrate/62b99c7365d423b8fe956eda209beeb8.png)
![aa2f73d42ba3f946e615a31f648bbfaf.png](https://i-blog.csdnimg.cn/blog_migrate/1a7857c419b9aaded6abc40ca2d134db.png)
![e40536c82f1f335db107934c82da907d.png](https://i-blog.csdnimg.cn/blog_migrate/6e09ff4d7b3721db9374e59bed1775f3.png)
![25098eb947f76a62a9856b80b8dc7720.png](https://i-blog.csdnimg.cn/blog_migrate/bc5fed73114373b7c2917fdcddc76d1b.png)
![328002a8b424b48c8340860cf6fa6a7d.png](https://i-blog.csdnimg.cn/blog_migrate/a2538a95fe3e38718996a1fde0e90870.png)
![151485715b52ca31147c824eb4fe7e6a.png](https://i-blog.csdnimg.cn/blog_migrate/09d0211c4b75b6348f93867eb6214b9e.png)
批处理回溯算法:
![88c054b327be7d89ea693d0e486f238a.png](https://i-blog.csdnimg.cn/blog_migrate/49173b571904ac5768caa5056af505e8.jpeg)
![04466d42e23f8e25cbc5c96787beb872.png](https://i-blog.csdnimg.cn/blog_migrate/53160b5f2830874db4bd745990eb602b.jpeg)
算法分析 Backtrack算法在每个结点处耗费O(1)时间,所以在最坏情况下,整个算法的计算时间复杂性为O(n!)。
五、0-1背包问题
对于n=3时的0-1背包问题,其解空间用一棵完全二叉树表示,如下图所示。
![02fd8ce64e2c6051e8e23c38df962628.png](https://i-blog.csdnimg.cn/blog_migrate/7224e44208ff56adc7f8228c439e4567.jpeg)
例: n=3时的0-1背包问题,W={16,15,15},p={45,25,25},C=30。在其解空间树上搜索最优解的过程如下图所示。
![bcf32b8eb184ee56920dc1c59785fd81.png](https://i-blog.csdnimg.cn/blog_migrate/b65fa15170cc93a406932195486f9c0d.jpeg)
今天算法设计与分析的回溯法更新完毕。多多关注我,看下方的更多文章,连接如下:
晓强DL:图像处理必读论文之AlexNetzhuanlan.zhihu.com![e0bb69f65a49fd03d5035fe640fad13e.png](https://i-blog.csdnimg.cn/blog_migrate/928d69043a75a91203665847682baf7f.jpeg)
![e0bb69f65a49fd03d5035fe640fad13e.png](https://i-blog.csdnimg.cn/blog_migrate/928d69043a75a91203665847682baf7f.jpeg)
![e0bb69f65a49fd03d5035fe640fad13e.png](https://i-blog.csdnimg.cn/blog_migrate/928d69043a75a91203665847682baf7f.jpeg)
![e0bb69f65a49fd03d5035fe640fad13e.png](https://i-blog.csdnimg.cn/blog_migrate/928d69043a75a91203665847682baf7f.jpeg)
![e0bb69f65a49fd03d5035fe640fad13e.png](https://i-blog.csdnimg.cn/blog_migrate/928d69043a75a91203665847682baf7f.jpeg)