Joachim Spoerhase Alexander Wolff

Werbung
Approximationsalgorithmen
9. Vorlesung
Joachim Spoerhase
Lehrstuhl für Informatik I
Alexander Wolff
Wintersemester 2015/16
Approximationsschema
Sei Π ein Optimierungsproblem. Ein Algorithmus A heißt
Polynomielles Approximationsschema (PTAS), wenn dieser
für jede Eingabe (I, ) mit I ∈ DΠ und > 0 eine Lösung
s ∈ SΠ (I) ausgibt, die Folgendes erfüllt:
• objΠ (I, s) ≤ (1 + ) · OPT, falls Π Min-Problem,
• objΠ (I, s) ≥ (1 − ) · OPT, falls Π Max-Problem.
Die Laufzeit von A ist polynomiell in |I| für jedes feste > 0.
Approximationsschema
Sei Π ein Optimierungsproblem. Ein Algorithmus A heißt
Polynomielles Approximationsschema (PTAS), wenn dieser
für jede Eingabe (I, ) mit I ∈ DΠ und > 0 eine Lösung
s ∈ SΠ (I) ausgibt, die Folgendes erfüllt:
• objΠ (I, s) ≤ (1 + ) · OPT, falls Π Min-Problem,
• objΠ (I, s) ≥ (1 − ) · OPT, falls Π Max-Problem.
Die Laufzeit von A ist polynomiell in |I| für jedes feste > 0.
A heißt vollpolynomielles Approximationsschema (FPTAS),
falls seine Laufzeit polynomiell in |I| und 1/ ist.
Approximationsschema
Sei Π ein Optimierungsproblem. Ein Algorithmus A heißt
Polynomielles Approximationsschema (PTAS), wenn dieser
für jede Eingabe (I, ) mit I ∈ DΠ und > 0 eine Lösung
s ∈ SΠ (I) ausgibt, die Folgendes erfüllt:
• objΠ (I, s) ≤ (1 + ) · OPT, falls Π Min-Problem,
• objΠ (I, s) ≥ (1 − ) · OPT, falls Π Max-Problem.
Die Laufzeit von A ist polynomiell in |I| für jedes feste > 0.
A heißt vollpolynomielles Approximationsschema (FPTAS),
falls seine Laufzeit polynomiell in |I| und 1/ ist.
Beispiele Laufzeiten
• O(n1/ )
Polynomielles Approximationsschema
• O(21/ n4 )
Polynomielles Approximationsschema
• O(n3 /2 )
Vollpolynomielles Approximationsschema
Rucksackproblem
Gegeben sei eine Menge S = {a1 , . . . , an } von Objekten. Für
jedes Objekt ai , i = 1, . . . , n ist eine Größe size(ai ) ∈ N+ und
ein Profit profit(ai ) ∈ N+ spezifiziert. Ferner ist eine
Rucksack-Kapazität B ∈ N+ vorgegeben. Gesucht ist eine
Teilmenge von Objekten deren Gesamtgröße höchstens B und
deren Gesamtprofit maximal ist.
Rucksackproblem
Gegeben sei eine Menge S = {a1 , . . . , an } von Objekten. Für
jedes Objekt ai , i = 1, . . . , n ist eine Größe size(ai ) ∈ N+ und
ein Profit profit(ai ) ∈ N+ spezifiziert. Ferner ist eine
Rucksack-Kapazität B ∈ N+ vorgegeben. Gesucht ist eine
Teilmenge von Objekten deren Gesamtgröße höchstens B und
deren Gesamtprofit maximal ist.
NP-schwer
Pseudopolynomieller Algorithmus
Sei Π ein Optimierungsproblem dessen Instanzen durch
Objekte (z.B. Mengen oder Graphen) und Zahlen (z.B.
Kosten, Gewichte, Profite) repräsentiert sind. Mit |I|
bezeichnen wir (wie bisher) die Größe einer Instanz I ∈ DΠ ,
wobei alle Zahlen in I binär kodiert sind. Mit |Iu | bezeichnen
wir die Größe von I, wenn alle Zahlen in I unär kodiert sind.
Pseudopolynomieller Algorithmus
Sei Π ein Optimierungsproblem dessen Instanzen durch
Objekte (z.B. Mengen oder Graphen) und Zahlen (z.B.
Kosten, Gewichte, Profite) repräsentiert sind. Mit |I|
bezeichnen wir (wie bisher) die Größe einer Instanz I ∈ DΠ ,
wobei alle Zahlen in I binär kodiert sind. Mit |Iu | bezeichnen
wir die Größe von I, wenn alle Zahlen in I unär kodiert sind.
• Die Laufzeit eines polynomiellen Algorithmus für Π ist
polynomiell in |I|.
Pseudopolynomieller Algorithmus
Sei Π ein Optimierungsproblem dessen Instanzen durch
Objekte (z.B. Mengen oder Graphen) und Zahlen (z.B.
Kosten, Gewichte, Profite) repräsentiert sind. Mit |I|
bezeichnen wir (wie bisher) die Größe einer Instanz I ∈ DΠ ,
wobei alle Zahlen in I binär kodiert sind. Mit |Iu | bezeichnen
wir die Größe von I, wenn alle Zahlen in I unär kodiert sind.
• Die Laufzeit eines polynomiellen Algorithmus für Π ist
polynomiell in |I|.
• Die Laufzeit eines pseudo-polynomiellen Algorithmus ist
polynomiell in |Iu |
Pseudopolynomieller Algorithmus
Sei Π ein Optimierungsproblem dessen Instanzen durch
Objekte (z.B. Mengen oder Graphen) und Zahlen (z.B.
Kosten, Gewichte, Profite) repräsentiert sind. Mit |I|
bezeichnen wir (wie bisher) die Größe einer Instanz I ∈ DΠ ,
wobei alle Zahlen in I binär kodiert sind. Mit |Iu | bezeichnen
wir die Größe von I, wenn alle Zahlen in I unär kodiert sind.
• Die Laufzeit eines polynomiellen Algorithmus für Π ist
polynomiell in |I|.
• Die Laufzeit eines pseudo-polynomiellen Algorithmus ist
polynomiell in |Iu |
• Laufzeit eines pseudo-polynomiellen Algorithmus nicht
immer polynomiell in |I|
Pseudopolynomieller Alg. für Rucksack
• P := maxi profit(ai )
OPT ≤ nP
Pseudopolynomieller Alg. für Rucksack
• P := maxi profit(ai )
OPT ≤ nP
• Für jedes i = 1, . . . , n und jedes p ∈ {1, . . . , nP } sei Si,p
eine Teilmenge von {a1 , . . . , ai } deren Profit genau p ist
und deren Gesamtgröße minimal unter allen Teilmengen
mit den geforderten Eigeschaften ist.
Pseudopolynomieller Alg. für Rucksack
• P := maxi profit(ai )
OPT ≤ nP
• Für jedes i = 1, . . . , n und jedes p ∈ {1, . . . , nP } sei Si,p
eine Teilmenge von {a1 , . . . , ai } deren Profit genau p ist
und deren Gesamtgröße minimal unter allen Teilmengen
mit den geforderten Eigeschaften ist.
• A(i, p) bezeichne Gesamtgröße der Menge Si,p (setzen
A(i, p) = ∞ falls keine solche Menge existiert).
Pseudopolynomieller Alg. für Rucksack
• P := maxi profit(ai )
OPT ≤ nP
• Für jedes i = 1, . . . , n und jedes p ∈ {1, . . . , nP } sei Si,p
eine Teilmenge von {a1 , . . . , ai } deren Profit genau p ist
und deren Gesamtgröße minimal unter allen Teilmengen
mit den geforderten Eigeschaften ist.
• A(i, p) bezeichne Gesamtgröße der Menge Si,p (setzen
A(i, p) = ∞ falls keine solche Menge existiert).
• Falls alle A(i, p) bekannt ergibt sich OPT durch
max{ p | A(n, p) ≤ B }
Pseudopolynomieller Alg. für Rucksack
• A(1, p) bekannt für alle p ∈ {0, . . . , nP }
Pseudopolynomieller Alg. für Rucksack
• A(1, p) bekannt für alle p ∈ {0, . . . , nP }
• setzen A(i, p) := ∞ für p < 0
Pseudopolynomieller Alg. für Rucksack
• A(1, p) bekannt für alle p ∈ {0, . . . , nP }
• setzen A(i, p) := ∞ für p < 0
• A(i + 1, p) = min{A(i, p), size(ai+1 ) + A(i, p − profit(ai+1 )}
Pseudopolynomieller Alg. für Rucksack
• A(1, p) bekannt für alle p ∈ {0, . . . , nP }
• setzen A(i, p) := ∞ für p < 0
• A(i + 1, p) = min{A(i, p), size(ai+1 ) + A(i, p − profit(ai+1 )}
•
Alle A(i, p)-Werte und somit OPT lassen sich in
O(n2 P ) Zeit ermitteln
Pseudopolynomieller Alg. für Rucksack
• A(1, p) bekannt für alle p ∈ {0, . . . , nP }
• setzen A(i, p) := ∞ für p < 0
• A(i + 1, p) = min{A(i, p), size(ai+1 ) + A(i, p − profit(ai+1 )}
•
Alle A(i, p)-Werte und somit OPT lassen sich in
O(n2 P ) Zeit ermitteln
Rucksack lässt sich in
pseudopolynomieller Zeit
O(n2 P ) optimal lösen.
FPTAS für Rucksack durch Skalierung
• Laufzeit O(n2 P ) polynomiell in n, wenn P polynomiell in n
FPTAS für Rucksack durch Skalierung
• Laufzeit O(n2 P ) polynomiell in n, wenn P polynomiell in n
• FPTAS-Idee: Skaliere Profite auf polynomielle Größe (je
nach geforderter Fehlerschranke ).
FPTAS für Rucksack durch Skalierung
RucksackFPTAS(I,)
K ← P
n
j
profit0 (ai ) :=
profit(ai )
K
k
ermittle optimale Lösung S 0 für I bezüglich profit0 (·)
return S 0
FPTAS für Rucksack durch Skalierung
RucksackFPTAS(I,)
K ← P
n
j
profit0 (ai ) :=
profit(ai )
K
k
ermittle optimale Lösung S 0 für I bezüglich profit0 (·)
return S 0
Lemma
Die Lösung S 0 erfüllt profit(S 0 ) ≥ (1 − ) · OPT .
FPTAS für Rucksack durch Skalierung
RucksackFPTAS(I,)
K ← P
n
j
profit0 (ai ) :=
profit(ai )
K
k
ermittle optimale Lösung S 0 für I bezüglich profit0 (·)
return S 0
Lemma
Die Lösung S 0 erfüllt profit(S 0 ) ≥ (1 − ) · OPT .
Satz 7.1 RucksackFPTAS ist ein FPTAS für Rucksack mit
Laufzeit O(n3 /).
Starke NP-Schwere
Ein Optimierungsproblem heißt stark NP-schwer, wenn es
auch mit unärkodierten Zahlen NP-schwer bleibt.
Satz 7.2
Ein stark NP-schweres Problem besitzt keinen
pseudopolynomiellen Algorithmus außer P = NP.
FPTAS und pseudopolynomielle Algorithmen
Satz 7.3
Sei p ein Polynom und Π ein NP-schweres
Min-Problem mit ganzzahliger Zielfunktion und
OPT(I) < p(|Iu |) für alle Instanzen I von Π.
Wenn Π ein FPTAS besitzt, dann gibt es auch
einen pseudopolynomiellen Algorithmus für Π.
FPTAS und starke NP-Schwere
Korollar
Sei Π ein NP-schweres Optimierungsproblem, das
die Restriktionen von Satz 7.3 erfüllt. Wenn Π
stark NP-schwer ist, dann gibt es keinen FPTAS
für Π außer P = NP.
Herunterladen