《算法设计与分析》-第五章 回溯法

《算法设计与分析》-第五章 回溯法

ID:40231452

大小:98.00 KB

页数:26页

时间:2019-07-27

《算法设计与分析》-第五章 回溯法_第1页
《算法设计与分析》-第五章 回溯法_第2页
《算法设计与分析》-第五章 回溯法_第3页
《算法设计与分析》-第五章 回溯法_第4页
《算法设计与分析》-第五章 回溯法_第5页
资源描述:

《《算法设计与分析》-第五章 回溯法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第五章回溯法(backtracking)5.1回溯法的基本思想5.2回溯法的算法框架5.3回溯法的应用—n后问题5.4回溯法的应用—装载问题第五章回溯法(Backtracking)回溯法和分支限界法都是通过系统地搜索解空间树而求得问题解的搜索算法。在系统地检查解空间的过程中,抛弃那些不可能导致合法解的候选解,从而使求解时间大大缩短。(与蛮干算法相区别)回溯法以深度优先的方式搜索解空间,而分支限界法以广度优先或最小耗费(最大收益)的方式搜索解空间。5.1回溯法的基本思想回溯法(backtracking)是一种系统地搜

2、索问题解的方法。为实现回溯,首先需要定义一个解空间(solutionspace),然后以易于搜索的方式组织解空间,最后用深度优先的方法搜索解空间,获得问题的解。5.1回溯法的基本思想回溯法求解的三个步骤:(1)定义一个解空间,它包含问题的解(2)用易于搜索的方式组织解空间(3)深度优先搜索解空间,获得问题的解。5.1回溯法的基本思想(1)解空间设问题的解向量为X=(x1,x2,…,xn),xi的取值范围为有穷集Si。把xi的所有可能取值组合,称为问题的解空间。每一个组合是问题的一个可能解。5.1回溯法的基本思想(1

3、)解空间例:0/1背包问题,S={0,1},当n=3时,0/1背包问题的解空间是:{(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)}当输入规模为n时,有2n种可能的解。5.1回溯法的基本思想(1)解空间例:货郎担(旅行商)问题,S={1,2,…,n},当n=3时,S={1,2,3},货郎担问题的解空间是:{(1,1,1),(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),┅,(3,3,1),(3,3,2),

4、(3,3,3)}当输入规模为n时,它有nn种可能的解。考虑到约束方程xi≠xj。因此,货郎担问题的解空间压缩为:{(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)}当输入规模为n时,它有n!种可能的解。5.1回溯法的基本思想(2)状态空间树:问题解空间的树形式表示例:n=3,0/1背包问题的状态空间树。ABCDEFGNOLMJKHI1111111000000----子集树解空间大小:2n5.1回溯法的基本思想(2)状态空间树:问题解空间的树形式表示例:n=4,旅行商问题

5、的状态空间树。ABCDEFGNOLMJKHI12PQ43334443224223----排列树解空间大小:n!5.1回溯法的基本思想(3)状态空间树的动态搜索可行解和最优解:可行解:满足约束条件的解,解空间中的一个子集最优解:使目标函数取极值(极大或极小)的可行解,一个或少数几个例:货郎担问题,有nn种可能解。n!种可行解,只有一个或几个解是最优解。例:背包问题,有2n种可能解,有些是可行解,只有一个或几个是最优解。有些问题,只要可行解,不需要最优解,例如八后问题。5.1回溯法的基本思想(3)状态空间树的动态搜索状

6、态空间树的动态搜索l_结点(活结点):所搜索到的结点不是叶结点,且满足约束条件和目标函数的界,其儿子结点还未全部搜索完毕,e_结点(扩展结点):正在搜索其儿子结点的结点,它也是一个l_结点;d_结点(死结点):不满足约束条件、目标函数、或其儿子结点已全部搜索完毕的结点、或者叶结点。以d_结点作为根的子树,可以在搜索过程中删除。5.1回溯法的基本思想(3)状态空间树的动态搜索例:0/1背包问题,n=3,w=[16,15,15],p=[45,25,25],c=30例:旅行商问题,13246305420105.1回溯法的

7、基本思想(3)状态空间树的动态搜索例:回溯法搜索解空间树时,通常采用两种策略避免无效搜索。其一,用约束函数在扩展结点出剪去不满足约束的子树;其二,用限界函数剪去得不到最优解的子树。这两类函数通称为剪枝函数。5.2回溯法的算法框架递归回溯的一般解法:Voidtraceback(intt){If(t>n)output(x);Elsefor(i=f(n,t);i<=g(n,t);i++){x[t]=h[i];if(constraint(t)&&bound(t))backtrack(t+1);}}5.2回溯法的算法框架迭代

8、回溯的一般解法:VoiditerativeBacktrack(intt){t=1;While(t>0){if(f(n,t)<=g(n,t))for(i=f(n,t);i<=g(n,t);i++){x[t]=h[i];if(constraint(t)&&bound(t)){if(solution(t))output(x);elset++;}}elset---;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。