Transcript Slides

Counting Knapsack Solutions
using dynamic programming
Definition des Problems
β€’ Gewichte 𝑀1 , … , 𝑀𝑛 ∈ β„•
β€’ Kapazität 𝐢 ∈ β„•
β€’ π‘Š ∢= {𝑀1 , … , 𝑀𝑛 }
β€’ Gesucht ist 𝐡 ∈ 𝑃 π‘Š ∢
π‘€βˆˆπ΅ 𝑀
≀𝐢
β€’ β€žZahl der gültigen Bepackungen für einen Rucksack der Größe Cβ€œ
Lösungsansatz:
β€’ Das Problem ist NP-schwer.
β€’ Wir leiten zwei streng polynomielle Approximationsschemas her.
β€’ Das erste ist ein randomisierter Algorithmus.
β€’ Das zweite ist ein deterministischer Algorithmus.
Randomisiertes polynomielles
Approximationsschema
Ansatz
β€’ Definiere 𝐹 π‘Ÿ, 𝑐 ≔ 𝐡 ∈ 𝑃 π‘Šπ‘Ÿ ∢
β€’ 𝐹 𝑛, 𝐢 = 𝐡 ∈ 𝑃 π‘Šπ‘› ∢
Problems.
π‘€βˆˆπ΅ 𝑀
π‘€βˆˆπ΅ 𝑀
≀𝑐
≀ 𝐢 ist exakte Lösung des
Äquivalente rekursive Formulierung
β€’ 𝐹 π‘Ÿ, 𝑐 ≔ 𝐡 ∈ 𝑃 π‘Šπ‘Ÿ ∢
π‘€βˆˆπ΅ 𝑀
≀𝑐
1, 𝑐 < 𝑀1
F 1, 𝑐 =
2, 𝑐 β‰₯ 𝑀1
𝐹 π‘Ÿ, 𝑐 = 𝐹 π‘Ÿ βˆ’ 1, 𝑐 + 𝐹 π‘Ÿ βˆ’ 1, 𝑐 βˆ’ π‘€π‘Ÿ (π‘Ÿ β‰₯ 2)
Warum gilt der Rekursionsanfang?
Gültigkeit der rekursiven Beziehung
𝐹 π‘Ÿ, 𝑐 =
𝐡 ∈ 𝑃 π‘Šπ‘Ÿ ∢
𝑀≀𝑐
π‘€βˆˆπ΅
=
𝐡 ∈ 𝑃 π‘Šπ‘Ÿ ∢ π‘€π‘Ÿ βˆ‰ 𝐡,
𝑀 ≀ 𝑐 βˆͺ 𝐡 ∈ 𝑃 π‘Šπ‘Ÿ ∢ π‘€π‘Ÿ ∈ 𝐡,
π‘€βˆˆπ΅
= … = 𝐹 π‘Ÿ βˆ’ 1, 𝑐 + 𝐹 π‘Ÿ βˆ’ 1, 𝑐 βˆ’ π‘€π‘Ÿ
𝑀≀𝑐
π‘€βˆˆπ΅
Dynamisches Programm
β€’ Berechne alle Funktionswerte als Tabelle
β€’ Problem: pseudopolynomiell
Idee
β€’ Approximiere 𝑆 ≔ 𝐡 ∈ 𝑃 π‘Š ∢ π‘€βˆˆπ΅ 𝑀 ≀ 𝐢 mit Monte-Carlo
β€’ Modifizierte Gewichte π‘Š β€² ≔ {𝑀1 β€², … , π‘€π‘Ÿ β€²}
β€’ 𝑀𝑗′ ≔ 𝑛2 𝑀𝑗 /𝐢
β€’ 𝐾 ≔ 𝐡 ∈ 𝑃 π‘Š β€² ∢ π‘€βˆˆπ΅ 𝑀 ≀ 𝑛²
β€’ 𝐾 mit dynamischem Programm berechnen.
β€’ 𝑆 β€² ≔ {𝑀𝑗 ∢ 𝑀𝑗′ ∈ 𝐾}
β€’ 𝐾 = 𝑆′
β€’ Verwende 𝑆′ und das dyn. Programm für K für Monte-Carlo
Für Monte-Carlo zu zeigen:
β€’ 𝑆 βŠ† 𝑆′
β€’ |𝑆 β€² | ≀ |𝑆|(𝑛 + 1)
β€’ Dass in polynomieller Zeit in n gleichverteilt ein Element aus 𝑆′
erzeugt werden kann und geprüft werden kann, ob dieses ebenfalls in
𝑆 ist.
Zeige 𝑆 βŠ† 𝑆′
für alle 𝐡 ∈ 𝑆 gilt:
𝑀≀𝐢 β‡’
π‘€βˆˆπ΅
π‘€βˆˆπ΅
𝑛2 𝑀
≀
𝐢
π‘€βˆˆπ΅
𝑛2 𝑀
≀ 𝑛2 β‡’ 𝐡 ∈ 𝑆 β€²
𝐢
β€²
Zeige |𝑆 | ≀ |𝑆|(𝑛 + 1)
Kurze Wiederholung:
β€’ π‘Š ∢= {𝑀1 , … , 𝑀𝑛 }
β€’ 𝑆 ≔ 𝐡 ∈ 𝑃 π‘Š ∢ π‘€βˆˆπ΅ 𝑀 ≀ 𝐢
β€’ π‘Š β€² ≔ {𝑀1 β€², … , π‘€π‘Ÿ β€²}
β€’ 𝑀𝑗′ ≔ 𝑛2 𝑀𝑗 /𝐢
β€’ 𝐾 ≔ 𝐡 ∈ 𝑃 π‘Šβ€² ∢
β€’ 𝑆 β€² ≔ {𝑀𝑗 ∢ 𝑀𝑗′ ∈ 𝐾}
π‘€βˆˆπ΅ 𝑀
≀ 𝑛²
β€²
Zeige |𝑆 | ≀ |𝑆|(𝑛 + 1)
β€’ Um das zu zeigen definieren wir außerdem:
β€’ 𝑃 ≔ {𝐡 ∈ 𝑃(π‘Š) ∢ 𝑀 ∈ 𝐡 β‡’ 𝑀 ≀ 𝐢/𝑛}
β€’ Es ist 𝑃 βŠ† 𝑆, weil für alle 𝐡 ∈ 𝑃 gilt 𝐡 ≀ π‘Š = 𝑛 und deshalb
π‘€βˆˆπ΅ 𝑀 ≀ π‘€βˆˆπ΅ 𝐢/𝑛 ≀ 𝑛 β‹… 𝐢/𝑛 = 𝐢.
β€’ Wir definieren diese Menge nur, um zu zeigen, dass die Funktion, die
wir auf der nächsten Folie definieren wohl definiert ist.
β€²
Zeige |𝑆 | ≀ |𝑆|(𝑛 + 1)
β€’ Des weiteren definieren wir 𝑓: 𝑆′ β†’ 𝑃(π‘Š) mit:
𝐡,
𝑓 𝐡 =
𝐡\ min{𝑀 ∢ 𝑀 ∈ 𝐡 ∧ 𝑀 > 𝐢/𝑛} ,
π΅βˆˆπ‘†
π‘ π‘œπ‘›π‘ π‘‘
Ist wohl definiert, weil wenn 𝐡 βˆ‰ 𝑆, dann 𝐡 βˆ‰ 𝑃 und dann gibt es
mindestens ein 𝑀 ∈ 𝐡, sodass 𝑀 > 𝐢/𝑛.
Zeige
β€²
|𝑆 |
≀ |𝑆|(𝑛 + 1)
Die Argumentation dazu:
β€’ 𝑓: 𝑆′ β†’ 𝑃(π‘Š) ist eine Funktion, die alle Bepackungen aus 𝑆′ abbildet
auf andere Bepackungen.
β€’ Wir zeigen, dass so wie 𝑓 definiert ist 𝑓: 𝑆′ β†’ 𝑆 gilt.
β€’ Dazu zeigen wir, dass für 𝐡 ∈ 𝑆′\𝑆 gilt 𝑓(𝐡) ∈ 𝑆.
β€’ Dann argumentieren wir, dass wegen der Beschaffenheit der Funktion
𝑓 es für jedes Element y aus 𝑆 maximal 𝑛 + 1 Elemente π‘₯ aus 𝑆′
geben kann, die darauf abbilden.
β€’ Deswegen ist dann |𝑆 β€² | ≀ |𝑆|(𝑛 + 1).
Zeige
β€²
|𝑆 |
≀ |𝑆|(𝑛 + 1)
Sei nun 𝐡 ∈ 𝑆′\𝑆, dann gilt:
𝑀𝑗 βˆˆπ‘“(𝐡)
𝐢
𝑀𝑗 < … ≀ 2
𝑛
𝑀𝑗′ +
𝑀𝑗 ∈𝐡
1βˆ’π‘› ≀ …≀𝐢
𝑀𝑗 ∈𝐡
Nach geschickter Rechnung kürzt sich was weg und es gilt 𝑓(𝐡) ∈ 𝑆.
Zeige
β€²
|𝑆 |
≀ |𝑆|(𝑛 + 1)
Beschaffenheit der Funktion 𝑓 :
𝐡,
𝑓 𝐡 =
𝐡\ min{𝑀 ∢ 𝑀 ∈ 𝐡 ∧ 𝑀 > 𝐢/𝑛} ,
π΅βˆˆπ‘†
π‘ π‘œπ‘›π‘ π‘‘
β€’ Es gibt für jedes Element y aus 𝑆 maximal 𝑛 + 1 Elemente π‘₯ aus 𝑆′,
die darauf abbilden, da jedes solche π‘₯, mit 𝑓 π‘₯ = 𝑦, sich von y
entweder gar nicht unterscheidet oder genau ein Gewicht mehr
beinhaltet und dafür gibt es 𝑛 + 1 Möglichkeiten.
β€’ Deshalb |𝑆 β€² | ≀ |𝑆|(𝑛 + 1).
Was war nochmal für Monte-Carlo zu zeigen?
β€’ 𝑆 βŠ† 𝑆′
β€’ |𝑆 β€² | ≀ |𝑆|(𝑛 + 1)
β€’ Dass in polynomieller Zeit in n gleichverteilt ein Element aus 𝑆′
erzeugt werden kann und geprüft werden kann, ob dieses ebenfalls in
𝑆 ist.
β€’ Prüfen ob ein 𝐡 ∈ 𝑆 geht leicht!
Erzeugung von Elementen aus Sβ€˜:
𝐹 π‘Ÿ, 𝑐 = 𝐹 π‘Ÿ βˆ’ 1, 𝑐 + 𝐹 π‘Ÿ βˆ’ 1, 𝑐 βˆ’ π‘€π‘Ÿ
Idee:
β€’ Durchlaufe geschickt die Tabelle des dynamischen Programms.
β€’ β€žWenn es 𝐹 π‘Ÿ, 𝑐 Bepackungen mit einer bestimmten Eigenschaft
gibt, dann beinhalten 𝐹 π‘Ÿ βˆ’ 1, 𝑐 viele davon das Element π‘€π‘Ÿ nicht
und 𝐹 π‘Ÿ βˆ’ 1, 𝑐 βˆ’ π‘€π‘Ÿ viele davon schon. Berechne aus diesen Zahlen
die Wahrscheinlichkeit, ob π‘€π‘Ÿ in die zufällig erzeugte Bepackung
aufgenommen wird.β€œ
Monte-Carlo-Algorithmus
β€’ Ziehe 𝑇 Stichproben π‘ˆπ‘– .
β€’ Sei 𝑋 die charakteristische Funktion, ob 𝐡 ∈ 𝑆.
β€’ Berechne 𝑍 ≔ |𝑆′| β‹…
1
𝑇
𝑇
𝑖=1 𝑋(π‘ˆπ‘– ).
β€’ Z ist die Ausgabe für den Algorithmus.
4
πœ€
4
πœ€
β€’ Für 𝑇 ≔ β‹… 𝑛 β‰₯ β‹… (|𝑆′|/|𝑆| βˆ’ 1) gilt nach Estimator-Theorem der
Monte-Carlo-Methode:
3
Pr[|𝑍 βˆ’ |𝑆|| ≀ πœ€ β‹… |𝑆|] β‰₯
4
Deterministisches polynomielles
Approximationsschema
Ansatz:
β€’ Definiere wieder ein pseudopolynomielles, aber exaktes dynamisches
Programm zur Lösung des Problems.
β€’ Berechne dann die Tabelle des dynamischen Programms
stichprobenhaft und approximativ.
Ansatz
β€’ Sei 𝜏: 0, … , 𝑛 × β„β‰₯0 β†’ ℝ βˆͺ {±βˆž}.
β€’ Dabei ist 𝜏(𝑖, π‘Ž) das kleinste 𝐢, sodass mindestens π‘Ž unterschiedliche
Lösungen für das Rucksack-Problem mit Gewichten 𝑀1 , … , 𝑀𝑖 und
Kapazität 𝐢 existieren.
Ansatz
β€’ Wir wollen zeigen:
𝜏 𝑖 βˆ’ 1, 𝛼 β‹… π‘Ž
𝜏 𝑖, π‘Ž = min π‘šπ‘Žπ‘₯
𝜏 𝑖 βˆ’ 1, (1 βˆ’ 𝛼) β‹… π‘Ž
𝛼
𝜏 0, π‘Ž = 0
Dabei ist 0 ≀ 𝛼 ≀ 1. Was bedeutet das 𝛼? Was bedeuten 𝜏(𝑖 βˆ’ 1, 𝛼 β‹…
Es lässt sich beweisen:
𝜏 𝑖 βˆ’ 1, 𝛼 β‹… π‘Ž
𝜏 𝑖, π‘Ž ≀ min π‘šπ‘Žπ‘₯
𝜏 𝑖 βˆ’ 1, (1 βˆ’ 𝛼) β‹… π‘Ž
𝛼
und
𝜏 𝑖 βˆ’ 1, 𝛼 β‹… π‘Ž
𝜏 𝑖, π‘Ž β‰₯ min π‘šπ‘Žπ‘₯
𝜏 𝑖 βˆ’ 1, (1 βˆ’ 𝛼) β‹… π‘Ž
𝛼
Stichprobenhafte Approximation von 𝜏
β€’ Definiere dazu 𝑇: 0, … , 𝑛 × {0, … , 𝑠} β†’ ℝ βˆͺ {∞}.
β€’ 𝑠 ≔ log 𝑄 2𝑛
‒𝑄≔1
πœ€
+
𝑛+1
𝑇 𝑖, 𝑗 ≔ min π‘šπ‘Žπ‘₯
𝛼
𝑇 𝑖 βˆ’ 1, 𝑗 + log 𝑄 𝛼
𝑇 𝑖 βˆ’ 1, j + log 𝑄 1 βˆ’ 𝛼
𝑇 0,0 = 0
𝑇 0, 𝑗 = ∞
+ 𝑀𝑖
Stichprobenhafte Approximation von 𝜏 mit 𝑇
β€’ Es werden die sinnvollerweise für den Algorithmus zu betrachtenden
Größen des Lösungsraumes von 0 ≀ π‘Ž ≀ 2𝑛 reduziert auf Potenzen
1 ≀ 𝑄π‘₯ ≀ 𝑄𝑠.
β€’ Es kann dann 𝑇[𝑖, 𝑗] für alle 0 ≀ 𝑖 ≀ 𝑛 und 0 ≀ 𝑗 ≀ 𝑠 in polynomieller
Zeit berechnet werden und damit 𝑗 β€² ≔ max{𝑗 ∢ 𝑇[𝑛, 𝑗] ≀ 𝐢} und es
kann 𝑍 β€² ≔ 𝑄1+𝑗′ als Ergebnis des Algorithmus ausgegeben werden.
β€’ Zeige, dazu dass folgende Abschätzung gilt:
𝜏 𝑖, 𝑄 π‘—βˆ’π‘– ≀ 𝑇[𝑖, 𝑗] ≀ 𝜏 𝑖, 𝑄 𝑗
Zusammenhang zwischen 𝜏 und 𝑇 zeigen
β€’ Zeige 𝜏 𝑖, 𝑄 π‘—βˆ’π‘– ≀ 𝑇[𝑖, 𝑗] ≀ 𝜏 𝑖, 𝑄 𝑗 :
β€’ Das lässt sich Induktiv zeigen.
β€’ Induktionsanfang stimmt, weil dafür die Definitionen
übereinstimmen.
Zusammenhang zwischen 𝜏 und 𝑇 zeigen
β€’ Induktionsschritt:
𝑇 𝑖 βˆ’ 1, 𝑗 + log 𝑄 𝛼
β‰₯ 𝜏 𝑖 βˆ’ 1, 𝑄
𝑗+log𝑄 𝛼 βˆ’(π‘–βˆ’1)
β‰₯ 𝜏 𝑖 βˆ’ 1, 𝛼𝑄 π‘—βˆ’π‘–
und mithin:
min π‘šπ‘Žπ‘₯
𝛼
𝑇 𝑖 βˆ’ 1, 𝑗 + log 𝑄 𝛼
𝑇 𝑖 βˆ’ 1, 𝑗 + log 𝑄 1 βˆ’ 𝛼
Analog für 1 βˆ’ 𝛼 .
+ 𝑀𝑖
β‰₯ min π‘šπ‘Žπ‘₯
𝛼
𝜏 𝑖 βˆ’ 1, 𝛼 β‹… π‘„π‘—βˆ’π‘–
𝜏 𝑖 βˆ’ 1, 1 βˆ’ 𝛼 β‹… π‘„π‘—βˆ’π‘– + 𝑀𝑖
= 𝜏 𝑖, π‘„π‘—βˆ’π‘–
Zeige (1+ πœ€)-Approximation
β€’ Die Ausgabe des Algorithmus ist 𝑍 β€² ≔ 𝑄1+𝑗′ für 𝑗 β€² ≔ max{𝑗 ∢
Zeige nun 𝑍′ ≀ (1 + πœ€) β‹… 𝑍:
β€’ Nach Definition von 𝑗′ und unserer Abschätzung gilt:
β€² βˆ’π‘›
𝑗
𝜏 𝑛, 𝑄
≀ 𝑇[𝑛, 𝑗 β€² ] ≀ 𝐢
β€² βˆ’π‘›
𝑗
𝑄
β€’ Das bedeutet, dass der kleinste Rucksack, für den es
verschiedene gültige Bepackungen gibt, nicht größer ist als C und dass
β€² βˆ’π‘›
𝑗
es somit auf jeden Fall 𝑄
gültige Bepackungen für einen Rucksack
𝑗 β€² βˆ’π‘›
mit der Kapazität C gibt. Damit erhalten wir 𝑍 β‰₯ 𝑄
und mithin:
𝑗 β€² +1
𝑍′ 𝑄
=
𝑍
𝑍
≀
𝑄
𝑗 β€² +1
β€² βˆ’π‘›
𝑗
𝑄
= 𝑄 𝑛+1
πœ€
= 1+
𝑛+1
𝑛+1
≀ 𝑒 πœ€ β‰ˆ (1 + πœ€)