01背包问题动态规划-php教程

资源魔 36 0

静态布局的根本思维:

静态布局算法通罕用于求解具备某种最优性子的成绩,即咱们平时所说的最优子构造性子。

静态布局算法与分治法相似,其根本思维也是将待求解成绩合成成若干个子成绩,先求解子成绩,而后从这些子成绩的解失去原成绩的解。与分治法最年夜的区分是,适宜于用静态布局求解的成绩,经合成失去子成绩往往没有是相互自力的,即下一个子阶段的求解是建设正在上一个子阶段的解的根底上,进前进一步的求解。

若用分治法来解这种成绩,则合成失去的子成绩数量太多,有些子成绩被反复较量争论了不少次。假如咱们可以保留已处理的子成绩的谜底,而正在需求时再找出已求患上的谜底,这样就能够防止年夜量的反复较量争论,节流工夫。咱们能够用一个表来记载一切已解的子成绩的谜底。不论该子成绩当前能否被用到,只需它被较量争论过,就将其后果填入表中。

成绩形容:

给定N中物品以及一个背包。物品i的分量是Wi,其代价位Vi ,背包的容量为C。问应该若何抉择装入背包的物品,使患上转入背包的物品的总代价为最年夜??

正在抉择物品的时分,对每一种物品i只有两种抉择,即装入背包或没有装入背包。不克不及讲物品i装入屡次,也不克不及只装入物品的一局部。因而,该成绩被称为0-1背包成绩。

成绩剖析:令V(i,j)示意正在前i(1<=i<=n)个物品中可以装入容量为就j(1<=j<=C)的背包中的物品的最年夜代价,则能够失去以下的静态布局函数:

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

(2)   (a)  V(i,j)=V(i-1,j)    j<wi  

      (b)  V(i,j)=max{V(i-1,j) ,V(i-1,j-wi)+vi) }   j>wi

(1)式标明:假如第i个物品的分量年夜于背包的容量,则装人前i个物品失去的最年夜代价以及装入前i-1个物品失去的最年夜价是相反的,即物品i不克不及装入背包。

(2)式标明:假如第i个物品的分量小于背包的容量,则会有一下两种状况:(a)假如第i个物品不装入背包,则背包中物品代价就等于把前i-1个物品装入容量为j的背包中所获得的代价。(b)假如把第i个物品装入背包,则背包物品的代价等于第i-1个物品装入容量位j-wi 的背包中的代价加之第i个物品的代价vi; 显然,取两者中代价最年夜的作为把前i个物品装入容量为j的背包中的最优解。

保举教程:PHP教程

以上就是01背包成绩静态布局的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 01背包问题 动态规划

抱歉,评论功能暂时关闭!