php编程中关于0-1背包问题分析

来源:爱站网时间:2022-08-01编辑:网友分享
本篇文章主要介绍了php编程中关于0-1背包问题分析内容,想要了解这方面内容的小伙伴可以看看爱站技术频道小编所整理的资料,希望能在工作中帮助到你解决问题。

动态规划的基本思想:

动态规划算法通常用于求解具有某种最优性质的问题,即我们平常所说的最优子结构性质。

动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法最大的区别是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的,即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解。

若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。

问题描述:

给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??

在选择物品的时候,对每种物品i只有两种选择,即装入背包或不装入背包。不能讲物品i装入多次,也不能只装入物品的一部分。因此,该问题被称为0-1背包问题。

问题分析:令V(i,j)表示在前i(1

(1)   V(i,0)=V(0,j)=0 

(2)   (a)  V(i,j)=V(i-1,j)    jwi

(1)式表明:如果第i个物品的重量大于背包的容量,则装人前i个物品得到的最大价值和装入前i-1个物品得到的最大价是相同的,即物品i不能装入背包。

(2)式表明:如果第i个物品的重量小于背包的容量,则会有一下两种情况:(a)如果第i个物品没有装入背包,则背包中物品价值就等于把前i-1个物品装入容量为j的背包中所取得的价值。(b)如果把第i个物品装入背包,则背包物品的价值等于第i-1个物品装入容量位j-wi 的背包中的价值加上第i个物品的价值vi; 显然,取二者中价值最大的作为把前i个物品装入容量为j的背包中的最优解。

php编程中关于0-1背包问题分析的内容就暂时就分享到这里了,还有什么需要小编指导的,可以来网站联系小编。爱站技术频道网站每天都会不定时更新文章,喜欢可以关注收藏。

 

上一篇:PHP程序在引号前面添加符号的方法

下一篇:PHP编程怎么生成随机红包

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载