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