在問題的每個決策階段 都選擇當前看起來最優的選擇,以期望能得到全域的最優解。
給定一個背包,背包的容量是有限的,你可以選擇將物品裝入背包。每個物品有一個重量和價值,但你可以選擇將物品切割,部分裝入背包。目標是最大化裝入背包中的物品的總價值。
物品:
const items = [
{ weight: 1, value: 5 },
{ weight: 2, value: 11 },
{ weight: 3, value: 15 },
];
單位價值:計算每個物品的單位重量價值 (價值/重量)
每個物品的編號 (i
) 及其對應的重量和價值:
i | weights[i - 1] | values[i - 1] | values[i - 1] / weights[i - 1] |
---|---|---|---|
1 | 1 | 5 | 5 |
2 | 2 | 11 | 5.5 |
3 | 3 | 15 | 5 |
values[i - 1] / weights[i - 1];
單位價值高低:根據單位價值將物品按從高到低排序
i | weights[i - 1] | values[i - 1] | values[i - 1] / weights[i - 1] |
---|---|---|---|
2 | 2 | 11 | 5.5 |
1 | 1 | 5 | 5 |
3 | 3 | 15 | 5 |
items.sort((a, b) => b.value / b.weight - a.value / a.weight);
16