专栏中心

EEPW首页 > 专栏 > 中电金信:技术浅谈 | 动态规划算法的原理和实现

中电金信:技术浅谈 | 动态规划算法的原理和实现

发布人:中电金信人 时间:2024-03-22 来源:工程师 发布文章

导语:动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的方法。动态规划算法与分治法类似,通过将带求解的问题分解为若干个相对简单的子问题(阶段)的方式,来求解复杂问题。本文作者用相对精炼的篇幅内容对动态规划算法进行背景及原理介绍,并举例说明如何进行问题分解和求解答案,与各位读者共同探讨分享。



01|问题背景


在日常生活中,我们可能经常会遇到这样的问题:用100块钱去买10件东西,怎样买会比较合适?将其抽象化就能得到经典的篮子问题——


假设我们有n种类型的物品,编号分别为1、2、...n,其中编号为i的物品价值为vi,它的价值为wi。在这里设定价值和重量都是整数。现在假设我们有一个背包,怎样才能在不超过背包容量的情况下放入价值最大化的物品?


解决这个问题有两个思路:


■ 第一种是穷举法,列举出所有的可能,选择其中的最优解;


■ 第二种是动态规划算法,将大问题拆分为小问题,我们只考虑每一件物品放或者不放,然后循环计算所有的物品放置或者不放置后的价值,最后得到最优的结果。



02|基本原理


动态规划算法是最优化算法中的一种,其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解里面得到原问题的解。


动态规划的基本过程可以分为以下几步:


A. 划分状态,即划分子问题

B. 状态表示,即用数学的方法将问题抽象出来

C. 状态转移,即子问题之间是如何进行流转的

D. 确定边界,即初始状态和最终状态应该如何确定



03|算法详解


下面我们按照上面动态规划的基本流程来进行篮子问题的解析。首先,将问题抽象成数学表达式,进行如下规定:


A. 图片代表第i件物品,空间容量为j时背包中的最大价值

B. 图片代表第i件物品的价值


其次,按照动态规划的过程进行问题分解:


A. 划分状态:当背包中放入物品i时,背包内的最大价值为多少

B. 状态表示:即抽象出的数学公式,

图片 代表当前背包容量为j时的最大价值

C. 状态转移:背包问题中,状态转移即为不同物品放入其中

D. 确定边界:初始情况下

图片应该全部为0


解析完篮子问题后,得到算法如下所示:


图片



04|实例说明


接下来,我们再用实际的例子以及图标来解释上面算法的流程。


比如有三件物品,分别是:


A. 书本(体积为3,价值为300)

B. 笔筒(体积为2,价值为200)

C. 橡皮(体积为2,价值为100)


另外,背包体积为6,带入算法公式,结果如图所示:


图片


各个颜色表示最优方案,其中:


A. 白块表示初始化区域

B. 绿块表示不取物品最大

C. 红块表示取物品时最大


分析可知:当书本和笔筒放入背包时,能够价值最大化,橡皮一直是绿色的,说明没有被取到。


05|总结


篮子问题只是动态算法的一个应用,上面的算法也只是动态规划算法的一种,关键是要理解动态规划算法的精髓,学会分析复杂的问题,最终实现将问题大而化小,小而化了。






专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 人工智能

相关推荐

三菱携手Tallgrass布局怀俄明州 AI 专属能源枢纽

人工智能与机器人

莱迪思联手英伟达推出 Sensor Bridge 方案 加速边缘 AI 产品落地

2026 全球半导体产业冲刺 1 万亿美元规模

本科毕业设计:一种基于发育思想的语音识别系统实现

中国硅片国产化提速 带动奕斯伟产能大幅扩张

2026-05-12

仿人机器人

微软X英特尔黑客松大赛

光电路交换何以成为 AI 数据中心刚需

硬件革新:借助稀疏计算让AI算力提质降耗

AI 全域数字孪生加速半导体与电子系统研发落地

个人-口罩识别系统项目采访

软银宣布已在日本正式启动电池业务 满足AI电力需求

ADI公司:工业4.0——人工智能的端

视频 2019-11-08

东南大学人工智能02

个人-窗口卫士项目采访

东南大学人工智能03

Omdia大幅上调预期:2026年半导体行业增速飙升至62.7%

2026-04-29

东南大学人工智能01

AOS 推出 SmartClamp 智能功率级 适配 AI 高动态电流应力工况

更多 培训课堂
更多 焦点
更多 视频

技术专区