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 + π)