Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 1.58 KB

File metadata and controls

45 lines (32 loc) · 1.58 KB

貪婪 (Greedy)

在問題的每個決策階段 都選擇當前看起來最優的選擇,以期望能得到全域的最優解。

分數背包問題 (Fractional Knapsack Problem)

給定一個背包,背包的容量是有限的,你可以選擇將物品裝入背包。每個物品有一個重量和價值,但你可以選擇將物品切割,部分裝入背包。目標是最大化裝入背包中的物品的總價值。

物品:

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