我必须通过归纳法来证明
如果w< w_i,则Opt(i,w) = Opt(i-1,w),否则Opt(i,w) = max{ Opt(i-1,w),Opt( i-1,w- w_i) + w_i) }
产生背包问题的最优解(动态规划方法)
我知道数学归纳法是如何工作的,但在这个练习中我被困在了如何做到这一点上。尤其是归纳步骤。作为基本情况,我想,我只有一个元素,只要这个元素的重量小于或等于我背包的容量,我就接受它。否则我就丢下它。
任何帮助都将不胜感激!谢谢
发布于 2019-12-02 03:10:20
要证明该算法的正确性,您可以执行以下三个步骤
因为算法描述了我们将做出最大的选择,并且我们将始终做出选择,所以我们有一个可行的列表
在这种情况下,我们想要证明我们的算法的第一选择可以是最优解的一部分。
U(最优列表)和P(我们的算法选择的列表)。我们可以假设这两个列表在某一时刻一定是不同的。设差异点为Uj和Pj (即在索引j之后,P将包含与U不同的对象,U结束于索引j)。因为在P中只选择最大的元素,并且元素的数量与U相同,所以Pj+1将溢出背包,或者我们将使最优解U变得更好,这是不可能的。因此,该问题具有最优子结构。
这样我们就可以证明算法是正确的。
发布于 2019-07-12 20:41:48
如果一个问题可以分解为子问题,并且你可以使用递归找到子问题的最优解,那么这个问题就有“最优子结构”。你的问题有最优子结构(就像任何DP可解问题一样!)。使用归纳法证明你的程序确实会得到最优解的证据,可以在here找到。
https://stackoverflow.com/questions/56954248
复制相似问题