- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
回溯算法设计
程序中的递归过程图解如下: 回溯 计算机求解的过程 在状态空间寻找机内解, 可以看成是从初始状态出发,搜索目标状态(解所在的状态)的过程。 几种搜索方法 三种搜索的优劣之处 一般来说,三种搜索方法各有优劣之处: 广度优先搜索和深度优先搜索优点:一定能找到解;缺点:时间复杂性大。 启发式搜索优点:一般来说能较快地找到解,即其时间复杂性小;缺点:需要设计一个评价函数,并且评价函数的优劣决定了启发式搜索的优劣。 回溯法的算法框架5.1.1 问题的解空间 应用回溯法解问题时,首先应明确定义问题的解空间。问题的解空间应至少包含问题的一个(最优)解。通常将解空间组织成树或图的形式。 问题的解向量:回溯法希望一个问题的解,能够表示成一个n元式(x1,x2,…,xn)的形式。 显约束:对分量xi的取值限定 隐约束:为满足问题的解,而对不同分量之间施加的约束。 解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。 例如,对于有n种可选物品的0-1背包问题,其解空间由长度为n的0-1向量组成。 基本思想: 确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。 开始结点就成为一个活结点,同时也成为当前的扩展结点。 在当前扩展结点,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。 如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。 此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。 回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已没有活结点时为止。 可重复的全排列 假设是由1-3组成的3位数 program expl_dg; var a:array[1..10] of integer; procedure print; var i:integer; begin for i:=1 to 3 do write(a[i], ); writeln; end; procedure work(x:integer); var i:integer; begin if x3 then begin print ;exit;end; for i:=1 to 3 do begin a[x]:=i; work(x+1); end; end; begin work(1); end. 数字排列问题的递归实现 四皇后问题的递归实现 0,1背包问题 已知一个容量大小为M重量的背包和N种物品,每种物品的重量为Wi。若将物品放入背包将得到Pi的效益,求怎样选取物品将得到效益最大 算法分析 本题可以用递归求解:设当前有N个物品,容量为M;因为这些物品要么选,要么不选,我们假设选的第一个物品编号为I(1~I-1号物品不选),问题又可以转化为有N-I个物品(即第I+1~N号物品),容量为M-Wi的子问题……如此反复下去,然后在所有可行解中选一个效益最大的便可。 另外,为了优化程序,我们定义一个函数如下: F[I]表示选第I~N个物品能得到的总效益。不难推出: F[N]=Pn F[I]=F[I+1]+Pi (I=1…N-1) 假设当前已选到第I号物品,如果当前搜索的效益值+F[I+1]的值仍然比当前的最优值小,则没有必要继续搜索下去。 算法框架 procedure search(i:integer; j:byte); {递归求解} var k:byte; begin if now+f[j]=ans then exit; {如果没有必要搜索下去} if nowans then begin {修改最优解} ans:=now; out:=ou; end; for k:=j to n do {选取物品} if w[k]=i then begin now:=now+p[k]; ou[k]:=true; search(i-w[k],k+1); now:=now-p[k]; ou[k]:=false; end; end; 计算拆分方案 测试8、01字符串问题 测试9.错排问题(02年初赛) 测试10. 测试11 、棋盘覆盖 测试12、组合的输出 例1、翻硬币(03年初赛题) 例2、求全排列(06年初赛题) 例3、2的幂次方表示(98年复赛) 例4、集合找数 例5、求先序遍历 例6、黑白棋子的移动 测试5、合理排列(04年江苏) 问题描述: 由m个A,n个B组成若干个排列
您可能关注的文档
最近下载
- 1.4互联网应用的发展阶段及其特点(教学课件)-第1册信息科技同步教学(河北大学版2024新教材).pptx VIP
- 9.单位会计核算机制凭证(单位操作手册).pdf VIP
- 洗护用品采购售后服务方案.docx VIP
- 《烟草专卖行政处罚程序规定》培训与解读课件.pptx VIP
- 单位会计核算操作手册(2023).docx VIP
- 幼儿园大班课程主题活动.pdf VIP
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.pdf VIP
- 综合安防管理平台操作手册.docx VIP
- 《中国古典园林史》周维权第三版.pdf VIP
- 8.政府采购操作手册(初稿).pdf VIP
文档评论(0)