動態規劃演算法 03揹包問題

2021-09-13 11:48:21 字數 545 閱讀 2653

問題描述

問題分析

首先考慮乙個有前i(1<=i<=n)個物品定義的例項,物品的重量分別為w1,w2,,,wi,價值為v1,v2,,,vi,揹包目前的承重量為j(1<=j<=w)。

設f(i,j)為組成該例項最優解的物品的總價值,也就是說能夠放進承重量為j的揹包中的前i個物品中最有價值的子集的總價值。(注意,在這裡還沒有出現題目想要的解的形式,)

在這裡,可以把前i個物品中能夠放進承重量為j的揹包中的子集分為兩種類別:包括第i個物品的子集和不包括第i個物品的子集。於是可以得到以下結論:

因此,在前i個物品中,最優解的總價值等於以上兩種情況的最大值,這就是最優子結構了。

當然,如果第i個物品不能放進揹包中,那麼從前i個物品中選出的最優子集的總價值即等於從前i-1個物品中選出的最優子集的總價值。於是得到下面的遞推式,也是狀態轉移函式

同時可以得到邊界

例項分析

回溯求序列

**

補充說明

01揹包問題 (動態規劃演算法)

0 1 揹包問題 給定 n 種物品和乙個容量為 c 的揹包,物品 i 的重量是 wi,其價值為 vi 問 應該如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?分析一波 面對每個物品,我們只有選擇拿取或者不拿兩種選擇,不能選擇裝入某物品的一部分,也不能裝入同一物品多次。解決辦法 宣告乙個 大...

01揹包問題 (動態規劃演算法)

題目 給定n種物品和乙個容量為v的揹包,物品i的體積是wi,其價值為ci。每種物品只有乙個 問 如何選擇裝入揹包的物品,使得裝入揹包中的物品的總價值最大?面對每個物品,我們只有選擇放入或者不放入兩種選擇,每種物品只能放入一次。我們用之前同樣的思路來走一遍試試 假設只剩下最後一件物品,我們有兩種選擇 ...

動態規劃演算法 01揹包問題

動態規劃演算法通常用於求解具有某種最優性質的問題。在這類問題中,可能會有許多可行解。每乙個解都對應於乙個值,我們希望找到具有最優值的解。動態規劃演算法與分治法類似,其基本思想也是將待求解問題分解成若干個子問題,先求解子問題,然後從這些子問題的解得到原問題的解。與分治法不同的是,適合於用動態規劃求解的...