算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架_第1页
算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架_第2页
算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架_第3页
算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架_第4页
算法设计与分析 课件 第六章 回溯法6.2.2 回溯法框架_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机算法设计与分析第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

1whilei>0do//还未回溯到头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)beginifi>nthenprint(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)beginifi>nthen print(x)elseforj

itondo //枚举i所有可能的路径

swap(x[i],x[j]) ifConstraint(i)andBound(i)then//满足限界函数和约束条件 backtrack(x,i+1) endif

swap(x[i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论