动态规划

✍ dations ◷ 2025-12-10 23:52:46 #动态规划
动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构(英语:Optimal substructure)性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题。为了避免多次解决这些子问题,它们的结果都逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。背包问题作为NP完全问题,暂时不存在多项式时间算法。动态规划属于背包问题求解最优解的可行方法之一。此外,求解背包问题最优解还有搜索法等,近似解还有贪心法等,分数背包问题有最优贪心解等。 背包问题具有最优子结构和重叠子问题。动态规划一般用于求解背包问题中的整数背包问题(即每种物品所选的个数必须是整数)。 解整数背包问题: 设有 n {displaystyle n} 件物品,每件价值记为 P i {displaystyle P_{i}} ,每件体积记为 V i {displaystyle V_{i}} ,用一个最大容积为 V max {displaystyle V_{text{max}}} 的背包,求装入物品的最大价值。 用一个数组 f [ i , v ] {displaystyle f} 表示取 i {displaystyle i} 件商品填充一个容积为v的背包的最大价值,显然问题的解就是 f [ n , V max ] {displaystyle f} 。f [ i , v ] = { f [ i − 1 , v ] , v < V i max { f [ i − 1 , v ] , f [ i − 1 , v − V i ] + P i } , v ≥ V i 0 , i v = 0 {displaystyle f={begin{cases}f,v<V_{i}\max{f,f+P_{i}},vgeq V_{i}\0,iv=0\end{cases}}}对于特例01背包问题(即每件物品最多放1件,否则不放入)的问题,状态转移方程:f [ i , v ] = { f [ i − 1 , v ] , v < V i max { f [ i − 1 , v ] , f [ i − 1 , v − V i ] + P i } , v ≥ V i 0 , i v = 0 {displaystyle f={begin{cases}f,v<V_{i}\max{f,f+P_{i}},vgeq V_{i}\0,iv=0\end{cases}}}参考Pascal代码参考C++代码(不含include和数组声明)

相关

  • 结晶结晶,是指从饱和溶液中凝结,或从气体凝华出具有一定的几何形状的固体(晶体)的过程。在自然环境下,气温的下降压力的作用,都会造成结晶。结晶的过程一般可分为两个阶段(包括成核和晶
  • 世卫基本药物世界卫生组织基本药物标准清单(法语:Listes modèles OMS des médicaments essentiels;英语:WHO Model List of Essential Medicines;简称EML)是世界卫生组织(WHO或称世卫组织)的出
  • 冰人奥茨冰人奥茨(德语:Ötzi),也称奥茨冰人、锡米拉温人(Similaun man)或厄茨人,以其发现地所在山谷而命名,是1991年于奥茨塔尔阿尔卑斯山脉冰川发现的一具因冰封而保存完好的天然木乃伊,地
  • 氧化剂氧化剂是一类具有氧化性的物质。在化合价有改变的氧化还原反应中,由高价变到低价(即抢到电子)的物质作氧化剂,具有氧化性,可以被还原,其产物叫还原产物。另一方面,氧化剂也是一类危
  • 先天性无齿症在牙医学上,先天性无齿症是一种罕见的遗传性疾病,患者缺少的可能是乳齿或恒齿。此症与外胚层发育不良有关,因此时常伴随着皮肤及神经方面的相关疾病发生。先天性无齿症虽然包含
  • 逻辑联结词在形式逻辑中,逻辑运算符或逻辑联结词把语句连接成更复杂的复杂语句。例如,假设有两个逻辑命题,分别是“正在下雨”和“我在屋里”,我们可以将它们组成复杂命题“正在下雨,并且我
  • 线性逻辑在数理逻辑中,线性逻辑是拒绝“弱化”和“收缩”的结构规则的一种亚结构逻辑。对此解释是“假设是资源”:在证明中所有假设必须被消费“精确一次”。这区别于平常的逻辑比如
  • 生物检定法生物检定法(英文:Bioassay),也称作生物览定及生物检验,是用以测定某生物或生物性材料对外来化合物的刺激之反应,藉以定性测试该化学药剂是否具有活性,或定量地测定适当的药量。生物
  • 脱衣舞娘脱衣舞娘指的是一种职业的艳舞舞者,一般以表演脱衣舞为主。并不是所有的脱衣舞娘在表演末尾会褪去所有衣物,但在一般仍以全裸为主。到1970年代为止,西方的脱衣舞界以女性为多,男
  • 普罗迪罗马诺·普罗迪(意大利语:Romano Prodi,1939年8月9日-),意大利政治家,曾经两度出任意大利总理,曾经担任欧盟委员会主席。普罗迪从政前曾经在博洛尼亚大学担任教授多年。2011年11月16