1. 介绍
前文提到,对于背包问题与旅行商问题,计算的复杂度是随着计算数据的增加呈现指数级增长的,贪婪算法算可以处理,但得到的并不是最优解。
动态规划的主要思路是先解决子问题,在逐步解决大问题。本文将通过两个例子介绍动态规划的推算思路。
2. 背包问题
2.1 思路
通过动态规划方法解决背包问题的流程如下:
-
准备一个表格,商品作为Y轴,背包重量作为x轴
-
使用下面的公式算出价格且更新到表格里
-
使用方法2,逐行填充表格,直到将表格填满。
2.2 推算过程
用于推算的数据如下:
- 小偷的背包可以放4KG的物品
- 可偷物品的价格,重量如下:
物品 | 重量 | 价值 |
---|---|---|
吉他 | 1kg | 1500 |
音响 | 4kg | 3000 |
笔记本 | 3kg | 2000 |
手机 | 1kg | 2000 |
详细推算过程如下:
- 初始化表格如下
* | 1 | 2 | 3 | 4 |
---|---|---|---|---|
吉他 | ||||
音响 | ||||
笔记本 | ||||
手机 |
- 吉他是第一个商品,且重量只有1kg,则对于不同大小的背包而言都可以放得下,所以第一行的值都为1500
* |
---|