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.