NP-Vollständigkeit
Wie komme ich von hier zum Hauptbahnhof?
Wie komme ich von hier zum Hauptbahnhof?
Finde jemand, der den Weg kennt!
Alternativ: Finde eine Stadtkarte!
Alternativ: Bestelle ein Taxi!
…
P1
P2
verwende für
kann ich
reduzieren auf
Wie komme ich von hier zum Hauptbahnhof?
Finde jemand, der den Weg kennt!
Alternativ: Finde eine Stadtkarte!
Alternativ: Bestelle ein Taxi!
…
P2
verwende für
kann ich
reduzieren auf
Reduktion kann rekursiv sein:Das Problem von Berlin nach Köln zu kommen reduziert sich auf das Problem, eine Fahrkarte zu kaufen… das wiederum reduziert sich darauf, Geld für die Fahrkarte zu verdienen… reduziert sich auf das Problem, einen Job zu finden
P1
Reduktion
• Eine mächtige Technik: Algorithmendesign
P1 P2
Transformation f
verwende Lösung (f-1)
• Falls f, P2 und f-1 effizient berechenbar, dann auch P1!
Beispiele• Fläche eines Rechtecks
• Das Problem, die Fläche eines Rechtecks zu bestimmen, reduziert sich auf das Problem, dessen Seitenlängen zu bestimmen.
• Gleichungssysteme lösen• Das Problem, ein lineares
Gleichungssystem zu lösen, reduziert sich auf das Problem, eine Matrix zu invertieren.
Fläche?
Länge?
Bre
ite?
: P1
P2:
Heute: „Perverse“ Reduktion
• Reduktion kann auch dazu verwendet werden, zu zeigen dass ein Problem schwer ist.
• Falls f und f-1 effizient berechenbar und P1 schwer ist, so muss auch P2 schwer sein.
P1 P2
Transformation f
verwende Lösung
Heute: „Perverse“ Reduktion
• Reduktion kann auch dazu verwendet werden, zu zeigen dass ein Problem schwer ist.
• Falls f und f-1 effizient berechenbar und P1 schwer ist, so muss auch P2 schwer sein.
P1 P2
Transformation f
verwende Lösung
Gilt das auch umgekehrt?Wenn P2 schwer dann auch P1?
Repetition: Effiziente Algorithmen• Fundamentale algorithmische Probleme
• Matching• Spannbäume• Kürzeste Pfade
• Probleme schwer? Exponentiell viele gültige Lösungen!• n Männer, n Frauen: n! Matchings• Graph mit n Knoten: nn-2 Spannbäume• Exponentiell viele Pfade von s nach t
• Trotzdem: sehr effiziente Algorithmen!• Brillante Techniken: greedy Algorithmen, dynamische Programmierung, lineare
Programmierung
• Geht das für alle Probleme??
Repetition: P, NP, P=NP• P: Probleme, die in polynomieller Zeit lösbar sind
• NP: (Entscheidungs-)Probleme, die in polynomieller Zeit verifizierbar sind • NP steht für nicht-deterministische Polynomialzeit (Lösung „raten“)
• Klar: P NP (lösen impliziert verifizieren)
• Bis heute unklar: P=NP? Eher unwahrscheinlich…• Kann exponentielle Suche immer vermieden werden?• Theorem beweisen nicht schwerer als Beweis verifizieren? Mathematiker
überflüssig?• Erfüllbarkeit logischer Formeln (SAT): seit 50 Jahren ungelöst
Relevanz: Polynomiell vs Exponentiell
• Die Legende von Sissa• Monarch der Sissa belohnen möchte• Wunsch: Reiskörner auf Schachfeld• Verdopplung: Mehr Reis als in ganz Indien!
• Moore‘s Law hilft nicht viel! • Beispiel: Entscheidbarkeit (SAT)• Exponentiell: 1 Variable mehr pro Jahr• Polynomielle Algorithmen: doppelt so viele Variablen pro Jahr!
• Asymmetrische Kryptographie• Brisanterweise ist Komplexität von Faktorisierung unklar
Heute: NP-Vollständig
• NP-vollständig: Die schwersten Probleme in NP
• Definiert über Reduktion: • Alle Probleme in NP lassen sich in polynomieller Zeit auf jedes NP-
vollständige Probleme reduzieren („sind höchstens so schwer“)
jedes NP Problem
jedes NP-vollständige Problem
Heute: NP-Vollständig
• NP-vollständig: Die schwersten Probleme in NP
• Definiert über Reduktion: • Alle Probleme in NP lassen sich in polynomieller Zeit auf jedes NP-
vollständige Probleme reduzieren („sind höchstens so schwer“)
jedes NP Problem
jedes NP-vollständige Problem
Wie kann ich also versuchen zu beweisen, dass P=NP?
Heute: NP-Vollständig
• NP-vollständig: Die schwersten Probleme in NP
• Definiert über Reduktion: • Alle Probleme in NP lassen sich in polynomieller Zeit auf jedes NP-
vollständige Probleme reduzieren („sind höchstens so schwer“)
jedes NP Problem
jedes NP-vollständige Problem
Wie kann ich also versuchen zu beweisen, dass P=NP?
Es reicht eines zu lösen → allein polynomieller Zeit lösbar.
Heute: NP-Vollständig
• NP-vollständig: Die schwersten Probleme in NP
• Definiert über Reduktion: • Alle Probleme in NP lassen sich in polynomieller Zeit auf jedes NP-
vollständige Probleme reduzieren („sind höchstens so schwer“)
jedes NP Problem
jedes NP-vollständige Problem
Aber: gibt es dennüberhaupt solcheProbleme?
Alle NP Probleme
Erfüllbarkeit der Aussagenlogik (SAT)
Die Schwersten Probleme in NPStephen A. Cook und Leonid Levin (1970)
Die Schwersten Probleme in NPStephen A. Cook und Leonid Levin (1970)
1000e von NP-vollständigen Probleme:die meisten indirekt bewiesen,
durch Reduktion von NP-vollständigem Problem (z.B. SAT)
Alle NP Probleme
Erfüllbarkeit der Aussagenlogik (SAT)
Vollständigkeitsbeweis durch Reduktion
Alle NP Probleme
SAT
3SAT
Independent Set
Alle NP Probleme
SAT
3SAT
Independent Set
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Wenn ich SAT lösen kann,kann ich alle NP Probleme lösen!
Vollständigkeitsbeweis durch Reduktion
Alle NP Probleme
SAT
3SAT
Independent Set
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Wenn ich SAT lösen kann,kann ich alle NP Probleme lösen!
Wenn ich 3SAT lösen kann,kann ich SAT lösen! Also auch alle NP Probleme (transitiv: Polynom + Polynom = Polynom).
Vollständigkeitsbeweis durch Reduktion
Alle NP Probleme
SAT
3SAT
Independent Set
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Poly-Zeit Reduktion
Wenn ich SAT lösen kann,kann ich alle NP Probleme lösen!
Wenn ich 3SAT lösen kann,kann ich SAT lösen! Also auch alle NP Probleme (transitiv: Polynom + Polynom = Polynom).
Wenn ich IS lösen kann,kann ich 3SAT lösen! Also auch alle NP Probleme (transitiv).
Vollständigkeitsbeweis durch Reduktion
Beispiel: MM
Maximum Matching (MM): Gegeben ein ungerichteterGraph G(V,E). Ein Matching ist eine Kantenmenge M E(G), sodass jeder Knote inzident zu maximal einer Kante in M ist. Ein MM ist ein Matching maximaler Kardinalität.
Beispiel: Matching?
5
6
7
3
2
1
4
34
Beispiel: Matching?
5
6
7
3
2
1
4
34
Beispiel: Maximum Matching (MM)?
5
6
7
3
2
1
4
34
Beispiel: Maximum Matching (MM)?
5
6
7
3
2
1
4
34
Beispiel: IS
• Independent Set (IS): Gegeben ein ungerichteter Graph G(V,E). Ein IS ist eine Menge U V(G), sodass {u1,u2} ϵE(G) für u1, u2 ϵ U. Ein Maximum IS (maxIS) ist ein IS maximaler Kardinalität |U|.
Beispiel: IS?
5
6
7
3
2
1
4
34
Beispiel: IS?
5
6
7
3
2
1
4
34
Beispiel: MaxIS?
5
6
7
3
2
1
4
34
Beispiel: MaxIS?
5
6
7
3
2
1
4
34
Beispiel: NP-Vollständigkeit Reduktion
• Angenommen MM ist NP-vollständig.
• Wie kann ich vorgehen, um zu zeigen, dass MaxIS NP-vollständig ist?
• Tipp: Reduktion P1 P2verwende Lösung
transformiere
MaxIS ist NP-vollständig: Beweisidee
MM MaxIS
verwende Lösung
• Zeige Reduktion:
• Zeige: MaxIS ist in NP• Kann ich in polynomieller Zeit Entscheidungsproblem
verifizieren: ist ein gegebenes IS der Größe M gültig?
Poly-Zeit Transformation
MaxIS ist NP-vollständig: Beweisidee
MM MaxIS
verwende Lösung
• Zeige Reduktion:
• Zeige: MaxIS ist in NP• Kann ich in polynomieller Zeit Entscheidungsproblem
verifizieren: ist ein gegebenes IS der Größe M gültig?
Poly-Zeit Transformation
1. Gehe durch alle Kanten, prüfe ob max ein Endpunkt im IS.2. Prüfe ob es wirklich M viele Knoten sind.
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57Kanten ensprechen Knoten!
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
effizient!
Kanten ensprechen Knoten!
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
12
23
35
13
34
67
56
57
berechne Lösung!
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
12
23
35
13
34
67
56
57
entsprechende Kanten sind Matching!
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
12
23
35
13
34
67
56
57
Weshalb? Immer ein gültiges und maximum Matching?
Reduktion
MM MaxIS
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
Ja, Äquivalent:
Knoten in MaxIS unabh.
gdw. Kanten im Matching gültig
(„unabh.“)
maximiere # Knoten im Independent Setgdw
maximiere # Kanten im Matching
Knoten rechts sind benachbart gdwKanten links benachbart sind!
Mengen sollen maximiert werden.
Reduktion
MM MaxIS
1. IS Knoten entsprechen MM Kanten
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
12
23
35
13
34
67
56
57
effizient!
Beweisidee
MM MaxIS
1. IS Knoten entsprechen MM Kanten
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
Gültiges IS muss gültiges Matching sein:
IS Knote blockiert adjazente Knoten = entsprechende Matching Kante blockiert inzidente Kanten!
Beweisidee
MM MaxIS
1. IS Knoten entsprechen MM Kanten
1. Ersetze Kanten durch Knoten
2. Verbinde resultierende Knoten falls ursprüngliche Kanten inzident
1
2
3
4
5
6
7
12
23
35
13
34
67
56
57
Wenn MaxIS effizient lösbar wäre, so müsste auch MM effizient lösbar sein. Widerspruch!
effizient?
Gültiges IS muss gültiges Matching sein:
IS Knote blockiert adjazente Knoten = entsprechende Matching Kante blockiert inzidente Kanten!
• Vertex Cover (VC): Gegeben ein ungerichteter Graph G(V,E). Ein Vertex Cover (VC) ist eine Menge von Knoten U V(G), sodass jede Kante in E(G) inzident zu mind. einem Knoten in U ist. Ein Minimum Vertex Cover (minVC) ist ein Vertex Cover minimaler Kardinalität |U|.
Beispiel: MinVC
5
6
7
3
2
1
4
35
Beispiel: MinVC
5
6
7
3
2
1
4
35
Beispiel: NP-Vollständigkeit Reduktion
• Wie kann ich vorgehen, um zu zeigen, dass MinVCNP-vollständig ist?
Beispiel: NP-Vollständigkeit Reduktion
• Wie kann ich vorgehen, um zu zeigen, dass MinVCNP-vollständig ist?
• Reduktion von MaxIS! Wir wissen: MaxIS is NP-vollständig.
• Zeige Reduktion:
• Zeige: MinVC ist in NP
MinVC ist NP-vollständig: Beweisidee
MaxIS MinVC
verwende Lösung
Poly-Zeit Transformation
• Zeige Reduktion:
• Zeige: MinVC ist in NP
MinVC ist NP-vollständig: Beweisidee
MaxIS MinVC
verwende Lösung
Poly-Zeit Transformation
1. Gehe durch alle Kanten, prüfe ob mind. ein Endpunkt im DS.2. Prüfe, ob auch die Anzahl Knoten stimmt (Entscheidungsproblem).
Reduktion?
P1? P2?
Effizient!
Effizient!
2
3
5
1
4
8
6
7Vertex Cover
schwer?
Reduktion
MaxIS MinVC
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
triviale Transformation
Reduktion
MaxIS MinVC
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
Löse!
Reduktion
MaxIS MinVC
Gegeben MinVC S:
MaxIS = V\S
„die anderen Knoten“
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
Nehme die anderen Knoten!
Reduktion
MaxIS MinVC
Gegeben MinVC S:
MaxIS = V\S
„die anderen Knoten“
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
Menge S berührt jede Kante genau dann wenn restliche Knoten
unabhängig sind.
triviale Transformation!
Reduktion
MaxIS MinVC
Gegeben MinVC S:
MaxIS = V\S
„die anderen Knoten“
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
Sicher keine anderen IS Knoten in der Nachbarschaft: alle Nachbarkanten sinddurch VC Knoten abgedeckt.
triviale Transformation!
Menge S berührt jede Kante genau dann wenn restliche Knoten
unabhängig sind.
Reduktion
MaxIS MinVC
Gegeben MinVC S:
MaxIS = V\S
„die anderen Knoten“
triviale Transformation!
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
minimale Anzahl Knoten im VC =maximal viele restliche Knoten!
Menge S berührt jede Kante genau dann wenn restliche Knoten
unabhängig sind.
minimale Anzahl Knoten im VC =maximal viele restliche Knoten!
Reduktion
MaxIS MinVC
Gegeben MinVC S:
MaxIS = V\S
„die anderen Knoten“
triviale Transformation!
2
3
5
1
4
8
6
7
2
3
5
1
4
8
6
7
Wenn MinVC effizient lösbar wäre, so müsste auch MaxIS effizient lösbar sein. Widerspruch!
effizient?
Menge S berührt jede Kante genau dann wenn restliche Knoten
unabhängig sind.
Bemerkungen• Warnung 1: Details sind wichtig!
Harte Probleme (NP) Einfache Probleme (P)
3SAT 2SAT, Horn SAT
Traveling Salesman Minimum Spanning Tree
Longest Path Shortest Path
Independent Set Independent Set auf Bäumen
Balanced Cut Minimum Cut
• Warnung 2: Es gibt Probleme, die sind schwerer als NP-schwer! Z.B. gar nicht lösbar.
• Bemerkung 1: Selbst NP-vollständige Probleme lassen sich in der Praxis oft gut lösen: Gebiet der Approximationsalgorithmen.
• Bemerkung 2: NP-vollständige Probleme haben bisher Quantencomputern stand gehalten. (Faktorisierung nicht: aber fast niemand glaubt heute, dass FaktorisierungNP-vollständig ist.)
Zusammenfassung
• Komplexitätstheorie: eine der faszinierendsten (und relevantesten) Themen unserer Zeit• Insbesondere polynomiell vs nicht polynomiell• Aber auch allgemein: Komplexität von Zahlen- und
Matritzenmultiplikation ungelöst!
• Reduktion: Nicht nur um Probleme zu lösen, sondern auch um zu zeigen, dass sie nicht lösbar sind
• Achtung: Reduktionen sind gerichtet• Auf ein NP vollständiges Problem reduzieren ≠ von einem NP
vollständigen Problem reduzieren
Nächste Woche
Alle NP Probleme
SAT
Backup
Alle NP Probleme Circuit SAT
• Circuit SAT• Boolean Circuit in DAG Form• Verallgemeinerung von SAT: Finde
Belegung für „?“ sodass Output wahr, oder sage dass das unmöglich ist
• Operatoren: • AND, OR: in-degree 2• NOT: in-degree 1• Bekannte Inputs: true-false• Unbekannte Inputs: ?
true ? ? ?
AND OR AND
NOT OR
AND
output
Alle NP Probleme Circuit SAT
true false true true
AND OR AND
NOT OR
AND
output
• Circuit SAT• Boolean Circuit in DAG Form• Verallgemeinerung von SAT: Finde
Belegung für „?“ sodass Output wahr, oder sage dass das unmöglich ist
• Operatoren: • AND, OR: in-degree 2• NOT: in-degree 1• Bekannte Inputs: true-false• Unbekannte Inputs: ?
Circuit SATBeliebiges NP-Problem X
• Klingt schwierig: Was wissen wir über X? Gar nichts…
• Nicht ganz: Gegeben Probleminstanz I und Lösung L: es gibt einen polynomiellen Algorithmus, der prüft, ob L eine Lösung für I ist
• Diesen Algorithmus kann man immer als Circuit polynomiellerGröße darstellen
• Setze bekannte Inputs auf I und unbekannte Inputs auf L
• Die erfüllenden Belegungen für L sind die Lösungen für unser Problem X! Die Reduktion ist komplett.