0-1背包问题最优子结构及其证明

在网上搜了半天没有找到合适的证明,因此自己证明了下。不对的地方请各位多多赐教。

 

最优子结构

Z={z1,z2,…,zk}Knap(1,k,MaxWeight)的最优解,且此时的价值是fk(MaxWeight)

1)       如果zk=1,那么fk-1(MaxWeight - wk) + vk > fk-1(MaxWeight),而且{z1,z2,…,zk-1}Knap(1,k-1,MaxWeight- wk)的最优解。

2)       如果zk=0,那么fk-1(MaxWeight - wk) + vk <= fk-1(MaxWeight),而且{z1,z2,…,zk-1}Knap(1,k-1,MaxWeight)的最优解。 

证明:

1)       如果fk-1(MaxWeight - wk) + vk <= fk-1(MaxWeight),则有fk(MaxWeight)= fk-1(MaxWeight - wk) + vk <= fk-1(MaxWeight),从而得出Z={z1,z2,…,zk}不是最优解,与前提矛盾。因此fk-1(MaxWeight - wk) + vk > fk-1(MaxWeight)。假设{z1,z2,…,zk-1}不是Knap(1,k-1,MaxWeight- wk)的最优解,则存在一个Xk-1的解使得f2k-1(MaxWeight) > fk-1(MaxWeight),f2k-1(MaxWeight)+ vk > fk-1(MaxWeight - wk) + vk = fk(MaxWeight),与假设矛盾,所以{z1,z2,…,zk-1}Knap(1,k-1,MaxWeight- wk)的最优解。

2)       证明与1)类似。

 

 

另外有一个地方给出了证明,但是老实讲,我没有看懂。

 

posted on 2010-10-06 21:12  Rocky_Yi  阅读(8779)  评论(0编辑  收藏  举报

导航