回溯、递归、递推【信息技术】.docVIP

  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文档。上传文档
查看更多
A 2 - 回溯、递归、递推 学习小结 江苏省连云港市赣榆高级中学 仲晨 myheimu@ Myheimus Home 关键词:【JSOI2005-2006第一轮函授 函授作业 A组 第2次 回溯、递归、递推 学习小结A2-回溯、递归、递推2005年4月30日 文件大小:928.00 KB 共 28页 ,合计15297 字 目录 按Ctrl+鼠标单击 前往 A 2 - 回溯、递归、递推 学习小结 1 一、导言(Introducation) 2 二、关于回溯(About Backtracking) 4 三.递推与递归(Recursion) 7 四、回溯·递推·递归 运用与优化 15 五、高级本相关思考 26 一、导言(Introducation) 作为导言,先说一下本文的写作思路与线索: 本文虽为函授作业,但是我没有当作纯粹的作业来作。( 我尽量收集各类信息,上网收集资料,认真阅读相关书籍,然后结合高级本写成本文,在本文中涉及了许多内容,我将回溯、递归、递推发散为很广阔的范围,为的是在这次函授之中能够尽量多的学到更多的东西。By the way,我也把本文作为一个自己的资料库,录入许多理解性的内容,作为总结与查询库。当然,决不能忘记要自己思考,学习小节,因此进行了很多题目算法的思考,我进行了思考研究,写出详解与勘误参考,水平有限,欢迎批评指教。 本文线索就是回溯、递归、递推,我们围绕这三项进行讨论。 函授文件里要求思考一下七个问题,它们在本文中都将以专题形式叙述: ⊙回溯思想适合解决哪些问题? ⊙回溯思想在具体实现时,采用递归与非递归的方法,各有什么优缺点? ⊙回溯与递归的关系怎样? ⊙递推与递归的关系怎样?递推的优点在哪儿? ⊙递推与动态规划的关系怎样? ⊙思考“栈”在递归、回溯中的作用? ⊙结合实例,分析它们的效率。 回溯、递归、递推:基础而重要。我们应该努力理解其中的精髓,并把它的思想发挥到极致! 下图是路径搜索的图像,美妙极了,就让它带领我们走向回溯、递归、递推的世界吧! 二、关于回溯(About Backtracking)”DFS实质不再是回溯了!),属于静态规划。 看多了动态规划,其实回溯使用范围更广,因此重要的多! 回溯,首先需要“回”,才能“溯”,这就关系到状态(State)的枚举与递进。 对于一些简单的问题枚举也简单,不在说了。但是有些问题就不那么简单了,比如一些变化不一,状态联系较大的模型。对于这些问题,如果使用递归回溯较难,则可以使用数学方法来枚举,就是一些可以递归回溯的题,为了判断、处理方便,也要使用数学枚举。例如:数字全排列、数字升序排列……对于数字升序排列(n个数字1-n,排列为m位的数,并且后面的数字比前面的数字大),用回溯需要加判断,比较麻烦,而且如果需要使用这个排列进行其他的状态处理应用(如对应某个棋盘排列)就更麻烦了,所以我们可以使用从后向前找第一个小于后数的数字,将其加“1”,再将其后数字升序排列的办法实现枚举。 处理这个问题的办法是寻找变化规律。 以上就是状态的处理问题。 ( 回溯本是很简单的,有较固定的格式,但是,“标准”的回溯就是穷举!为了较好的时间效率和空间效率,我们需要进行优化,具体的表现就是——剪枝: 状态判断分为:提前判断 和 当前状态判断。 当前状态判断也就是判断当前回溯到了结点(note),判断是否满足题意,对于不同的题目,这个判断形式不同,如:不用判断(因为能回溯到结点就满足题意了),条件判断(判断其是否满足所有条件),最值判断(用于求最值的试题,比较是否大于max或小于min)……这些一般较简单,在此不表。 提前判断即剪枝,剪枝具有十分重要的作用,我们可以把回溯看作一个搜索树,当前状态判断剪掉的只是叶子(结点),但是剪枝顾名思义剪掉的是树枝(branch)。这个对速度影响就大了!在很多情况下,我们已经找到了一组比较好的解。但是计算机仍然会义无返顾地去搜索比它更劣的其他解,搜索到后也只能回溯。为了避免出现这种情况,我们需要灵活地去定制回溯搜索的边界。 之类的复杂度。 范围判断(极端法 ,分枝定界法) 通过判断之后的范围等条件是否满足来剪枝,例如埃及分数等题目。这个判断也十分灵活,有的可以通过比较是否有可能超过最值来剪枝,有的可以通过根据数学计算看是否有可能满足,还有的就是使用迭代加宽、迭代加深的DFS算法来作范围限制…… 数学方法 这就是使用数学判断方法来剪枝,同时也会运用调整法或极端法结合起来使用,数学方法好多,需要就题论题,不表。 例题1 计算机网络连接要将n(n=30)台计算机连成网络,连接方法:去除首尾两台计算机与一台计算机相连以外,其他计算机只与两台计算机相连。连接

文档评论(0)

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

1亿VIP精品文档

相关文档