动态规划

✍ dations ◷ 2025-08-05 23:54:01 #动态规划
动态规划(英语: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和数组声明)

相关

  • 厌氧生物厌氧生物,或称厌气生物,是指一种不需要氧气生长的生物。它们大致上可以分为三种,即专性厌氧生物、兼性厌氧生物及耐氧厌氧生物 。人体内的厌氧生物多存在于消化系统中,有些种类
  • 电影电影是一种表演艺术、视觉艺术及听觉艺术,利用胶卷、录像带或数字媒体将影像和声音捕捉起来,再加上后期的编辑工作而成。电影中看起来连续的画面,是由一帧帧单独的照片完成的,至
  • 卫生署卫生福利部(简称卫福部)是中华民国有关公共卫生、医疗与社会福利事务的最高主管机关,同时监督各县市政府卫生与社会局(处)。其前身为1971年成立的“行政院卫生署”,2013年改制为部
  • 加州大学坐标:37°48′08″N 122°16′17″W / 37.802168°N 122.271281°W / 37.802168; -122.271281加利福尼亚大学(英语:University of California),简称加州大学(UC),建立于1868年,是美国
  • 西塞罗马库斯·图利乌斯·西塞罗(Marcus Tullius Cicero,前106年1月3日-前43年12月7日,其名在拉丁语中读为(音译为基凯罗),西塞罗为英文音译,发音: /ˈsɪsᵻroʊ/),是罗马共和国晚期的哲学家
  • 头盖骨颅骨或者头骨、骷髅头是指人类或者许多脊椎动物的头部骨性结构。头骨之功能为支撑脸部,并保护脑部。头骨分为两部分:颅骨和下颌骨。一般所称之‘头颅’通常仅指颅骨,并未包含下
  • 杓会厌肌杓会厌肌(aryepiglottic muscle、aryepiglotticus)是一种在从杓状软骨到会厌之杓状会厌襞中运行的喉部肌肉。杓会厌肌本条目包含来自属于公共领域版本的《格雷氏解剖学》之内
  • 罗马建城纪年罗马建城纪年(Ab urbe condita,简作AUC、a.u.c. 或 a.u),是古罗马时期历史学家所用的纪年法之一。“Ab urbe condita”在拉丁文中意为“从(罗马)城建立起”。通常将始年定在公元
  • 首席元老首席元老(princeps senatus)或元首,是罗马元老院的领导人。虽然正式来说该职务不属于晋升体系(cursus honorum)的范围内,而且未拥有统治大权,但是仍然给握有它的元老带来巨大的威望
  • 长部,为汉字索引中的部首之一,康熙字典214个部首中的第一百六十八个(八划的则为第二个)。就正体中文中,长部归于八划部首,而简体中文则归在四划。长部只以左方为部字。且无其他部