09.10.2013 Aufrufe

• Rucksackproblem/Knapsack Problem (KP):

• Rucksackproblem/Knapsack Problem (KP):

• Rucksackproblem/Knapsack Problem (KP):

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Approximationsalgorithmen <strong>Rucksackproblem</strong> 24<br />

<strong>•</strong> <strong>Rucksackproblem</strong>/<strong>Knapsack</strong> <strong>Problem</strong> (<strong>KP</strong>):<br />

✄ gegeben:<br />

n items, jedes mit Profit pi und Gewicht wi,<br />

ein Rucksack/bin mit Kapazität c<br />

✄ <strong>Problem</strong>:<br />

Wähle eine Teilmenge von items mit<br />

maximalem Profit und Gewicht ≤ c.<br />

Algorithmus einfacher Greedy:<br />

Sortiere die items nach Effizienz:<br />

p1<br />

w1<br />

≥ p2<br />

w2<br />

≥ . . . ≥ pn<br />

wn<br />

for i := 1 to n do<br />

if item i paßt in den Rucksack<br />

pack es ein<br />

end for<br />

Einfacher Greedy kann unbeschränkt schlecht werden.<br />

Verbesserter Algorithmus Greedy:<br />

Sei z E . . . der Wert des Rucksacks nach einfacher Greedy.<br />

z G := max{z E , max{pi | i = 1, . . . , n}}<br />

Greedy hat eine scharfe Gütegarantie von 1/2.


Approximationsalgorithmen <strong>Rucksackproblem</strong> 25<br />

Beachte: ein einziges “großes” item hat Haupteinfluß.<br />

Verbesserung:<br />

“Rate” das item mit größtem Profit in der Optimallösung.<br />

=⇒ alle items durchprobieren.<br />

Algorithmus G 2/3 :<br />

for i := 1 to n do<br />

packe item i in den leeren Rucksack<br />

wende Greedy auf das Restproblem<br />

mit Kapazität c − wi an<br />

end for<br />

z A := Maximum der n Rucksack-Lösungen<br />

G 2/3 hat eine scharfe Gütegarantie von 2/3.<br />

Verallgemeinerung:<br />

“Rate” die 2 items mit größtem Profit in der Optimallösung.<br />

=⇒ alle Paare von items durchprobieren.<br />

=⇒ scharfe Gütegarantie von 3/4.


Approximationsalgorithmen <strong>Rucksackproblem</strong> 26<br />

Weitere Verallgemeinerung:<br />

“Rate” die ℓ items mit größtem Profit in der Optimallösung.<br />

=⇒ alle ℓ-Tupel von items durchprobieren.<br />

=⇒ scharfe Gütegarantie von ℓ+1<br />

ℓ+2 .<br />

Laufzeit:<br />

<br />

Tupel =⇒ O(nℓ ) viele Greedy Iterationen =⇒ O(nℓ+1 )<br />

n<br />

ℓ<br />

Verbesserung auf O(n ℓ ) möglich.


Approximationsalgorithmen Approximationsschemata 27<br />

Betrachte die relative Abweichung ε als Input-Wert.<br />

Definition: Maximierung<br />

Ein Algorithmus A ist ein ε–Approximationsschema,<br />

wenn A für jedes ε ∈ (0, 1) ein (1 − ε)–Approximationsalgorithmus<br />

ist.<br />

Minimierung analog.<br />

Natürlich wächst die Laufzeit mit sinkendem ε.<br />

Definition:<br />

Ein Approximationsschema A ist ein Polynomiales<br />

Approximationsschema (PTAS), wenn die Laufzeit<br />

von A polynomial in der Länge der Instanz ist.<br />

Definition:<br />

Ein Approximationsschema A ist ein Voll-Polynomiales<br />

Approximationsschema (FPTAS), wenn die Laufzeit<br />

von A polynomial in der Länge der Instanz und in 1/ε ist.<br />

analog:<br />

asymptotisches PTAS und asymptotisches FPTAS.


Approximationsalgorithmen Approximationsschemata 28<br />

(PTAS):<br />

Konstruktionsprinzip beschränkte Enumeration.<br />

✄ Grundidee:<br />

Wähle ein geeignetes Unterproblem der Größe k<br />

Löse das Unterproblem optimal durch vollständige<br />

Enumeration<br />

Erweitere die Lösung zu einer Gesamtlösung<br />

Multi-Prozessor Scheduling:<br />

Approximationsschema (Graham)<br />

Algorithmus Scheduling-PTAS:<br />

Sortiere die jobs in absteigender Reihenfolge<br />

p1 ≥ p2 ≥ . . . ≥ pn<br />

(∗) wähle Parameter k<br />

bestimme die optimale Anordnung der jobs 1, . . . , k<br />

führe (LPT) für die restlichen jobs aus.


Approximationsalgorithmen Approximationsschemata 29<br />

Scheduling-PTAS hat eine Gütegarantie von 1 + m−1<br />

k .<br />

Für gegebenes ε wähle k := (m − 1)/ε<br />

=⇒ ε–Approximationsschema<br />

Laufzeit:<br />

Optimallösung für k jobs durch Enumeration in O(m k ) Zeit.<br />

Gesamtzeit: O(m m/ε + n log n) =⇒ PTAS<br />

m wird als konstant betrachtet.


Approximationsalgorithmen Approximationsschemata 30<br />

(PTAS) für das <strong>Rucksackproblem</strong> (<strong>KP</strong>):<br />

✄ Idee: (Sahni ’75)<br />

wähle einen Parameter ℓ<br />

“rate” die ℓ items mit größtem Profit in Optimallösung<br />

fülle die Restkapazität mit Greedy.<br />

“raten” =⇒ alle Teilmengen mit ℓ items durchprobieren<br />

Gütegarantie:<br />

A ≥<br />

ℓ + 1<br />

ℓ + 2 Opt<br />

wähle ℓ := ⌈1 ε⌉−2 =⇒ (1−ε)–Approximationsalgorithmus.


Approximationsalgorithmen Approximationsschemata 31<br />

Laufzeit:<br />

n<br />

ℓ<br />

<br />

Teilmengen mit ℓ Elementen<br />

=⇒ O(n ℓ ) viele Greedy Iterationen =⇒ O(n ℓ+1 )<br />

Verbesserung: (Caprara et al.’00)<br />

Systematisches Enumerieren der Teilmengen:<br />

n ℓ−1 Iterationen mit jeweils n Teilmengen<br />

mit sinkenden Kapazitäten<br />

=⇒ Greedy kann in O(n) für jede Iteration<br />

alle n Lösungen bestimmen.<br />

=⇒ Gesamtzeit O(n ℓ )<br />

Zeit O(n) O(n log n) O(n 2 ) O(n 3 ) O(n 4 ) . . . O(n ℓ )<br />

Sahni ’75 1/2 1/2 1/2 2/3 3/4 . . . ℓ−1<br />

ℓ<br />

verbess. 1/2 2/3 ∗ 3/4 4/5 5/6 . . . ℓ+1<br />

ℓ+2


Approximationsalgorithmen Approximationsschemata 32<br />

<strong>•</strong> d-dimensionales <strong>Rucksackproblem</strong> (d<strong>KP</strong>):<br />

✄ gegeben:<br />

n Objekte mit Profit pj und d Gewichten wij,<br />

ein Rucksack mit Kapazitätsvektor ci.<br />

✄ <strong>Problem</strong>:<br />

Wähle eine Teilmenge von Objekten mit maxim.<br />

Profit und Gewicht ≤ ci ∀i = 1, . . . , d.<br />

ILP-Formulierung:<br />

(d<strong>KP</strong> ) maximiere<br />

unter d.B.<br />

n<br />

j=1<br />

pj xj<br />

n<br />

wij xj ≤ ci , i = 1, . . . , d,<br />

j=1<br />

xj ∈ {0, 1}, j = 1, . . . , n.<br />

Satz: Die Optimallösung der LP-Relaxation von (d<strong>KP</strong>) hat<br />

höchstens min{n, d} nicht-ganzzahlige Variablenwerte.


Approximationsalgorithmen Approximationsschemata 33<br />

Einfacher Approximationsalgorithmus:<br />

LP-Relaxation optimal lösen<br />

Nimm alle items mit Variablenwert 1 (=abrunden)<br />

Oder: Größtes Einzelitem (vgl. Greedy)<br />

=⇒ Approximation mit scharfer Gütegarantie 1<br />

d+1 .<br />

Das spezielle LP kann in O(n) Zeit gelöst werden.<br />

PTAS: analog zu (<strong>KP</strong>)<br />

wähle einen Parameter ℓ<br />

“rate” die ℓ items mit größtem Profit in Optimallösung<br />

– Algorithmus.<br />

fülle die Restkapazität mit dem 1<br />

d+1<br />

Laufzeit: O(n ℓ+1 )<br />

wähle ℓ := ⌈d ε⌉ − (d + 1) =⇒ PTAS für d<strong>KP</strong>.<br />

Für d = 1 entsteht genau das frühere PTAS für <strong>KP</strong>.<br />

Satz: Bereits für 2-<strong>KP</strong> gibt es kein FPTAS (unter P=N P).


Approximationsalgorithmen Approximationsschemata 34<br />

(FPTAS):<br />

Konstruktionsprinzip Skalierung.<br />

✄ Grundidee:<br />

Beachte:<br />

1. Dynamisches Programmieren liefert die Optimallösung<br />

in pseudopolynomialer Zeit.<br />

2. Skalieren der Eingabewerte eliminiert die<br />

Eingabedaten aus der Laufzeit-Komplexität<br />

Skalieren entspricht einer Klasseneinteilung in Intervalle<br />

Alle Werte eines Intervalls werden gleichgesetzt<br />

(FPTAS) für das <strong>Rucksackproblem</strong> (<strong>KP</strong>):<br />

1. Dynamisches Programmieren nach Profiten<br />

Definiere array y:<br />

y(p) enthält das minimale Gewicht einer Teilmenge<br />

von items mit Gesamtprofit p.<br />

Optimallösung: z ∗ := max {p | y(p) ≤ c}<br />

yj(p): Einschränkung auf item Menge {1, . . . , j}


Approximationsalgorithmen Approximationsschemata 35<br />

Rekursive Berechnung durch Einfügen von item j + 1:<br />

yj+1(p) := min{yj(p), yj(p − pj+1) + wj+1} .<br />

Dynamisches Programmieren nach Profiten:<br />

Bestimme obere Schranke P ≥ z ∗<br />

for p := 0 to P do<br />

y(p) := c + 1 dummy Initialisierung<br />

for j := 0 to n − 1 do<br />

for p := P down to pj+1 do<br />

versuche item j + 1 zu packen<br />

if y(p − pj+1) + wj+1 < y(p) then<br />

y(p) := y(p − pj+1) + wj+1<br />

z ∗ := max {p | y(p) ≤ c}


Approximationsalgorithmen Approximationsschemata 36<br />

Pseudopolynomialer Algorithmus<br />

Laufzeit: O(nP ) Speicher: O(nP )<br />

Beachte die notwendige Manipulation der item-Mengen!<br />

Adaptieren des Dynamischen Programmieren:<br />

Ziel: Ersetzen von P durch n, 1/ε.<br />

Wähle eine Konstante K und skaliere den Profit-Bereich:<br />

˜pi :=<br />

⎢<br />

⎣ pi<br />

Dynamisches Programmieren mit den skalierten Profit-<br />

Werten für K = ε pmax/n liefert ein FPTAS.<br />

Laufzeit:<br />

˜P ≤ n ˜pmax ≤ n pmax<br />

K<br />

K<br />

⎥<br />

⎦<br />

= n n pmax<br />

ε pmax<br />

Zeit und Speicher: O(n 3 /ε) (Ibarra, Kim’75)<br />

= n2<br />

ε<br />

Beachte: Skalieren der Gewichte führt zu Schwierigkeiten!


Approximationsalgorithmen Komplexitätstheorie 37<br />

Kurzüberblick Komplexitätstheorie:<br />

Definition:<br />

Für eine Instanz I eines <strong>Problem</strong>s P ist<br />

L(I): Anzahl der Eingabewerte<br />

Max(I): Betrag des größten Eingabewertes<br />

Länge der Instanz: O(L(I) · log(Max(I)))<br />

Definition:<br />

Ein Algorithmus A für das <strong>Problem</strong> P ist polynomial,<br />

wenn seine Laufzeit für jede Instanz I ein Polynom<br />

in L(I) und log(Max(I)) ist.<br />

Ein Algorithmus A für P ist pseudopolynomial,<br />

wenn seine Laufzeit für jede Instanz I ein Polynom<br />

in L(I) und Max(I) ist.<br />

Korollar:<br />

Wenn Max(I) ein Polynom in L(I) ist, dann ist jeder<br />

pseudopolynomiale Algorithmus bereits ein polynomialer<br />

Algorithmus.<br />

Korollar:<br />

Wenn Max(I) ein Polynom in L(I) ist und P ein N Pvollständiges<br />

<strong>Problem</strong> ist, dann gibt es keinen pseudopolynomialen<br />

Algorithmus für P (unter P=N P).


Approximationsalgorithmen Komplexitätstheorie 38<br />

Betrachte das Unterproblem Ppoly von P , welches nur jene<br />

Instanzen I enthält, für die Max(I) ein Polynom in L(I)<br />

ist.<br />

Definition:<br />

Wenn Ppoly N P-vollständig ist, so nennt man P streng<br />

N P-vollständig.<br />

Satz:<br />

Wenn P streng N P-vollständig ist, dann gibt es keinen<br />

pseudopolynomialen Algorithmus für P (unter P=N P).<br />

Satz:<br />

Ist Opt(I) ein Polynom in L(I) und Max(I), dann gilt:<br />

Wenn es ein FPTAS für P gibt, dann gibt es auch einen<br />

pseudopolynomialen Algorithmus für P .<br />

Korollar:<br />

Ist Opt(I) ein Polynom in L(I) und Max(I), dann gilt:<br />

Wenn P streng N P-vollständig ist, dann gibt es kein FPTAS<br />

für P (unter P=N P).


Approximationsalgorithmen Komplexitätstheorie 39<br />

Satz: (für Minimierung)<br />

Ist für ein <strong>Problem</strong> P bereits das Entscheidungsproblem:<br />

“Gibt es einen zulässige Lösung mit Wert ≤ k ? ”<br />

N P-vollständig, dann folgt:<br />

Es gibt keinen polynomialen Approximationsalgorithmus mit<br />

Gütegarantie < 1 + 1/k.<br />

(=⇒ es gibt kein PTAS.)<br />

Vorsicht mit dem Begriff asymptotisch:<br />

Multi-Prozessor Scheduling ist streng N P-vollständig =⇒<br />

kein FPTAS<br />

Es gibt ein PTAS, aber kein asymptotisches FPTAS.<br />

Bin-Packing ist streng N P-vollständig =⇒ kein FPTAS<br />

Es gibt keine Approximation besser als 3/2, also kein PTAS.<br />

Trotzdem gibt es ein asymptotisches PTAS !!<br />

Fernandez de la Vega, Luecker (1981),<br />

und sogar ein asymptotisches FPTAS<br />

Karmakar, Karp (1982).


Approximationsalgorithmen Komplexitätstheorie 40<br />

Komplexitätshierarchie:<br />

in absteigender Reihenfolge der Schwierigkeit:<br />

Optimierungsprobleme in N P:<br />

Die Zulässigkeit einer möglichen Lösung kann in<br />

polynomialer Zeit überprüft werden.<br />

APX: Es gibt einen polynomialen Approximationsalgorithmus<br />

mit konstanter Gütegarantie k.<br />

MAX-SNP: konstante Gütegarantie existiert, aber<br />

das Erreichen einer gewissen Güte 1+δ ist N P-schwer.<br />

PTAS: Beliebige Gütegarantie 1 + ε ist erreichbar in einer<br />

Zeit polynomial in der Länge der Instanz.<br />

FPTAS: Beliebige Gütegarantie 1+ε ist erreichbar in einer<br />

Zeit polynomial in der Länge der Instanz und in 1/ε.<br />

Optimierungsprobleme in P:<br />

Optimallösung kann in polynomialer Zeit berechnet werden.<br />

Neueres Konzept:<br />

Probabilistically Checkable Proofs:<br />

PCP-Theorem

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!