dp动态规划

Posted SDAU_ZG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dp动态规划相关的知识,希望对你有一定的参考价值。

动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。

基本思想

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
阶段:把所给求解问题的过程恰当地分成若干个相互联系的阶段,以便于求解,过程不同,阶段数就可能不同.描述阶段的变量称为阶段变量。
状态:状态表示每个阶段开始面临的自然状况或客观条件,它不以人们的主观意志为转移,也称为不可控因素。
决策:一个阶段的状态给定以后,从该状态演变到下一阶段某个状态的一种选择(行动)称为决策。

01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ),  f[i-1,j] }

f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。
Pi表示第i件物品的价值。
决策:为了背包中物品总价值最大化。
 
完全背包
这个问题非常类似于01背包问题,所不同的是每种物品有无限件,也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……取[V/c]件等很多种。
 
最长上升子序列
      设数串的长度为n,L[i]为以第i个数为末尾的最长上升子序列的长度,a[i]为数串的第i个数。
        L[i]的计算方法为:从前i-1个数中找出满足a[j]<a[i](1<=j<i)条件的最大的L[j],L[i]等于L[j]+1。
动归表达式:
技术分享
类斐波那契数列问题
指特征方程类似于 f(n) = f(n-1) + f(n-2),的问题,此类问题最直观的题就是斐波那契数列,稍微难一点的就是跳楼问题,和堆砖头问题,这两个题虽然看起来与斐波那契没什么关系,但是经过分析和转化之后,就可以转化为该类型。总的来说,类斐波那契数列问题是这套专题里最简单的问题,只要做会了几个典型,其他的就很简单了。

 最短路径问题

以上是关于dp动态规划的主要内容,如果未能解决你的问题,请参考以下文章

动态规划第五篇:01背包问题和完全背包问题

动态规划第五篇:01背包问题和完全背包问题

51nod 1101 换零钱 完全背包的变型 动态规划

动态规划 -- 01背包问题和完全背包问题

动态规划完全背包

第五讲 动态规划