分數揹包介紹
相比於01揹包,分數揹包的每件物品都可以分割,比如重量爲10kg,價值70,那麼可以分割爲**單位重量(1kg)**的,價值爲7的十個物品,這使得我們可以不必拘泥於揹包的容量浪費,因爲不管怎麼搞你都可以把揹包裝滿
很容易想到,因爲物體可以分割爲原子(重量爲1),那麼評判物品的指標自然是【單位重量(1kg)物品的價值】了,這裏用密度來形容這個屬性
貪心策略:儘可能地選擇密度最大的物品
直觀證明:
因爲分割的最小單位是1kg,那麼我們分割之後,可以得到若干個重量爲1的物品,而這些物品的價格不盡相同,這就把問題轉變爲01揹包了,只是我們不再用容量制約物品的選擇,比如揹包容量10kg,那麼告訴我們只用選10個【原子物品】即可,沒有制約,隨便選,直觀地來講肯定選最值錢的啊,所以“證明”完成了
正經證明
- 已知貪心策略是 “選密度最大的” 物品,假設密度最大的物品爲 o
- 假設用別的策略得到最優解A,即不選密度最大的,那麼答案A不會包含 o 物品
- 而我們可以適當地用 o 物品的一個原子,替換答案A中任意原子物品,得到的解都比A大
- 這與A是最優解矛盾,變相說明了最優解一定含有密度最大的物品,而且說明不存在一種策略,不選密度最大的,而得到最大的價值
- 那麼說明【選密度最大的】策略,因爲沒有一種策略能比他大,所以是最大的