今天就跟大家聊聊有关Python中怎么实现动态规划,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
动态规划
动态规划的关键:在于大问题的最优解由对应的更小规模问题的最优解递推而来
i(1<=i<=5):表示前i个宝贝
w(1<=w<=20):重量不超过w
函数的意义:前1个宝物重量不超过w的最大价值,前2个宝物重量不超过w的最大价值……前5个宝物重量不超过w的最大价值。问题的规模逐渐增大,从最小规模一直推导到目标规模的最优解
动态规划:从最小规模最优解推导到目标规模问题的最优解
m(i, w)要得到最大价值,那它如何计算呢?
既然规模是从小到大,那么就要讨论第i个宝贝能否加入到上一个规模中
若第i个宝贝太重了加不进去,则m(i, w)=m(i-1, w)
若第i个宝贝可以加进去,则m(i, w)=m(i-1, w-wi)+vi
从上述两个结果中取较大的
算法设计:两重循环,i从1加到5的同时w从1加到20
过程中你会发现后面的m(i, w)可以通过前面已经计算过的结果直接得到
递归解法
递归的方法要显得自然通俗一点
基本结束条件:宝贝为空或背包承重为
递归最大的问题在于会有许多的重复,故需要记录中间结果
规模减小方向:从宝物集合中逐个去掉(偷走)宝物,递归调用
tuple()方法
用于将列表、区间等转换为元组
a = [1, 2]b = {'1':2, '2':3}print(tuple(a))print(tuple(b))
(1, 2)('1', '2')
看完上述内容,你们对Python中怎么实现动态规划有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。