Man zeige, daß P = NP oder P = NP!

Werbung
Anmerkungen zu NP-Vollständigen Problemen
1) Ziel: Man zeige, daß P = N P oder P 6= N P !
Hierbei ist P die Klasse der Probleme, die deterministisch in Polynomialzeit berechnet
werden können. N P ist die Klasse der Probleme, für die es einen nichtdeterministischen
Algorithmus gibt, der in polynomieller Laufzeit die Eingaben akzeptiert. (Die exakten
Definitionen finden sich im Buch von Schöning).
Dies ist das zentrale, seit mehr als 30 Jahren ungelöste, Problem in der Theoretischen
Informatik!
2) Ansatz: Betrachte N P -vollständige Probleme. Hat man für (irgend) ein solches
Problem gezeigt, daß dies deterministisch in Polynomialzeit berechnet werden kann, so
ist P = N P bewiesen. Wenn andererseits für (irgend) ein N P -vollständiges Problem
nachgewiesen werden kann, daß dieses nicht in Polynomialzeit berechnet werden kann, so
ist natürlich P 6= N P bewiesen.
3) NP-Vollständigkeit: Ein Problem ist N P -vollständig, wenn es
i) in N P ist (d. h. es gibt einen nichtdeterministischen Algorithmus – Raten ist erlaubt
– der in polynomieller Laufzeit die Eingaben akzeptiert),
ii) N P –hart ist (d. h. mindestens so schwer wie alle anderen Probleme in N P ).
4) Erfüllbarkeit (Satisfiablity): Für das Erfüllbarkeits-Problem kann mit einem Satz
von Cook gezeigt werden, daß dieses N P –vollständig ist.
Damit hat man ein N P -vollständiges Problem gefunden. Für weitere Probleme (u.
a. für die im Buch von Schöning betrachteten) reicht dann zum Nachweis der N P Vollständigkeit aus, zu zeigen, daß sie mindestens so schwer sind wie das ErfüllbarkeitsProblem. Dies geschieht durch eine Kette von (polynomiellen) Reduktionen.
5) 3KNF-SAT: Das erste Glied in dieser Kette ist in der Regel 3KNF-SAT - also das
Erfüllbarkeitsproblem für Boole’sche Formeln (in konjunktiver Normalform) mit höchstens
drei Literalen pro Klausel.
Von 3KNF-SAT kann man weiter reduzieren auf Probleme, wie Rucksack, Clique, 3Färbbarkeit, gerichteter Hamilton-Kreis.
Man zeigt also zunächst, daß 3KNF-SAT mindestens so schwer ist wie Erfüllbarkeit, und
dann, daß die o. g. Probleme mindestens so schwer sind wie 3KNF-SAT. Damit sind
sie insbesondere auch mindestens so schwer wie Erfüllbarkeit und somit N P -vollständig.
Die direkte Reduktion (ohne den Umweg über 3KNF-SAT) von Erfüllbarkeit auf die o.
g. Probleme ist halt schwieriger.
Man hat bis heute auf diese Weise hunderte N P -vollständige Probleme angeben können.
Hoffnung ist natürlich einerseits, daß eines dieser Probleme sich für die Analyse der zentralen Frage P = N P ? besonders gut eignet. Andererseits, ist die N P -Vollständigkeit
auch ganz allgemein ein Grad für die Schwierigkeit eines Problems.
6) Reduktion:. Nehmen wir an, ein Problem A werde von einer Turing-Machine TA
berechnet und ein Problem B von einer Turing-Maschine TB .
Man sagt nun, Problem A ist auf Problem B polynomial reduzierbar, wenn es eine
Codierungs-Funktion gibt, die in Polynomialzeit die Eingaben für die Turing-Maschine
TA in Eingaben für Turing-Maschine TB übersetzt.
Dann kann man Problem A natürlich auch berechnen, indem man zunächst die Eingaben
für TA in solche für TB übersetzt und dann mit Turing Maschine TB für diese speziellen
Eingaben das Problem B berechnet.
In diesem Sinne ist also Problem B mindestens so schwer wie Problem A.
Angenommen, man könnte nun Problem B allgemein (für alle Eingaben) in Polynomialzeit
lösen. Dann hielte die Turing-Maschine TB natürlich auch für die speziellen Eingaben,
die aus der Übersetzung von Problem A resultieren, nach nur polynomial vielen Schritten
an, und man hätte also sofort nachgewiesen, daß dann auch Problem A in Polynomialzeit
berechnet werden kann.
7) Beispiel: (Reduktion von Hamilton-Kreis auf Traveling Salesman)
a) Hamilton-Kreis:
Eingabe: Graph G mit n Knoten {1, 2, ..., n}
Problem: Gibt es einen Kreis durch alle n Knoten?
b) Traveling Salesman:
Eingabe: Eine n × n-Matrix (Mij ) von Entfernungen zwischen n Städten und eine Zahl c.
Problem: Gibt es eine Rundreise durch alle n Städte mit Gesamtlänge höchstens c?
Reduktion: Sei der Graph G als Adjazenzmatrix eingegeben, d. i. eine n × n Matrix (aij )
mit aij = 1, wenn i und j durch eine Kante verbunden sind, und aij = 0, wenn i und j
nicht durch eine Kante verbunden sind.
Nun codieren wir diese Matrix in eine Eingabe für ein spezielles Traveling-SalesmanProblem um. Dazu setzt man einfach Mij = 1, genau wenn aij = 1 ist und Mij = 2, wenn
aij = 0 ist. Zusätzlich wählt man den Parameter für die höchstzulässige Gesamtlänge der
Rundreise als c = n.
Man muß also nur die Nullen in der Matrix aij in Zweien abändern und zusätzlich noch
den Parameter c = n setzen. Diese Übersetzung geht sicher in Polynomialzeit.
Gibt es jetzt einen Kreis in G, der durch alle n Knoten geht, so folgt man einfach diesem
Kreis und hat eine Rundreise der Länge n gefunden. Gibt es umgekehrt keinen solchen
Kreis, so muß in jeder Rundreise des speziellen (mit Hilfe der obigen Codierung erhaltenen) Traveling-Salesman-Problems mindestens eine Distanz Mij = 2 sein. Damit ist die
Gesamtlänge jeder Rundreise aber mindestens n + 1 und es gibt also keine Rundreise der
Länge n.
Herunterladen