This commit is contained in:
krahets
2023-08-27 23:40:56 +08:00
parent 48980ddf28
commit df0f7d3be1
64 changed files with 255 additions and 261 deletions

View File

@@ -11,7 +11,7 @@ status: new
!!! question
给定 $n$ 个物品,第 $i$ 个物品的重量为 $wgt[i-1]$ 、价值为 $val[i-1]$ ,和一个容量为 $cap$ 的背包。**每个物品可以重复选取**,问在不超过背包容量下能放入物品的最大价值。
给定 $n$ 个物品,第 $i$ 个物品的重量为 $wgt[i-1]$、价值为 $val[i-1]$ ,和一个容量为 $cap$ 的背包。**每个物品可以重复选取**,问在不超过背包容量下能放入物品的最大价值。
![完全背包问题的示例数据](unbounded_knapsack_problem.assets/unbounded_knapsack_example.png)
@@ -24,7 +24,7 @@ status: new
- 在 0-1 背包中,每个物品只有一个,因此将物品 $i$ 放入背包后,只能从前 $i-1$ 个物品中选择。
- 在完全背包中,每个物品有无数个,因此将物品 $i$ 放入背包后,**仍可以从前 $i$ 个物品中选择**。
这就导致了状态转移的变化,对于状态 $[i, c]$ 有:
在完全背包的规定下,状态 $[i, c]$ 的变化分为两种情况。
- **不放入物品 $i$** :与 0-1 背包相同,转移至 $[i-1, c]$ 。
- **放入物品 $i$** :与 0-1 背包不同,转移至 $[i, c-wgt[i-1]]$ 。
@@ -545,7 +545,7 @@ $$
### 1.   动态规划思路
**零钱兑换可以看作是完全背包的一种特殊情况**,两者具有以下联系与不同点
**零钱兑换可以看作是完全背包的一种特殊情况**,两者具有以下联系与不同点
- 两道题可以相互转换,“物品”对应于“硬币”、“物品重量”对应于“硬币面值”、“背包容量”对应于“目标金额”。
- 优化目标相反,背包问题是要最大化物品价值,零钱兑换问题是要最小化硬币数量。
@@ -559,7 +559,7 @@ $$
**第二步:找出最优子结构,进而推导出状态转移方程**
与完全背包的状态转移方程基本相同,不同点在于:
本题与完全背包的状态转移方程存在以下两个差异。
- 本题要求最小值,因此需将运算符 $\max()$ 更改为 $\min()$ 。
- 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 $+1$ 即可。