算法设计与分析课件06回溯法.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析Design and Analysis of Algorithms 第 6 章 回溯与分支限界主要内容回溯法的设计技术回溯法的经典例题分支限界法的设计技术分支限界法的经典例题==回溯法(Back Tracking Algorithm)==四皇后问题活结点扩展结点死结点==回溯法(Back Tracking Algorithm)==回溯法:在约束条件下对解空间树进行深度优先搜索的过程,并在搜索过程中剪去那些不满足条件的分支。问题的解:为n元组(X1,…,Xi,…Xn),其中Xi选自有限集S,当选出一组值X=(x1,…,xi,…,xn)能够使评价函数P(x1,…,xi,…xn) 满足问题的某种约束条件或到达极值。 其中,?基本策略:每次只考虑一个分量,逐次扩大建立n元组,并随时用评价函数P(x1,…,xi,…xn)去判断正在形成的n元组是否有成功的希望,一旦确定部分元组(x1,…,xi)不能求出解时,则立即停止这种搜索,“剪掉”以当前结点为根的分枝,并逐次向上一个分量回溯,然后向其它分支继续探索。==回溯法(Back Tracking Algorithm)==算法框架(1) 开始结点是一个活结点,也是一个扩展结点;(2) 如果能从当前的扩展结点移动到一个新的结点,那么这个新结点将变成一个活结点和可扩展结点,旧的扩展结点仍是一个活结点。(3) 如果不能移动到一个新结点(已经找到一个解或违反约束的情况),当前的扩展结点就变成了一个死结点,便只能返回到最近被考察的活结点(回溯),这个活结点就变成了新的扩展结点。(4) 当找到了最优解或者没有活结点的时候(回溯尽了所有的活结点),搜索过程结束。==回溯法(Back Tracking Algorithm)==算法框架==简单的迭代运算== 思考题(共4分): (1)回溯法中,问题的解在有n层解空间树中其解是唯一的吗?是几元组? (2)在回溯法中用什么方法进行剪枝?是怎样执行的?==回溯法(Back Tracking Algorithm)==回溯算法的适用条件多米诺性质 设向量Xi=x1, x2,…,xi ,Xi?X,X = x1, x2,…,xi,…,xn ,将Xi输入评价函数P,可以得到Xi的一组特征值P(Xi),取Xi+1=x1, x2,…,xi, xi+1 ,Xi+1?X,则P(Xi+1)真蕴涵P(Xi),即 P(Xi+1)?P(Xi)i∈(0,n)其中,n代表解向量的维数。第 6 章 回溯与分支限界主要内容回溯法的设计技术回溯算法的经典例题分支限界法的设计技术分支限界的经典例题==回溯法(Back Tracking Algorithm)==回溯算法的经典例题【例6-2】有n个集装箱要装上一艘载重量为c的轮船,其中,集装箱i的重量为wi。找出一种最优装载方案,让轮船尽可能多装集装箱,即在装载体积不受限制的情况下,尽可能使轮船满载。 问题分析设集装箱数量n=5,轮船载重c=10,集装箱的重量w={7,2,6,5,4}==回溯算法的经典例题==【例6-2】装载问题。 问题分析?对于n个集装箱的装载问题,可将该问题的解定义为一个n元组(x1,…,xi,…xn), i∈Z, 1≤i≤n, xi∈{0,1},xi=1表示装入集装箱i,xi=0表示不装入集装箱i。目标函数: 约束条件 其中,wi表示第i个集装箱的重量。?满足多米诺条件:令P(x1, x2,…,xk)为,从而?==回溯算法的经典例题==【例6-2】装载问题。 计算模型数据结构定义静态数据结构:轮船载重量为c,集装箱数量为n,集装箱重量数组w[],这些变量在运算中不会发生改变。动态数据结构:i表示搜索的层数,加入一个集装箱后计算出的当前载重量nowc、当前解x[]、当前最优重量maxc、当前最优解maxx[],剩余的集装箱重量r(初值为全部集装箱重量),这些值都是边测试边生成的,当所有计算全部完成后,maxc和maxx[]就是题目要求的最优值和最优解。2. 迭代公式?==回溯算法的经典例题==r=r-w[i]; //搜索第i层,同时减少可用量if(nowc+w[i]=c){ //满足约束,左子树 x[i]=1; nowc=nowc+w[i]; search(i+1);//递归搜索i+1层 nowc=nowc-w[i];//回溯后恢复nowc }/*下面开始搜索右子树*/if(nowc+rmaxc){ /*大于当前最优*/ x[i]=0; search(i+1); //递归搜索i+1层 } r=r+w[i];//对第i层搜索完毕,恢复r}【例6-2】装载问题。 算法设计与描述输入:c, n, w[]输出:最优值maxc和最优解maxx[]void search (int i){ /*递归法*/ if(in

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

从事职业教育近20年,高级职称。

领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档