MAXKNAPSACK

Werbung
MAXKNAPSACK
Das Problem
Wir haben die Eingabe (s1 , p1 ), . . . , (sn , pn ), B und betrachten das Problem, dass
X
pi
i∈I
zu maximieren ist, wobei
X
si ≤ B
i∈I
zu erfüllen ist.
dynamisches Programmieren
Wir gehen MAXKNAPSACK mittels dynamischer Programmierung an;
Wir betrachten S(k, p) mit minimalem Gewicht für Prot p aus (s1 , p1 ), . . . , (sn , pn ).
O(n, P ), wo
P =
n
X
pi
i=1
So einen Algorithmus haben wir pseudopolynomiell genannt und benutzen den Algorithmus um einen
FPTAS zu konstruieren.
1. Wir wandeln die Eingabe x = (s1 , p1 ), . . . , (sn , pn ), B in
x0 = (s1 , p01 ), . . . , (sn , p0n ), B
um, wobei p0i = b 2pti c
2. Wir bestimmen mit dem vorherigen Algorithmus eine exakte Lösung I 0∗ für x0 .
3. Benutzen I 0∗ als Lösung für x.
Analyse der Güte
I ∗ sei eine optimale Lösung für x:
X
A(x) = w(I 0∗ ) =
pi
i∈I 0∗
≥ 2t
X
p0i
i∈I 0∗
| {z }
OP T (x0 )
= 2t
X
i∈I ∗
pi
b tc
2
|{z}
p
≥ 2ti −1
≥
X
pi −2t kI ∗ k
i∈I∗
| {z }
OP T (x)
≥ OP T (x) − 2t n
1
Mult. Appr. Güte
OP T (x)
A(x)
A(x) + 2t n
A(x)
2t n
= 1+
A(x)
2t n
≤ 1+
OP T (x) − 2t n
1
= 1 + OP T (x)
−1
2t n
OP T (x)
falls
>1
2t n
≤
Und es sollte sein, dass
OP T (x)
1
−1≥
t
2n
2t n
≤
OP T (x)
1+
OP
T (x)
⇒ 2t ≤
1+
n
⇒
Wobei OP T (x) besser durch etwas anderes abgeschätzt werden sollte. Es reicht also aus, dass
Pmax
1+ n
wobei pmax = max pi
(1)
2t ≤
(2)
Dabei wurde o.B.d.A. angeommen, dass
OP T (x) ≥ pmax
Das ist der Fall, wenn das zugehörige Sj ≤ B . Falls nicht, entfernen wir es bereits am Anfang. Also
zum Beispiel
pmax
t = blog(
)c
1+
n
erfüllt die beiden Bedingungen.
Laufzeitanalyse
Wir haben einen Aufwand von
O(n
≥
In Schritt 2, also
O(n2
p
)
2t
|{z}
Pn
i=1
p0i
pmax
2t }
| {z
)
1+
n
)
max =O(pmax p
Woraus sich eine Laufzeit von O(n3 1 ) ergibt.
Satz 1.
Obiger Algorithmus ist ein FPTAS für MAXKNAPSACK mit Laufzeit
2
O(n3 1 )
Streng NP-vollständig/-schwer
Folgendes gelte:
• I : sei eine Instanz eines Optimierungs- oder Entscheidungsproblems Π
• |I|: Gröÿe der Eingabe, Zahlen binär dargestellt
• Anmerkung: Eingabe ist immer Folge von Zahlen
• M ax(I): gröÿter Absolutwert dieser Zahlen
Wir haben bereits deniert:
• polynomielle Laufzeit: polynomiell in |I|
• pseudopolynomielle Laufzeit: polynomiell in |I| und M ax(I)
Denition 1.
auf Eingaben
I
Für ein Optimierungs- oder Entscheidungsproblem
Π,
Polynom
p
sei
Πp
eingeschränkt
mit
M ax(I) ≤ p(|I|)
Eim Entscheidungsproblem heiÿt streng NP-Vollständig genau dann, wenn es ein Polynom p gibt, so
dass Πp NP-vollständig ist. Ein Optimierungsproblem heiÿt streng NP-schwer genau dann, wenn das
zugehörige Entscheidungsproblemstreng NP-vollständig ist.
Beispiele für streng NP-vollst.
Gegenbeispiele
• MAXKNAPSACK
• SUBSET-SUM
• PARTITION
Beispiele
• TSP
• Hamilton-Kreis
• Clique
• unabhängige Knotenmenge
Satz 2.
⇒
2.
1. Optimierungsproblem
falls
P 6= N P ,
Π
streng NP-schwer
so gibt es keinen pseudopolynomiellen Algorithmus für
Π sei ein Optimierungsproblem
|I| und M ax(I) ist.
so dass für alle Instanzen I
OP T (I)
Π
polynomiell beschränkt in
Dann gilt:
∃FPTAS
für
Π ⇒∃
pseudopolynomieller Alg. für
Π
Beweis (b)
Sei (A )>0 vollst. Approximationsschema für Π. Sei p ein Polynom mit OP T (I) < p(|I|, M ax(I)),
dann ist dies ein pseudopolynomieller Algorithmus:
1. :=
1
p(|I|,M ax(I))
2. Wende A an
3
Korrektheit
A liefert das Ergebnis:
A ≥ (1 − )OP T (I)
OP T (I) − A (I) ≤ OP T (I) <
1
p(|I|, M ax(I)) = 1
p(|I|, M ax(I))
⇒ A (I) = < OP T (I)
falls die Lösung ganzzahlig sein sollte.
0.0.1
Komplexitätsklassen
Die folgenden Angaben werden bezüglich der Approximierbarkeit gemacht.
• ABS: Probleme aus NPO in polynomieller Zeit approximierbar und konstanter additiver Güte
• APX: Probleme aus NPO in polynomieller Zeit approximierbar und konstanter multiplikativer
Güte
• PTAS: Probleme für die ein PTAS existiert
• FPTAS: Probleme für die ein FPTAS existiert
Legende:
1. TSP
2. MINPLANARB
3. MAXCLIQUE
4. MAXKNAPSACK
5. MINFÄRB
6. MINTSP
7. MINBINPACKING
8. M INm SCHEDULING
4
Herunterladen