3动态规划

原创 2016年05月31日 20:54:09

此次专题主要讲解动态规划,题目大致分为两类 一种是递归来解决,一种是0/1背包问题。

动态规划就是把一个问题分成多个阶段来解决,并且每个阶段都相互有所联系。其遵循最优性原理。

1,不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列。

2,最优决策序列的子序列,一定是局部最优决策子序列。
3,包含有非局部最优的决策子序列,一定不是最优决策序列。
根据老师课件可以总结为解题步骤:
1,把问题分为若干个子问题就是分为若干个阶段
2,建立状态转移方程,一般是递推公式
3,找出边界条件
4,将边界值代入方程
5,递推求解

一,递归问题。
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
这是一道简单的递归问题,没上一个台阶看做阶段,从第三层就能找出规律,他的状态转移方程为f(n) = f(n-1)+f(n-2)
之后将边界值带入就能求解。
二,求最长序列问题。
求公共最长子序列的题,首先要区别子序列与字串。子序列是可以不连续的,而字串一定是连续的。
我一般的做法就是建立动态规划数组dp[i][j]代表当比较到两个字符串的尽头时的最大公共子序列就是dp[i][j]
如图:

状态转移方程为:dp[i][j] = most(dp[i-1][j],dp[i][j],dp[i][j-1])分别是一串与二串之前有相同字符,同位有相同字符,之后有相同字符,取最大值。
三,0/1背包问题
典型题目:给你物品数目以及背包的容量,下面是各个物品的价值以及容量,让你求背包能装入的最大价值
状态转移方程:dp[i][j] = most(dp[i][j],dp[i-1][j-w[i])+v[i]);
w[i]即第i件物品的重量 v[i]第i件物品的价值dp[i][j]把前i件物品装入j容量的背包中所能获得的最大价值。
对每件物品就有两种选择,放或者不放,取其最大值,如果放这件物品则为dp[i-1][j-w[i]] + v[i],前i-1件物品放入j-w[i]的容量中所能获得的最大价值,如果不放就是dp[i-1][j]。
完全背包问题,在0/1背包问题的基础上,每种物品不单单是一件了,而是多件。

1) 子问题定义:F[i][j]表示前i物品中选取若干件物品放入剩余空间为j的背包中所能得到的最大价值。

        2) 根据第i物品放多少件进行决策

  dp[i][j] = max(f[i-1][j-k*w[i]) + k*v[i],f[i-1][j]) 0<=k*w[i]<=j 就是比0/1背包问题多加了一层每种物品数量的循环

还有分组背包问题,把物品分成若干组,在每一组中求最优。






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

相关文章推荐

acm课件3 动态规划

  • 2011-04-07 18:25
  • 479KB
  • 下载

【动态规划】【最短路径】Problem 3 Cyh和香穗子

话说,Cyh和香穗子是好朋友,一天他们在fzsz迷路了….Cyh在地点1,香穗子在地点n.由于Cyh是土生土长的fzsz人,所以Cyh准备去n地给香穗子带路. fzsz是个奇怪的地方,它由n地点组成...

Java算法3--动态规划算法实现矩阵连乘

一、需求 1、编写用动态规划算法实现矩阵连乘的类。 2、编写一个测试类,给出矩阵链的阶,求计算该矩阵链乘积的完全加括号方式的最小代价,用二维表的形式输出各子矩阵链的最优值。 二、实现源程序 (...

100道动态规划——3 UVA 2451 Brackets sequence 重构解 DP

好吧,这道题的难点在于重构解,我发现我写的题目基本上只要输出一个答案,要重构解得很少呀。。重构解写了我大约1H左右。。。还是不熟练呀。。                  至于求得解得个数的话,区间...

NYoj 712 探寻宝藏[经典动态规划3](河南省第六届省赛)

/* NYoj 712 探寻宝藏 双线程动态规划(经典的动态规划3) 还是不太明白,要努力学习. 当然,这题还是可以用最小费用最大流来做. 也没有学过这个东西,也要学习. */ #...

练习题(3) -- 另类的动态规划问题

已知 1) 对于数字1 可以表达为 (1) 2) 对于数字2 可以表达为 (1,1) (2) 解释 1 + 1 = 2 3) 对于数字3 可以表达为 (1,1,1) (1, 2) ...

动态规划3之1002

1 题目编号:1002 2 题目内容: Problem Description A subsequence of a given sequence is the given sequence w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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