专题三总结

原创 2016年05月31日 08:09:50

动态规划总结

动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。

        动态规划(英语:Dynamicprogramming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

        动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。


     动态规划问题满足三大重要性质

1.最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。

2.子问题重叠性质:子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。

3.无后效性:将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态。换句话说,每个状态都是过去历史的一个完整总结。这就是无后向性,又称为无后效性。

********************************************************************************************

        动态规划分类有很多划分方法,网上有很多是按照状态来分,分为一维、二维、区间、树形等等。我觉得还是按功能即解决的问题的类型以及难易程度来分比较好,下面按照我自己的理解和归纳,把动态规划的分类如下:

一、简单基础dp

这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的。主要包括递推、背包、LIS(最长递增序列),LCS(最长公共子序列),下面针对这几种类型,推荐一下比较好的学习资料和题目。

1、递推:

递推一般形式比较单一,从前往后,分类枚举就行。

2、背包

(1)01背包问题 (先枚举物品,再逆序枚举容量)

(2)完全背包问题(先枚举物品,再正序枚举容量)

(3)多重背包问题(先枚举物品,再正序枚举容量)

(4)分组背包问题(先逆序枚举容量,再枚举物品)

(5)树形背包问题(在树上进行分组背包处理)

3、LIS

最长递增子序列,朴素的是o(n^2)算法,二分下可以写成o(nlgn):维护一个当前最优的递增序列——找到恰好大于它更新

4、LCS

最长公共子序列,通常o(n^2)的算法

二、区间dp

区间dp,一般是枚举区间,把区间分成左右两部分,然后求出左右区间再合并。

三、树形dp

树形dp是建立在树这种数据结构上的dp,一般状态比较好想,通过dfs维护从根到叶子或从叶子到根的状态转移。

四、数位dp

数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快。数位dp做多了后,套路基本上都差不多,关键把要保存的状态给抽象出来,保存下来。

五、概率(期望) dp

一般来说概率正着推,期望逆着推。有环的一般要用到高斯消元解方程。期望可以分解成多个子期望的加权和,权为子期望发生的概率,即 E(aA+bB+...) = aE(A) + bE(B) +...

六、状态压缩dp

这类问题有TSP、插头dp等。

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

概率DP总结 by kuangbin

http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html
  • u011742541
  • u011742541
  • 2014年01月10日 15:55
  • 833

专题三-动态规划算法总结

在动态规划的第一堂课,老师就说过,这是一个脑洞大开的专题。果不其然,在这个专题会用到许多除了公式之外的技巧。动态规划,顾名思义,就是把一个问题分解成很多子问题,最后由子问题递归调用,得出最终问题的结果...
  • tansanity
  • tansanity
  • 2016年05月29日 11:11
  • 215

专题三总结,DP

 最初感觉态规划和搜索有些类似,最常见的有在路径上求最优,可以从第一个开始记忆搜索,也可以从最后向前推,后者用时较少,最大(多段)子数列和,走数字地图问题,找相同字符串等;递推问题比较简单,通过...
  • baidu_34275752
  • baidu_34275752
  • 2016年05月31日 23:34
  • 68

ACM专题三总结

昨天晚上,专题三结题了。今天做个总结,为这一个月来所学所获说说心得。可能不会多深刻,但是作为一个新手,总结是对这一段时间的反思。   查了查动态规划定义:...
  • yjz_sdau
  • yjz_sdau
  • 2016年06月01日 12:37
  • 186

专题三 总结动态规划

动态规划总结  一、解释: 解决多阶段策略问题的一种方法,运用最优性原理,排除重复计算,用空间换时间的算法。 二、适用的题目类型: 1.问题具有多阶段的决策 2.每个阶段对应一个状态(状态变量) 3....
  • qq_34273438
  • qq_34273438
  • 2016年05月28日 23:10
  • 118

2017-2018SDUT个人训练赛第四场总结:我们愿意用更大的努力去换取更大的成功

开学后,老师学长们精心为我们组织了很多的训练以及比赛,在每周二周四的晚七点到十点会有个人赛,今天也不例外,但是与以往不同的是,通过前边的训练以及每天坚持不懈的跑步后,第一次在晚上比赛中精力充沛,并且从...
  • m0_38081836
  • m0_38081836
  • 2017年09月19日 23:10
  • 48

关于考驾照科目三的总结

测试
  • cleble
  • cleble
  • 2016年08月07日 13:24
  • 422

《三体》浅读梳理

弱小和无知不是生存的障碍,傲慢才是 三体中的经典宇宙观点: 同纬度的黑暗森林法则 零光速(光幕 零维)黑洞的形成是因为曲率光速航迹所致 宇宙的低维化进程 塌缩为奇点 重归高维 物理法则不是恒定不变的,...
  • u010801085
  • u010801085
  • 2015年06月06日 14:58
  • 907

[转] 30分钟新闻联播可以总结成三句话

 30分钟新闻联播可以总结成三句话:前十分钟,领导们很忙中十分钟,全国人民都很幸福后十分钟,世界上其它国家人民都生活在水深火热之中 ...
  • xxyakoo
  • xxyakoo
  • 2009年05月12日 19:50
  • 1190

java语言中——三种排序代码总结

1.冒泡程序 : 2.选择排序: package sorting; package sorting; public class SortingTest1 {  public cl...
  • ohothesummersunshine
  • ohothesummersunshine
  • 2015年10月22日 21:47
  • 69
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:专题三总结
举报原因:
原因补充:

(最多只允许输入30个字)