动态规划

什么是动态规划

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。

动态规划的前提是什么?

存在最优解

拿出来任意一块物品,仍旧是最优解

动态规划体现了什么思想?

逆向思维

坚信一定存在一个最优解,才能坚持逆向思维。
包里的物品是不确定的,只能确定包里有若干个物品,但是是哪几个不确定。
只能随机(因为不知道拿的谁,所以这里体现了动态)拿一块儿出来,i是n的某一个,i可能在包里,可能不在包里(这里也体现了动态)。

假设

假设的前提,是存在。一定存在一个最优解,才能假设最优解,比如最优解为S,或者最优解为X。

以01背包问题为例

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。
我们来直接看一下最核心的那个公式:
zfQT3j.jpg

让我们把关注点放在最中心的表达式上,表达式中出现了两个未知项,i和w,思考一下,i和w分别代表什么?

首先:
c[i,w]代表,背包容量为w,i个物品导致的最优解,注意,此时一定是最优解,背包容量一定是w,但是背包里有几个物品,其实我们是不确定的,我们只知道,背包中装了i个物品里的若干个。同样,i是几其实我们也不知道。

c[i-1,w-wi]+vi代表,背包容量为w时,第i块儿在背包里的情况。

c[i-1,w]代表,背包容量为w时,第i块儿不在背包里的情况。

下面我们反着来想,也就是用逆序思维来想,此时,我们假定c[i,w]就是我们要求的最优解,然后我们随便从n个物品中选择一个,我们假设它就是第i个物品(i可以是任意一个小于n的数),这个物品,可能在这个最优解的背包中,也可能不在这个最优解的背包中,但是一旦我们确定它到底在不在(也就是通过max),我们就可以把这一块儿排除考虑了,重复这个过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盖丽男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值