浅谈记忆化搜索.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文档。上传文档
查看更多
浅谈记忆化搜索 江苏省常州高级中学吴景岳 【摘要】 搜索和动态规划是信息学中的两大重要算法。它们各有自己的优点和缺点。 针对它们的优缺点,一个新的算法——“记忆化搜索”产生了。它采用了搜索的 形式与动态规划的思想,扬长避短,在解决某些题目时,有非常出色的表现。它 在信息学竞赛中也有举足轻重的地位,NO 12001的cannon与NO12002的dragon 都使用到了这个算法。这篇论文着重分析了搜索、动态规划和记忆化搜索之间的 联系和区别,以及各自的优缺点,并通过几个例子使得大家对记忆化搜索有一个 初步的了解。 【关键字】 重叠子问题拓扑关系形式+思想 重叠子问题 拓扑关系 形式+思想 【目录】 搜索树 例子 words 效率低卜?的原因——重叠了问题 二、 动态规划 基本原理一一最优子结构、无后效性 拓扑关系(例了——最长路径) 三、 记忆化搜索 记忆化搜索二搜索的形式+动态规划的思想 记忆化深度优先搜索 程序框架 例子 words 记忆化宽度优先搜索 程序框架 例 了 cannon 缺点分析 四、 总结 【正文】 一、 搜索 搜索树 一道搜索题口拿到手,我们往往要弄清楚这样一些问题:以什么作为状态?这些状态 之间乂有什么样的关系?其实,在这样的思考过程中,我们已经不知不觉地将一?个具体的问 题抽象成了一个图论的模型一一树。 状态对应着顶点,状态之间的关系(或者说从一个状态到另一个状态的形成过程)对 应着边。这样的一棵树就叫做如软’初始状态对应着根结点,目标状态对应着目标结点。 我们的任务就是找到一条从根结点到目标结点的路径 个成功的解。 例子 words [问题描述] Io和Ao在玩一个单词游戏。他们轮流说出一个仅包含元音字母的单词,并且后一?个单 词的第一个字母必须与前一个单词的最后一个字母一致。游戏可以从任何一个单词开始。 任何单词禁止说两遍,游戏中只能使用给定词典中含有的单词。 游戏的复杂度定义为游戏中所使用的单词的长度总和。 编写程序求出使用一本给定的词典来玩这个游戏所能达到的游戏最大町能复杂度。 数据规模限制:单词总数不超过16,单词长度不超过100。 [算法分析] 这是省集训队冬令营的一道题冃,当吋大多数同学都用了搜索。让我们看看他们是如何 搜索的。 状态: 现在说到哪一个单词+已经说过的单词集合 我们将状态衣示为(1, S),表示说到了单词1,己经说过的单词集合为So 状态Z间的关系: (I,S)-(j,Sl) (S1二S+j)的条件为单词J不在集合S中,并且单词J nJ以接在单词 I后面。 但是,这样捜索效率是不会高的。所以,当时很多人都是因为超时,最后三个点没冇出 来。那么,搜索效率低下的根木原因是什么呢? 重叠子问题 在一些复杂的捜索问题中,捜索树是极其庞大的,结点数虽非常多,结点Z间的关系 也非常复杂,这是导致搜索算法效率低下的重要原因。其实,在有的情况下,状态的总数并 没有多少,有可能很多结点表示的都是同一个状态,我们把这样的状态叫做“重叠子问题”。 由于搜索算法本身性质的制约,它不能把这些重叠子问题记录下来,只能不知疲倦地继续访 问下去,不断遇到这些讨厌的重亞了问题。显然,如果能不把时间放在处理重為了问题上, 算法的效率将发住--个质的飞跃。那么有没有这样一种可以避免重复地处理重叠子问题的算 法呢?这就是—— 二、动态规划 基本原理 动态规划是大家极为熟悉的一种算法,实际上一道动态规划的问题也可以转化为求解搜 索树的问题。同样是搜索树,动态规划却比搜索算法高效很多,这是因为它把每个状态的最 优值都记录了卜?來,于是成功地避免了重复地处理重叠子问题。不过,动态规划的使川是要 满足两个基本条件的: 最优子结构 用动态规划解决一个问题的第一步是刻划一个最优解的结构。如果一个问题的最优解屮 包含了子问题的最优解,我们就说这个问题貝有垠犹子纬次 无后效性 动态规划的过程是一个状态转移的过程:不断地从一个已知的状态出发,推出一个新的 状态。但是,如果新的状态乂能够推出前面的状态(影响前面的状态),那么这样的状 态划分就具有了后效性。动态规划能够成功的一个必要条件就是无后效性。 拓扑关系 我们同样地对动态规划问题进行抽象:状态->结点,状态之间的关系-〉边。这样,一个 动态规划的问题就可以抽彖成为一个图。因为动态规划是满足无后效性的,这样的图必将是 一个冇向无环图。在动态规划中,状态Z间冇着严格的递推关系,我们必须确定哪些状态必 须先推出,哪些应当后推出。这就秫k拓扑关系。将点(状态)按照拓扑关系排序,就叫做 拓扑排序。拓扑排序保证:除初始状态以外,每个状态都可以由它前面的状态推出。 举一个例子:卜?图是一个有向无环图,求从顶点1到顶点6的最长路径。(规定边的方 向从左到右) 厂、 我们将从起点(顶点1)开始

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档