切换到宽版
  • 9869阅读
  • 7回复

动态规划的几种类型&典型题目 [复制链接]

上一主题 下一主题
离线tctc
 
只看楼主 倒序阅读 0 发表于: 2005-11-19
解答不要问我要…………当时听的时候我基本没听懂来着…………老师是这么说的,“动态规划听一遍是肯定听不懂的,不过先听听看吧”

基本上是从老师的课件里拷出来的……

一.去尾型
例:给定数列a1、a2、…、an,求最长递减子序列。

动态规划方程
变量的定义:
ai ::= 数列的第i个数
Si ::= 以ai结尾的最长递减子序列长度
方程:
Si = max{Sk} + 1       0 <= k < i,ak > ai or k = 0
S0 = 0
Answer = max{Si}     1 <= i <= n


类似问题1
一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截击导弹时所处高度低或者高度相同的导弹。现对这种新型 防卫导弹进行测试,在每一次测试中,发射一系列的测试导弹(这些导弹发射的间隔时间固定,飞行速度相同),该防卫导弹所能获得的信息包括各进攻导弹的高度,以及它们发射次序。现要求编一程序,求在每次测试中,该防卫导弹最多能截击的进攻导弹数量,一个导弹能被截击应满足下列两个条件之一:
1、它是该次测试中第一个被防卫导弹截击的导弹;
2、它是在上一次被截击导弹的发射后发射,且高度不大于上一次被截击导弹的高度的导弹。

类似问题2:
有若干条x轴上的线段,给出它们的左右端点。求这样一个最大的线段集合,使得其中任意两条线段均不重叠。(关于这道题,当时我听到楼天成在跟他同学讲也可以用哈希表,不过我完全迷茫…………)


二.中分型
例:一个a*b的矩阵和一个b*c的矩阵相乘需要a*b*c次乘法,得到一个a*c的矩阵。现在给你一系列矩阵的连乘式,求最少的乘法次数。

动态规划方程
变量的定义:
ri   ::= 第i个矩阵的行数
ci   ::= 第i个矩阵的列数
Si j ::= 将第i-j个矩阵相乘所需的最少乘法次数
方程:
Si j = max{Si k + Sk+1 j} + ri*ck*cj       i <= k <= j
Sii = 0
Answer = S1 n

类似问题:
有n个数a1、a2、…、an。每次从中删去一个数,规定最左最右两个数不能删除。这样共进行n-2次,求得分最高的方案。
计分方式:设某一次删除的数为ai,则你的得分为ai-1*ai*ai+1。所有得分相加即为最后总分。


三.平面型
例:一个迷宫,入口位于左上角,规定只能往下或者往右走。迷宫中存在一些障碍物无法通过。迷宫的某些地方里藏有不同价值的宝藏。求所能收集的宝藏的最大价值。
通常的子结构划分方式:逐行扫描
动态规划方程
变量的定义:
Ai j ::= 迷宫第i行第j列的宝藏价值,-1表示障碍物
Si j ::= 走到第i行第j列所能收集的宝藏的最大价值
方程:
Si j = max{Si j-1,Si-1 j} + Ai j
Si j = -1   Si j-1 = -1 and Si-1 j = -1 or i = 0 or j = 0
S1 1 = A1 1
Answer = Sm n

类似问题:(典型问题,USACO1.4.3)
一个数字三角形如下所示:
    3
      4 5
    9 7 2
    6 8 7 4
从顶端出发,每次可以向左下或者右下走。求一条从顶端到底边的路径,使得路径上所有数之和最大。


感觉上背包问题以及以下的题都是这一类型的
给一个带通配符*和?的字符串S,问它能不能匹配字符串T。
例如,a*b?能够匹配aabc,但是不能匹配aab

思路:列表
    a     a     b     c
a     1     1     0     0
*     1     1     1     1
b     0     0     1     0
?     0     0     0     1


    a     a     b
a     1     1     0
*     1     1     1
b     0     0     1
?     0     0     0

本格"?":左上为1则本格为1
"*":前一行上为一则本格为1,左为1则本格为1
字母:行列上的字母相同且左上为1,则本格为1
[ 此贴被tctc在2005-11-21 23:36重新编辑 ]
离线kingly
只看该作者 1 发表于: 2005-12-15
呵呵
离线yuyan
只看该作者 2 发表于: 2006-02-05
好像某本书上有说~~~~~~~
离线tony
只看该作者 3 发表于: 2006-09-16
谢谢
离线二战小兵
只看该作者 4 发表于: 2007-11-14
ding
离线黑色幽默
只看该作者 5 发表于: 2007-12-08
谢了
离线entropy
只看该作者 6 发表于: 2007-12-11
楼教主伟大!
ORZ
离线fjcym
只看该作者 7 发表于: 2008-01-13
说的没错,一遍的收获是肯定不多的.
快速回复
限100 字节
 
上一个 下一个