下载此文档

动态规划初步.ppt


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
动态规划初步9155223109动态规划初步
动态规划与分治算法类似,基本思想是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
两条基本要素:
最优子结构
重叠子问题
设计动态规划算法的步骤:
1、找出最优解的性质,并刻画其结构特征
2、递归的定义最优值
3、以自底向上的方式计算出最优值
4、根据计算最优值时的信息,构造最优解
HDU2084 数塔
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
最长上升子序列(LCS)
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。
若X=<A, B, C, B, D, A, B>和Y=<B, D, C, A, B, A>,则序列<B, C, A>是X和Y的一个公共子序列,序列<B, C, B, A>也是X和Y的一个公共子序列。而且,后者是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。
LCS[i][j]记录当A到第i个位置,B到第j个位置时,A、B两个数组的最长公共子序列,那么就会有以下两种情况
当A[i]=B[i]时,说明两个位置的值相等
LCS[i][j]=LCS[i-1][j-1]+1
当A[i]!=B[i]时,说明两个位置的值不相等
LCS[i][j]=max(LCS[i-1][j],LCS[i][j-1])

0-1背包问题
有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。
使用二维数组f[i][j]:
第一维表示的是:
已经选择到了第i个物品
第二维表示的是:
背包总共使用了j单位
f[i][j]记录的是在这个状态下,所能得到的最大收益
对于每种物品来说,只有两种状态:取或者不取
不取: 对于f[i][j]来说,他的值,应当为f[i-1][j]
因为背包的实际没有增大
取: 对于f[i][j]来说,他的值,应当为f[i-1][j-c[i]]+v[i]
因为背包的实际增大了c[i],价值增加了v[i]
从以上的两种情况,考虑f[i][j]可能由多种情况来,那么就取MAX即可,但是由于有i这意味,那么f[i][j]只能由两种状态来,公式为
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
对于不取的情况而言,值已经存在,并且,我们不能保证当背包容量用尽时是最大值,那么我们就应当扫描所有的背包容量情况。
那么此时的时间复杂度为O(VC),空间复杂度也是O(VC),考虑空间复杂度的降低,我们将f[i][j]中的第一维去掉,只留下背包容量这一维
那么此时的时间复杂度为O(VC),空间复杂度也是O(VC),考虑空间复杂度的降低,我们将f[i][j]中的第一维去掉,只留下背包容量这一维
for i=1..N
for v=V..0
f[v]=max{f[v],f[v-c[i]]+w[i]};

动态规划初步 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人neryka98
  • 文件大小425 KB
  • 时间2018-08-05