我必须通过归纳证明
如果w 产生背包问题的最佳解决方案(动态规划方法) 我知道数学归纳法是如何工作的,但是我仍然坚持如何通过本练习来完成它。
特别是归纳步骤。
我想,作为基本案例,我只有一个元素,只要这个元素的重量小于或等于背包的容量,我就接受它。
否则我会离开它。 任何帮助将不胜感激!
谢谢
答案 0 :(得分:1)
要证明此算法的正确性,可以按照以下三个步骤进行操作
因为该算法描述了我们将做出最大的选择,并且我们将始终做出选择,所以我们有一个可行的列表
在这种情况下,我们想证明我们算法的第一选择可能是最优解决方案的一部分。
U(最佳列表)和P(我们的算法选择的列表)。我们可以假设这两个列表在某些时候必须不同。设差异点为Uj和Pj(即在索引j之后,P将包含与U不同的对象,U在索引j处结束)。因为在P中仅通过选择最大的元素来选择,所以与U相同的元素数量最多可达j,因此Pj + 1将使背包溢出,否则我们将使最优解U更好,这是不可能的。因此,该问题具有最佳的子结构。
这样我们可以证明算法是正确的。
答案 1 :(得分:0)
如果问题可以分解为子问题,则它具有“最优子结构”,您可以使用递归找到子问题的最佳解决方案。您的问题具有最佳的子结构(任何DP可解决的问题也是如此!)。 here证明了使用归纳法,您的程序确实能产生最佳解决方案的证明。