2020-wfx-第5章-回溯法-应用.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

吴粉侠算法设计与分析

第5章回溯法回溯法应用

【问题描述】对于给定的正整数n(n≥1),求1~n构成的集合的所有子集(幂集)。幂集求解{}添加1{1}1的幂集:{{},{1}}添加2{{2},{1,2}}1~2的幂集:{{},{1},{2},{1,2}}添加3{{3},{1,3},{2,3},{1,2,3}}1~3的幂集:{{},{1},{2},{1,2}{3},{1,3},{2,3},{1,2,3}}a={1,2,3}

求解过程分为3步:决策1:确定1是否要先择决策2:确定2是否要选择决策3:确定3是否要选择解向量X:决策1:x1决策2:x2决策3:x3X=(x1,x2,x3)X=(1,0,1){1,3}

求集合{1,2,3}的幂集的解空间树{1,2,3}AHID{1,2}JKE{1,3}{1}BLMF{2,3}{2}NOG{3}{}C1111110000000元素1的选择和不选择元素2的选择和不选择元素3的选择和不选择1X=(x1,x2,x3),xi=1,0(1=i=3)(*,*,*)(1,*,*)(0,*,*)(1,1,*)(1,0,*)(0,1,*)(0,0,*)(0,0,0)(0,0,1)(0,1,0)(0,1,1)(1,0,0)(1,0,1)(1,1,0)(1,1,1)

不选择a[i]元素?下一个状态为(i+1,x[i]=0)选择a[i]元素?下一个状态为(i+1,x[i]=1)解:采用深度优先搜索思路。每个元素只有两种扩展,要么选择,要么不选择;解向量为x[],x[i]=0表示不选择a[i],x[i]=1表示选择a[i]。用i扫描数组a,也就是说问题的初始状态是(i=0,x的元素均为0),目标状态是(i=n,x为一个解)。从状态(i,x)可以扩展出两个状态:

voiddfs(inta[],intn,inti,intx[])//回溯算法求解向量x{if(i=n)displaySolution(a,n,x);else{x[i]=0;dfs(a,n,i+1,x); //不选择a[i]x[i]=1;dfs(a,n,i+1,x); //选择a[i]}}算法设计

voiddisplaySolution(inta[],intn,intx[])//输出一个解{cout“{“;for(inti=0;in;i++){if(x[i]==1)cout‘\t’a[i]; }cout“}“;}算法设计

voiddfs(inta[],intn,inti,intx[]){if(i=n)dispasolution(a,n,x);else{x[i]=0;dfs(a,n,i+1,x);//不选择a[i]x[i]=1;dfs(a,n,i+1,x);//选择a[i]}}dfs(0,[0,0,0])dfs(1,[1,0,0])dfs(2,[1,0,0])dfs(2,(1,1,0])dfs(1,[0,0,0])dfs(2,[0,0,0])dfs(2,[0,1,0])101001dfs(3,[0,0,0])dfs(3,[0,0,1])dfs(3,[0,1,0])dfs(3,[0,1,1])0101dfs(3,[1,0,0])dfs(3,[1,0,1])dfs(3,[1,1,0])dfs(3,[1,1,1])0101{}{3}{2}{2,3}{1}{1,3}{1,2}{1,2,3}dfs(a,n,i,x)简写为dfs(i,x)dfs(a,3,0,x)简写为dfs(0,x)dfs(0,[0,0,0])

dfs(0,[0,0,0])dfs(1,[1,0,0])dfs(2,[1,0,0])dfs(2,(1,1,0])dfs(1,[0,0,0])dfs(2,[0,0,0])dfs(2,[0,1,0])101001dfs(3,[0,0,0])dfs(3,[0,0,1])dfs(3,[0,1,0])dfs(3,[0,1,1])0101dfs(3,[1,0,0])dfs(3,[1,0,1])dfs(3,[1,1,0])dfs(3,[1,1,1])0101{}{3}{2}{2,3}{1}{1,3}{1,2}{1,2,3}

吴粉侠算法设计与分析

第5章回溯法回溯法应用

全排列求解【例5.5】有一个含n个整数的数组a,所有元素均不相同,求其所有元素的全排列

文档评论(0)

150****1125 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档