動态规划的关键算法.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  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文档。上传文档
查看更多
動态规划的关键算法

动态规划的关键算法 Mf1432075 许耀峰 组号:20 背景介绍 PostgresSQL中的动态规划算法 所谓基于代价的动态规划算法,就是穷举所有可能的查询的可执行的方法,估算它们的代价,找出一个代价嘴角的来执行,这是物理层次的优化。在PostgresSQL中,基于代价的动态规划算法应用在物理查询优化阶段求解最优的多表连接路径。 物理查询优化 在查询优化器实现的早期,使用的是逻辑优化技术,即使用关系代数规则和启发式规则对查询进行优化后,认为生成的执行计划就是最优的。在引入了基于代价的查询优化方式后,对查询执行计划做了定量的分析,对每一个可能的执行方式进行评估,挑出代价最小的作为最优的计划。 目前,数据库的查询优化器通常融合了这两种方式。 多表连接查询 多表连接算法实现的是在查询路径生成的过程中,根据代价估算,从各种可能的候选 路径中找出最优的路径(最优路径是代价最小的路径)。 多表连接算法需要解决两个问题: 多表连接的顺序:表的不同的连接顺序,会产生许多不同的连接路径;不同的连接路径有不同的效率。 多表连接的搜索空间:因为多表连接的顺序不同,产生的连接组合会有多种,如果这个组合的数目巨大,连接次数会达到一个很高的数量级,最大可能的连接次数是N !(N 的阶乘) 2.1多表连接顺序 多表间的连接顺序表示了查询计划树的基本形态。一棵树就是一种查询路径,SQL 的 语义可以由多棵这样的树表达,从中选择花费最少的树,就是最优查询计划形成的过程。 而一棵树包括左深连接树、右深连接树、紧密树3 种形态。 另外,即使是同一种树的生成方式,也有细节需要考虑。在图3-1a 中,{A,B} 和{B,A} 两种连接方式花费可能不同。比如最终连接结果是{A,B,C},但是需要验证是{A,B,C}、{A,C,B}、{B,C,A}、{B,A,C}、{C,A,B}、{C,B,A} 中哪一个连接方式得到的结果,这就要求无论是哪种结果,都需要计算这6 种连接方式中每一种的花费,找出最优的一种作为下次和其他表连接的依据。 人们针对以上树的形成、形成的树的花费代价最少的,提出了诸多算法。树的形成过程,主要有以下两种策略: (1)至顶向下。从 SQL 表达式树的树根开始,向下进行,估计每个结点可能的执行方法,计算每种组合的代价,从中挑选最优的。 (2)自底向上。从 SQL 表达式树的树叶开始,向上进行,计算每个子表达式的所有实现方法的代价,从中挑选最优的,再和上层(靠近树根)的进行连接,周而复 始直至树根。 常用的多表连接算法 表与表进行连接,对多表连接进行搜索查找最优查询树,通常有多种算法,比如启发式、分枝界定计划枚举、爬山法、动态规划、System R 优化方法等。 动态规划算法 3.1 简介 20 世纪40 年代,Richard Bellman 最早使用了动态规划这一概念,用以表述通过遍历寻找最优决策解问题。“动态规划”(dynamic programming)中的programming 来自“数学规划”(mathematical programming,又称规划),与“计算机编程”(computer programming)中的programming 没有关系。规划的含义是指生成活动的优化策略,规划意味着找到一个可行的活动计划。动态规划,是指决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,这就是“动态”的含义。 “动态规划”将待求解的问题分解为若干个子问题(子阶段),按顺序求解子问题,前一子问题的解为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。 动态规划的概念 阶段。把求解问题的过程分成若干个相互联系的阶段,以便于求解。在多数情况下,阶段变量是离散的。 状态。表示每个阶段开始面临的自然状况或客观条件,它不以人们的主观意志为转移,也称为不可控因素。 无后效性。状态应该具有的性质,如果给定某一阶段的状态,则在这一阶段以后过程的发展不受这阶段以前各段状态的影响。 决策。一个阶段的状态确定后,从该状态演变到下一阶段某个状态的选择(行动)称为决策。 策略。由每个阶段的决策组成的序列称为策略。对于每一个实际的多阶段决策过程,可供选取的策略有一定的范围限制,这个范围称为允许策略集合。允许策略集合中达到最优效果的策略称为最优策略。 最优化原理。如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。最优化原理实际上是要求问题的最优策略的子策略也是最优的。 动态规划的具体实现 在数据库领域,动态规划算法主要解决的是多表连接的问题。动态规划算法是从底向上进行的,即从叶

文档评论(0)

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

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

1亿VIP精品文档

相关文档