- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
计算机算法设计与分析第6章回溯法6.2.2回溯法框架回溯法基本步骤①定义问题的解空间:确定问题的解向量空间②确定易于搜索的解空间结构:通常为树或者图形式。③确定剪枝函数:确定问题的约束条件或者进一步搜索的限界条件,即解空间中的每个解必须满足的条件。④实现回溯法:根据问题的解空间、约束条件和搜索策略,以深度优先方式搜索,实现回溯法。⑤处理结果:在回溯法的递归过程中,可以根据需要对每个解进行处理,如对解进行输出等。6.2.2回溯法框架设问题的解是一个n维向量(x[1],x[2],...,x[n])Constraint(i)表示当前扩展结点处的约束函数。Bound(i)表示当前扩展结点处的的限界函数。h[j]表示当前扩展结点处x[i]第j个可取的值。print(x)表示输出得到的可行解。start[i]表示在当前扩展结点处未搜索过子树的起始编号。end[i]表示在当前扩展结点处未搜索过子树的终止编号。(1)迭代回溯法Iterative_Backtrack(x):begini?1whilei0do//还未回溯到头ifstart[i]end[i]then//第i层还有未搜索过的子结点 forj?start[i]toend[i]do//未搜索的结点逐个搜索 x[i]?h[j]//x[i]选择一个取值h[j] ifConstraint(i)andBound(i)then//x[i]满足约束条件和界限函数 ifx为可行解thenprint(x)elsei?i+1endif endif endforelse//回溯,返回上一层 i?i-1endifendwhileendi表示当前搜索层次i=0表示起始结点全部搜索完毕i层结点为死节点,则回溯(2)子集树形式的递归回溯法backtrack(x,i)beginifinthenprint(x)elseforj?start(i)toend(i)do//枚举i所有可能的路径 x[i]=h[j] ifConstraint(i)andBound(i)then//满足限界函数和约束条件 backtrack(x,i+1)endifendforendifend搜索到叶子结点,一个可行解出来对i层上每个子结点逐个搜索x[i]选择一个可取值递归到下一层(3)排列树形式的递归回溯法backtrack(x,i)beginifinthen print(x)elseforj?itondo //枚举i所有可能的路径 swap(x[i],x[j]) ifConstraint(i)andBound(i)then//满足限界函数和约束条件 backtrack(x,i+1) endif swap(x[i],x[j])//记得交换回来endforendifend将当前结点i和子结点j的取值交换回溯时,再交换回来1、包括每个分量的取值范围等等2、*我们先来定义几个符号:*1、包括每个分量的取值范围等等2、*我们先来定义几个符号:*
您可能关注的文档
- 算法设计与分析 课件 第八章 线性规划.pptx
- 算法设计与分析 课件 第二章 蛮力法.pptx
- 算法设计与分析 课件 第六章 回溯法6.1.1 DFS思想.ppt
- 算法设计与分析 课件 第六章 回溯法6.2.1 解空间树.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.1 饲料投喂问题 -算法改进.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.1 饲料投喂问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.2 n皇后问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.3 花草种植问题.ppt
- 算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题.ppt
- 算法设计与分析 课件 第七章 分支限界 7.1.1 BFS思想 .ppt
文档评论(0)