动态规划理解

2024/1/27

突然醒悟,动态规划的终极目标是减少重复计算,因此在从子问题向结果推的过程中,只保留最有价值的答案即可。

(完了写到最后感觉自己理解的还是有问题)

不可避免地需要考虑所有情况,但在考虑所有情况的过程中,其中的在同一子条件下的子情况,是有最优的,同时需要注意的是此最优子情况并不影响之后的选择。

比如,五个花瓶要插三朵花,每个花瓶插到不同花瓶里的美感值不同,求最大美感值的和及其对应的方案。

设五个花瓶是ABCDE,三朵花是abc。

ABCDE
a723-5-2416
b521-41023
c-215-44-2023

其中一种子情况是(但不一定是最优),在A中插一朵花。可能是a,b,c,此时并不能理解为,当只有一朵花的时候,就是a插A,因为条件是不同的。

什么时候是条件相同的呢?

就是:如果让ab插ABC/让ac插ABC/让bc插ABC。在一个条件下,比如ab插ABC,此条件下有三种情况:ab分别插:AB、BA、AC、CA、BC、CB。

因此我们将这些计算出来:28、28、3、0、19、16。看起来最大的就是28,所以将这个保存下来。如果以后用到了ab插ABC的时候,就不会再递推计算其他插花方案了。

比如在计算的时候,c插到C中后,需要计算ab插到AB/AD/AE/BD/BE/DE的情况。(留坑,之后再想:是不是还可以这样分:ab插到ABD/ABE/BDE这三种情况)如果按照之前的方式算,只需要比较6个数即可,不再去深入分情况。这里的意思是,c插到C,存在AB的情况,c插到D和E,也存在AB的情况。因此不需要再重复计算。

或者按照上面举的例子,c插到D中,存在ab插到ABC的情况,c插到E中,也存在。而若在计算c到D中的时候,ab在ABC中的最大值,当c插到E中时,直接使用ab在ABC中的最大值即可,不用再去细分为AB/BA/AC/CA/BC/CB然后计算。

当然,最优解并不一定会使用ab插在ABC中的情况。

写到这里我怎么感觉我写的有问题... 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值