Transformation Partition-Problem in Rucksackproblem

Werbung
Transformation
des Partitionsproblems in das
Rucksackproblem
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Transformation des Partitionsproblems in das
Rucksackproblem
Sören Kersten
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
1
06. Juli 2015
Transformation
des Partitionsproblems in das
Rucksackproblem
Inhalt
Sören Kersten
1
Das Rucksackproblem
2
Das Partitionsproblem
3
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der Transformation
Komplexität
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
2
Transformation
des Partitionsproblems in das
Rucksackproblem
Das Rucksackproblem
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
• Gegeben ist eine endliche Multimenge von n Zahlen
N = {a1 , ..., an } mit ai ∈ N>0 sowie ein Zielgewicht b
P
• Gesucht ist eine Teilmenge I ⊆ N , sodass
ai = b
i∈I
• Beispiel: N = {1, 2, 3, 4}, b = 3
• Lösungen: I = {1, 2}, I = {3}
• NP-vollständig
• DNA-Algorithmus zur Lösung wurde in der Vorlesung
präsentiert
3
Transformation
des Partitionsproblems in das
Rucksackproblem
Das Partitionsproblem
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
• Gegeben ist eine endliche Multimenge von n Zahlen
M = {c1 , ..., cn } mit ci ∈ N>0
• Gesucht ist eine Teilmenge J ⊂ M , sodass
P
i∈J
ci =
P
ci
i∈M\J
Beweis
• Beispiel: M = {1, 3, 5, 7}
• Lösungen: J = {1, 7} oder J = {3, 5}
Aufwand der
Transformation
• Es gibt immer eine gerade Anzahl möglicher Lösungen
Komplexität
• Transformation zu Rucksackproblem soll gefunden werden
Pseudocode
Formal
Beispiele
4
Transformation
des Partitionsproblems in das
Rucksackproblem
Die Transformation
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
5
• Der Algorithmus zur Lösung des Rucksackproblems ist
bekannt
• I = Knapsack(N, b)
• Mit dieser Funktion als Basis soll das Partitionsproblem
gelöst werden
Transformation
des Partitionsproblems in das
Rucksackproblem
Pseudocode
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
6
Algorithm 1 Pseudocode zur Berechnung einer Partition
Input: A multiset of interger values M = {c1 , ..., cn }
Output: A set of integer values I ⊂ M
1: function Partition(M )
2:
sum = calculateSum(M )
3:
if sum % 2 == 1 then
4:
return null
5:
J = Knapsack(M, sum/2)
6:
return J
Transformation
des Partitionsproblems in das
Rucksackproblem
Formal
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
7
• Gegeben ist M = {c1 , ..., cn }
• Setze N := M und b := 12
n
P
i=1
ci
• Berechne eine Lösung I für die Instanz N und b des
Rucksackproblems
• Setze J := I als Lösung für das Partitionsproblem
Transformation
des Partitionsproblems in das
Rucksackproblem
Positivbeispiel
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
• Gegeben M = {1, 1, 2, 2, 4, 6}
Beweis
• N := M, b := 12 (1 + 1 + 2 + 2 + 4 + 6) = 8
• Lösungen für das Rucksackproblem mit N und b
• I = {2, 6} oder I = {2, 2, 4}
• I = {1, 1, 2, 4} oder I = {1, 1, 6}
Aufwand der
Transformation
• Setze J := I
Die Transformation
Pseudocode
Formal
Beispiele
Komplexität
8
Transformation
des Partitionsproblems in das
Rucksackproblem
Negativbeispiel
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
9
• Gegeben M = {1, 2, 4, 9}
• N := M, b := 12 (1 + 2 + 4 + 9) = 8
• Lösungen für das Rucksackproblem mit N und b
• Keine
• Dementsprechend gibt es keine Lösung für das
Partitionsproblem
Transformation
des Partitionsproblems in das
Rucksackproblem
Beweis der Gültigkeit der Transformation
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
10
• Für ein beliebiges M = {c1 , ..., cn } gilt:
• M ist eine Ja-Instanz des Partitionsproblems ⇔ Die
Transformation ist eine Ja-Instanz des Rucksackproblems
• M lässt sich in zwei gleich groÿe Mengen partitionieren ⇔
N := M enthält
n
P
b = 21
ci
i=1
eine Teilmenge
I := J
der Gröÿe
Transformation
des Partitionsproblems in das
Rucksackproblem
Beweis der Gültigkeit der Transformation Hinrichtung
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
• M ist eine Ja-Instanz des Partitionsproblems
• M lässt sich in zwei gleich
P groÿePMengen partitionieren
⇒ ∃ J ⊆ {c1 , ..., cn }|
•
P
Pseudocode
i∈J
Formal
P
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
ci =
P
ci
i∈M\J
ci
i∈M\J
P
ci =
ci −
ci
i∈J
i∈M
i∈J
P
P
⇒ 2
ci =
ci
i∈M
Pi∈J
P
ci = b
⇒
ci = 12
⇒
i∈J
⇒ I := J
P
i∈M
ist eine Lösung für die Transformation des
Rucksackproblems
11
ci =
i∈J
Transformation
des Partitionsproblems in das
Rucksackproblem
Beweis der Gültigkeit der Transformation Rückrichtung
Sören Kersten
• Die Transformation ist eine Ja-Instanz des
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
Rucksackproblems
• N enthält eine Teilmenge I der Gröÿe b =
• b=
⇒
1
2
P
und
i∈I
P
ai =
b=
1
2
P
P
ai
i∈N
ai
i∈N
P
ai
i∈I
Pi∈N
P
⇒
ai = 2 ai
i∈N
P
Pi∈I
P
P
⇒
ai − ai = 2 ai − ai
i∈N
i∈IP
i∈I
i∈I
P
⇒
ai =
ai
i∈N\I
⇒ J := I
12
ai
1
2
i∈I
ist eine Lösung für das Partitionsproblem
Transformation
des Partitionsproblems in das
Rucksackproblem
Aufwand der Transformation
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
• Bei der Transformation muss b = 21
werden
Aufwand der
Transformation
Komplexität
13
i=1
ci berechnet
• Der zusätzliche Aufwand ist (n − 1) Additionen und eine
Division
Beispiele
Beweis
n
P
⇒
Der zusätzliche Aufwand ist polynomiell beschränkt
Transformation
des Partitionsproblems in das
Rucksackproblem
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
Komplexität
• Bei gegebenem M ist die Potenzmenge P(M) die Menge
der möglichen Lösungen für das Partitionsproblem und für
das transformierte Rucksackproblem
⇒
Die Problemgröÿe ändert sich bei der Transformation nicht
• Um eine exakte Lösung zu nden, müssen alle Elemente
von P(M) durchlaufen werden
• Im Best-Case ist das erste Element eine Lösung
• Im Worst-Case ist das letzte Element die Lösung
⇒
Die Laufzeit bei der Berechnung mit dem Computer
beträgt O(2n )
• Der DNA-Algorithmus verwendet keine Überprüfung. Dort
sind in jedem Fall n Schritte und 2n Speicher notwendig.
14
Transformation
des Partitionsproblems in das
Rucksackproblem
Sören Kersten
Das Rucksackproblem
Das Partitionsproblem
Die Transformation
Pseudocode
Formal
Beispiele
Beweis
Aufwand der
Transformation
Komplexität
15
Vielen Dank für die
Aufmerksamkeit
Herunterladen