安庆四中2012017综合实践课程创新思维-程序设计论文动态.DOC

安庆四中2012017综合实践课程创新思维-程序设计论文动态.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
安庆四中2012017综合实践课程创新思维-程序设计论文动态

PAGE PAGE 19 安庆四中2016-2017 综合实践课程《创新思维-程序设计》(论文) 动态规划初步 年 级: 七 学 号: 姓 名: 王子翔 指导老师: 范江文 二零一七年二月 前言 历年OI赛事上的有些题型十分“恼人”。它们拥有复杂变态的题型与怪诞惊人的数据,使许多选手因此望而却步。遇到这些异类,想用搜索等“朴素”的方法是过不了关的,只能起到骗分的作用。 于是乎,有人发明了动态规划,使这些题迎刃而解,而且看起来很简单。 动规具有一个标准的数学表达式与明确清晰的解题方法,却无固定的结构框架,每一种方法都各具特色。掌握动规,需要以丰富的想象力构建模型,用创造性技巧求解。 对于动规初学者,切勿浮躁,要认识到“会并不代表完全掌握”,还需接触大量的题目。此外,初学者想要接触动规,必将递推算法熟记于心,因为动规与其有很大联系。 为了推广动态规划的使用,本文浅要介绍动态规划的初步掌握方法与几道经典题目。 目录 初识动态规划 基本概念 最优化原理与无后效性原则 从记忆化搜索到动态规划 4. 关于递推 动态规划的经典例题及其解析 数塔问题 逆推法 顺推法 最长下降或不下降子序列问题 其他经典考题 拦截导弹问题 合唱队形问题 背包问题(初级) 01背包 完全背包 总结 附录 致谢 参考文献 初始动态规划 基本概念 首先了解动规的一些基本概念。 用动态规划求解一个问题时,需要将问题的全过程恰当地分成若干个相互联系的阶段,以便按一定的次序去求解。某一阶段的出发位置叫做状态,一个阶段一般包含若干状态。而对问题的处理作出的每种选择性行动叫决策,即通过一次选择性行动从每一状态转移至下一阶段的相应状态;前一阶段的终点为后一阶段起点,对前一阶段做出某种决策,产生后一阶段状态,叫状态转移方程。全过程中各阶段决策变量所组成的有序总体称为策略,实际问题中需找到最优策略。 2.最优化原理与无后效性原则 动态规划求解问题要有前提条件,无论过去状态与决策如何,对前面的决策形成的状态而言,余下所有决策必须构成最优策略的性质。这种性质与动态规划的无后效性原则有紧密关联,也就是某阶段的状态一旦确定,则后面过程的演变不再受此前各状态及决策的影响。既能划分阶段,又符合最优化原理,还要具备无后效性原则,才能用动态规划求解。三者缺一不可。 3.从记忆化搜索到动态规划 搜索算法通常可转化为动态规划。搜索过程中经常会多次遍历到同一状态,大大拉低了效率。于是可在第一次计算出该状态的结果后,设置数组将结果记录下来,此后可以在再次遍历到该状态时,直接利用该结果,从而减少重复计算,提升效率。此算法称作记忆化搜索。动态规划大致思路与记忆化搜索类似,将之前状态的结果记录下来加以利用并将搜索过程转换为递推式,便可以使时间效率得到提高。这在后面的经典例题中会有涉及。 4.关于递推 由于动规的名气与魅力让大众折服,以至于许多人甚至某些资料都往往把一种与动规极其相似的算法当做动态规划。这种“狐假虎威”的算法就是递推。动态规划是解决最优化问题的有力武器,而递推法在处理判定性问题与计数问题方面正是一把尖锐的利器,两种方法不谋而合。 下一节就来举几个经典例题,谈谈动规与递推的紧密联系。 关键词语:状态转移方程,递推法 动态规划的经典例题及其解析 1.数塔问题 (初次出现:数字三角形【IOI 1994】) 此题可以说是一块有象征性的里程碑,它开辟了动规的先河,成为第一次出现在OI赛事上的动规题。 题目如下: 有一个数字三角形,从最顶层出发,每一步只能向左下或右下方向走。编程求从最顶层到最底层的一条路所经过位置上的数字之和的最大值。下图数据的路应为: 7-3-8-7-5,和为30。 输入: 第一行:n(1=n=100),数字三角形共有n行; 以下R行:依次表示数字三角形中每行中的数字。 每个数都是非负的,且=100. 输出: 一个正整数,路径上数字之和的最大值。 如下图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输入样例: 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出样例: 30 此题一出,必有无数OI愤青咒骂此题的让人头痛。因为亲爱的贪心算法无法解决,往往得不到最优解;而朴实的枚举更将坏事。有人想到了深搜,深搜可靠,但当你看到 n=100的条件时,你将破口大骂,因为会——超时!!! 其实搜索速度慢的原因是做了很多重复的计算。 例如: 92 63 53 18 25 14 63 85 9 32 58 84 70 2 93 88 25 35 0 20 11 9 96 85 6 14 97 60 74 71 33 39 51 96 27 96 0 7

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档