动态规划之状态转移方程-NOIP提高组历年高频考点(4)

通过分析NOIP2011-2018年提高组的试题我们就会发现,考察最多的考点前三名就是模拟,动态规划和贪心算法。今天我们来介绍一下动态规划常用的状态转移方程。

动态规划之状态压缩DP-NOIP提高组历年高频考点(3)

动态规划背包模型-NOIP提高组历年高频考点(2)

动态规划-NOIP提高组历年高频考点(1)

动态规划中当前的状态往往依赖于前一阶段的状态和前一阶段的决策结果。例如我们知道了第i个阶段的状态Si以及决策Ui,那么第i+1阶段的状态Si+1也就确定了。所以解决动态规划问题的关键就是确定状态转移方程,一旦状态转移方程确定了,那么我们就可以根据方程式进行编码。

设计一个动态规划算法,有以下四个步骤:

1、刻画一个最优解的结构特征。

2、递归地定义最优解的值。

3、计算最优解的值,通常采用自底向上的方法。

4、利用计算出的信息构造一个最优解。

对于确定状态转移方程就在第一步和第二步中,首先要确定问题的决策对象,接着对决策对象划分阶段并确定各个阶段的状态变量,最后建立各阶段的状态变量的转移方程。

例如用dp[i]表示以序列中第i个数字结尾的最长递增子序列长度和最长公共子序列中用dp[i][j]表示的两个字符串中前 i、 j 个字符的最长公共子序列,我们就是通过对这两个数字量的不断求解最终得到答案的。这个数字量就被我们称为状态。状态是描述问题当前状况的一个数字量。首先,它是数字的,是可以被抽象出来保存在内存中的。其次,它可以完全的表示一个状态的特征,而不需要其他任何的辅助信息。最后,也是状态最重要的特点,状态间的转移完全依赖于各个状态本身,如最长递增子序列中,dp[x]的值由 dp[i](i < x)的值确定。若我们在分析动态规划问题的时候能够找到这样一个符合以上所有条件的状态,那么多半这个问题是可以被正确解出的。所以说,解动态规划问题的关键,就是寻找一个好的状态。

动态规划算法三要素(摘自黑书,总结的很好,很有概括性):

①所有不同的子问题组成的表

②解决问题的依赖关系可以看成是一个图

 ③填充子问题的顺序(即对②的图进行拓扑排序,填充的过程称为状态转移);

则如果子问题的数目为O(nt),每个子问题需要用到O(ne)个子问题的结果,那么我们称它为

tD/eD的问题,于是可以总结出四类常用的动态规划方程:

(下面会把opt作为取最优值的函数(一般取min或max), w(j, i)为一个实函数,其它变量都可以在常数时间计算出来)。)

     1、1D/1D

d[i] = opt{ d[j] + w(j, i) | 0 <= i < j } (1 <= i <= n)

 2、2D/0D

            d[i][j] = opt{ d[i-1][j] + xi, d[i][j-1] + yj, d[i-1][j-1] + zij }     (1<= i, j <= n)

             最典型的见最长公共子序列问题。

3、2D/1D

    d[i][j] = w(i, j) + opt{ d[i][k-1] + d[k][j] }, (1 <= i < j <= n)

    区间模型常用方程。

    另外一种常用的2D/1D的方程为:

d[i][j] = opt{ d[i-1][k] + w(i, j, k) | k < j }    (1<= i <= n, 1 <= j <= m)

4、2D/2D

d[i][j] = opt{ d[i'][j'] + w(i', j', i, j) |  0 <= i' < i, 0 <= j' < j}

    常见于二维的迷宫问题,由于复杂度比较大,所以一般配合数据结构优化,如线段树、树状数组等。

对于一个tD/eD 的动态规划问题,在不经过任何优化的情况下,可以粗略得到一个时间复杂度是

O(nt+e),空间复杂度是O(nt)的算法,大多数情况下空间复杂度是很容易优化的,难点在于时间复杂度。

(0)

相关推荐

  • 这个递归不太难

    相信大家都知道什么是递归,但在实际开发的时候用过多少次递归呢? 程序的世界有句话叫"人用循环,神用递归",很多情况下我们都会优先使用循环而不是递归.我和几个朋友聊过,他们的看法是: ...

  • 动态规划详解

    这篇文章是我们号半年前一篇 200 多赞赏的成名之作 动态规划详解 的进阶版.由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」. ...

  • 动态规划之状态压缩DP-NOIP提高组历年高频考点(2)

    通过分析NOIP2011-2018年提高组的试题我们就会发现,考察最多的考点前三名就是模拟,动态规划和贪心算法.今天我们来介绍一下常见的状态压缩dp.     我们都知道在计算机当中,所有数据都是以二 ...

  • 真题实战(坐标规则型动态规划)-NOIP提高组历年高频考点(5)

    在NOIP中经常出现的动态规划类问题还有 坐标规则型动态规划 动态规划算法之资源分配问题 树型动态规划 这三个点我们将在后面的文章中提及. 动态规划之状态转移方程-NOIP提高组历年高频考点(4) 动 ...

  • 动态规划-NOIP提高组历年高频考点(1)

    通过分析NOIP2011-2018年提高组的试题我们就会发现,考察最多的考点前三名就是模拟,动态规划和贪心算法.简单统计这八年的提高组48个试题我们发现,模拟和动态规划各考察了有11次之多,模拟我们不 ...

  • 【考前冲刺必背】《口组-牙周组织》历年高频考点集锦!

    第二节  牙周组织 一.牙龈 组织结构牙龈是口腔黏膜的一部分,由上皮和固有层组成,无黏膜下层. 牙龈上皮:表面有角化或不全角化,上皮钉突多而细长,偶见黑色素细胞,或含有黑色素颗粒.  龈沟上皮:无角化 ...

  • ※【考前冲刺必背】《口组-黏膜、唾液腺、颌面部发育、牙的发育》历年高频考点集锦!

    第三节  口腔黏膜 一.基本结构 口腔黏膜由上皮和固有层构成.部分黏膜有黏膜下层. (一)上皮组成口腔黏膜上皮的有角质细胞与非角质细胞. 1.角质细胞角化的鳞状上皮主要由角质细胞构成,由表层至深层共分 ...

  • 「提分专用」执业药师历年高频考点合集(第2期)

    为了方便广大执业药师考生在考前查漏补缺,医学教育网小编特别为大家整理了执业药师历年常考高频考点,希望大家在最后阶段冲刺一把.今天给大家推送的是本系列考点合集的第2期内容,包含7个科目的考点,一直持续更 ...

  • 执业药师历年高频考点合集,考前不可错过!

    为了方便广大执业药师考生在考前查漏补缺,医学教育网小编特别为大家整理了执业药师历年常考高频考点,希望大家在最后阶段冲刺一把.今天给大家推送的是本系列考点合集的第一期内容,包含7个科目的考点,关注本公众 ...

  • 汇总:临床医师100个历年高频考点

    来源:正保医学教育网医师资格考试 1. 全身骨与关节结核中发病率最高的是 脊柱结核. 2. 诊断感染性心内膜炎的最首要方法是 血培养. 3. 挽救由心室颤动引起的心脏骤停时,最有效的办法是 非同步电击 ...

  • 【考点总结】2018年口腔执业医师历年高频考点超快记忆63条!

    口 腔执业医师考试积极备考中,七颗牙小七为考生们准备了-考点总结,有助于考生们把握章节重点.每天进步一点,医考过关不困难. [考点1]在一般情况下人们强调咀嚼黏膜(如牙龈.硬腭)上皮有角化,而忽视了一 ...