29.10.2013 Aufrufe

Skript zur Vorlesung Komplexitätstheorie im SS 1996

Skript zur Vorlesung Komplexitätstheorie im SS 1996

Skript zur Vorlesung Komplexitätstheorie im SS 1996

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!