Skript zur Vorlesung Komplexitätstheorie im SS 1996
Skript zur Vorlesung Komplexitätstheorie im SS 1996
Skript zur Vorlesung Komplexitätstheorie im SS 1996
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
5 NP-VOLLSTÄNDIGE PROBLEME 58<br />
Dann gilt (*):<br />
<br />
ai = <br />
ai + an+2 = M +<br />
ai∈D<br />
ai∈B<br />
n<br />
ai + 1 − M =<br />
i=1<br />
n<br />
ai + 1<br />
also ist D Partitionsmenge.<br />
Sei D Partitionsmenge von A ′ . O.b.d.A. ist an+2 ∈ D (sonst ∈ A ′ \D). Also<br />
ist an+1 ∈ D, weil sonst <br />
ai∈D ai ≥ an+1 + an+2 = n i=1 ai + 2 > ai + 1<br />
(keine Partition).<br />
Setze B = D\{an+2}. Mit (*) folgt sofort, daß<br />
n<br />
<br />
n<br />
<br />
ai = ai + 1 − ai + 1 − M = M<br />
ai∈B<br />
i=1<br />
<br />
a∈D a<br />
<br />
Rucksackproblem (KNAPSACK): Sei X = {w1, . . . , wn} ⊆ N eine<br />
Menge von Gewichten bzw. Größen von Stücken, Y = {v1, . . . , vn} ⊆ N<br />
eine Menge, die den Wert (value) dieser Stücke angibt, und seien W eine<br />
Gewichts- und K eine Kostenschranke. Frage: Existiert eine Menge<br />
I ⊆ {1, . . . , n} mit <br />
i∈I wi ≤ W und <br />
i∈I vi ≥ K; anders ausgedrückt:<br />
kann ich einen Rucksack so beladen, daß ich einen best<strong>im</strong>mten Mindestwert<br />
mitbekomme?<br />
PARTITION ≤ KNAPSACK, denn:<br />
Sei R({a1, . . . , an} ) = X, Y, W, K mit wi = vi = 2ai für i = 1, . . . , n und<br />
<br />
A<br />
W = K = n i=1 ai.<br />
Ist n i=1 ai ungerade, so gibt es keine Lösung für beide Probleme.<br />
Ist n i=1 ai gerade, so gilt:<br />
<br />
ai∈D<br />
ai = 1<br />
2<br />
i=1<br />
n<br />
ai ⇔ <br />
wi = <br />
vi =<br />
i=1<br />
i∈I<br />
i∈I<br />
i=1<br />
n<br />
ai = <br />
2ai<br />
mit I = {i|ai ∈ D}.<br />
Das Rucksackproblem und auch das Partitionsproblem haben auf den ersten<br />
Blick verblüffend einfache Lösungen.<br />
Satz 5.3 Jeder Fall von KNAPSACK mit n Stücken und Gewichtsschranke<br />
W kann in O(nW ) Schritten gelöst werden.<br />
Beweis: Sei V (W, i) max<strong>im</strong>aler Wert, der erreicht werden kann mit Stücken<br />
aus den ersten i Stücken, die genau auf Gewicht W aufsummiert werden.<br />
⎧ <br />
⎫<br />
⎨ <br />
<br />
⎬<br />
V (W, i) = max vj<br />
<br />
⎩ J<br />
⊆ {1, . . . , i}, wj = W<br />
⎭<br />
j∈J<br />
i=1<br />
j∈J<br />
i∈I