- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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,所有元素均不相同,求其所有元素的全排列
您可能关注的文档
- 2020-2021北师大版八年级物理上册课件:光的传播.ppt
- 2020-2021华东师大版九年级上册二次根式的乘除法三.ppt
- 2020-2021教科版高一物理必修第二章力---摩擦力--课件.ppt
- 2020—2021学年语文八年级上册课件:19小石潭记.ppt
- 2020—2021学年高中数学北师大版选修2-1课件:第一章1命题.ppt
- 2020中秋节嫦娥奔月绘本故事课件.ppt
- 2020年心肺复苏指南解读.ppt
- 2020年部编人教版二年级语文下册《小马过河》课件.ppt
- 2020血透室院感爆发应急预案.ppt
- 2021-中国脑小血管病诊治专家共识2021.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)