- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构第4讲递归广义表.ppt
1. 分治法 (又称分割求解法) 三、递归函数设计方法 2. 后置递归法 3. 回溯法 3. 回溯法 是一种“穷举”方法。其基本思想为: 假设问题的解为 n 元组 (x1, x2, …, xn), 其中 xi 取值于集合 Si。 2. n 元组的子组 (x1, x2, …, xi) (in) 称为 部分解,应满足一定的约束条件。 3. 对于已求得的部分解 (x1, x2, …, xi) , 若在添加 xi+1?Si+1 之后仍然满足约束条件, 则得到一个新的部分解 (x1, x2, …, xi+1) , 之后继续添加 xi+2?Si+2 并检查之; 若对于所有取值于集合Si+1的xi+1 都不能得到新的满足约束条件的部分 解(x1,x2, ? ? ?,xi+1 ), 则从当前子组中删去xi, 回溯到前一个部分解(x1,x2, ? ? ?,xi-1 ), 重新添加那些值集Si中尚未考察过的xi,并检查之。 5. 如此反复进行,直至求得满足约束条件的问题的解,或者证明问题无解。 回溯法的关键是: 穷举策略 约束条件 终止条件 皇后问题 设四皇后问题的解为 (x1, x2, x3, x4), 其中: xi (i=1,2,3,4) ? Si={1, 2, 3, 4} 约束条件为: 其中任意两个xi 和xj不能位于棋盘的同行、同列及同对角线。 1 2 3 4 X1 X2 X3 X4 x1= 1 x2= 3 x1= 2 x2= 4 x3= 1 x4= 3 皇后问题回溯算法关键: 穷举策略: 依次取 xi = 1,2,3,4; 约束条件: xi和xj不位于棋盘的同行、 同列及同对角线上; 终止条件: 找到满足条件的x1,x2 x3,x3; 回溯条件: 在当前初始条件下穷举无解; 无解: 回溯到了起始状态; void Trial(int i, int n) { // 进入本函数时,在n×n棋盘前i-1行已放置了互不攻 // 击的i-1个棋子。现从第 i 行起继续为后续棋子选择 // 满足约束条件的位置。当求得(in)的一个合法布局 // 时,输出之。i 的初始值为1。 if(i=0) 无解; if (in) 输出棋盘的当前布局; //终止 else for (j=1; j=n; ++j) { //试探策略 在第 i 行第 j 列放置一个棋子; if (当前布局合法) Trial(i+1, n); //约束-递归 移去第 i 行第 j 列的棋子; } i--; //回溯 } // Trial T(2,4) T(2,4) … … T(1,4) T(1,4) T(3,4) T(1,2) T(1,4) T(1,3) T(3,4) T(3,4) T(3,4) T(3,4) T(3,4) T(3,4) T(2,4) T(2,4) … T(2,4) T(2,4) T(2,4) T(2,4) … T(4,4) T(4,4) T(4,4) T(4,4) T(4,4) B(4,4) x2 x1 x3 x4 … 四皇后递归树 j=1 j=2 j=3 j=4 j=1 j=4 j=1 j=4 j=1 j=3 j=4 j=1 j=1 j=2 先写出问题求解的递归定义,包括两项内容: 基本项: 描述一个或几个递归过程的终结状态; 归纳项: 描述如何从当前状态到终结状态的转换; 四、递归注意事项 2 写递归函数时注意: 严格定义函数的功能和接口; 将每一个递归看成一个简单的操作; 切忌想得太深太远! 递归树的深度即为递归函数的递归深度 递归树上的结点数目恰为函数中的主要操作重复进行的次数; 若递归树蜕化为单支树或者递归树中含有很多相同的结点,则表明该递归函数不适用。 3. 分析递归算法的工具是递归树,从递归树上可以得到递归函数的各种相关信息。 例如: n=3的梵塔算法中主要操作move的执行次数可以利用下列递归树进行分析: move(3, a, b, c) move(2, a, c, b) move(2, b, a, c) move(1, a, b, c) move(1, c, a, b)
您可能关注的文档
- 托马斯微积分课件13 Limits Involving Infinity.ppt
- 托马斯微积分课件14 Continuity.ppt
- 托马斯微积分课件21 The Derivatives as a Function.ppt
- 托马斯微积分课件31 Extreme Values of Functions.ppt
- 托马斯微积分课件63 Derivatives of inverse trigonometric functions and integrals.ppt
- 托马斯微积分课件83 Infinite Series.ppt
- 挑战烦恼课件.ppt
- 探秘计算机.ppt
- 探究串联电路电压的规律 朱伟林课件.ppt
- 提高老年人静脉穿刺成功率.ppt
最近下载
- SolidWorks入门教程很全面课件.ppt VIP
- [生理学]消化与吸收精选.ppt VIP
- 专题21.2 二次函数的图象【八大题型】(举一反三)(沪科版)(原卷版).docx VIP
- 第一章物质及其变化第一节物质的分类及转化(25张PPT)必修第一册.pptx VIP
- 某省2025年全省广播电视技术大赛(调幅专业) 试题 .pdf VIP
- 公路桥梁工程高处作业安全培训.pptx VIP
- PKPM软件说明书_筒仓结构设计软件SILO.pdf VIP
- Q OKTW 023-2016_汽车起重机 企业标准.pdf VIP
- 五年级数学(小数四则混合运算)计算题及答案汇编.docx VIP
- 【知识专讲精研】高中日语基础写作:-私の部屋课件.pptx VIP
文档评论(0)