STAMMVORLESUNG KOMPLEXITÄTSTHEORIE WS 2002/03 (Version 13.10.2002) Vorlesung: Skript: Thomas Hofmeister Ingo Wegener mit einigen Überarbeitungen von Detlef Sieling und weiteren kleinen Änderungen Universität Dortmund Lehrstuhl Informatik 2 44221 Dortmund Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Autors unzulässig und strafbar. Das gilt besonders für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. c Prof. Dr. Ingo Wegener, 1990-2003. Inhaltsverzeichnis 1 Einleitung 1 1.1 Was ist Komplexitätstheorie? . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2 Reduktionen und untere Schranken für konkrete Probleme 2.1 Reduktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 2.2 Eine Ω(n log n)-Schranke für spezielle Sortierprobleme . . . . . . . . . . . . 10 2.3 Untere Schranken für Probleme aus der Algorithmischen Geometrie . . . . 12 3 NP-Vollständigkeit und der Satz von Cook 17 3.1 Probleme, Sprachen und Codierungen und die Klasse P . . . . . . . . . . . 17 3.2 Nichtdeterministische Turingmaschinen und die Klasse NP . . . . . . . . . 19 3.3 NP-Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4 Die NP-Vollständigkeit wichtiger Probleme . . . . . . . . . . . . . . . . . . 21 4 Techniken zum Beweis der NP-Vollständigkeit 22 4.1 Dreidimensionales Matching — eine Reduktion mit verbundenen Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2 NP-Vollständigkeitsbeweise durch Restriktion . . . . . . . . . . . . . . . . 24 4.3 NP-Vollständigkeitsbeweise durch lokale Ersetzung . . . . . . . . . . . . . 27 4.4 Zwei weitere Reduktionen mit verbundenen Komponenten . . . . . . . . . 31 5 Probleme, Teilprobleme und ihre Komplexitätsanalyse 36 5.1 Schwierige Probleme mit einfachen Teilproblemen . . . . . . . . . . . . . . 36 5.2 Die Komplexitätsanalyse des Färbbarkeitsproblems . . . . . . . . . . . . . 37 5.3 Pseudopolynomielle Algorithmen und starke NP-Vollständigkeit . . . . . . 43 5.4 Die starke NP-Vollständigkeit von 3-PARTITION . . . . . . . . . . . . . . 43 5.5 Methoden zum Beweis der starken NP-Vollständigkeit . . . . . . . . . . . . 47 6 Die Komplexität von Suchproblemen 51 6.1 Turing-Reduzierbarkeit, NP-harte, NP-leichte und NP-äquivalente Probleme 51 6.2 Methoden zum Beweis, dass ein Problem NP-hart ist . . . . . . . . . . . . 51 i 7 Die polynomielle Hierarchie 52 7.1 Die Klasse NPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.2 Die Klasse co-NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.3 Die polynomielle Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8 Komplexitätstheorie und probabilistische Methoden 59 8.1 Probabilistische Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . . 59 8.2 Probabilistische Komplexitätsklassen, eine Übersicht . . . . . . . . . . . . 63 9 Interaktive Beweise, Zero-Knowledge-Beweise und das PCP-Theorem 65 9.1 Beweisorientierte Charakterisierungen bekannter Komplexitätsklassen . . . 65 9.2 Ist das Graphenisomorphieproblem NP-vollständig? . . . . . . . . . . . . . 67 9.3 Zero-Knowledge-Beweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.4 Das PCP-Theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 10 Die Komplexität von Approximationsproblemen 82 10.1 Gütekriterien für Approximationsalgorithmen . . . . . . . . . . . . . . . . 82 10.2 Klassische Methoden zum Nachweis der Nichtapproximierbarkeit von Optimierungsproblemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 10.3 Nichtapproximierbarkeit und das PCP-Theorem . . . . . . . . . . . . . . . 89 11 Komplexitätsklassen für Speicherplatzbedarf 94 11.1 Speicherplatzklassen und eine Charakterisierung kontextsensitiver Sprachen 94 11.2 Der Satz von Savitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 11.3 PSPACE-vollständige Probleme . . . . . . . . . . . . . . . . . . . . . . . . 97 11.4 Das LBA-Problem und der Satz von Immerman/Szelepcsényi . . . . . . . . 100 12 Vollständige Probleme in P, NTAPE(log n) und #P 101 12.1 Log-SPACE-Reduktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 12.2 Ein P-vollständiges Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 102 12.3 Ein NTAPE(log n)-vollständiges Problem . . . . . . . . . . . . . . . . . . . 104 12.4 Die Klasse #P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 13 Nichtuniforme Komplexitätsklassen 107 13.1 Schaltkreise und zugehörige Komplexitätsmaße . . . . . . . . . . . . . . . . 107 13.2 Simulationen von Turingmaschinen durch Schaltkreise . . . . . . . . . . . . 108 13.3 Simulation von Schaltkreisen durch nichtuniforme Turingmaschinen . . . . 111 ii 13.4 Eine Charakterisierung der Sprachen mit polynomiellen Schaltkreisen . . . 115 13.5 Probleme in BPP haben polynomielle Schaltkreise . . . . . . . . . . . . . . 117 13.6 Kann SAT polynomielle Schaltkreise haben? . . . . . . . . . . . . . . . . . 118 13.7 Branchingprogramme und nichtuniformer Platz . . . . . . . . . . . . . . . 121 14 Untere Schranken für die Komplexität boolescher Funktionen 123 14.1 Schaltkreisgröße . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 14.2 Formelgröße und Branchingprogrammgröße . . . . . . . . . . . . . . . . . . 124 14.3 Reduktionskonzepte für Schaltkreise und zugehörige Komplexitätsklassen . 126 14.4 Schaltkreise mit unbeschränktem Fan-in und konstanter Tiefe . . . . . . . 129 14.5 Einige Beispiele für Reduktionen . . . . . . . . . . . . . . . . . . . . . . . 139 iii iv 1 Einleitung 1.1 Was ist Komplexitätstheorie? Für Informatikerinnen und Informatiker ist es nicht ausreichend, ein Problem zu lösen. Ineffiziente Lösungen sind oft nicht viel mehr wert als gar keine Lösung. In der Vorlesung EFFIZIENTE ALGORITHMEN werden Methoden zum Entwurf effizienter Algorithmen bereit gestellt. Was macht man jedoch, wenn man für ein Problem keinen effizienten Algorithmus findet? Oder: Wie kann man sich absichern, dass die Konkurrenz für das gleiche Problem nicht wesentlich effizientere Algorithmen kennt oder entdeckt? Die beste Antwort wäre die Angabe einer entsprechenden unteren Schranke“. Was heißt ” das? Die Zeitkomplexität TP (n) eines Problems P , bei dem n die Eingabegröße misst, ist das Infimum aller Wachstumsordnungen W (n) (z.B. Θ(n), Θ(n log n), Θ(n3 ), Θ(2n )), so dass sich das Problem mit O(W (n)) Rechenschritten lösen lässt. Die worst case Rechenzeit eines Algorithmus für P ist also eine obere Schranke“ für TP (n). Analog ist U (n) ” eine untere Schranke“ für TP (n), wenn jeder Algorithmus zur Lösung von P mindestens ” Ω(U (n)) Rechenschritte benötigen muss. Der Traum der Komplexitätstheorie besteht darin, für alle wichtigen Probleme P die Zeitkomplexität TP (n) zu bestimmen. Leider sind wir von einer Realisierung dieses Traumes weit entfernt. Die einzige nicht triviale untere Schranke, die im Grundstudium gelehrt wird, ist die folgende. Jeder auf Vergleichen beruhende Sortieralgorithmus benötigt für Eingabefolgen der Länge n im worst case dlog (n!)e ≈ n log n − 1.44n und im average case dlog (n!)e − 1 Vergleiche. An Hand dieser unteren Schranke lässt sich feststellen, dass QUICK SORT im average case sehr gut ist. Im worst case ist QUICK SORT von der unteren Schranke weit entfernt. Das kann sowohl an der unteren als auch an der oberen Schranke liegen. Aufgrund von HEAP SORT wissen wir, dass die untere Schranke gut ist und QUICK SORT im worst case schlecht ist. Die Komplexitätstheorie gibt also befriedigende Antworten für das allgemeine Sortierproblem. Die Komplexität im worst und im average case beträgt Θ(n log n). Aber leider bildet das Sortierproblem eine Ausnahme. Für die folgende Reihe von wichtigen Problemen sind effiziente, d.h. polynomielle Algorithmen bekannt. • Matrizenmultiplikation: O(n2.39... ). • Kürzeste Wege zwischen allen Knotenpaaren in bewerteten Graphen: O(n3 ). • Flussprobleme: O(n3 ). • Matchingprobleme: O(n2.5 ). Die besten unteren Schranken für diese Probleme sind aber die trivialen unteren Schranken, die besagen, dass im worst case jeder Teil der Eingabe gelesen werden muss, also 1 Ω(n2 ) in den betrachteten Fällen. Diese triviale Schranke ist sogar in manchen anderen Fällen optimal: Kürzester Weg von i nach j: Θ(n2 ), falls alle Kanten im Graphen existieren und mit Kantenkosten belegt sind. Depth-First Search, Breadth-First Search, Zusammenhangskomponenten, Zweizusammenhangskomponenten, starke Zusammenhangskomponenten: Θ(n + e). Minimale Spannbäume: Θ(n2 ). Dies ist nur optimal, wenn alle Kanten im Graph existieren. Das Problem der Komplexitätstheorie besteht also darin, dass es für fast alle konkreten, wichtigen Probleme bisher nicht möglich ist, nicht triviale untere Schranken für die Komplexität zu beweisen. Woran liegt das? Eine nicht triviale obere Schranke für die Komplexität eines Problems erhalten wir, indem wir einen Algorithmus für das Problem entwerfen und seine Rechenzeit nach oben abschätzen. Für den Beweis einer unteren Schranke U (n) müssen wir zeigen, dass alle Algorithmen, die das Problem lösen, Ω(U (n)) Rechenschritte benötigen. Die Menge aller Algorithmen, die ein Problem lösen, ist aber eine schwer fassbare Menge. An dieser Stelle kann man die Komplexitätstheorie links liegen lassen, da die wichtigen Probleme (im Augenblick) nicht lösbar sind, oder man kann den Weg wählen, den die Wissenschaft in ähnlichen Situationen zu gehen pflegt. Man versucht einfachere Probleme zu lösen, die aber doch wichtige Rückschlüsse auf die eigentlichen Probleme zulassen. Dies führte in der Komplexitätstheorie zur Betrachtung der relativen Komplexität von Problemen. Wenn man schon die Komplexität eines Problems nicht angeben kann, so möchte man wenigstens vergleichen, welche Probleme schwerer als andere sind. Dies führt zu Aussagen wie der folgenden: Problem A lässt sich auf Problem B reduzieren (bzgl. eines geeigneten Reduktionsbegriffes R, Notation A ≤R B). Dies bedeutet, dass A im wesentlichen“ (was dies genau heißt, ” hängt von R ab) nicht schwerer als B ist. Also: Jeder effiziente Algorithmus für B führt unmittelbar zu einem im wesentlichen“ gleich effizienten Algorithmus für A. ” Aber auch: Jede untere Schranke für A führt unmittelbar zu einer im wesentlichen“ gleich ” großen unteren Schranke für B. Besonders aussagekräftig sind also Aussagen wie A ≤R B und B ≤R A, d.h. A und B sind im wesentlichen gleich schwer. Im Mittelpunkt der Entwicklung und der praktischen Bedeutung steht dabei die Klasse der NP-vollständigen Probleme, eine Klasse von Problemen, die im folgenden Sinne gleich schwer sind. Entweder gibt es für jedes NP-vollständige Problem einen Algorithmus mit polynomieller Laufzeit (also einen effizienten Algorithmus) oder es gibt für kein NP-vollständiges Problem einen polynomiellen Algorithmus. Es wird allgemein angenommen, dass die zweite Möglichkeit der Wahrheit entspricht. Man kennt inzwischen Tausende von NP-vollständigen Problemen, darunter sind viele wichtige Probleme: • Problem des Handelsreisenden (Traveling Salesman Problem TSP). • Stundenplanprobleme. 2 • Gibt es in einem Graphen eine bestimmte Anzahl unabhängiger Knoten, das sind Knoten, zwischen denen keine Kante existiert? • Gibt es für einen Graphen einen Teilgraphen mit vorgegebener Kantenzahl, so dass sich dieser Graph so auf ein Blatt Papier zeichnen lässt, dass sich Kanten nicht schneiden? • Gibt es eine Belegung einer Menge von booleschen Variablen, so dass eine Menge von vorgegebenen Klauseln erfüllt ist? (Satisfiability Problem SAT). • Berechnen zwei Schaltkreise S1 und S2 verschiedene boolesche Funktionen? • Hat ein Graph eine durch k beschränkte Bandweite, d.h. können die Knoten so nummeriert werden, f : V → {1, . . . , |V |} bijektiv, dass |f (i) − f (j)| ≤ k für alle (i, j) ∈ E ist? • Enthält ein Graph einen bestimmten Teilgraphen? (z. B. CLIQUE). • Hat ein Graph einen Spannbaum, bei dem jeder Knotengrad höchstens k ist? • Es seien S1 , . . . , Sm Teilmengen von S und k ≤ m. lässt sich S1 ∪ . . . ∪ Sm bereits als Vereinigung von k der Mengen bilden? (Überdeckungsproblem bei der Minimierung boolescher Funktionen). P P • s1 , . . . , sn ∈ . Gibt es A ⊆ {1, . . . , n} mit i∈A si = i6∈A si ? Kann also die Menge bzgl. ihrer Größe zweigeteilt werden? (PARTITION). • s1 , . . . , sn ∈ . Können die Objekte mit den Größen s1 , . . . , sn in höchstens k Kästen der Größe B gepackt werden? (Bin Packing Problem BPP). • (Datenbanken). Gegeben eine Menge A von Attributnamen, eine Menge F von funktionalen Abhängigkeiten, eine funktionale Abhängigkeit ist ein Paar (A0 , A00 ) mit A0 , A00 ⊆ A. Sei A1 ⊆ A. Verletzt A1 die Boyce-Codd Normalform für < A, F >? • Rucksackproblem (Knapsack Problem KP). • Gegeben a, b und c. Gibt es eine positive Zahl x < c mit x2 ≡ a mod b? • Akzeptieren die beiden NFAs A1 und A2 verschiedene Sprachen, wobei das Alphabet sogar als einelementig vorausgesetzt werden kann? Diese bei weitem unvollständige Liste soll nur zeigen, aus wie verschiedenen Gebieten die NP-vollständigen Probleme stammen. Wenn man also ein Problem hat, für das man weder selber noch in der Literatur einen effizienten Algorithmus findet und für das man auch nicht beweisen kann, dass das Problem schwierig ist, gibt es nun die Möglichkeit zu zeigen, dass das Problem NP-vollständig ist. Dies bedeutet, dass kein Mensch für das Problem einen effizienten Algorithmus kennt. 3 Denn sonst würde dieser Mensch für alle NP-vollständigen Probleme effiziente Algorithmen kennen und er oder sie wäre weltberühmt. Wenn sich ein Problem als NP-vollständig erweist, kann man beruhigt vor den Auftraggeber treten und begründen, warum man keinen effizienten Algorithmus gefunden hat. Weit mehr: Vernünftigerweise sollte man die Suche nach einem effizienten Algorithmus für das Problem abbrechen und überlegen, wie man mit dem Problem trotzdem fertig wird. Die Vorlesung EFFIZIENTE ALGORITHMEN stellt Methoden auch dafür zur Verfügung: Heuristische Algorithmen, Approximationsalgorithmen, usw. Üblicherweise wird man trotz der langen Liste bekannter NP-vollständiger Probleme sein“ Problem nicht in der Liste finden. Daher ist ein Anliegen dieser Vorlesung die ” Vermittlung von Methoden, um für Probleme zu beweisen, dass sie NP-vollständig sind, oder allgemeiner zu beweisen, dass sie bzgl. bestimmter Reduktionsbegriffe mindestens so schwierig wie andere Probleme sind. Aus eigener Erfahrung weiß ich, dass viele praktische oder angewandte Informatikerinnen und Informatiker noch Anfang der 80er Jahre die Komplexitätstheorie als viel zu theoretisch und daher irrelevant für ihr praktisch relevantes“ Gebiet ansahen. Als aber in immer ” mehr Vorträgen, z.B. auf den Gebieten Datenbanken, Betriebssysteme, VLSI-Entwurf, ineffiziente Algorithmen mit der NP-Vollständigkeit der gelösten Probleme gerechtfertigt wurden, haben diese Informatikerinnen und Informatiker nach und nach sich die Theorie der NP-Vollständigkeit und damit das Herzstück der Komplexitätstheorie erarbeitet. Heute muss diese Kenntnis zum Handwerkszeug aller Informatikerinnen und Informatiker gezählt werden. Allerdings gibt es neue Zweifel an der Komplexitätstheorie, da viele NP-vollständige Probleme in der Praxis auftreten und gelöst werden. Wenn NP-vollständige Probleme gar nicht praktisch schwer“ sind, wozu dann Komplexitätstheorie? Nun, es ist nötig, die ” Ergebnisse nicht zu weitgehend zu interpretieren. NP-Vollständigkeit heißt, dass es vermutlich keine Algorithmen mit polynomieller worst case Rechenzeit gibt, nicht mehr und nicht weniger. Es ist also nicht ausgeschlossen, dass es Algorithmen gibt, die für viele oder für die typischen Eingaben schnell sind und nur in relativ wenigen Situationen lange Zeit benötigen. Bei der Lösung von Optimierungsproblemen ist man in den Anwendungen oft mit fast optimalen Lösungen zufrieden. Es kann effizient möglich sein, eine fast optimale Lösung zu berechnen, wenn es schwierig ist, eine optimale Lösung zu berechnen. Die moderne Komplexitätstheorie hat auf alle Entwicklungen im Algorithmenbereich reagiert und ist daran interessiert, für jeden Algorithmentyp die schwierigen von den leichten Problemen zu trennen. Wir konzentrieren uns hier auf die konkrete Komplexitätstheorie, in der die Komplexität konkreter Probleme untersucht wird. Die strukturelle Komplexitätstheorie dagegen untersucht strukturelle Eigenschaften von Komplexitätsklassen. Teilweise hat sie dabei ein Eigenleben entwickelt. Teilweise sind derartige Untersuchungen aber auch nötig, um schließlich auf die Komplexität konkreter Probleme zurückschließen zu können. In dieser einführenden Vorlesung wird die strukturelle Komplexitätstheorie bestenfalls angerissen. Zusammenfassend soll mit dieser Vorlesung KOMPLEXITÄTSTHEORIE erreicht wer- 4 den, dass die Hörerinnen und Hörer lernen, wie Probleme bzgl. ihrer Komplexität klassifiziert werden können. Sie sollen damit in die Lage versetzt werden, den Schwierigkeitsgrad von konkreten Problemen einzuschätzen und damit auch die Güte von Algorithmen abzuschätzen. 1.2 Überblick Die Inhalte der Vorlesung GRUNDBEGRIFFE DER THEORETISCHEN INFORMATIK werden vorausgesetzt. Insbesondere benutzen wir die Rechnermodelle Registermaschine und Turingmaschine. Die Churchsche These besagt, dass die Menge der intuitiv berechenbaren Funktionen (die Menge der intuitiv automatisch lösbaren Probleme) gleich der Menge der von Turingmaschinen berechenbaren Funktionen ist. Diese stimmt beweisbar mit der Menge der von Registermaschinen berechenbaren Funktionen oder der Menge der mit gängigen Programmiersprachen berechenbaren Funktionen überein. Der Übergang zwischen diesen Rechnermodellen beeinflusst die Rechenzeit und den Speicherplatz nur polynomiell. So ist die Klasse P der in Polynomialzeit berechenbaren Funktionen robust gegen Modelländerungen und kann als Klasse der effizient lösbaren Probleme bezeichnet werden. Schließlich setzen wir Grundzüge der NP–Vollständigkeitstheorie voraus und wiederholen sie nur kurz. In Kap. 2 werden Reduktionsbegriffe allgemein diskutiert. Mit Hilfe linearer Reduktionen werden optimale untere Schranken für das spezielle Sortierproblem, das nur reelle Zahlen als Inputs zulässt, und Probleme aus der Algorithmischen Geometrie bewiesen. Dieses kurze Kapitel soll exemplarisch zeigen, wie Ergebnisse der Komplexitätstheorie im Idealfall aussehen. Die konkreten unteren Schranken (in einem realistisch eingeschränkten Berechnungsmodell) zeigen die asymptotische Optimalität bekannter Algorithmen für wichtige Probleme. In Kap. 3 werden Grundzüge der NP–Vollständigkeitstheorie kurz wiederholt. Die zentrale Rolle des Satzes von Cook wird diskutiert. In Kap. 4 wird für weitere grundlegende Probleme gezeigt, dass sie NP-vollständig sind. An Hand von Beispielen wollen wir Methoden zum Beweis der NP-Vollständigkeit von Problemen einüben. Es kann nun sein, dass ein Problem zwar schwierig ist, wir aber das Problem nur unter gewissen Nebenbedingungen lösen wollen. Es ist also wichtig, für Teilprobleme zu entscheiden, ob sie ebenfalls NP-vollständig sind. Methoden und Beispiele für diese Aufgabenstellung werden in Kap. 5 behandelt. In Kap. 6 untersuchen wir NP-harte Probleme. Außerdem verallgemeinern wir unsere Betrachtungen von Entscheidungsproblemen (nur Ausgabe Ja“ oder Nein“ möglich) ” ” und damit Sprachen auf allgemeine Probleme und damit Funktionen. Der Unterschied ist nicht sehr groß. Der Begriff der polynomiellen Reduktion wird durch den Begriff der Turing-Reduktion ergänzt. Es gibt zwei weitere zentrale Methoden, um schwierige Probleme zu behandeln, nämlich 5 den Einsatz randomisierter Verfahren und die Einschränkung, Optimierungsprobleme nicht mehr exakt, sondern nur noch approximativ lösen zu wollen. Um für diese Teilgebiete eine Komplexitätstheorie zu entwickeln, benötigen wir einen Einblick in die strukturelle Komplexitätstheorie. Die Ergebnisse dieser Kap. 7 und 9 werden dann in Kap. 8 und 10 benutzt. Wir fragen uns, welche Probleme unter der Annahme P 6= NP wohl weder in P liegen noch NP-vollständig sind. Darüber hinaus beschreiben wir die sogenannte polynomielle Hierarchie. Randomisierte Algorithmen, die entweder nur eine erwartete Rechenzeit garantieren oder nur mit hoher Wahrscheinlichkeit korrekt rechnen, sind von erheblicher praktischer Bedeutung. Ohne sie ist z. B. die moderne Kryptographie nicht denkbar. In Kap. 8 stellen wir eine Komplexitätstheorie für probabilistische Rechner vor. In Kap. 9 werden wir bekannte Komplexitätsklassen auf moderne Weise neu charakterisieren. Um zu entscheiden, ob x ∈ L ist, benötigen wird einen Beweis“, dass x ∈ L ” ist. Hier werden Beweise und interaktive Beweise formalisiert, um Komplexitätsklassen zu beschreiben. Dies führt zu einem interessanten Argument, warum das Graphenisomorphieproblem wohl nicht NP-vollständig ist. Wir fragen uns dann, ob jemand uns etwas beweisen kann, ohne dass wir außer der Tatsache, dass unser Gegenüber eine Tatsache beweisen kann, etwas lernen. Insbesondere können wir einem Dritten dieselbe Tatsache nicht beweisen, wenn wir es nicht schon vorher konnten. Diese scheinbar abstruse Frage hat einen sehr realen Hintergrund, wenn uns z. B. jemand über ein unsicheres Kommunikationsmedium davon überzeugen will, dass sie oder er ein gültiges Passwort kennt. Für das Graphenisomorphieproblem und das Hamiltonkreisproblem werden sogenannte ZeroKnowledge-Beweise vorgestellt. Wir verallgemeinern schließlich unsere Diskussion über Beweissysteme auf probabilistisch überprüfbare Beweise. Auch dies führt zunächst zu neuen Charakterisierungen bekannter Komplexitätsklassen und schließlich zum wichtigsten Resultat der Theoretischen Informatik der letzten 10 Jahre, dem PCP-Theorem. Es handelt sich dabei um eine neue Charakterisierung von NP, die erhebliche Konsequenzen hat. In der Vorlesung EFFIZIENTE ALGORITHMEN werden für NP-vollständige Probleme wie das Rucksackproblem oder das Traveling Salesman Problem TSP Approximationsalgorithmen angegeben. Für das TSP werden aber polynomielle Approximationsalgorithmen nur für den Spezialfall entworfen, dass die Kostenmatrix der Dreiecksungleichung genügt. In Kap. 10 werden wir den Grund dafür kennen lernen. Gibt es einen polynomiellen Approximationsalgorithmus für das allgemeine TSP, dann gibt es für alle NP-vollständigen Probleme polynomielle Algorithmen. Dieses Resultat ist erstaunlich einfach zu beweisen. Dies gilt ähnlich für die Nichtapproximierbarkeit verschiedener anderer Probleme. Einen Durchbruch für den Beweis weiterer Nichtapproximierbarkeitsbeweise liefert das PCP-Theorem. Einige Konsequenzen dieses Theorems werden vorgestellt. Während wir uns bis hierher um die Rechenzeit gekümmert haben, wird in Kap. 11 eine analoge Theorie für den Speicherplatzbedarf aufgebaut. Erstaunlicherweise bricht“ die ” zugehörige Hierarchie zusammen“. ” 6 In Kap. 12 wollen wir versuchen, einfache Probleme bzgl. ihrer Komplexität genauer zu klassifizieren. Dazu gehören Probleme, die in polynomieller Zeit bzw. mit logarithmischem Platz berechenbar sind. Danach werden Anzahlprobleme“ untersucht. Ist die ” Frage wieviele Hamiltonkreise enthält ein Graph?“ schwieriger zu beantworten als die ” Frage Enthält der Graph einen Hamiltonkreis?“ oder nicht? ” In den abschließenden Kapiteln wollen wir uns von dem klassischen Konzept sequentieller, uniformer Rechner entfernen. In Kap. 13 gehen wir zu nichtuniformen Rechnermodellen über. Ein Programm ist uniform, da z.B. ein Sortierprogramm in der Lage ist, beliebig lange Folgen von Objekten zu sortieren. Dagegen ist ein Schaltkreis nichtuniform, da ein Additionsschaltkreis nur Zahlen einer bestimmten Zahlenlänge addieren kann. Mit Schaltkreisen sind alle Probleme berechenbar, für jede boolesche Funktion gibt es z.B. die DNF. Dagegen gibt es für uniforme Rechner nicht berechenbare Probleme, z.B. das Halteproblem. Wir werden nichtuniforme Komplexitätsklassen untersuchen. Schaltkreise, Formeln und Branchingprogramme sind die wichtigsten nichtuniformen Rechnermodelle. Für diese Modelle und für geeignet eingeschränkte Modellvarianten gibt es nicht triviale untere Schranken für konkrete Probleme. Derartige untere Schranken werden in Kapitel 14 dargestellt. 1.3 Literatur • Balcázar, J.L.; Diaz, J.; Gabarró, J.: Structural Complexity I, Springer, 1988 (bes. für Kap. 7 und 12). • Garey, M.R.; Johnson, D.S.: Computers and Intractability: A Guide to the Theory of NP-completeness, W.H. Freeman, 1979 (bes. für Kap. 3-12). • Goldreich, O., Modern Cryptography, Probabilistic Proofs and Pseudorandomness. Springer 1999 (zu Kapitel 9). • Hopcroft, J.E.; Ullman, J.D.: Introduction to Automata Theory, Languages and Computation, Addison Wesley, 1979 (bes. für Kap. 11 und 12). • Kann, V.: A Compendium of NP Optimization Problems. URL: http://www.nada.kth.se/∼viggo/problemlist/compendium.html (zu Kapite l 10) • Köbler, J.; Schöning, U.; Torán, J.: The Graph Isomorphism Problem: Its Structural Complexity, Birkhäuser, 1993 (bes. für Kap. 7 und 9). • Luby, M., Pseudorandomness and Cryptographic Applications. Princeton University Press 1996 (zu Kapitel 9). • Mehlhorn, K.: Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness, Springer 1984. 7 • Papadimitriou, C.H.; Steiglitz, K.: Combinatorial Optimization: Algorithms and Complexity, Prentice Hall, 1982. • Paul, W.: Komplexitätstheorie, Teubner, 1978. • Preparata, F.P., Shamos, M.I., Computational Geometry. Springer 1985 (zu Kapitel 2). • Reischuk, K. R., Einführung in die Komplexitätstheorie, Teubner, 1999. • Sipser, M. Introduction to the theory of computation, PWS Publ. Co., 1997. • van Leeuwen, J. (Hrsg.): Handbook of Theoretical Computer Science, Elsevier, MITPress, 1990. • Wagner, K.; Wechsung, G.: Computational Complexity, Deutscher Verlag der Wissenschaften, 1986. • Wegener, I.: The Complexity of Boolean Functions, Wiley-Teubner, 1987 (bes. für Kap. 13 und 14). • Wegener, I.: Effiziente Algorithmen für grundlegende Funktionen, Teubner, 1989 (bes. für Kap. 14). • Wegener, I.: Theoretische Informatik — eine algorithmenorientierte Einführung, Teubner, 1993 (bes. für Kap. 3–11). • Wegener, I. (Hrsg.): Highlights aus der Informatik, Springer, 1996 (bes. für Kap. 7–10). • Wegener, I.: Branching Programs and Binary Decision Diagrams – Theory and Applications. SIAM Monographs on Discrete Mathematics and Applications, 2000 (bes. für Kap. 14). Bemerkung 1: Aus urheberrechtlichen Gründen wird auf das Buch Theoretische Infor” matik“ von Ingo Wegener verwiesen, wenn längere Passagen aus diesem Buch verwendet werden. Bemerkung 2: Aussagen, die in der Vorlesung nicht bewiesen werden, obwohl der Beweis im Skript steht, sind mit * markiert. 8 2 Reduktionen und untere Schranken für konkrete Probleme 2.1 Reduktionen Wir haben bereits in der Einleitung die Schwierigkeit diskutiert, untere Schranken für die Komplexität von Problemen zu beweisen. Zunächst benötigen wir eine erste untere Schranke des betrachteten Typs. Diese darf auch ein praktisch irrelevantes Problem betreffen. So wurde in der Vorlesung GTI zunächst die Unentscheidbarkeit der Diagonalsprache bewiesen. Die erste untere Schranke wird dann mit Hilfe von Reduktionen auf andere, auch praktisch relevante Probleme übertragen, so wird z. B. die Unentscheidbarkeit des Halteproblems gezeigt. Was sind Reduktionen? Wir werden im Laufe der Vorlesung mehrere Reduktionstypen kennen lernen, die wir dann jeweils sorgfältig definieren. Hier soll das Wesentliche des abstrakten Begriffs Reduktion herausgearbeitet werden. Zur strukturierten Programmierung gehört die Methode der Top-Down Programmierung. Dabei wird ein Programm für ein Problem A entworfen, das noch nicht geschriebene Unterprogramme für Probleme B1 , . . . , Br , so genannte Wunschprozeduren, enthält. Dabei sind wir uns allerdings sicher, dass wir effiziente Programme für B1 , . . . , Br entwerfen können. Reduktionen sind Programme für ein Problem A mit einer Wunschprozedur für Problem B. Offensichtlich müssen die folgenden drei Bedingungen erfüllt sein, damit das Programm für A effizient ist: – die Wunschprozedur für B muss durch ein effizientes Programm realisiert werden. – die Wunschprozedur für B darf nicht für Eingaben aufgerufen werden, die wesentlich länger als die Eingabe für A sind. – das Programm für A muss ohne die Aufrufe von B effizient sein. Wir wollen die zweite Bedingung noch näher betrachten. Das Programm für A habe ohne die Aufrufe von B Laufzeit O(n2 ) und die Zahl der Aufrufe von B sei n. Die Laufzeit für B sei O(n2 ). Es kann dann sein, dass B zunächst für eine Eingabe der Länge n2 aufgerufen wird, die Rechenzeit für diesen Aufruf beträgt O(n4 ). Es kann beispielsweise ein String der Länge n3 erzeugt werden, der die Eingabe für den nächsten Aufruf von B darstellt. Dieser hat Laufzeit O(n6 ) und erzeugt einen String der Länge n9/2 , usw. Insgesamt ist die Laufzeit nicht mehr polynomiell, obwohl A (ohne Prozedur B) und B polynomielle Laufzeit haben und B nur polynomiell oft aufgerufen wird. Wir nehmen an, dass die Rechenzeiten von Algorithmen monoton mit der Eingabelänge wachsen. Wenn nun B höchstens r(n)-mal aufgerufen und die jeweiligen Eingabelängen durch l1 (n), . . . , lr(n) (n) beschränkt sind, wobei die Eingabe für A Länge n hat, dann lässt sich die Rechenzeit folgendermaßen mit der Rechenzeit für B in Verbindung setzen: Es sei 9 tA (n) die Komplexität von Problem A, t∗A (n) die Rechenzeit des gegebenen Programms ohne die Aufrufe von Problem B. Dann gilt tA (n) ≤ t∗A (n) + tB (l1 (n)) + · · · + tB (lr(n) (n)). Dabei ist t∗A (n) bekannt. Diese Aussage kann auf verschiedene Weise genutzt werden. 1.) Jede obere Schranke für die Komplexität von B führt zu einer oberen Schranke für die Komplexität von A. Dies sind typische Anwendungen beim Entwurf effizienter Algorithmen. Wenn ein Modul durch ein effizienteres Modul ersetzt werden kann, sinkt die Laufzeit des Algorithmus. 2.) Jede untere Schranke für die Komplexität von A führt zu einer unteren Schranke für die Komplexität von B. Diese untere Schranke kann schwer berechenbar sein, wenn r(n), l1 (n), . . . , lr(n) (n) von komplizierter Struktur sind. Im Fall r(n) = 1 folgt aber sofort tB (l1 (n)) ≥ tA (n) − t∗A (n). Beispiele für diese Art von Anwendung werden wir in diesem Kapitel kennen lernen. 3.) Auch wenn wir nichts über die Komplexität von A oder B wissen, lernen wir etwas über die relative Komplexität der Probleme A und B. Eine Vermutung, dass A schwierig ist, führt zu der Vermutung, dass B schwierig ist (NP-Vollständigkeitstheorie). In der Entscheidbarkeitstheorie genügen Reduktionen, bei denen B für jede Eingabe von A endlich oft aufgerufen wird. Falls B entscheidbar ist, ist auch A entscheidbar. Oder anders ausgedrückt: Ist A bereits als unentscheidbar bekannt, ist auch B unentscheidbar. Wenn wir uns dafür interessieren, ob Probleme in polynomieller Zeit lösbar sind, genügen Reduktionen, bei denen B polynomiell oft aufgerufen wird und die Eingabelänge für alle Aufrufe von B durch ein festes Polynom in der Länge der Eingabe für A beschränkt ist. Entsprechende Turing-Reduktionen lernen wir in Kap. 6 kennen. Beim Entwurf von Reduktionen stellt sich heraus, dass die Prozedur für B oft nur einmal aufgerufen wird und dies am Ende des Programms für A. Die Antwort auf den Aufruf für B ist dann auch Antwort für den Aufruf für A. Viele Reduktionsbegriffe sind auf diese Situation zugeschnitten (Reduktion ≤ in der Entscheidbarkeitstheorie, polynomielle Reduktionen in der NP-Vollständigkeitstheorie). Diese spezielle Form ist nur gerechtfertigt, da der zugehörige Reduktionsbegriff bereits mächtig genug ist. Allerdings kann die spezielle Form diejenigen, die den hier beschriebenen Hintergrund nicht kennen, am Anfang verwirren. 2.2 Eine Ω(n log n)-Schranke für spezielle Sortierprobleme Das allgemeine Sortierproblem besteht in der Aufgabe, n Objekte a1 , . . . , an aus einer vollständig geordneten Menge M zu sortieren. Da über die Ordnung auf M nichts weiter 10 vorausgesetzt wird, kann nützliche Information nur über Vergleiche gewonnen werden. Damit ist es einfach (s. Vorlesung DATENSTRUKTUREN), eine Ω(n log n)-Schranke für das allgemeine Sortierproblem zu beweisen. Falls die Objekte relativ kleine natürliche Zahlen sind, können sie mit BUCKET SORT Techniken in linearer Zeit sortiert werden. In den meisten praktischen Anwendungen sind Objekte natürliche Zahlen, die aber oft für die Anwendung einfacher BUCKET SORT Techniken zu groß sind. Kann es lineare Algorithmen für das Sortieren von n Zahlen geben? Diese Frage kann in der ganz allgemeinen Form nicht beantwortet werden. Wir schränken unsere Algorithmen auf sogenannte algebraische Entscheidungsbäume ein. Es sind dann nur die binären Operationen +, −, ∗ und binäre Vergleiche (also ≤“, <“, =“) auf reellen ” ” ” Zahlen erlaubt. Die meisten Algorithmen kommen mit diesen Operationen aus. Mit den Operationen +, −, ∗ können alle Polynome und nur Polynome berechnet werden. Im algebraischen Entscheidungsbaum sind die Operationen +, −, ∗ sogar kostenlos, und nur die Vergleiche werden gezählt. Es ergibt sich also ein binärer Entscheidungsbaum, und an jedem Blatt steht die passende Antwort für alle Eingaben, für die dieses Blatt erreicht wird. Man beachte, dass andere einfache Operationen wie z.B. Abrundungen b·c“ in ” algebraischen Entscheidungsbäumen nicht erlaubt sind. Wir beschränken uns zunächst auf Entscheidungsprobleme, bei denen nur die Antworten Ja“ und Nein“ erlaubt sind. ” ” Ein Entscheidungsproblem ist das Problem, für eine Menge W ⊆ N und eine Eingabe x ∈ N zu entscheiden, ob x ∈ W ist. Ben-Or ist es mit einem tiefen Satz aus der Algebraischen Geometrie gelungen, die Komplexität von W und die Anzahl der Zusammenhangskomponenten von W in Relation zu setzen. Dabei heißt eine Menge S ⊆ N zusammenhängend, wenn es für beliebige x, y ∈ S einen Weg von x nach y gibt, der ganz in S verläuft. Ein Weg von x nach y ist schließlich eine stetige Abbildung α : [0, 1] → N mit α(0) = x und α(1) = y. Wir können den Satz von Ben-Or hier nicht beweisen, wir wollen ihn jedoch anwenden, um uns mit einfachen Reduktionen vertraut zu machen. Satz von Ben-Or 2.2.1: Es sei W ⊆ N und Z(W ) die Anzahl der Zusammenhangskomponenten von W , d. h. die Anzahl maximaler zusammenhängender Teilmengen von W . Wenn ein algebraischer Entscheidungsbaum die Menge W entscheidet, so gilt für seine Tiefe h: 2h · 3h+N ≥ Z(W ), also h = Ω(log Z(W ) − N log 3). Wir brauchen nun ein Basisproblem, auf das wir diesen Satz anwenden können, um dann mit Hilfe einer geeigneten Reduktion eine untere Schranke für das spezielle Sortierproblem zu erhalten. Definition 2.2.2: ELEMENT UNIQUENESS Die Eingabe ist ein Vektor x = (x1 , . . . , xN ) ∈ verschieden sind. N . Es ist zu entscheiden, ob alle xi Die im Rest von Kap. 2 bewiesenen unteren Schranken beziehen sich alle auf algebraische Entscheidungsbäume. Dies wird in den einzelnen Sätzen nicht explizit wiederholt. 11 Satz 2.2.3: Zur Lösung des Problems ELEMENT UNIQUENESS sind Ω(N log N ) Rechenschritte nötig. Beweis: Sei W = {(x1 , . . . , xN )| xi 6= xj für i 6= j}. Nach Satz 2.2.1 genügt es zu zeigen, dass Z(W ) ≥ N ! ist. Für die Permutation π auf {1, . . . , N } sei W (π) = {x ∈ W | xπ(1) < xπ(2) < · · · < xπ(N ) }. Wir zeigen, dass es für x ∈ W (π) und x0 ∈ W (π 0 ) mit π 6= π 0 innerhalb von W keinen Weg von x nach x0 gibt. Daraus folgt sofort, dass W mindestens N ! Zusammenhangskomponenten hat. Da π 6= π 0 , gibt es Indizes i und j mit π −1 (i) < π −1 (j) und π 0 −1 (i) > π 0 −1 (j). Also ist xi < xj , aber x0i > x0j . Jeder Weg von x nach x0 lässt sich durch eine stetige Funktion α : [0, 1] → N mit α(0) = x und α(1) = x0 beschreiben. Damit sind auch die Koordinatenabbildungen αi und αj stetig, und die Funktion β : [0, 1] → , definiert durch β(t) = αi (t) − αj (t), ist stetig. Da β(0) < 0 und β(1) > 0 ist, gibt es nach dem Zwischenwertsatz ein t ∈ [0, 1] mit β(t) = 0. Dann ist αi (t) = αj (t) und α(t) 6∈ W , und der Weg α verläuft nicht innerhalb von W . 2 Wir werden im folgenden mit linearen Reduktionen (Notation ≤N ) arbeiten. Dabei wird die Prozedur B nur einmal aufgerufen und die Eingabelänge für diesen Aufruf ist linear beschränkt in der Länge der Eingabe für das Problem A. Das Programm für A benötigt ohne den Aufruf für B lineare Zeit. Es folgt sofort, dass jede nichtlineare untere Schranke für die Komplexität von A eine gleich große untere Schranke für die Komplexität von B impliziert, falls A ≤N B gilt. Alle linearen Reduktionen, die wir im Folgenden angeben, benutzen nur Operationen, die in algebraischen Entscheidungsbäumen erlaubt sind. Daher sind diese Reduktionen auch geeignet, nichtlineare untere Schranken für algebraische Entscheidungsbäume von A auf B zu übertragen. Satz 2.2.4: Für das Sortieren von N reellen Zahlen sind Ω(N log N ) Rechenschritte nötig. Beweis: Wir zeigen ELEMENT UNIQUENESS ≤N SORTIEREN. Sei x = (x1 , . . . , xn ) die gegebene Eingabe für ELEMENT UNIQUENESS. Wir sortieren die Folge x (Aufruf der Sortierprozedur). Danach durchlaufen wir die sortierte Folge und überprüfen, ob die benachbarten Zahlen verschieden sind. Dies genügt, da gleiche Zahlen in der sortierten Folge benachbart sind. 2 2.3 Untere Schranken für Probleme aus der Algorithmischen Geometrie Die Algorithmische Geometrie befaßt sich mit dem Entwurf von effizienten Algorithmen für geometrische Probleme (Anwendungen: Graphische Systeme, Mustererkennung, Datenbanken, VLSI–Design). Wir wollen mit linearen Reduktionen für einige Probleme nach12 weisen, dass sie Ω(N log N ) Rechenschritte benötigen. Für die meisten dieser Probleme reichen O(N log N ) Rechenschritte auch aus. Die konvexe Hülle von N Punkten in der Ebene ist das kleinste Polygon, das alle N Punkte enthält. Sie wird beschrieben durch die Folge der Eckpunkte im Uhrzeigersinn. Satz 2.3.1: Zur Berechnung der konvexen Hülle von N Punkten werden Ω(N log N ) Rechenschritte benötigt. Beweis: Wir zeigen ELEMENT UNIQUENESS ≤N KONVEXE HÜLLE. Sei x = (x1 , . . . , xN ) die Eingabe für ELEMENT UNIQUENESS. In Zeit O(N ) werden die N Punkte yi = (xi , x2i ), 1 ≤ i ≤ N , in der Ebene berechnet. Auf den Punkten y1 , . . . , yN wird die konvexe Hülle berechnet. Da die Funktion z → z 2 konvex ist, liegen alle Punkte auf dem Rand der konvexen Hülle. Die konvexe Hülle hat also genau dann N Eckpunkte, wenn alle xi verschieden sind. 2 Um Punkte in einer durch Geradensegmente gegebenen Einteilung der Ebene in Teilregionen zu lokalisieren, ist es hilfreich, Polygone zu triangulieren. Allgemein besteht das Problem TRIANGULATION in der Aufgabe, N Punkte p1 , . . . , pN in der Ebene so durch sich nicht kreuzende Geradensegmente zu verbinden, dass jede innere Region ein Dreieck ist. Satz 2.3.2: Triangulierungsalgorithmen benötigen Ω(N log N ) Rechenschritte. Beweis: Wir zeigen SORTIEREN ≤N TRIANGULATION. Sei x = (x1 , . . . , xN ) die zu sortierende Folge reeller Zahlen. In Zeit O(N ) werden die N + 1 Punkte pi = (xi , 0), 1 ≤ i ≤ N , und p0 = (0, −1) berechnet. Für diese Punkte wird ein Algorithmus zur Triangulierung aufgerufen. Das folgende Bild zeigt, dass es nur eine Triangulierung gibt. p3 p5 p2 p4 p7 p6 p1 p0 Wir berechnen das Maximum aller xi , in unserem Fall x1 . Eine Triangulierung ist ein ungerichteter Graph, der durch Adjazenzlisten beschrieben ist. Die Adjazenzliste von p1 13 enthält p0 und p6 , also ist x6 zweitgrößtes Element. Die Adjazenzliste von p6 enthält p0 , p1 und p7 , also ist x7 drittgrößtes Element, usw. 2 In der Mustererkennung interessiert man sich für die Probleme CLOSEST PAIR (finde für N Punkte in der Ebene zwei mit minimalem Abstand) und ALL NEAREST NEIGHBORS (finde für jeden von N Punkten in der Ebene einen Punkt mit minimalem Abstand). Satz 2.3.3: Die Probleme CLOSEST PAIR und ALL NEAREST NEIGHBORS benötigen Rechenzeit Ω(N log N ). Beweis: Wir zeigen zunächst ELEMENT UNIQUENESS ≤N CLOSEST PAIR. Aus der Eingabe x = (x1 , . . . , xN ) für ELEMENT UNIQUENESS berechnen wir in Zeit O(N ) die Punkte pi = (xi , 0), 1 ≤ i ≤ N . Das Paar mit kleinstem Abstand unter den Punkten p1 , . . . , pN hat genau dann positiven Abstand, wenn die Zahlen x1 , . . . , xN verschieden sind. Als zweites zeigen wir CLOSEST PAIR ≤N ALL NEAREST NEIGHBORS. Für die Punkte p1 , . . . , pN berechnen wir NN(p1 ), . . . , NN(pN ), wobei NN(pi ) ein nächster Nachbar zu pi ist. Dann berechnen wir in Zeit O(N ) die Werte di , die den Abstand zwischen pi und NN(pi ) darstellen, und das Minimum aller di . Falls dieses Minimum dj ist, bilden pj und NN(pj ) ein Paar mit minimalem Abstand. 2 In der Vorlesung DATENSTRUKTUREN wurde bereits das Problem der Berechnung minimaler Spannbäume behandelt. Dabei sind N Punkte und ihre Abstände (Kosten) d(i, j), 1 ≤ i < j ≤ N , gegeben. Gesucht ist ein Baum, der alle Knoten verbindet und für den die N Gesamtkosten (Summe der Kantenkosten) minimal ist. Die Eingabe enthält 2 Zahlen, und der Algorithmus von Prim (s. Vorlesung EFFIZIENTE ALGORITHMEN) kommt auch mit O(N 2 ) Rechenschritten aus, ist also asymptotisch optimal. Wir betrachten nun das Problem EUCLIDEAN MINIMUM SPANNING TREE, bei dem N Punkte p1 , . . . , pN in der Ebene gegeben sind und die Abstände die üblichen Euklidischen Abstände sind. In diesem Spezialfall (z. B. gilt die Dreiecksungleichung) kann ein minimaler Spannbaum sogar in Zeit O(N log N ) berechnet werden. Dass dies optimal ist, können wir nun leicht zeigen. Satz 2.3.4: Das Problem EUCLIDEAN MINIMUM SPANNING TREE benötigt Rechenzeit Ω(N log N ). Beweis: Wir zeigen CLOSEST PAIR ≤N EUCLIDEAN MINIMUM SPANNING TREE. Auf den gegebenen Punkten p1 , . . . , pN berechnen wir einen minimalen Spannbaum bzgl. der Euklidischen Abstände. Der Spannbaum enthält N − 1 Kanten, und er enthält, wie man leicht sieht, eine Kante, die zwei Punkte mit minimalem Abstand verbindet. Es genügt also, in Zeit O(N ) die Kante mit den kleinsten Kantenkosten im Spannbaum zu berechnen. 2 Als weiteres Basisproblem betrachten wir das Problem ε-CLOSENESS, bei dem für x1 , . . . , xN ∈ und ε > 0 entschieden werden soll, ob es Punkte xi , xj mit i 6= j und |xi − xj | < ε gibt. 14 Satz 2.3.5: Das Problem ε-CLOSENESS benötigt Rechenzeit Ω(N log N ). Beweis: Hier gelingt uns keine lineare Reduktion. Wir gehen daher auf den Satz von BenOr zurück und zeigen, dass die Menge W = {(x1 , . . . , xN ) ∈ N | |xi − xj | ≥ ε für alle i 6= j} mindestens N ! Zusammenhangskomponenten hat. Der Beweis verläuft vollständig analog zum Beweis von Satz 2.2.3 (ELEMENT UNIQUENESS). Die geometrische Struktur der betrachteten Probleme ist bzgl. der Zahl der Zusammenhangskomponenten gleich. 2 In graphischen Systemen müssen Sichtbarkeitsprobleme gelöst werden. Eines der Grundprobleme ist der Test, ob es unter N Geradensegmenten g1 , . . . , gN in der Ebene zwei gibt, die sich schneiden: LINE SEGMENT INTERSECTION TEST. Satz 2.3.6: Das Problem LINE SEGMENT INTERSECTION TEST benötigt Rechenzeit Ω(N log N ). Beweis: Wir zeigen ELEMENT UNIQUENESS ≤N LINE SEGMENT INTERSECTION TEST. Für die gegebenen Zahlen x1 , . . . , xN berechnen wir in Zeit O(N ) die Geradenstücke gi , 1 ≤ i ≤ N , die die Endpunkte (xi , 0) und (xi , 1) haben. Genau dann, wenn sich gi und gj schneiden, ist xi = xj . 2 In der Linearen Programmierung (s. Vorlesung OPERATIONS RESEARCH) soll eine lineare Zielfunktion unter linearen Nebenbedingungen maximiert werden. Die Nebenbedingungen sind lineare Ungleichungen und beschreiben daher Halbräume. Der zulässige Bereich des Optimierungsproblems ist der Durchschnitt von N Halbräumen. Die Beschreibung des zulässigen Bereichs ist eine wichtige Aufgabe. Ein Spezialfall ist die Berechnung des Durchschnitts von N Halbräumen in der Ebene, der stets ein (beschränktes oder unbeschränktes) konvexes Polygon ist: INTERSECTION OF HALF–PLANES. Satz 2.3.7: Das Problem INTERSECTION OF HALF–PLANES benötigt Rechenzeit Ω(N log N ). Beweis: Wir zeigen ELEMENT UNIQUENESS ≤N INTERSECTION OF HALF-PLANES. Es sei x = (x1 , . . . , xN ) die Eingabe für ELEMENT UNIQUENESS. Wie im Beweis zu Satz 2.3.1 (Berechnung konvexer Hüllen) benutzen wir die konvexe Funktion f (z) = z 2 . Die Tangente an (z 0 , z 02 ) ist die Gerade y = 2z 0 z −z 02 . Wir rufen einen Algorithmus für INTERSECTION OF HALF-PLANES für die Halbräume H1 , . . . , HN auf, wobei Hi durch die Gerade gi (z) = 2xi z − x2i begrenzt ist und den Ursprung (0, 0) enthält. Somit ist der Durchschnitt von H1 , . . . , HN ein unbeschränktes Polygon, das f in (xi , x2i ) berührt. Es hat genau dann N − 1 Eckpunkte, wenn alle xi verschieden sind. 2 Sowohl im VLSI Design wie bei graphischen Systemen stellt sich die Frage, für N achsenparallele Rechtecke in der Ebene (die sich schneiden dürfen) die überdeckte Fläche zu messen: MEASURE OF UNION OF RECTANGLES. 15 Satz 2.3.8: Das Problem MEASURE OF UNION OF RECTANGLES benötigt Rechenzeit Ω(N log N ). Beweis: Wir zeigen ε-CLOSENESS ≤N MEASURE OF UNION OF RECTANGLES. Sei x = (x1 , . . . , xN ) die Eingabe für ε-CLOSENESS. Wir bilden in Zeit O(N ) die Rechtecke R1 , . . . , RN , wobei Ri = [xi , xi + ε] × [0, 1] ist. Die von R1 ∪ · · · ∪ RN überdeckte Fläche ist genau dann kleiner als N ε, wenn es zwei Punkte xi und xj mit kleinerem Abstand als ε gibt. 2 Das Problem CONTOUR OF UNION OF RECTANGLES ist die Aufgabe, für die Vereinigung von N achsenparallelen Rechtecken in der Ebene den Umriss als Folge von geschlossenen Streckenzügen zu beschreiben. Die Vereinigung der Rechtecke soll links von den Streckenzügen liegen. Da die Vereinigung von Rechtecken Löcher“ haben kann, sind ” u. U. mehrere Streckenzüge nötig. Satz 2.3.9: Das Problem CONTOUR OF UNION OF RECTANGLES benötigt Rechenzeit Ω(N log N ) selbst für Eingaben, bei denen die Ausgabe Länge O(N ) hat. Beweis: Wir zeigen ELEMENT UNIQUENESS ≤N CONTOUR OF UNION OF RECTANGLES. Sei x1 , . . . , xN die Eingabe für ELEMENT UNIQUENESS. O.B.d.A. seien alle Zahlen positiv. Wir berechnen in Zeit O(N ) die Zahl M = max{x1 , . . . , xN } und die Rechtecke Ri = [0, xi ] × [0, M − xi ], 1 ≤ i ≤ N . Der Umriss von R1 ∪ · · · ∪ RN ist in Länge O(N ) zu beschreiben und besteht aus nur einem Streckenzug. Dieser hat genau dann 2N + 2 Eckpunkte, wenn alle xi verschieden sind. M Umriss M-x i M-x j xi xj M 2 Diese lange Liste von Ergebnissen soll vor allem auch zeigen, dass viele Reduktionen leicht zu verifizieren sind und dass sich der Leser und die Leserin durchaus die Hoffnung machen können, Reduktionen eigenständig zu entwerfen. Allerdings ist der Entwurf einer Reduktion schwieriger als die Verifikation der Korrektheit der Reduktion. Diese kreative Aufgabe muss geübt werden. Insgesamt haben wir eine Reihe interessanter, konkreter Resultate erhalten. 16 3 3.1 NP-Vollständigkeit und der Satz von Cook Probleme, Sprachen und Codierungen und die Klasse P Wir wollen mit einigen Begriffsklärungen beginnen. Was ist ein Problem? Für einen Handelsreisenden (Traveling Salesman), der wöchentlich 47 Städte anfahren muss, ist es ein Problem, die Fahrtroute optimal zu planen. Im Sinne der Informatik soll diese Frage” stellung“ aber nicht Problem“ heißen! Für das Problem des Handelsreisenden“ gibt es ” ” nämlich stets folgende merkwürdige Art der Problemlösung. Wir vergleichen per Hand alle möglichen Fahrtrouten, berechnen eine optimale Route und programmieren dann den Rechner so, dass er direkt die Lösung ausgibt. Dieses Programm arbeitet sehr schnell, wobei es lange dauern kann, bis wir das Programm schreiben können. An diesem Beispiel sehen wir, dass wir unter einem Problem ein allgemeines“ Problem ” verstehen wollen. Ein Programm, das dieses Problem löst, sollte jeden Spezialfall des Problems lösen. Für jede zulässige Eingabe soll das zugehörige Spezialproblem gelöst werden. Ein Problem besteht also in der Beschreibung, wie die zugehörigen speziellen Probleme, also die zugehörigen Eingaben, aussehen, und in der Beschreibung des funktionalen oder relationalen Zusammenhangs zwischen der Eingabe und der zugehörigen Ausgabe. Für das TSP sieht das folgendermaßen aus. TSP-1: Eine zulässige Eingabe besteht aus einer endlichen Liste von n Städten S1 , . . . , Sn und aus der Angabe der Entfernung c(i, j) ∈ , um von Stadt Si nach Sj zu gelangen. Als Ausgabe ist eine Permutation π gewünscht, die die folgende Funktion minimiert: ! X cost(π) = c(π(i), π(i + 1)) + c(π(n), π(1)). 1≤i≤n−1 Es soll also eine Rundreise, die jeden Ort genau einmal berührt, mit minimaler Länge berechnet werden. Korrekterweise müssten wir also zwischen einem (allgemeinen) Problem und einem Spezialfall des Problems, also des Problems“, für eine feste Eingabe die zugehörige Ausgabe ” zu berechnen, unterscheiden. Dies lässt sich aber sicherlich nicht durchhalten. Wir wissen, dass ein Wechsel des Rechnermodells die Zeitkomplexität des Problems nur polynomiell verändert. O. B. d. A. benutzen wir bei der Definition von Komplexitätsklassen daher Turingmaschinen, worunter wir in Zukunft deterministische Turingmaschinen mit einem Band verstehen. Definition 3.1.1: Die Komplexitätsklasse P enthält alle Probleme, die sich von einer deterministischen Turingmaschine M in polynomieller Rechenzeit lösen lassen, d. h. tM (n) ≤ p(n) für ein Polynom p. In Definition 3.1.1 haben wir die Eingabelänge mit n bezeichnet. Wir haben noch nicht diskutiert, wie wir die Eingabelänge messen. Ganze Zahlen können nicht direkt Eingaben 17 für Turingmaschinen sein. Üblicherweise verwenden wir für Zahlen die Binärdarstellung. Würde man z.B. die Unärdarstellung benutzen, kann die Eingabe exponentiell länger werden, eine exponentielle Rechenzeit bezogen auf die Eingabelänge n kann auf die aufgeblähte Eingabelänge 2n bezogen eine lineare Rechenzeit sein. Allerdings ist die Angabe z.B. einer Entfernung in Unärdarstellung unsinnig. Analog zur erweiterten Churchschen These benutzen wir die These, dass alle intuitiv sinnvollen Eingabedarstellungen in ihrer Länge polynomiell verknüpft sind. Wir können also im folgenden darauf verzichten, exakt zu beschreiben, welche Darstellung der Eingabe gewählt wird. Für das TSP-1 wäre die Eingabelänge die Summe der Länge aller Binärdarstellungen der Zahlen in der Eingabe. Bei der Betrachtung von Algorithmen für das TSP wird die Eingabegröße im Allgemeinen mit n2 bezeichnet, und beliebige arithmetische Operationen werden mit einer Kosteneinheit belegt, wobei direkt auf die eingegebenen Zahlen zugegriffen werden kann. Wieder nach der erweiterten Churchschen These unterscheiden sich die so ermittelten Rechenzeiten nur polynomiell, solange die als Zwischenergebnisse berechneten Zahlen nicht exponentiell länger als die eingegebenen Zahlen sind. In der Vorlesung GTI wurden anstelle von Problemen in der hier angegebenen Allgemeinheit vor allem Sprachen behandelt. Sprachen sind Probleme, bei denen als Ausgaben nur ∧ ∧ 0 (= Nein) und 1 (= Ja) möglich sind. Wenn die Eingabemenge Σ∗ für ein endliches Alphabet Σ ist, dann kann die Sprache L auch als die Teilmenge von Σ∗ aufgefasst werden, die zu der Ausgabe 1 führen soll. Allerdings ist in der Praxis die Menge der zulässigen Eingaben oft nur eine Teilmenge von Σ∗ . Wir benutzen daher für Probleme, die nur die Ausgaben 0 oder 1 haben, den Ausdruck Entscheidungsprobleme. Sprachen sind also stets auch Entscheidungsprobleme. Die Aufgabe, eine Eingabe auf ihre Zulässigkeit zu prüfen, ist für die von uns betrachteten Probleme stets auf effiziente Weise möglich. Wir werden auf diesen Test daher nie näher eingehen. Die Analyse von Entscheidungsproblemen ist wesentlich einfacher als die Analyse beliebiger Probleme. Wir werden uns daher in Kap. 3, 4 und 5 auf Entscheidungsprobleme konzentrieren und erst in Kap. 6 die Theorie auf allgemeine Probleme ausdehnen. Die Entscheidungsvariante“ des TSP sieht folgendermaßen aus: ” TSP-2: Eingabe: Eine Liste von Städten, die Entfernungen zwischen den Städten und eine Zahl B. Es soll entschieden werden, ob es eine TSP-Tour gibt, deren Kosten durch B beschränkt sind. Wir wollen hier schon zeigen, wie TSP-1 und TSP-2 verknüpft sind. Zunächst nehmen wir an, wir hätten einen effizienten Algorithmus für TSP-1. Um TSP-2 zu lösen, lösen wir das zugehörige TSP-1, in dem B nicht vorkommt. Wir berechnen dann die Kosten c∗ der berechneten optimalen Tour. Wir lösen TSP-2, indem wir c∗ und B vergleichen. Nun nehmen wir an, wir hätten einen effizienten Algorithmus für TSP-2 und wollen TSP-1 lösen. Für die triviale Tour mit π ≡ id berechnen wir die Kosten B ∗ . Die Kosten optcost einer optimalen Tour berechnen wir mit Hilfe der binären Suche und TSP-2. Wir fragen, ob es eine Tour mit durch bB ∗ /2c beschränkten Kosten gibt. Wenn ja, fragen wir, ob es eine 18 Tour mit durch bB ∗ /4c beschränkten Kosten gibt. Andernfalls wird die Kostenschranke b3B ∗ /4c getestet. Nach dlog (B ∗ + 1)e Fragen ist optcost ermittelt. Nun soll eine optimale Tour πopt berechnet werden. Die Kantenkosten werden nacheinander auf B ∗ + 1 gesetzt. Gibt es hinterher noch eine Tour mit Kosten optcost, behält die Kante die Kosten B ∗ + 1. Ansonsten werden die Kantenkosten auf den alten Wert zurückgesetzt. Am Ende bilden die Kanten, deren Kosten kleiner als B ∗ + 1 sind, eine optimale Tour. Insgesamt wird der effiziente Algorithmus für TSP-2 weniger als (n2 + dlog(B ∗ + 1)e)-mal als Unterprogramm benutzt, diese Zahl ist polynomiell in der Eingabelänge beschränkt. Außerdem wird TSP-2 nur auf Eingaben aufgerufen, die nicht länger als die gegebene Eingabe sind. Damit ist der folgende Satz bewiesen. Satz 3.1.2: Es gibt für TSP-1 genau dann einen polynomiellen Algorithmus, wenn es für TSP-2 einen polynomiellen Algorithmus gibt. Bisher ist kein polynomieller Algorithmus für TSP-1 oder TSP-2 bekannt. Wir haben also ein Ergebnis über die relative Komplexität von TSP-1 und TSP-2 bewiesen, ohne die Komplexität eines der beiden Probleme zu kennen. 3.2 Nichtdeterministische Turingmaschinen und die Klasse NP Dieser Unterabschnitt beginnt mit einer Wiederholung aus der Vorlesung GTI (siehe Kap. 3.2 Buch Theoretische Informatik). Die Nummerierungen 3.2.1–3.2.7 beziehen sich auf das Buch. Die nichtdeterministischen Algorithmen, mit denen gezeigt wurde, dass die Entscheidungsvarianten von CLIQUE, BPP, KP und TSP in NP liegen, folgen dem gleichen Schema. Zunächst wird eine Lösung nichtdeterministisch geraten und dann deterministisch verifiziert, dass wir tatsächlich eine Lösung des Problems geraten haben. Wir können uns ganz allgemein auf Turingmaschinen beschränken, die in den zwei Phasen Raten und Verifizieren arbeiten. Definition 3.2.8: Eine nichtdeterministische Turingmaschine mit Rate-VerifikationPhasen (RV-NTM) ist eine nichtdeterministische Turingmaschine, die folgendermaßen arbeitet. Sie markiert Position 0 und schreibt auf die Positionen −1, −2, . . . eine zufällige 0-1-Folge, die an einer zufälligen Stelle p abgebrochen wird. Dann kehrt sie an den Beginn der Eingabe zurück und arbeitet nur noch deterministisch, d. h. es werden nur noch Konfigurationen erreicht, für die es maximal eine zulässige Nachfolgekonfiguration gibt. Satz 3.2.9: a) Wird ein Entscheidungsproblem E von einer nichtdeterministischen TM M in Zeit tM (n) entschieden, dann kann E auch von einer RV-NTM M 0 in Zeit O(tM (n)2 ) entschieden werden. b) Wird ein Entscheidungsproblem E von einer RV-NTM M 0 in Zeit tM 0 (n) entschieden, dann kann E auch von einer NTM in Zeit tM 0 (n) entschieden werden. Beweis: Teil b) folgt direkt nach Definition, da RV-NTM’s spezielle NTM’s sind. 19 Teil a) lässt sich folgendermaßen beweisen. Sei z = 3|Q||Γ| und z 0 = dlog ze. Wir identifizieren die Elemente der Menge Q × Γ × {R, L, N } mit 0, . . . , z − 1. Wir können zunächst o.B.d.A. annehmen, dass M nur die Positionen p ≥ 0 benutzt. M 0 arbeitet folgendermaßen. Für jeden Schritt werden die nächsten noch nicht benutzten z 0 Zufallsbits benutzt, d. h. die Positionen −(t − 1)z 0 − 1, . . . , −tz 0 für Schritt t. Diese werden als (q, a, d) ∈ Q×Γ×{R, L, N } interpretiert. Wenn q 0 der simulierte Zustand und a0 der simulierte gelesene Buchstabe ist, wird getestet, ob ((q 0 , a0 ), (q, a, d)) ∈ δ ist. Im negativen Fall wird die Simulation abgebrochen. Ansonsten wird die zugehörige Nachfolgekonfiguration simuliert. Da M 0 nur zulässige Rechnungen von M simuliert, werden nur Eingaben x akzeptiert, die auch M akzeptiert. Andererseits können alle akzeptierenden Berechnungen simuliert werden, insbesondere auch die akzeptierende Berechnung mit tM (x) Schritten. Damit betrachten wir die schnellste Simulation. Bei ihr werden z 0 tM (x) Bits geraten. Jeder Rechenschritt kann in O(tM (n)) Schritten simuliert werden. 2 Wenn die geratene 0-1-Folge auf ein zweites Band geschrieben werden darf, arbeitet die RV-NTM M 0 sogar in Zeit O(tM (n)). Wir erhalten nun recht leicht eine neue Charakterisierung von NP, die nicht maschinenorientiert, sondern logikorientiert ist. Dieser Charakterisierung werden wir in Kap. 7 wieder begegnen. Satz 3.2.10: Das Entscheidungsproblem E ist genau dann in NP enthalten, wenn es ein polynomiell entscheidbares Prädikat P und ein Polynom p gibt, so dass die Menge der zu akzeptierenden Eingaben sich schreiben lässt als {x | ∃y : |y| ≤ p(|x|) und P (x, y) ist wahr }. Beweis: ⇒“ Wir betrachten die polynomiell zeitbeschränkte RV-NTM M , die E ent” scheidet. Als Polynom p ist die Rechenzeit tM geeignet. Das Prädikat P (x, y) soll genau dann wahr sein, wenn M auf Eingabe x, wenn y geraten wurde, im deterministischen Teil eine akzeptierende Konfiguration erreicht. Falls x von M akzeptiert wird, geschieht das, indem eine Folge y mit |y| ≤ tM (|x|) geraten wird und aus dieser Konfiguration eine akzeptierende Konfiguration erreicht wird, also P (x, y) wahr ist. ⇐“ Die RV-NTM M arbeitet folgendermaßen. Es wird für das bekannte Polynom p über” prüft, ob für den Ratestring y gilt |y| ≤ p(|x|). Nur im positiven Fall wird weitergearbeitet und P (x, y) deterministisch in polynomieller Zeit entschieden. 2 Nichtdeterminismus ist äquivalent zu Raten und Verifizieren“. Daher lässt sich Nichtde” terminismus gut durch Existenzquantoren ausdrücken. 3.3 NP-Vollständigkeit Dieser Unterabschnitt ist eine Wiederholung der Vorlesung GTI (siehe Kap. 3.3 Buch Theoretische Informatik). 20 3.4 Die NP-Vollständigkeit wichtiger Probleme Nach dem Meilenstein des Satzes von Cook können wir in Zukunft Lemma 3.3.8 (Buch) anwenden, um die NP-Vollständigkeit eines Problems zu beweisen. Das Grundkonzept eines NP-Vollständigkeitsbeweises lässt sich in 4 Schritte einteilen. Sei L das Problem. 1.) Zeige, dass L ∈ NP ist. Dies ist im Allgemeinen einfach, eine Lösung wird nichtdeterministisch geraten und dann deterministisch verifiziert. 2.) Auswahl eines geeigneten“ NP-vollständigen Problems L0 . Hier ist Intuition gefragt, ” um die Verwandtschaft zwischen auf den ersten Blick verschiedenen Problemen zu erkennen. 3.) Angabe einer deterministisch in polynomieller Zeit berechenbaren Transformation f : (Σ0 )∗ → Σ∗ . 4.) Beweis, dass gilt: x ∈ L0 ⇔ f (x) ∈ L. Wir wiederholen aus der Vorlesung GTI, dass 3-SAT, CLIQUE, KP, PARTITION, BIN PACKING (BPP), DHC, HC und TSP NP-vollständig sind. Die Reduktion PARTITION ≤p BPP ist ein Musterbeispiel für eine Restriktion, da PARTITION ein Bin Packing Problem mit 2 Kisten ist, wobei die Gesamtgröße aller zu verpackenden Objekte der Gesamtgröße der beiden Kisten entspricht. Als Musterbeispiel für eine lokale Ersetzung kann die Reduktion SAT ≤p 3-SAT gelten, da jede Klausel in der Eingabe für SAT lokal, d. h. unabhängig von den anderen Klauseln, behandelt wurde. Schließlich ist die Reduktion 3-SAT ≤p CLIQUE ein besonders schönes Beispiel für eine Reduktion mit miteinander verbundenen Komponenten. Zunächst wird jede Klausel durch eine lokale Komponente, nämlich drei Knoten ohne Verbindung, dargestellt. Jeder Knoten entspricht einem Literal der Klausel. Die Komponenten werden durch Kanten verbunden, um sicherzustellen, dass sich Variablenbelegungen in den verschiedenen Klauseln nicht widersprechen. Genau die Literale verschiedener Klauseln, die nicht gleichzeitig erfüllt sein können, werden nicht durch eine Kante verbunden. Cliquen der Größe l zeigen also, dass die betreffenden l Klauseln gleichzeitig erfüllbar sind und umgekehrt. Wie lassen sich die anderen Reduktionen klassifizieren? – 3-SAT ≤p KP∗ ≤p KP. Diese Reduktion liegt zwischen den Methoden lokale Ersetzung und verbundene Komponenten. Die Zahlen ai und bi sind lokale Komponenten für die Literale xi und xi , die Zahlen ci , di und A stellen aber eine gewisse Art von Verbindung dar. – KP∗ ≤p PARTITION. Das ist fast“ eine Restriktion. ” – 3-SAT ≤p DHC. Dies ist wiederum ein Musterbeispiel, wie die Komponenten für die Literale und Klauseln miteinander verbunden werden. – DHC ≤p HC. Dies ist offensichtlich eine lokale Ersetzung. – HC ≤p TSP. Dies ist offensichtlich eine Restriktion. 21 4 4.1 Techniken zum Beweis der NP-Vollständigkeit Dreidimensionales Matching — eine Reduktion mit verbundenen Komponenten In der Vorlesung EFFIZIENTE ALGORITHMEN wird gezeigt, dass die Berechnung maximaler zweidimensionaler (bipartiter) Matchings in polynomieller Zeit möglich ist. Wir wollen zeigen, dass optimale dreidimensionale Matchings nicht effizient berechenbar sind, falls NP 6= P ist. Definition 4.1.1: 3-DM (Dreidimensionales Matching) Es seien X, Y, Z disjunkte Mengen mit je q Elementen. Es sei M ⊆ X × Y × Z. Es soll entschieden werden, ob M ein dreidimensionales Matching enthält, d. h. ob es in M genau q Tripel gibt, so dass jedes Element x ∈ X, y ∈ Y und z ∈ Z überdeckt wird. Matchingprobleme haben Anwendungen, sie bilden die Grundlage von Zuordnungsproblemen. Die Mengen X, Y und Z könnten Expertengruppen für drei Problemkreise sein. Falls (x, y, z) ∈ M , verstehen sich x, y und z und können ein Team bilden. Es soll also entschieden werden, ob die Fachleute so in Dreierteams eingeteilt werden können, dass sich alle Teams verstehen. Satz 4.1.2: 3-DM ist NP-vollständig. Beweis: 1.) 3-DM ∈ NP. Wir raten q verschiedene Zahlen in {1, . . . , |M |} und verifizieren, ob die q zugehörigen Tripel alle Elemente überdecken. 2.) Das Problem 3-DM ist mit keinem der uns bisher bekannten NP-vollständigen Probleme eng verwandt. Wir wählen nun 3-SAT zur Reduktion, da 3-SAT klar definierte Komponenten (Variablen und Klauseln) hat und die Verbindungen zwischen den Klauseln sehr einfach zu beschreiben sind. Jede Variable muss in allen Klauseln, in der sie vorkommt, den gleichen Wert annehmen. 3.) Sei eine Eingabe für 3-SAT gegeben, d. h. eine Menge U = {u1 , . . . , un } von Variablen und eine Menge C = {c1 , . . . , cm } von Klauseln mit je drei Literalen. Dieses Problem müssen wir nun als 3-DM-Problem codieren. Wir werden dazu drei Typen von Tripeln benutzen. M = T1 ∪ · · · ∪ Tn ∪ S1 ∪ · · · ∪ Sm ∪ G. Die Tripel in Ti sollen dafür sorgen, dass die ∧ Variable ui in allen Klauseln denselben Wert annimmt (T = truth setting). Die Tripel ∧ in Sj sollen dafür sorgen, dass die Klausel cj erfüllt ist (S = satisfying). Die Tripel in G ∧ (G = garbage) sollen dafür sorgen, dass das Matching aufgeht“. ” Konstruktion von Ti : X enthalte ui (j) und ui (j) für 1 ≤ j ≤ m, Y enthalte ai (j) und Z enthalte bi (j) für 1 ≤ j ≤ m. Die Elemente ai (j) und bi (j) sollen nur in Tripeln aus Ti vorkommen. Es sei Ti = Ti1 ∪ Ti0 mit Ti1 = {(ui (j), ai (j), bi (j)) | 1 ≤ j ≤ m} 22 und Ti0 = {(ui (j), ai (j + 1), bi (j)) | 1 ≤ j ≤ m − 1} ∪ {(ui (m), ai (1), bi (m))}. Für m = 1 wird die Konstruktion sinnlos, allerdings sind Klauselmengen mit einer Klausel stets erfüllbar. Für m = 4 stellen wir die zugehörigen Tripel bildlich dar, wobei wir auf den Index i verzichten. Ti1 Ti0 u(1) u(1) u(4) b(1) a(1) b(4) a(2) u(4) u(2) b(2) a(4) a(3) b(3) u(3) u(2) u(3) Da die Elemente ai (j) und bi (j) nur in Tripeln aus Ti vorkommen, gibt es genau 2 Möglichkeiten, diese Elemente zu überdecken. 1.) Wir wählen alle Tripel in Ti1 , dann sind ui (1), . . . , ui (m) frei und zeigen an, dass ui = 1 sein soll. 2.) Wir wählen alle Tripel in Ti0 , dann sind ui (1), . . . , ui (m) frei und zeigen an, dass ui = 1, d. h. ui = 0, sein soll. Konstruktion von Sj : Wir fügen nun s0 (j) zu Y und s00 (j) zu Z hinzu, 1 ≤ j ≤ m. Diese Elemente sollen nur in Tripeln aus Sj vorkommen. Sj soll aus drei Tripeln bestehen, die von der Form (·, s0 (j), s00 (j)) sind. Falls cj = u7 ∨ u9 ∨ u15 , sei Sj = {(u7 (j), s0 (j), s00 (j)), (u9 (j), s0 (j), s00 (j)), (u15 (j), s0 (j), s00 (j))}. Allgemein werden die drei Literale von cj mit dem Zusatz (j)“ an die erste Stelle des Tripels geschrieben. Da ” die Elemente s0 (j) und s00 (j) nur in Tripeln aus Sj vorkommen, muss genau eines dieser drei Tripel gewählt werden. Um z.B. (u7 (j), s0 (j), s00 (j)) wählen zu können, müssen die Tripel aus T71 gewählt worden sein. Sonst ist u7 (j) nicht mehr frei. D.h. aber u7 = 1 und cj ist erfüllt. Wir zählen, wieviel Elemente X, Y und Z bisher haben. X : 2mn; ui (j) und ui (j), 1 ≤ i ≤ n, 1 ≤ j ≤ m. Y : mn + m; ai (j) und s0 (j), 1 ≤ i ≤ n, 1 ≤ j ≤ m. Z : mn + m; bi (j) und s00 (j), 1 ≤ i ≤ n, 1 ≤ j ≤ m. Um die bisherigen Elemente aus Y und Z zu überdecken, sind also mn + m Tripel notwendig und hinreichend. Es bleiben also mn − m Elemente aus X unüberdeckt. Falls die Überdeckung bis hierher möglich ist, soll sie trivial vervollständigt werden können. Konstruktion von G: Wir fügen g1 (k) zu Y und g2 (k) zu Z hinzu, 1 ≤ k ≤ mn − m. G umfasst alle Tripel (ui (j), g1 (k), g2 (k)) und (ui (j), g1 (k), g2 (k)), 1 ≤ i ≤ n, 1 ≤ j ≤ m, 1 ≤ k ≤ mn − m. 23 Wir fassen zusammen: q = 2mn. X = {ui (j), ui (j) | 1 ≤ i ≤ n, 1 ≤ j ≤ m}, |X| = 2mn. Y = {ai (j) | 1 ≤ i ≤ n, 1 ≤ j ≤ m} ∪ {s0 (j) | 1 ≤ j ≤ m} ∪{g1 (k) | 1 ≤ k ≤ mn − m}, |Y | = 2mn. Z = {bi (j) | 1 ≤ i ≤ n, 1 ≤ j ≤ m} ∪ {s00 (j) | 1 ≤ j ≤ m} ∪{g2 (k) | 1 ≤ k ≤ mn − m}, |Z| = 2mn. M = T1 ∪ · · · ∪ Tn ∪ S1 ∪ · · · ∪ Sm ∪ G. M enthält 2mn + 3m + 2mn(mn − m) Tripel. Es ist offensichtlich, dass sich (q, X, Y, Z, M ) in polynomieller Zeit aus (U, C) berechnen lässt. 4.) Wir nehmen zunächst an, dass es eine Belegung der Variablen in U gibt, so dass alle Klauseln in C erfüllt sind. Für i ∈ {1, . . . , n} wählen wir dann die Tripelmenge Ti1 oder Ti0 , die der erfüllenden Belegung entspricht. Da cj erfüllt ist, ist für ein i das Literal ui oder ui in cj erfüllt. Zur Überdeckung von s0 (j) und s00 (j) wird (ui (j), s0 (j), s00 (j)) bzw. (ui (j), s0 (j), s00 (j)) gewählt. Das Element ui (j) bzw. ui (j) ist nach Auswahl unserer Tripel aus Ti noch frei. Die Tripel können auf triviale Weise durch Tripel aus G zu einem Matching ergänzt werden. Sei nun andererseits ein Matching M gegeben. Wir haben bereits gesehen, dass dieses Matching entweder alle Tripel aus Ti1 oder alle Tripel Ti0 enthalten muss. Wir setzen im ersten Fall ui = 1 und im zweiten Fall ui = 0. Diese Belegung erfüllt alle Klauseln. Wenn nämlich cj nicht erfüllt ist, sind alle drei Literale aus cj Nullen. Wenn ui (oder ui ) in cj vorkommt, dann ist ui = 0 (ui = 1). Das Element ui (j) (ui (j)) wird dann bereits durch Tripel aus Ti überdeckt. Die Elemente s0 (j) und s00 (j) können also im Widerspruch zur Annahme durch M nicht überdeckt worden sein. 2 An dieser Stelle sollten die Leserin und der Leser wieder von den technischen Details des Beweises abstrahieren und sich überlegen, wie sich das 3-SAT-Problem im 3-DM-Problem wiederfindet. Auch diese Reduktion kann als Musterbeispiel für eine Reduktion mit miteinander verbundenen Komponenten gelten. 4.2 NP-Vollständigkeitsbeweise durch Restriktion Wenn ein Problem P1 ein Spezialfall des Problems P2 ist, dann gilt P1 ≤p P2 . So ist trivialerweise 3-SAT ein Spezialfall von SAT, die Eigenschaft 3-SAT ≤p SAT ist also trivial zu beweisen. Die Eingabe für 3-SAT kann direkt als Eingabe für SAT benutzt werden. Die Aussage HC ≤p TSP war bereits etwas schwieriger zu zeigen. Wir mussten erkennen, dass Kanten im Eingabegraphen G für HC einer billigen Verbindung in der Eingabe für TSP entsprechen und Nichtkanten einer teuren Verbindung. Schließlich musste im Beweis PARTITION ≤p BPP erst erkannt werden, dass das Problem PARTITION ein 2-KistenProblem in anderer Sprechweise ist. Es ist auch im folgenden nicht immer trivial zu erkennen, dass P1 ein Spezialfall von P2 ist. Da in der Praxis Restriktionen die häufigste Beweismethode darstellen, benutzen wir diese Methode, um acht weitere Probleme als 24 NP-vollständig zu klassifizieren. Da es immer leicht ist, zu zeigen, dass die betrachteten Probleme in NP enthalten sind, diskutieren wir diese Beweisteile nicht explizit. Unsere Sprache suggeriert, dass nicht P1 Spezialfall von P2 und gleichzeitig P2 Spezialfall von P1 sein kann. Wir wollen Spezialfall aber nicht als echten Spezialfall verstehen. So ist jede Sprache L Spezialfall von sich selber, die Eigenschaft L ≤p L ist ja auch mit der denkbar einfachsten Restriktion zu zeigen. Wir zeigen nun, dass drei wichtige Probleme in diesem Sinn Spezialfälle voneinander sind. In anderen Worten handelt es sich um das gleiche Problem in verschiedenen Gewändern. Hier ist eine Warnung angebracht. Diese Gleichheit gilt nur, wenn wir die Probleme exakt und nicht nur approximativ lösen wollen (s. Kap. 10). Definition 4.2.1: VC (Vertex Cover) Für einen ungerichteten Graphen G = (V, E) und eine Zahl k ∈ {0, . . . , |V |} soll entschieden werden, ob es eine Knotenmenge V 0 ⊆ V mit |V 0 | ≤ k gibt, die G überdeckt, d. h. für alle e ∈ E gilt e ∩ V 0 6= ∅. Es soll also entschieden werden, ob in einem Netzwerk k Überwachungsstationen genügen, um alle Verbindungen zu kontrollieren. Definition 4.2.2: IP (Independent Set) Für einen ungerichteten Graphen G = (V, E) und eine Zahl k ∈ {0, . . . , |V |} soll entschieden werden, ob der Graph k unabhängige Knoten v1 , . . . , vk enthält, d. h. vi 6= vj für i 6= j und {vi , vj } 6∈ E. Satz 4.2.3: VC und IP sind NP-vollständig. Beweis: Es gilt CLIQUE ≤p IP. Sei G = (V, E) und k eine Eingabe für CLIQUE. Zu G konstruieren wir den Komplementärgraphen Gc = (V, E c ), wobei E c genau die Kanten enthält, die nicht in E enthalten sind. Wir setzen k c = k. Eine Knotenmenge V 0 ⊆ V ist in G offensichtlich genau dann eine Clique, wenn sie in Gc eine unabhängige Menge ist. Auf gleiche Weise können wir auch zeigen, dass IP ≤p CLIQUE gilt. Somit sind IP und CLIQUE die gleichen Probleme in verschiedener Formulierung. Es gilt auch IP ≤p VC. Sei G = (V, E) und k eine Eingabe für IP. Zu (G, k) konstruieren wir (G0 , k 0 ) als Eingabe für VC, wobei G0 = G und k 0 = n − k ist. Eine Knotenmenge V 0 ⊆ V ist in G genau dann unabhängig, wenn keine Kante zwei Knoten aus V 0 verbindet. Dies ist genau dann der Fall, wenn V − V 0 in G0 = G ein vertex cover bildet. Schließlich ist |V − V 0 | = n − |V 0 |. Auch hier lässt sich V C ≤p IP auf gleiche Weise zeigen. 2 Definition 4.2.4: MINIMUM COVER (Überdeckungsproblem) Für eine endliche Menge S, ein System C von Teilmengen von S und eine Zahl k soll entschieden werden, ob sich S bereits mit k Mengen aus C überdecken lässt. Dieses Problem kennen wir aus der Vorlesung RECHNERSTRUKTUREN. Es ist bei der Berechnung eines Minimalpolynoms aus der Primimplikantentafel und bei der Berechnung einer minimalen Testmenge zum Testen eines Schaltkreises zu lösen. 25 Satz 4.2.5: MINIMUM COVER ist NP-vollständig. Beweis: 3-DM ≤p MINIMUM COVER. Sei (q, X, Y, Z, M ) gegeben. Die Mengen X, Y und Z sind disjunkt. S := X ∪ Y ∪ Z. Das Tripel (x, y, z) ∈ M wird durch die Menge {x, y, z} in C ersetzt. Dazu sei k = q. 2 Hier haben wir ausgenutzt, dass ein dreidimensionales Matching automatisch eine minimale Überdeckung aller Mengenelemente darstellt. Definition 4.2.6: HITTING SET Für eine endliche Menge S, ein System C von Teilmengen von S und eine Zahl k soll entschieden werden, ob es eine k-elementige Teilmenge S 0 von S gibt, die mit jeder Menge in C einen nichtleeren Schnitt hat. Satz 4.2.7: HITTING SET ist NP-vollständig. Beweis: VC ist der Spezialfall, in dem C nur zweielementige Mengen, nämlich Kanten, enthält. 2 Definition 4.2.8: SUBGRAPH ISOMORPHISM Für zwei ungerichtete Graphen G1 = (V1 , E1 ) und G2 = (V2 , E2 ) soll entschieden werden, ob G1 ein isomorphes Bild von G2 enthält, d. h. ob es eine Teilmenge V 0 von V1 mit |V 0 | = |V2 | und eine bijektive Abbildung f : V2 → V 0 derart gibt, dass {u, v} genau dann in E2 enthalten ist, wenn {f (u), f (v)} in E1 enthalten ist. Die Anwendungen in der Mustererkennung liegen auf der Hand. Satz 4.2.9: SUBGRAPH ISOMORPHISM ist NP-vollständig. Beweis: CLIQUE ist der Spezialfall, dass G2 der vollständige Graph auf V2 ist. 2 Wir setzen nun voraus, dass HAMILTONIAN PATH NP-vollständig ist (s. Übungen). Dabei ist zu entscheiden, ob ein Graph einen Pfad der Länge n − 1 enthält, der alle Knoten berührt. Ein Spannbaum ist ein Baum, der alle Knoten des Graphen enthält. In polynomieller Zeit kann entschieden werden, ob ein Graph einen Spannbaum enthält. Es genügt ein DFS-Durchlauf. Definition 4.2.10: BOUNDED DEGREE SPANNING TREE Für einen ungerichteten Graphen G und eine Zahl k soll entschieden werden, ob G einen Spannbaum enthält, bei dem der Grad jedes Knotens durch k beschränkt ist. Satz 4.2.11: BOUNDED DEGREE SPANNING TREE ist NP-vollständig. Beweis: HAMILTONIAN PATH ist der Spezialfall für k = 2. 26 2 Definition 4.2.12: MINIMUM EQUIVALENT DIGRAPH (MED) Für einen gerichteten Graphen G = (V, E) und eine Zahl k soll entschieden werden, ob es einen Untergraphen G0 = (V, E 0 ) mit höchstens k Kanten gibt, so dass Verbindungen nicht zerstört werden, d. h. falls es in G einen Weg von u nach v gibt, soll es auch in G0 einen Weg von u nach v geben. Dieses Problem hat natürlich Anwendungen in der Netzwerktheorie. Satz* 4.2.13: MINIMUM EQUIVALENT DIGRAPH ist NP-vollständig. Beweis: DHC ≤p MED. DHC ist im engeren Sinn kein Spezialfall von MED. Dennoch fällt der Beweis in die Klasse der Restriktionsbeweise. Ein Graph heißt stark zusammenhängend, wenn es für jedes Knotenpaar (u, v) einen Weg von u nach v gibt. Wir testen zunächst in polynomieller Zeit (s. EFFIZIENTE ALGORITHMEN), ob G stark zusammenhängend ist. Falls nicht, kann es keinen gerichteten Hamiltonkreis geben, und wir transformieren G in eine nicht lösbare Aufgabe für MED. Für stark zusammenhängende Graphen G ist DHC der Spezialfall von MED für k = |V |. Gerichtete Hamiltonkreise sind nämlich die einzigen Graphen mit |V | Kanten, in denen es für jedes Knotenpaar (u, v) einen Weg von u nach v gibt. 2 Definition 4.2.14: MULTIPROCESSOR SCHEDULING Für eine endliche Menge A von Aufgaben, deren Bearbeitungszeiten `(a) ∈ , eine Zahl m ∈ von Prozessoren und eine Deadline D ∈ ist zu entscheiden, ob die Aufgaben so auf die Prozessoren verteilt werden können, dass alle Aufgaben nach D Zeiteinheiten beendet sind. Hier ist wieder klar, dass dieses Problem anwendungsorientiert ist. Satz 4.2.15: MULTIPROCESSOR SCHEDULING ist NP-vollständig. P Beweis: PARTITION ist der Spezialfall m = 2 und D = 21 a∈A `(a). Falls D nicht ganzzahlig ist, ist PARTITION nicht lösbar. 2 Besonders für diese Beweismethode ist die Kenntnis vieler NP-vollständiger Probleme wichtig. Wir haben auf einfache Weise die NP-Vollständigkeit von acht weiteren für die Praxis wichtigen Problemen bewiesen. Inzwischen kennen wir 17 NP-vollständige Probleme. Diese Zahl ist natürlich für diejenigen noch wesentlich größer, die die Übungsaufgaben bearbeitet haben. 4.3 NP-Vollständigkeitsbeweise durch lokale Ersetzung Bei der Methode der lokalen Ersetzung wird versucht, die Komponenten einer Eingabe von P1 lokal, d. h. unabhängig von anderen Komponenten, in Komponenten einer Eingabe von P2 zu transformieren. Wir wollen die Methode mit vier weiteren NP-Vollständigkeitsbeweisen einüben. 27 Definition 4.3.1: BOOLEAN SUMS Für eine Variablenmenge U und eine Menge C = {c1 , . . . , cm } von booleschen Summen über U , d. h. Disjunktionen von positiven Literalen über U , soll für eine Zahl B ∈ entschieden werden, ob die booleschen Summen in einem Schaltkreis, der nur Disjunktionen als Operationen enthält, mit B Bausteinen berechnet werden können. Dieses Beispiel zeigt, dass bereits einfache Aufgaben bei der Schaltkreisoptimierung schwierig sind. Satz 4.3.2: BOOLEAN SUMS ist NP-vollständig. Beweis: 1.) BOOLEAN SUMS ∈ NP. 2.) Erstaunlicherweise ist VC das passende Problem. 3.) Sei G = (V, E) ein ungerichteter Graph und k ∈ {1, . . . , |V |}. Die Komponenten dieser Eingabe für VC sind die Knoten, Kanten und k. Es sei V = {v1 , . . . , vn } und U := {u0 , u1 , . . . , un }. D.h. der Komponente vi wird ui zugeordnet, außerdem wird u0 hinzugefügt. Der Kante {vi , vj } ∈ E wird die boolesche Summe u0 ∨ ui ∨ uj zugeordnet. Schließlich wird der Schranke k die Schranke B = k + |E| zugeordnet. Natürlich kann (U, C, B) in polynomieller Zeit berechnet werden. 4.) Sei zunächst angenommen, dass es für G ein vertex cover mit k Knoten, o.B.d.A. v1 , . . . , vk , gibt. Wir berechnen nun die booleschen Summen mit B Disjunktionen. Zunächst werden mit k Operationen alle u0 ∨ui , 1 ≤ i ≤ k, berechnet. Für jede der booleschen Summen u0 ∨ ui ∨ uj sei o.B.d.A. i < j. Da v1 , . . . , vk ein vertex cover bilden, ist i ≤ k. Es genügen also |E| weitere Disjunktionen, um alle booleschen Summen (u0 ∨ ui ) ∨ uj zu berechnen, da u0 ∨ ui bereits vorliegt. Sei nun ein Schaltkreis mit höchstens k + |E| Disjunktionen gegeben, der die booleschen Summen berechnet. Sei V ∗ die Menge der Knoten vj , für die es im Schaltkreis einen Baustein gibt, der ui ∨ uj mit i < j berechnet. V ∗ enthält höchstens k Knoten. Denn da es |E| Ausgabebausteine gibt, die offensichtlich keine Summe ui ∨ uj berechnen, gibt es höchstens k Bausteine, die ui ∨ uj berechnen. Sei nun {vi , vj } eine beliebige Kante (i < j). Da der Schaltkreis die Summe u0 ∨ ui ∨ uj berechnet, gibt es einen Baustein, der u0 ∨ ui , u0 ∨uj oder ui ∨uj berechnet. In jedem Fall ist einer der Knoten vi oder vj in V ∗ enthalten, und V ∗ bildet ein Vertex Cover. 2 Um auf diese Reduktion zu kommen“, muss man eventuell viele NP-vollständige Proble” me als Kandidaten für die Reduktion testen. Definition 4.3.3: PARTITION INTO TRIANGLES Für ungerichtete Graphen G = (V, E) mit |V |/3 = q ∈ soll entschieden werden, ob V so in q dreielementige Mengen V1 , . . . , Vq zerlegt werden kann, dass G auf Vi , 1 ≤ i ≤ q, ein Dreieck enthält. Satz* 4.3.4: PARTITION INTO TRIANGLES ist NP-vollständig. 28 Beweis: 1.) PARTITION INTO TRIANGLES ∈ NP. 2.) Da es um Zerlegungen in dreielementige Mengen geht, wählen wir 3-DM. 3.) Sei (q, X, Y, Z, M ) eine Eingabe für 3-DM. Die Komponenten des Problems sind die Tripel in M . Sei mi = (xi , yi , zi ) ∈ M . Dann wird mi durch die folgende Komponente ersetzt. ai (3) ai (9) ai (1) ai (2) xi ai (6) ai (4) ai (7) ai (5) ai (8) zi yi Wir nehmen an, dass alle Elemente aus X ∪ Y ∪ Z in mindestens einem Tripel in M vorkommen. Sonst ist 3-DM nicht lösbar. Nun sei V = X ∪ Y ∪ Z ∪ {ai (j) | 1 ≤ j ≤ 9 , 1 ≤ i ≤ |M |} und E die Menge der Kanten in allen zu mi , 1 ≤ i ≤ |M |, gehörenden Komponenten. Die Komponenten kleben“ an den Elementen aus X ∪ Y ∪ Z eventuell ” zusammen. Natürlich kann G = (V, E) in polynomieller Zeit berechnet werden. Da |X| = |Y | = |Z|, ist |V | durch 3 teilbar. 4.) Sei zunächst angenommen, dass X ∪ Y ∪ Z durch q Tripel überdeckt werden kann. Die Überdeckung bestehe o.B.d.A. aus m1 , . . . , mq . Für mi = (xi , yi , zi ), 1 ≤ i ≤ q wählen wir die vier Dreiecke (ai (1), ai (2), xi ), (ai (4), ai (5), yi ), (ai (7), ai (8), zi ), (ai (3), ai (9), ai (6)), während wir für die anderen Tripel mi , q < i, die drei Dreiecke (ai (1), ai (2), ai (3)), (ai (4), ai (5), ai (6)), und (ai (7), ai (8), ai (9)) wählen. Alle ai (j) werden genau einmal überdeckt. Gleiches gilt für die Elemente aus X ∪ Y ∪ Z, da diese Elemente in den Tripeln mi , 1 ≤ i ≤ q, genau einmal vorkommen. Nun wird angenommen, dass G mit q + 3|M | Dreiecken überdeckt werden kann. Für das dreidimensionale Matching wählen wir die Tripel mi aus, für die das Dreieck (ai (3), ai (9), ai (6)) in der Dreiecksüberdeckung von G vorkommt. Um die anderen ai (·)Knoten zu überdecken, müssen die Dreiecke (ai (1), ai (2), xi ), (ai (4), ai (5), yi ) und (ai (7), ai (8), zi ) gewählt worden sein. Daher wird X ∪ Y ∪ Z durch die gewählten Tripel überdeckt. Würde xi (oder yi oder zi ) in zwei oder mehr Tripeln vorkommen, würde das entsprechende Element auch in mindestens zwei Dreiecken der Dreiecksüberdeckung vorkommen. Widerspruch! 2 Diese beiden Reduktionen waren Beispiele für rein“ lokale Ersetzungen. Wir zählen Re” duktionen auch zur Klasse der lokalen Ersetzungen, wenn es neben der lokalen Ersetzung, die die wesentliche Rolle spielen, auch nebensächliche Komponenten gibt. Die Unterscheidung von Reduktionen in Methodenklassen ist natürlich nicht eindeutig. Es folgen zwei lokale Ersetzungen, die auch noch erzwingende Komponenten enthalten. 29 Definition 4.3.5: SEQUENCING WITH INTERVALS Für eine endliche Menge von Aufgaben A, die Zeit l(a) zur Bearbeitung benötigen, deren Bearbeitung frühestens zum Zeitpunkt r(a) beginnen darf und spätestens zum Zeitpunkt d(a), wobei d(a) − r(a) ≥ l(a), abgeschlossen sein muss, soll entschieden werden, ob sie von einem Prozessor so bearbeitet werden können, dass alle Nebenbedingungen erfüllt sind. Satz 4.3.6: SEQUENCING WITH INTERVALS ist NP-vollständig. Beweis: 1.) SEQUENCING WITH INTERVALS ∈ NP. 2.) Es ist naheliegend, das einfachste NP-vollständige Scheduling Problem, also PARTITION, zu wählen. PARTITION kann ja nicht nur als spezielles Bin Packing Problem mit zwei Kisten, sondern auch als spezielles Scheduling Problem aufgefasst werden. Dabei ist zu entscheiden, ob Aufgaben so auf zwei Prozessoren verteilt werden können, dass die beiden Prozessoren gleich lange zu arbeiten haben. 3.) Es sei eine Eingabe für PARTITION gegeben, also eine Menge A und s(a) ∈ , P a ∈ A. Sei B := a∈A s(a). Als Aufgabenmenge wählen wir A0 = A ∪ {a0 }, wobei a0 die erzwingende Aufgabe wird. Es sei r(a) = 0, d(a) = B + 1 und l(a) = s(a) für a ∈ A, sowie r(a0 ) = B/2, d(a0 ) = B/2 + 1 und l(a0 ) = 1. Diese Eingabe für SEQUENCING WITH INTERVALS kann natürlich in polynomieller Zeit berechnet werden. Falls B/2 nicht ganzzahlig ist, kann PARTITION für diese Eingabe nicht gelöst werden. 4.) Die Definitionen erzwingen, dass die Aufgabe a0 im Zeitintervall [B/2, B/2 + 1] bearbeitet wird. Alle Arbeiten müssen nach B + 1 Zeiteinheiten abgearbeitet sein, daher darf es keine Arbeitspause geben. Es gibt also genau dann einen zulässigen Arbeitsplan, wenn die Aufgaben aus A in zwei Blöcke der Länge B/2 zerlegt werden können, d. h. wenn PARTITION für A eine Lösung hat. 2 Definition 4.3.7: MINIMUM TEST COLLECTION Für eine endliche Menge A von Diagnosen und eine Menge C = {c1 , . . . , cm } von Tests – wobei mit dem Test ci ⊆ A entschieden wird, ob die unbekannte Diagnose a ∈ ci ist – soll für eine Zahl k entschieden werden, ob bereits k der Testmengen ausreichen, um jedes a zu identifizieren. Ein a ∈ A lässt sich eindeutig identifizieren, wenn es für jedes b ∈ A, b 6= a, einen Test c mit a ∈ c und b ∈ / c oder a ∈ / c und b ∈ c gibt. Dieses Problem ist grundlegend für Testplanungen und die sogenannte Suchtheorie. Satz 4.3.8: MINIMUM TEST COLLECTION ist NP-vollständig. Beweis: 1.) MINIMUM TEST COLLECTION ∈ NP. 2.) Die Wahl ist nicht einfach. Da es aber um trennende Tests geht und alle Diagnosenpaare getrennt werden müssen, wählen wir 3-DM. 3.) Sei (q, X, Y, Z, M ) eine Eingabe für 3-DM. Jedes Tripel mi = (xi , yi , zi ) ∈ M wird durch den Test ci = {xi , yi , zi } ersetzt. Als erzwingende Diagnosen werden x0 , y0 und 30 z0 definiert. Es sei also A = X ∪ Y ∪ Z ∪ {x0 , y0 , z0 }. Die Menge aller Tests C enthält ci = {xi , yi , zi }, falls mi = (xi , yi , zi ) ∈ M , c0 = X ∪ {x0 } und c00 = Y ∪ {y0 }. Dazu sei k = q + 2. Die Eingabe (A, C, k) für MINIMUM TEST COLLECTION kann natürlich in polynomieller Zeit berechnet werden. 4.) Die zusätzlichen“ Diagnosen x0 , y0 und z0 erzwingen, dass die Tests c0 und c00 gewählt ” werden müssen. Mit diesen beiden Tests erfahren wir, ob die richtige Diagnose in X ∪{x0 }, Y ∪ {y0 } oder Z ∪ {z0 } ist. Falls es ein dreidimensionales Matching mit q Tripeln gibt, wählen wir die zugehörigen q Tests und c0 und c00 . Jedes xi , i ≥ 1, ist in genau einem der q zu den Tripeln gehörigen Testmengen enthalten, während x0 in keiner dieser Mengen enthalten ist. Die x-Diagnosen werden also getrennt, ebenso die y- und z-Diagnosen. Die Tests c0 und c00 entscheiden, ob wir eine x-, y- oder z-Diagnose stellen müssen. Wenn andererseits q + 2 Tests ausreichen, sind darunter c0 und c00 , die zwischen den x-, yund z-Diagnosen unterscheiden. Wir zeigen, dass die q Tripel, die zu den anderen q Tests gehören, ein dreidimensionales Matching bilden. Wenn xi ∈ X nicht überdeckt wird, kann xi nicht von x0 getrennt werden. Also werden alle x ∈ X, y ∈ Y und z ∈ Z überdeckt. Da q Tripel nur 3q Elemente überdecken können, werden auch alle Elemente nur einmal überdeckt. 2 4.4 Zwei weitere Reduktionen mit verbundenen Komponenten Die bisher behandelten Beweisprinzipien zeichnen sich durch ihre Lokalität aus. Dies erleichtert ein rezeptartiges Vorgehen. Bei Reduktionen mit verbundenen Komponenten ist meistens eine Portion Intuition nötig, passende Verbindungen zu finden. Mit Restriktionen und lokalen Ersetzungen kommen wir im Allgemeinen dann nicht aus, wenn wir die NPVollständigkeit eines Problems P beweisen wollen und noch kein P verwandtes Problem als NP-vollständig bekannt ist. Reduktionen zwischen sehr unterschiedlichen Problemen sind natürlich schwieriger zu finden als Reduktionen zwischen sehr ähnlichen oder ziemlich ähnlichen Problemen. Etwas vereinfachend kann festgehalten werden: Es ist Aufgabe der wissenschaftlichen Forschung, die NP-Vollständigkeit von Problemen zu zeigen, die zu Gebieten gehören, aus denen noch kein NP-vollständiges Problem bekannt ist. Dies gilt auch für sehr spezielle Varianten von NP-vollständigen Problemen. Es ist dann Routine für Informatikerinnen und Informatiker in Industrie und Forschung, die NP-Vollständigkeit weiterer Probleme zu zeigen, für die ähnliche Probleme“ bereits als NP-vollständig ” bekannt sind. Wir wollen noch beispielhaft eine Reduktion nach der Methode verbundener Komponenten vorführen. Definition 4.4.1: MINIMUM TARDINESS SEQUENCING Für eine Menge von Aufgaben A, deren Bearbeitungsdauer jeweils 1 ist, für die es aber eine Deadline d(a) ∈ gibt und für die es eine partielle Ordnung gibt, die für manche Aufgaben die Bearbeitungsreihenfolge festlegt, soll für ein k ∈ entschieden werden, ob es eine Bearbeitungsreihenfolge gibt, bei der höchstens k Aufgaben nicht zu ihrer Deadline bearbeitet sind. 31 Satz 4.4.2: MINIMUM TARDINESS SEQUENCING ist NP-vollständig. Beweis: 1.) MINIMUM TARDINESS SEQUENCING ∈ NP. 2.) Es wird CLIQUE gewählt. 3.) Es sei G = (V, E) ein ungerichteter Graph und k ≤ |V |. Diese Eingabe für CLIQUE k 0 wird folgendermaßen transformiert. Es sei A := V ∪E, k = |E|− 2 . Falls k 0 < 0, ist CLIQUE nicht lösbar. Wir haben nun Aufgaben, also Komponenten, für die Knoten und Kanten des gegebenen Graphen. Zusätzlich sei d(a) = |V | + |E|, falls a ∈ V , die triviale Deadline, und d(a) = k+1 für a ∈ E. Die Komponenten werden nun 2 durch die partielle Ordnung ≤ verbunden. Es sei a ≤ a0 :⇔ a ∈ V , a0 ∈ E, und a liegt auf a0 . Die Eingabe (A, d, k 0 , ≤) für MINIMUM TARDINESS SEQUENCING kann natürlich in polynomieller Zeit berechnet werden. 4.) Sei zunächst angenommen, dass der Graph G die k-Clique V 0 enthält. Wir betrachten folgendes Schedule. Zunächst werden die k Aufgaben a ∈ V 0 durchgeführt, dann die k2 Aufgaben, die zu den Cliquenkanten gehören, dann die weiteren Knotenaufgaben und schließlich die restlichen Kantenaufgaben. Die Kantenaufgaben, die zu der Clique gehören, sind zum Zeitpunkt k + k2 = k+1 beendet, erfüllen also ihre 2 Deadline. erfüllen immer ihre Deadline. Also verletzen höchstens Knotenaufgaben k 0 |E| − 2 = k Kantenaufgaben die Deadline. Sei nun ein zulässiges Schedule angenommen. Dann müssen mindestens k2 Kan durchgeführt werden, also können bis zum tenaufgaben bis zum Zeitpunkt k+1 2 k+1 Zeitpunkt 2 höchstens k Knotenaufgaben durchgeführt werden. Aufgrund der vorgeschriebenen partiellen Ordnung dürfen die k2 frühen“ Kantenaufgaben nur ” Kanten betreffen, deren Endknoten zu den frühen“ Knotenaufgaben gehören. Alle ” k Kanten liegen also auf einer Knotenmenge von höchstens k Knoten. Das ist nur 2 möglich, wenn diese Kanten eine k-Clique bilden. 2 Wir wenden uns nun noch einem wirklich relevanten“ Problem zu, für das die NP” Vollständigkeit in Dortmund bewiesen wurde. In einer Fußballliga stellt sich im Verlauf der Saison die Frage, ob eine bestimmte Mannschaft (hier bitte selber ein Team ergänzen) noch Meister werden kann. Natürlich kann angenommen werden, dass diese Mannschaft alle ausstehenden Spiele gewinnt und zwar so hoch, dass sie am Ende vor allen Mannschaften mit gleich vielen Punkten steht. Die anderen sollten möglichst alle Spiele verlieren, aber das geht nicht, da sie noch gegeneinander spielen müssen. Also ist das Problem nicht trivial. Wir formalisieren das Problem. 32 Definition 4.4.3: Das Meisterschaftsproblem MP3 erhält als Eingabe eine Liste von Mannschaften und die Angabe, welche Mannschaften noch gegeneinander spielen müssen. Für jede Mannschaft ist die bisher erreichte Punktzahl angegeben. Es ist zu entscheiden, ob die offenen Spiele so ausgehen können, dass Mannschaft 1 mindestens so viele Punkte wie jede andere Mannschaft hat. Es wird nach der 3-Punkte-Regel gespielt (0 Punkte für Niederlage, 1 Punkt für Unentschieden, 3 Punkte für Sieg), daher MP3. Für den Reduktionsbeweis benutzen wir eine andere Darstellung des Problems. Die Mannschaften werden als Knoten eines Graphen dargestellt. Zwei Mannschaften werden genau dann durch eine Kante verbunden, wenn sie noch gegeneinander spielen. Wir können das Problem darauf reduzieren, dass Mannschaft 1 alle ausstehenden Spiele gewinnt. Darüber hinaus wird angenommen, dass alle anderen Spiele unentschieden enden. Dies ergibt für jede Mannschaft i eine vorläufige Punktzahl pi wobei wir pi − p1 als Knotenmarkierung notieren. Wenn wir ein Spiel zwischen A und B in einen Sieg für A ändern, erhält A zwei zusätzliche Punkte, während B einen Punkt verliert. Es stellt sich die Frage, ob wir die Spielausgänge so ändern können, dass alle Knotenmarkierungen nicht größer als Null sind. Satz 4.4.4: MP3 ist NP-vollständig. Beweis: 1.) MP3 ∈ NP, da wir die Spielausgänge raten können und dann effizient überprüfen können, ob Mannschaft 1 mindestens so viele Punkte wie jede andere Mannschaft hat. 2.) Auch hier erweist sich 3-SAT als geeignetes Basisproblem. 3.) Wir wollen hier den Entwurf einer Reduktion mit verbundenen Komponenten noch einmal musterhaft vorführen. Wir beginnen mit der Klauselkomponente Ci für die Klausel ci . Sie besteht aus einem Knoten Ci mit Knotenmarkierung +1. Später wird diese Komponente mit insgesamt drei Kanten mit den Knoten verbunden, die die Literale in ci darstellen. Die Klauselzahl wird mit m bezeichnet. Wir werden später die Eigenschaft m = 2k benutzen. Diese Eigenschaft ist aber durch Wiederholung einiger Klauseln leicht zu erreichen. Die Variablen xj , 1 ≤ j ≤ n, werden durch Variablenkomponenten dargestellt. Dies sind vollständige binäre Bäume der Tiefe k + 1. Sie haben also 2m Blätter, die m linkesten repräsentieren m Kopien von xj , die anderen m Kopien von xj . Die Wurzel hat die Markierung +1, die Blätter haben die Markierung −2, während die anderen inneren Knoten die Markierung 0 haben. Die folgende Abbildung stellt die Situation für m = 2 dar. 33 +1 xj -Variablenkomponente 0 0 -2 -2 0 0 -2 -2 0 -2 -2 0 -2 -2 4 Kopien von xj 4 Kopien von xj Die Mannschaft an der Wurzel muss ein Spiel verlieren, um den überschüssigen Punkt abzugeben. Verliert sie gegen das linke Kind, erhält die Mannschaft dort einen Überschuss von +2. Sie muss gegen ihre beiden Kinder verlieren. Dies setzt sich lawinenartig fort und am Ende haben alle Knoten im linken Teilbaum den Wert 0. Die Kopien von xj können also nicht mehr verwendet werden, um einen Überschuss an Klauselknoten abzubauen. Für Klauseln, die xj enthalten, stehen also Kopien von xj nicht mehr zur Verfügung. Dagegen haben alle Kopien von xj noch den Wert −2. Dies symbolisiert die Belegung xj = 0. Analog symbolisiert eine Niederlage der Wurzelmannschaft gegen das rechte Kind die Belegung xj = 1. Mit dieser Interpretation ist auch klar, wie wir die Komponenten verbinden. Für jedes Literal der i-ten Klausel gibt es eine Kante von Ci zur i-ten Kopie des Literals. Hierbei nehmen wir an, dass Klauseln jedes Literal nur einmal enthalten. Es wird auch klar, dass unsere Konstruktion sparsamer“ gestaltet werden kann, da m durch ” m0 ersetzt werden kann, wenn jedes Literal nur in höchstens m0 Klauseln vorkommt. 4.) Wir nehmen zunächst an, dass die Belegung c = (a1 , . . . , an ) erfüllend ist. Dann kann unsere ausgewählte Mannschaft noch Meister werden, nämlich bei folgenden Spielausgängen. Die Mannschaft an der Wurzel der xj -Variablenkomponente verliert gegen das linke Kind, falls aj = 0, bzw. gegen das rechte Kind, falls aj = 1. Die entstehenden positiven Punktverhältnisse werden im entsprechenden Teilbaum abgebaut. Die i-te Klausel ist erfüllt, d.h. ein Literal ist erfüllt. Die i-te Klauselkomponente verliert gegen die Kopie des entsprechenden Literals. Nehmen wir nun umgekehrt an, dass die ausgewählte Mannschaft Meister werden kann. Dann muss die Mannschaft an der Wurzel der xj -Variablenkomponente gegen eines ihrer Kinder verlieren und den beschriebenen Lawineneffekt auslösen. Dies interpretieren wir, wie oben beschrieben, als Variablenbelegung. Diese Variablenbelegung ist erfüllend. Für jede Klauselkomponente gilt, dass sie ein Spiel verlieren muss. Dafür gibt es drei Möglichkeiten, die ihre drei Literale repräsentieren. Wenn alle drei Literale nicht erfüllt sind, haben die entsprechenden Mannschaften bereits die Punktzahl 0 und würden Meister werden, wenn sie ein weiteres Spiel gewinnen. 2 34 Hier zeigt sich, dass ein Problem viele interessante Varianten haben kann. In der vorliegenden Reduktion hat jeder Knoten einen durch 3 beschränkten Grad. Das Problem ist also selbst dann NP-vollständig, wenn jede Mannschaft nur noch drei ausstehende Spiele hat. Bei zwei offenen Spielen wird es übrigens effizient lösbar. Wir können auch erreichen, dass jede Mannschaft noch genau drei Spiele absolvieren muss und dass die offenen Spiele so beschaffen sind, dass sie an drei Spieltagen absolviert werden können. Allerdings hat der in der Bundesliga benutzte Spielplan eine besondere Form, die kanonisch auf jede Anzahl von gerade vielen Mannschaften verallgemeinert werden kann. Dieser Spielplan macht das Problem einfacher. Das Meisterschaftsproblem ist polynomiell lösbar, wenn nur noch O(log1/2 n) Spieltage ausstehen, über die Situation mit mehr Spieltagen ist nichts bekannt. Was ist schließlich mit anderen Punktregeln, wobei o.B.d.A. kein Punkt bei Niederlagen und ein Punkt bei Unentschieden vergeben werden. Es sei s > 1 (s rational) die Anzahl der Punkte für einen Sieg (s = 3/2 bedeutet im Prinzip 2 Punkte für Unentschieden und 3 Punkte für Sieg). Das Problem ist NP-vollständig für alle s 6= 2 und effizient lösbar für s = 2. Warum spielt die Situation s = 2 wohl eine Sonderrolle? Eine letzte Bemerkung: Die 2-Punkte-Regel wurde lange benutzt. Den Umgang mit Beweismethoden kann man natürlich nur erlernen, indem man ihn erprobt, also Reduktionen selber entwirft. Dafür gibt es glücklicherweise Übungsaufgaben. 35 5 5.1 Probleme, Teilprobleme und ihre Komplexitätsanalyse Schwierige Probleme mit einfachen Teilproblemen Wie gehen wir vor, wenn wir ein Problem zu lösen haben, das weder in der Liste NPvollständiger Probleme steht, noch in Büchern über effiziente Algorithmen behandelt wird? Optimistischerweise starten wir mit den Methoden aus der Vorlesung EFFIZIENTE ALGORITHMEN und versuchen, einen effizienten, also polynomiellen Algorithmus zu entwerfen. Im positiven Fall sind wir glücklich. Im negativen Fall benutzen wir die Methoden dieser Vorlesung und versuchen zu zeigen, dass das Problem NP-vollständig ist oder mindestens so schwierig wie die NP-vollständigen Probleme. Dabei sind beide Vorgehensweisen nicht isoliert voneinander zu sehen. Wenn wir sehen, woran unsere Versuche, einen effizienten Algorithmus zu entwerfen, scheitern, erhalten wir häufig Ideen für einen NP-Vollständigkeitsbeweis. Umgekehrt erhalten wir Ideen zum Entwurf eines effizienten Algorithmus häufig aus gescheiterten Versuchen, die Schwierigkeit des Problems zu beweisen. Müssen wir verzweifeln, wenn wir herausfinden, dass unser Problem schwierig ist, weil es NP-vollständig ist? Es ist sicherlich nicht vernünftig, darauf zu hoffen, dass NP = P ist und dies auch in nächster Zukunft bewiesen wird. Für Optimierungsprobleme werden wir spezielle Auswege in Kap. 10 untersuchen. Hier beschränken wir uns weiterhin auf Entscheidungsprobleme. Wir können nun das Glück haben, dass wir das betrachtete Problem gar nicht in voller Allgemeinheit lösen müssen. Statt dessen interessiert uns nur ein Teilproblem. Teilprobleme können wesentlich einfacher als das allgemeine Problem sein. Wir haben dies bereits an manchen Stellen gesehen und wollen einige Ergebnisse vorstellen. Einige der Ergebnisse folgen aus unseren Ergebnissen aus Kap. 3 und Kap. 4, auf die anderen Beweise wollen wir verzichten. 1.) Erfüllbarkeitsprobleme: Das allgemeine Problem, für einen Schaltkreis oder eine Formel zu entscheiden, ob sie erfüllbar sind, ist NP-vollständig, da SAT ein NP-vollständiges Teilproblem ist. Wenn die Formel als Disjunktion von Monomen vorliegt, ist das Erfüllbarkeitsproblem in P, während das Erfüllbarkeitsproblem für Formeln, die Konjunktionen von Klauseln sind, NP-vollständig ist. Dies ist SAT selber. Das Problem bleibt schwierig, wenn vorausgesetzt wird, dass jede Klausel 3 Literale enthält (3-SAT), es wird allerdings einfach, wenn jede Klausel nur 2 Literale enthält, 2-SAT ∈ P. 2.) Überdeckungsprobleme: Das allgemeine Überdeckungsproblem MINIMUM COVER ist NP-vollständig. Spezielle Überdeckungsprobleme sind Matchingprobleme. Während dreidimensionales Matching (3-DM) NP-vollständig ist, ist zweidimensionales oder bipartites Matching (2-DM) effizient lösbar. Ein anderer Typ von Überdeckungsproblem ist das NP-vollständige Vertex Cover Problem VC. Analog kann man das Edge Cover Problem EC betrachten. Für einen ungerichteten Graphen G = (V, E) und k ∈ soll entschieden werden, ob es eine Kantenmenge E 0 ⊆ E mit |E 0 | ≤ k gibt, die alle Knoten überdeckt. 36 Um die Kantenzahl in einer Kantenüberdeckung zu minimieren, müssen möglichst viele Kanten gefunden werden, die keinen gemeinsamen Knoten haben. In anderen Worten soll ein maximales Matching Mopt berechnet werden. Die Antwort auf EC ist genau dann ja, wenn k ≥ |V | − |Mopt | ist. In der Vorlesung EFFIZIENTE ALGORITHMEN wird gezeigt, dass die Berechnung maximaler Matchings in polynomieller Zeit O(|V |3 ) möglich ist. 3.) Optimale Pfade: Aus der Vorlesung DATENSTRUKTUREN ist bekannt, dass für ungerichtete Graphen G = (V, E) und k ∈ mit einem BFS-Ansatz in Zeit O(|V | + |E|) entschieden werden kann, ob es zwischen zwei Knoten u und v einen Pfad gibt, dessen Länge höchstens k beträgt. Das ähnlich ausschauende Problem zu entscheiden, ob es einen kreisfreien Weg von u nach v gibt, dessen Länge mindestens k beträgt, ist dagegen NP-vollständig. HAMILTONIAN PATH ist nämlich der Spezialfall dieses Problems für k = |V | − 1. 4.) Scheduling-Probleme: Das Problem zu entscheiden, ob die Menge der Aufgaben A mit Bearbeitungszeit 1 und Deadline d(a) unter den durch eine partielle Ordnung ≤ gegebenen Nebenbedingungen von m Prozessoren ordnungsgemäß bearbeitet werden kann, ist NP-vollständig. Dies gilt sogar, wenn jede Aufgabe a bzgl. ≤ höchstens einen direkten Vorgänger hat. Wenn jede Aufgabe a bzgl. ≤ jedoch nur höchstens einen direkten Nachfolger hat, ist das Problem in polynomieller Zeit lösbar. Die Komplexitätsanalyse eines NP-vollständigen Problems besteht also darin, für möglichst viele Teilprobleme zu entscheiden, ob sie in P liegen oder NP-vollständig sind. Dabei ist zu beachten, dass es Probleme geben kann, die weder NP-vollständig sind noch in P liegen. Die abstrakte Komplexitätstheorie impliziert sogar, dass es solche Probleme geben muss, falls NP 6= P ist. 5.2 Die Komplexitätsanalyse des Färbbarkeitsproblems Das Färbbarkeitsproblem lässt sich auf besonders viele Weisen sinnvoll einschränken. Es eignet sich daher besonders gut für eine Komplexitätsanalyse. Wir kennen das Problem, eine Landkarte so zu färben, dass Länder mit einer gemeinsamen Grenze verschieden gefärbt werden. Definition 5.2.1: GC (GRAPH-COLORABILITY) Für ungerichtete Graphen G = (V, E) und k ∈ soll entschieden werden, ob sich G mit k Farben färben lässt, d.h. ob es eine Funktion f : V → {1, . . . , k}, die Färbung, gibt, so dass f (u) 6= f (v) für alle {u, v} ∈ E ist. Definition 5.2.2: a) GC-k ist das Teilproblem von GC, in dem k kein Parameter, sondern ein fester Wert ist. b) GC ≤ k ist das Teilproblem von GC, in dem die Zahl der Farben durch einen Parameter m angegeben wird, der aber nicht größer als k sein darf. Offensichtlich ist GC ≤ k ein Teilproblem von GC ≤ (k + 1), während GC-k kein Teilproblem von GC-(k + 1) ist. GC-k ist ein Teilproblem von GC ≤ k. Allerdings lässt sich 37 GC-k leicht auf GC-k 0 mit k 0 ≥ k reduzieren (Übungsaufgabe). Es ist ebenfalls einfach, mit einem Greedy Algorithmus zu zeigen, dass GC-2 ∈ P ist. Satz 5.2.3: GC-3 ist NP-vollständig. Korollar 5.2.4: GC, GC-k und GC ≤ k sind für k ≥ 3 NP-vollständig, während GC-k und GC ≤ k für k ≤ 2 in P sind. Beweis: Das Korollar folgt aus Satz 5.2.3 und den zuvor diskutierten Teilproblembeziehungen, wenn vorausgesetzt wird, dass GC-2 in P ist. Dabei wird die einfache Tatsache verwendet, dass alle Färbbarkeitsprobleme in NP sind. 2 Beweis von Satz 5.2.3: 1.) GC-3 ∈ NP. 2.) Es wird 3-SAT gewählt, da dieses Problem sich bereits für viele verschiedene Probleme als Basisproblem bewährt hat. 3.) Wir wollen die Methode der verbundenen Komponenten benutzen. Die entscheidende Idee besteht in der Entdeckung der folgenden Verbindungskomponente. a y1 a y3 X b y2 y1 H b y2 y3 y4 y6 c y5 Man beachte, dass Graph H durch Hintereinanderschalten“ zweier X-Exemplare (einem ” linken“ und einem rechten“) entsteht. Wir zeigen zunächst für den Graphen X die ” ” beiden folgenden Eigenschaften. i) Für jede 3-Färbung f gilt: Falls f (a) = f (b), dann ist f (y3 ) = f (a). ii) Jede Funktion f : {a, b} → {1, 2, 3} mit f −1 (1) 6= ∅ kann zu einer 3-Färbung von X mit f (y3 ) = 1 erweitert werden. Zum Beweis der ersten Behauptung sei o.B.d.A. f (a) = f (b) = 1. Dann folgt, dass die beiden Nachbarn von a und b die Farben 2 und 3 tragen müssen, also ist y3 mit der Farbe 1 gefärbt. Für den Beweis der zweiten Behauptung argumentieren wir wie folgt: Falls f (a) = f (b) = 1 ist, benutzen wir die Färbung aus dem Beweis der ersten Eigenschaft. Falls f (a) = 1 und o.B.d.A. f (b) = 2 ist, dann färben wir den Nachbarn von Knoten a mit Farbe 2, den Nachbarn von b mit Farbe 3 und y3 mit Farbe 1. Für den Graphen H gilt somit folgendes: (1) Für jede 3-Färbung f gilt: Falls f (a) = f (b) = f (c), dann ist f (y6 ) = f (a). (2) Jede Funktion f : {a, b, c} → {1, 2, 3} mit f −1 (1) 6= ∅ kann zu einer 3-Färbung von H mit f (y6 ) = 1 erweitert werden. 38 Die erste Behauptung erhalten wir, wenn wir Eigenschaft i) für den Graphen X zweimal hintereinander anwenden. Die zweite Behauptung ergibt sich analog: Wenn Knoten a oder b mit Farbe 1 gefärbt ist, dann können wir Knoten y3 mit Farbe 1 färben und somit Eigenschaft ii) für das rechte X-Exemplar anwenden. Wenn Knoten c mit der Farbe 1 gefärbt ist, können wir Eigenschaft ii) direkt für das rechte X-Exemplar verwenden. Sei nun (U = {u1 , . . . , un }, C = {C1 , . . . , Cm }) eine Eingabe für 3-SAT. Es sei Ci = ai ∨ bi ∨ ci , wobei ai , bi , ci Literale über U sind. Es sei G = (V, E) folgender Graph. V enthält ui , ūi , 1 ≤ i ≤ n, yij , 1 ≤ i ≤ m, 1 ≤ j ≤ 6 und v1 , v2 , v3 . E enthält die Kanten {ui , ūi }, 1 ≤ i ≤ n, ein Dreieck auf {v1 , v2 , v3 }, für jede Klausel Ci den Graphen H auf ai , bi , ci , yi,1 , . . . , yi,6 sowie die Kanten {v3 , ui }, {v3 , ūi } für 1 ≤ i ≤ n und {v2 , yi,6 }, {v3 , yi,6 } für 1 ≤ i ≤ m. Natürlich ist G in polynomieller Zeit konstruierbar. 4.) Sei zunächst angenommen, dass es eine Variablenbelegung gibt, die C1 , . . . , Cm erfüllt. Wir färben nun G. f (v1 ) = 1, f (v2 ) = 2, f (v3 ) = 3, f (ui ) = 1 und f (ūi ) = 2, falls ui mit 1 belegt ist, f (ui ) = 2 und f (ūi ) = 1, falls ui mit 0 belegt ist. Bisher ist die Färbung erlaubt, das v-Dreieck, die {ui , ūi }-, {v3 , ui }- und {v3 , ūi }-Kanten sind legal gefärbt. Da jede Klausel Ci erfüllt ist, ist für jede H-Komponente mindestens einer der drei Knoten ai , bi oder ci mit 1 gefärbt. Nach Eigenschaft (2) von H können wir die H-Komponenten so 3-färben, dass yi,6 mit 1 gefärbt wird. Damit sind auch die Kanten {v2 , yi,6 } und {v3 , yi,6 } legal gefärbt. Sei nun f eine 3-Färbung von G. O.B.d.A. können wir annehmen, dass f (v1 ) = 1, f (v2 ) = 2 und f (v3 ) = 3 ist. Das v-Dreieck muss drei verschiedene Farben erhalten. Wegen der Kanten {v2 , yi,6 } und {v3 , yi,6 } ist f (yi,6 ) = 1. Da auf ui , ūi , v3 ein Dreieck existiert, sind diese 3 Knoten verschieden gefärbt. Da f (v3 ) = 3, gilt f (ui ) = 1 und f (ūi ) = 2 oder f (ui ) = 2 und f (ūi ) = 1. Wir belegen die mit 1 gefärbten Literale mit 1. Wenn nun eine Klausel Ci nicht erfüllt ist, folgt f (ai ) = f (bi ) = f (ci ) = 2. Aus Eigenschaft (1) von H folgt f (yi,6 ) = 2 im Widerspruch zu unseren vorherigen Überlegungen. Also sind alle Klauseln erfüllt. 2 Das allgemeine Problem sowie die Probleme mit Einschränkungen an die Zahl der Farben haben wir klassifiziert. Wir betrachten nun Graphen, bei denen der Grad der Knoten eingeschränkt ist. Mit D bezeichnen wir die Gradschranke. Graphen mit D = 2 zerfallen in disjunkte Kreise und Pfade. Auf diesen Graphen sind viele Probleme in polynomieller Zeit entscheidbar, z.B. VC, HC und auch GC. VC und HC werden aber bereits für D = 3 NP-vollständig. Dagegen ist GC für D = 3 noch in P. Es gilt nämlich die Aussage, dass der einzige nicht 3-färbbare zusammenhängende Graph mit Gradbeschränkung 3 der vollständige Graph auf vier Knoten ist. Es ist natürlich leicht, in polynomieller Zeit zu überprüfen, ob eine Zusammenhangskomponente von G ein vollständiger Graph auf vier Knoten ist. Das Färbbarkeitsproblem wird für D ≤ 4 schwierig. Satz 5.2.5: GC-3 für D = 4 ist NP-vollständig. Beweis: 1.) Alle Färbbarkeitsprobleme sind in NP. 39 2.) Wir sollten in unserem Problemkreis bleiben und wählen GC-3. 3.) Sei G = (V, E) ein ungerichteter Graph. G soll in G0 = (V 0 , E 0 ) mit durch 4 beschränktem Grad transformiert werden. Wir verwenden die Methode der lokalen Ersetzung. Auch dafür benötigen wir geeignete Komponenten. Es sei H3 der folgende Graph: 2 H3 : 6 8 7 1 4 5 3 Die Knoten 1, 2 und 3 haben nur Grad 2, der Grad aller anderen Knoten ist 4. Für jede 3-Färbung von H3 gilt f (1) = f (2) = f (3). Dies lässt sich leicht zeigen: O.B.d.A. f (1) = 1 und f (4) = 2. Dann folgt f (6) = 3, f (7) = 1, f (5) = 3, f (8) = 2, f (2) = f (3) = 1. Sei nun Hk für k ≥ 4 der folgende Graph, der aus k − 2 Kopien von H3 zusammengeklebt ist. 2 3 k-1 Hk : H3 H3 H3 1 k Da die Komponenten H3 zusammenkleben, folgt, dass für jede 3-Färbung von Hk gilt f (1) = · · · = f (k). Der Grad aller Knoten in Hk ist durch 4 beschränkt, wobei die äußeren Knoten 1, . . . , k Grad 2 haben. Der Graph G0 entsteht aus G in mehreren Schritten. Sei V = {v1 , . . . , vn }, G0 := G, G1 , . . . , Gn =: G0 . Dabei sei di der Grad von vi in Gi−1 . Gi entsteht dann aus Gi−1 , indem vi , falls di > 4 ist, durch Hdi ersetzt wird, die di Kanten zu vi werden durch Kanten ersetzt, die zu je einem äußeren Knoten von Hdi führen. Damit ist der Grad in G0 durch 4 beschränkt. Natürlich kann G0 in polynomieller Zeit konstruiert werden. 4.) Da bei jeder 3-Färbung einer H-Komponente alle äußeren Knoten gleich gefärbt sind und H-Komponenten dreifärbbar sind, überträgt sich jede 3-Färbung von G auf G0 und umgekehrt. 2 Eine wichtige Rolle spielen planare Graphen. Dies sind Graphen, die sich so in die Ebene zeichnen lassen, dass sich Kanten nicht kreuzen. Es kann in linearer Zeit getestet werden, ob ein Graph planar ist. 40 Definition 5.2.6: MAX CUT Für ungerichtete Graphen G = (V, E) und k ∈ soll entschieden werden, ob der Graph so zerschnitten werden kann, d.h. V so disjunkt in zwei Teilmengen V1 und V2 zerlegt werden kann, dass mindestens k Kanten zerschnitten werden, d.h. es gibt mindestens k Kanten {u, v} mit u ∈ V1 und v ∈ V2 . MAX CUT ist NP-vollständig, das Teilproblem MAX CUT für planare Graphen ist dagegen in polynomieller Zeit lösbar. GC-3 bleibt schwierig. Satz 5.2.7: GC-3 für planare Graphen ist NP-vollständig. Beweis: 1.) GC-3 für planare Graphen ist in NP. 2.) Wieder wählen wir GC-3. 3.) Sei G = (V, E) ein ungerichteter Graph. Es ist sicher in polynomieller Zeit möglich, den Graphen so in die Ebene einzubetten, dass Kanten {u, v} nicht durch Knoten w ∈ / {u, v} laufen und dass jeder Schnittpunkt von Kanten nur Schnittpunkt zweier Kanten ist. Die Schnittpunkte sollen nun lokal durch planare Graphen ersetzt werden. Dazu betrachten wir den Crossover-Graphen C mit 13 Knoten und 24 Kanten. x C y 1 2 3 4 5 6 7 8 y’ 9 x’ C ist planar. Wir zeigen, dass für jede 3-Färbung f von C gilt f (x) = f (x0 ) und f (y) = f (y 0 ). Außerdem gibt es für beliebige a, b ∈ {1, 2, 3} 3-Färbungen von C mit f (x) = f (x0 ) = a und f (y) = f (y 0 ) = b. Damit kann C Färbungen transportieren“. ” Sei also f eine 3-Färbung von C. O.B.d.A. f (5) = 1 und f (4) = 2. Es folgt f (2) = f (8) = 3 und f (6) = 2. 1. Fall: f (y 0 ) = 1. Es folgt f (9) = 2 und f (x0 ) = 1. Dann ist f (7) = 3 und f (y) = 1. Es folgt f (1) = 2 und f (x) = 1 sowie f (3) = 3. 41 2. Fall: f (y 0 ) 6= 1. Da f (6) = 2, ist f (y 0 ) = 3. Also ist f (3) = 1, f (x) = 2, f (1) = 1, f (y) = 3, f (7) = 1, f (x0 ) = 2, f (9) = 1. Wir betrachten nun eine Kante {u, v}: u v Wir zeichnen einen Knoten, hier zum Beispiel u, als besonderen Knoten aus. Die Kante {u, v} wird lokal ersetzt. Dies geschieht gleichzeitig für alle Kanten. Zunächst werden auf der Kante {u, v} neue Knoten eingesetzt, von u aus vor jedem Schnittpunkt und vor v. u v Auf den 4 Punkten um einen Schnittpunkt wird die Komponente C eingesetzt, der am nächsten am ausgezeichneten Knoten u gelegene C-Knoten wird mit u verschmolzen. u’i u C u1 C u2 C u3 v u’i+1 Der neue Graph G0 ist planar und kann in polynomieller Zeit konstruiert werden. 4.) Sei f eine 3-Färbung von G. Wir erweitern f zu einer 3-Färbung von G0 . Jede CKomponente repräsentiert den Schnittpunkt zweier Kanten {u, v} und {u0 , v 0 }, wobei wir u und u0 als ausgezeichnete Knoten annehmen. Wir färben die C-Komponenten so, dass die Farben von u und u0 weitergegeben werden. In unserem Beispiel wäre f (u) = f (u1 ) = f (u2 ) = f (u3 ) und f (u0 ) = f (u0i ) = f (u0i+1 ). Unsere Betrachtungen über C zeigen, dass eine solche Färbung möglich ist. Am Ende dieser Reihe kann es zu keinen Problemen kommen, denn f (u3 ) = f (u) 6= f (v) nach Voraussetzung. Sei nun f 0 eine 3-Färbung von G0 . Wir zeigen, dass die Einschränkung von f 0 von V 0 auf V eine 3-Färbung von G ist. Aus den Eigenschaften von C folgt f 0 (u) = f 0 (u1 ) = f 0 (u2 ) = f 0 (u3 ). Da f 0 eine Färbung von G0 ist, ist f 0 (u3 ) 6= f 0 (v), also f 0 (u) 6= f 0 (v) für alle Kanten {u, v} ∈ E. 2 Hier sei auf den berühmten Vierfarben-Satz hingewiesen. Alle planaren Graphen sind vierfärbbar. Der Test auf Vierfärbbarkeit eines planaren Graphen kann also in Zeit O(1) mit Ja“ beantwortet werden. ” Satz 5.2.8: GC-3 für D = 4 ist für planare Graphen NP-vollständig. 42 Beweis: Dies folgt aus den Reduktionen, die in den Beweisen der Sätze 5.2.5 und 5.2.7 konstruiert wurden. Zunächst wird der Graph G mit der Methode des Beweises von Satz 5.2.7 durch einen planaren Graphen G0 ersetzt. Dann wird mit den Methoden des Beweises von Satz 5.2.5 der Grad der Knoten auf höchstens 4 gesenkt. Da Hk offensichtlich planar ist, erhalten wir einen Graphen G00 , der genau dann dreifärbbar ist, wenn G dreifärbbar ist. 2 5.3 Pseudopolynomielle Algorithmen und starke NP-Vollständigkeit Siehe Buch Theoretische Informatik, Kap. 3.5. Die starke NP-Vollständigkeit von TSP war sehr einfach zu zeigen. Auch dies ist ein Indiz dafür, dass TSP ein besonders schwieriges Problem ist. In Kap. 5.5 sollen Rezepte, d. h. Beweismethoden, zum Beweis der starken NP-Vollständigkeit vorgestellt werden. Dafür benötigen wir ein Basisproblem, von dem aus sich viele Reduktionen starten lassen. Dies muss ein Problem sein, das in der Klasse der stark NP-vollständigen Probleme intuitiv einfach“ ist. Wir haben bereits gesehen, dass ELEMENT UNIQUENESS und ” SORTIEREN gute Basisprobleme für den Beweis von Ω(N log N )-Schranken sind. Unser erfolgreichstes Basisproblem für den Nachweis der NP-Vollständigkeit ist 3-SAT. 5.4 Die starke NP-Vollständigkeit von 3-PARTITION Definition 5.4.1: a) 3-PARTITION. Für eine Menge A mit |A|/3 =Pm ∈ , B ∈ und Größen s(a) ∈ , so dass B/4 < s(a) < B/2 für a ∈ A gilt und a∈A s(a) = mB ist, soll entschieden werden, ob A so in P m disjunkte Mengen S1 , . . . , Sm zerlegt werden kann, dass a∈Si s(a) = B für 1 ≤ i ≤ m ist. b) 4-PARTITION. Für eine Menge A mit |A|/4 =Pm ∈ , B ∈ und Größen s(a) ∈ , so dass B/5 < s(a) < B/3 für a ∈ A gilt und a∈A s(a) = mB ist, soll entschieden werden, ob A so in P m disjunkte Mengen S1 , . . . , Sm zerlegt werden kann, dass a∈Si s(a) = B für 1 ≤ i ≤ m ist. Das Problem 4-PARTITION dient uns als Zwischenschritt. Satz 5.4.2: 4-PARTITION ist stark NP-vollständig. Beweis: 1.) 4-PARTITION ∈ NP. 2.) Da wir hier wieder Neuland betreten, haben wir eine komplizierte Reduktion vor uns. Für eine Eingabe I für 4-PARTITION setzen wir M AX(I) := max{s(a) | a ∈ A} und L(I) = |A|. Für p(x) = 216 x4 betrachten wir 4-PARTITIONp und zeigen 3-DM ≤ 4-PARTITIONp . 43 3.) Die Voraussetzung B/5 < s(a) < B/3 für 4-PARTITION erzwingt, dass die Mengen Si genau 4 Elemente haben müssen. Sei nun (q, X, Y, Z, M ) eine Eingabe für 3-DM. Falls |M | < q, kann es kein Matching geben. Sei also im folgenden |M | ≥ q angenommen. Sei X = {x1 , . . . , xq }, Y = {y1 , . . . , yq } und Z = {z1 , . . . , zq }. Die Menge A für 4-PARTITION soll 4|M | Elemente enthalten. Mit N (x) (analog N (y) und N (z)) bezeichnen wir die Zahl der Tripel, in denen x vorkommt. Die Menge A enthalte die Elemente u1 , . . . , u|M | als Repräsentanten der |M | Tripel, xi (1), . . . , xi (N (xi )) als Repräsentanten für xi , wobei xi (1) das xi“ darstellen soll, das in ” einem Matching vorkommt. Analog werden yi (1), . . . , yi (N (yi )) und zi (1), . . . , zi (N (zi )) betrachtet. Wir werden nun die Größen s(a) für a ∈ A definieren. Sei r = 32q. Dann sei für 1 ≤ i ≤ q und l ≥ 2 s(xi (1)) = 10r 4 + ir + 1 s(xi (l)) = 11r 4 + ir + 1 s(yi (1)) = 10r 4 + ir 2 + 2 s(yi (l)) = 11r 4 + ir 2 + 2 s(zi (1)) = 10r 4 + ir 3 + 4 s(zi (l)) = 8r 4 + ir 3 + 4. Falls das l-te Tripel in M gerade ml = (xi , yj , zk ) ist, sei s(ul ) = 10r 4 − kr 3 − jr 2 − ir + 8. Damit gilt s(ul ) + s(xi (1)) + s(yj (1)) + s(zk (1)) = 40r 4 + 15, sowie für l1 , l2 , l3 ≥ 2 s(ul ) + s(xi (l1 )) + s(yj (l2 )) + s(zk (l3 )) = 40r 4 + 15. Die Summe aller s-Werte beträgt (40r 4 +15)·|M |. Dies folgt aus einer einfachen Rechnung, auf die wir hier verzichten. Wir setzen B = 40r 4 + 15. Wir überprüfen nun, ob die Größen im Intervall (B/5, B/3) liegen und durch 216 |A|4 beschränkt sind. Es ist r = 32q ≤ 32|M | = 8|A| = 23 |A|, r 4 ≤ 212 |A|4 und 1 s(a) ≤ 11r 4 + |M |r 3 + 4 ≤ 11 · 212 |A|4 + |A| · 29 |A|3 + 4 ≤ 216 |A|4 . 4 4 3 4 Außerdem ist s(a) ≤ 11r + qr + 4 ≤ 12r + 4 < B/3. Hierbei haben wir die Beziehung q = r/32 ausgenutzt. Schließlich ist s(a) ≥ 8r 4 + 4 > B/5. Die Eingabe (A, B, s) ist natürlich in polynomieller Zeit berechenbar. 4.) Sei nun M 0 ⊆ M ein dreidimensionales Matching. Dann bilden wir die folgenden vierelementigen Mengen. Das Tripel ml = (xi , yj , zk ) ∈ M 0 führt zu der Menge {ul , xi (1), yj (1), zk (1)}. Das Tripel ml = (xi , yj , zk ) ∈ M −M 0 führt zu der Menge {ul , xi (l1 ), yj (l2 ), zk (l3 )}, wobei die Parameter l1 , l2 , l3 so gewählt werden, dass alle Aufgaben in genau einer Menge vorkommen. Wir haben bereits in Teil 3 gesehen, dass die Gesamtgröße jeder dieser Mengen B = 40r 4 + 15 ist. 44 Sei nun andererseits eine Lösung von 4-PARTITION gegeben. Wir werden zeigen, dass jede der vierelementigen Mengen ein u-Element, ein x-Element, ein y-Element und ein z-Element enthält. Wenn eine Menge xi (l1 ), yj (l2 ) und zk (l3 ) enthält, gilt entweder l1 = l2 = l3 = 1 oder l1 , l2 , l3 ≥ 2. Da jedes Element in X ∪ Y ∪ Z durch ein Element ·(1) repräsentiert wird, bilden dann die Tripel ml , so dass ul in einer vierelementigen Menge mit Elementen xi (1), yj (1) und zk (1) ist, ein dreidimensionales Matching. Wir beweisen nun die oben genannten Vermutungen. Es ist r = 32q ≥ 32 und somit B ≡ 15 mod r. Wenn wir vier s-Werte addieren, erhalten wir nur dann eine Zahl b, die b ≡ 15 mod r erfüllt, wenn die vier Elemente je ein u-, x-, y- und z-Element darstellen. Die Menge sei nun {ul , xi (l1 ), yj (l2 ), zk (l3 )}. Es sei ml = (xi0 , yj 0 , zk0 ). Es ist B ≡ 15 mod r 2 . Andererseits ist s(ul ) + s(xi (l1 )) + s(yj (l2 )) + s(zk (l3 )) ≡ −i0 r + 8 + ir + 1 + 2 + 4 = (i − i0 )r + 15 mod r 2 . Also muss (i − i0 )r ≡ 0 mod r 2 und damit i ≡ i0 mod r sein. Da 1 ≤ i, i0 ≤ q und r = 32q ist, folgt i = i0 . Es ist B ≡ 15 mod r 3 . Die Summe der Größen der vier Elemente ist mod r 3 , da i = i0 , gleich −j 0 r 2 − ir + 8 + ir + 1 + jr 2 + 2 + 4 ≡ (j − j 0 )r 2 + 15 mod r 3 . Also muss (j − j 0 )r 2 ≡ 0 mod r 3 und damit j ≡ j 0 mod r sein. Da 1 ≤ j, j 0 ≤ q, folgt j = j 0 . Es ist B ≡ 15 mod r 4 . Für die Summe der Größen der vier Elemente mod r 4 gilt, da i = i0 und j = j 0 , dass sie folgenden Wert hat: −k 0 r 3 − jr 2 − ir + 8 + ir + 1 + jr 2 + 2 + kr 3 + 4 ≡ (k − k 0 )r 3 + 15 mod r 4 . Wieder folgt k = k 0 . Also ist ml = (xi , yj , zk ), wenn ul mit xi (l1 ), yj (l2 ) und zk (l3 ) eine gemeinsame Menge bildet. Die Parameter l1 , l2 und l3 beeinflussen nur den Vorfaktor von r 4 . Es ist offensichtlich, dass wir den passenden Vorfaktor 40 nur erhalten, wenn l1 = l2 = l3 = 1 oder l1 , l2 , l3 ≥ 2 ist. Damit ist die Behauptung bewiesen. 2 Nach der Reduktion 3-SAT ≤p KP war diese Reduktion das zweite Beispiel dafür, wie Informationen in Zahlen codiert werden können. Satz* 5.4.3: 3-PARTITION ist stark NP-vollständig. Beweis: 1.) 3-PARTITION ist in NP. 2.) Sei p(x) = 216 x4 und q(x) = 223 x2 . Wir reduzieren das NP-vollständige Problem 4-PARTITIONp auf 3-PARTITIONq . 3.) Sei (A, B, s) mit A = {a1 , . . . , a4n }, B/5 < s(ai ) < B/3 und s(ai ) ≤ 216 |A|4 eine Eingabe für 4-PARTITIONp . Die Menge A0 für die zugehörige Eingabe von 3-PARTITIONq soll 24n2 − 3n Elemente haben, 4n Elemente, die die Elemente von A repräsentieren, 45 w1 , . . . , w4n , 16n2 − 4n Elemente u(i, j), ū(i, j), 1 ≤ i < j ≤ 4n, die jeweils Paare in A darstellen, und 8n2 − 3n Füllelemente u∗k , 1 ≤ k ≤ 8n2 − 3n. Für die Größenfunktion s0 gelte s0 (wi ) := 4(5B + s(ai )) + 1, s0 (u(i, j)) := 4(6B − s(ai ) − s(aj )) + 2, s0 (ū(i, j)) := 4(5B + s(ai ) + s(aj )) + 2 und s0 (u∗k ) := 20B. Also gilt X X X X s0 (a) = s0 (wi ) + (s0 (u(i, j)) + s0 (ū(i, j))) + s0 (u∗k ) = a∈A0 1≤i≤4n (80nB + 4 X 1≤i<j≤4n s(ai ) + 4n) + 1≤k≤8n2 −3n 4n 4n 4 + (8n2 − 3n)20B. 44B + 2 2 Die Summe aller s(ai ) ist, da es sich um eine Eingabe für 4-PARTITION handelt, gleich nB. Also gilt X s0 (a) = 84nB + 4n + 8 · 44n2 B − 88nB + 32n2 − 8n + 160n2 B − 60nB = a∈A0 512n2 B − 64nB + 32n2 − 4n. P Da |A0 |/3 = 8n2 − n, erhalten wir B 0 = ( a∈A0 s0 (a))/(8n2 − n) = 64B + 4. Die Eingabe (A0 , B 0 , s0 ) lässt sich natürlich in polynomieller Zeit berechnen. Es gilt für a0 ∈ A0 s0 (a0 ) ≤ max{24B + 2, 20B + 8 max{s(a) | a ∈ A} + 2}. Da B/5 < s(a) < B/3 und B/5 < s(a) ≤ 216 |A|4 , folgt B ≤ 5 · 216 |A|4 − 5 und s0 (a0 ) ≤ max{24 · 5 · 216 |A|4 + 2, 20 · 5 · 216 |A|4 + 8 · 5 · 216 |A|4 + 2} ≤ 223 |A|4 . 3 Da |A| ≤ |A0 |1/2 , folgt s0 (a0 ) ≤ 223 |A0 |2 . Es muss nun noch gelten B 0 /4 = 16B + 1 < s0 (a0 ) < 32B + 2 = B 0 /2. Die vorkommenden Größen sind 20B + 4s(ai ) + 1, 24B − 4s(ai ) − 4s(aj ) + 2, 20B + 4s(ai ) + 4s(aj ) + 2 und 20B. Da B/5 < s(ai ) < B/3 ist, gelten die Behauptungen. 4.) Sei zunächst angenommen, dass die Eingabe für 4-PARTITION eine Lösung hat. Falls {ai , aj , ak , al } eine Menge der Lösung ist, sollen {wi , wj , u(i, j)} und {wk , wl , ū(i, j)} zur Lösung von 3-PARTITION gehören. Es ist s0 (wi )+s0 (wj )+s0 (u(i, j)) = 20B +4s(ai )+1+20B +4s(aj )+1+24B −4s(ai)−4s(aj )+2 = 64B + 4 = B 0 . 46 Da {ai , aj , ak , al } zu einer Lösung von 4-PARTITION gehört, ist s(ai ) + s(aj ) + s(ak ) + s(al ) = B. Also gilt s0 (wk )+s0 (wl )+s0 (ū(i, j)) = 20B +4s(ak )+1+20B +4s(al)+1+20B +4s(ai)+4s(aj )+2 = 64B + 4 = B 0 . Mit diesen Mengen haben wir alle w-Elemente überdeckt. Außerdem werden n (u, ū)Paare überdeckt, es bleiben also 4n − n = 8n2 − 3n Paare übrig. Es gibt auch 8n2 − 3n 2 Füllobjekte. Wir bilden nun 8n2 −3n dreielementige Mengen vom Typ {u(i, j), ū(i, j), u∗k }. Es ist s0 (u(i, j))+s0 (ū(i, j))+s0 (u∗k ) = 24B −4s(ai )−4s(aj )+2+20B +4s(ai )+4s(aj )+2+20B = 64B + 4 = B 0 . Also erhalten wir eine Lösung von 3-PARTITION. Sei nun eine Lösung des 3-PARTITION-Problems gegeben. Nur s0 (wi ) ist ungerade. Also enthält jede der zu der Lösung gehörenden dreielementigen Mengen von den w-Elementen zwei oder keines. Da B 0 durch 4 teilbar ist, können auch nicht zwei w-Elemente mit einem u∗ -Element zusammengefaßt werden. Die w-Elemente treten also nur paarweise auf und werden mit einem Paarelement u(i, j) oder ū(i, j) zusammengebracht. Von diesen Mengen gibt es also 2n viele. Für die anderen Mengen bleiben 2(8n2 − 3n) Paarelemente und 8n2 − 3n Füllelemente übrig. Da B 0 durch 4 teilbar ist, können nicht drei Paarelemente eine Menge bilden. Also gibt es 8n2 − 3n Mengen mit einem Füllelement und 2 Paarelementen. Damit die Summe der Größen B 0 ist, muss, falls u(i, j) zur Menge gehört, das zweite Paarelement die gleiche Größe wie ū(i, j) haben. Wir können die Elemente so austauschen, dass u(i, j) und ū(i, j) zur gleichen Menge gehören. Für die 2n Mengen mit je 2 w-Elementen und einem Paarelement bleiben als Paarelemente also n Paare (i, j) mit ihren zugehörigen Elementen u(i, j) und ū(i, j) übrig. Die 2n Mengen bilden also auf natürliche Weise Paare. Diese Paare fassen wir zusammen, entfernen die Paarelemente und erhalten so n Mengen mit je 4 Elementen. Wir behaupten, dass diese Mengen das 4-PARTITION Problem lösen, wenn wir wl durch al ersetzen. Da s0 (u(i, j))+s0 (ū(i, j)) = 44B+4 ist und die Lösungsmengen für 3-PARTITION Gesamtgröße B 0 = 64B + 4 haben, ist die Größe der 4 w-Elemente in zwei zueinander gehörenden Mengen der Lösung von 4-PARTITION genau 2(64B + 4) − (44B + 4) = 84B + 4. Es gilt s0 (wi ) = 20B + 4s(ai ) + 1. Wenn also s0 (wi ) + s0 (wj ) + s0 (wk ) + s0 (wl ) = 84B + 4 ist, gilt 4(s(ai ) + s(aj ) + s(ak ) + s(al )) = 4B und s(ai ) + s(aj ) + s(ak ) + s(al ) = B. Also erhalten wir tatsächlich eine Lösung von 4-PARTITION. 2 5.5 Methoden zum Beweis der starken NP-Vollständigkeit Wir stellen zunächst die Einzelschritte zusammen, die wir für einen Beweis der starken NP-Vollständigkeit eines Problems ausführen müssen. Es muss weiterhin gezeigt werden, 47 dass das Problem in NP ist. Auch muss ein passendes (stark) NP-vollständiges Problem für die Reduktion gewählt werden. Was muss nun bei der Transformation beachtet werden? Definition 5.5.1: Es seien Π und Π0 Entscheidungsprobleme, DΠ und DΠ0 die zugehörigen Eingabemengen und YΠ und YΠ0 die Mengen der zu akzeptierenden Eingaben. Eine pseudopolynomielle Transformation von Π auf Π0 ist eine pseudopolynomiell zu berechnende Funktion f : DΠ → DΠ0 , so dass (1) - (3) gelten. (1) ∃ Polynom q1 ∀ I ∈ DΠ (2) ∃ Polynom q2 ∀ I ∈ DΠ (3) ∀ I ∈ DΠ : L(I) ≤ q1 (L0 (f (I))). : M AX 0 (f (I)) ≤ q2 (M AX(I), L(I)). : I ∈ YΠ ⇐⇒ f (I) ∈ YΠ0 . Es ist ausreichend zu fordern, dass die Transformation in pseudopolynomieller Zeit zu berechnen ist, da nur Eingaben mit kleinen Zahlen betrachtet werden. Eigenschaft (3) ist uns bekannt. Die Eigenschaften (1) und (2) sollen implizieren, dass f eingeschränkt auf DΠp für ein Polynom nur Eingaben für Π0p0 für ein Polynom p0 produziert. Eigenschaft (2) besagt, dass die in der Transformation erzeugte Eingabe für Π0 keine zu großen Zahlen enthält. Eigenschaft (1) besagt dagegen, dass L0 (f (I)) ≥ q1−1 (L(I)) ist, also die erzeugte Eingabe nicht zu kurz ist. Wäre die Eingabe sehr kurz, dann wären die Zahlen in der Eingabe bezogen auf diese Eingabelänge doch zu groß. Satz 5.5.2: Es sei Π stark NP-vollständig und Π0 ∈ NP. Wenn es eine pseudopolynomielle Transformation von Π auf Π0 gibt, ist Π0 stark NP-vollständig. Dieser Satz spielt für die starke NP-Vollständigkeit die Rolle, die Lemma 3.3.8 (Buch) für die NP-Vollständigkeit gespielt hat. Beweis von Satz 5.5.2: Wir nehmen o. B. d. A. an, dass alle vorkommenden Polynome monoton wachsend sind. Es sei f eine pseudopolynomielle Transformation von Π auf Π0 , zu der nach Definition 5.5.1 die Polynome q1 und q2 gehören. Da Π stark NP-vollständig ist, gibt es ein Polynom p, so dass Πp NP-vollständig ist. Sei p̂(x) := q2 (p(q1 (x)), q1 (x)). Wir zeigen, dass Π0 stark NP-vollständig ist, indem wir zeigen, dass Πp̂0 NP-vollständig ist. 1.) Πp̂0 ∈ NP, da Π0 ∈ NP ist. 2.) Wir wählen natürlich Πp . 3.) Wir schränken f auf DΠp ein. Sei I ∈ DΠp . Dann ist M AX 0 (f (I)) (5.5.1(2)) ≤ q2 (M AX(I), L(I)) I∈DΠp ≤ q2 (p(L(I)), L(I)) (5.5.1(1)) ≤ Def. p̂ q2 (p(q1 (L0 (f (I)))), q1 (L0 (f (I)))) = p̂(L0 (f (I))). Also ist f (I) ∈ DΠp̂0 . Nach Voraussetzung ist f pseudopolynomiell berechenbar, also in polynomieller Zeit bezogen auf M AX(I) und L(I). Eingeschränkt auf DΠp ist f also polynomiell berechenbar in L(I). 4.) Dies ist wegen Definition 5.5.1(3) erfüllt. 48 2 Wir können nun die Ernte für die geleistete Arbeit einfahren. SEQUENCING WITH INTERVALS wurde in Kap. 4.3 definiert. Für die Aufgaben a ∈ A sind ein frühester Bearbeitungstermin r(a), die Bearbeitungsdauer l(a) und die Deadline d(a) ≥ r(a) + l(a) gegeben. Es soll entschieden werden, ob die Aufgaben von einem Prozessor ordnungsgemäß abgearbeitet werden können. Das Problem ist nach Satz 4.3.6 NP-vollständig. Inzwischen können wir mehr. Satz 5.5.3: SEQUENCING WITH INTERVALS ist stark NP-vollständig. Beweis: 1.) Siehe Satz 4.3.6. 2.) Nach den starken Worten in Kap. 5.4 wählen wir das Basisproblem 4-PARTITION. 3.) Sei (A = {a1 , . . . , a4m }, B, s) eine Eingabe für 4-PARTITION. Eine derartige Eingabe transformieren wir nun in eine Eingabe (T, r, l, d) für SEQUENCING WITH INTERVALS. Dabei sei T = A∪{t1 , . . . , tm−1 }, wobei die Aufgaben ti wieder erzwingende Aufgaben sind. Ansonsten folgen wir der Methode der lokalen Ersetzung. Es sei r(aj ) = 0, l(aj ) = s(aj ) und d(aj ) = mB + m − 1 sowie r(ti ) = iB + i − 1, l(ti ) = 1 und d(ti ) = iB + i. Diese Funktion f kann sogar in polynomieller Zeit berechnet werden. Es ist q1 (x) = x geeignet, da L0 (f (I)) ≥ L(I) ist. Es ist M AX 0 (f (I)) = mB + m − 1. Da L(I) ≥ m und M AX(I) = B, gilt auch Eigenschaft (2) aus Definition 5.5.1 für q2 (x, y) = xy + y. 4.) Für ein Schedule müssen die Aufgaben ti im Zeitintervall [iB + i − 1, iB + i] ausgeführt werden. Zwischen diesen Intervallen liegen Zeitphasen der Länge B. Wegen der Deadlines für die a-Aufgaben darf es keine Arbeitspause geben. Also gibt es genau dann ein Schedule, wenn die a-Aufgaben so in m Mengen aufgeteilt werden können, dass jede Menge von Arbeiten die Zeit B zur Bearbeitung benötigt. Dies ist genau dann der Fall, wenn es eine Lösung für 4-PARTITION gibt. 2 Die Leserin und der Leser sollten an dieser Stelle einen Moment die Einfachheit dieses Beweises genießen. Die harte Arbeit in Kap. 5.4 hat sich gelohnt. Für den folgenden NP-Vollständigkeitsbeweis ist es entscheidend zu wissen, dass nicht nur 4-PARTITION, sondern auch 4-PARTITIONq für ein Polynom q NP-vollständig ist. Definition 5.5.4: SUBFOREST ISOMORPHISM Für einen Baum G = (VT , ET ) und einen Wald H = (VF , EF ) soll entschieden werden, ob H isomorph in G eingebettet werden kann, d.h. ob es eine Teilmenge V 0 von VT mit |V 0 | = |VF | und eine bijektive Abbildung f : VF → V 0 derart gibt, dass {f (u), f (v)} in ET enthalten ist, wenn {u, v} in EF enthalten ist. Satz 5.5.5: SUBFOREST ISOMORPHISM ist NP-vollständig. Beweis: 1.) Wir haben sogar schon gezeigt, dass das allgemeinere Problem SUBGRAPH ISOMORPHISM ∈ NP ist. 2.) Wir wählen das NP-vollständige Problem 4-PARTITIONq . 3.) Sei (A = {a1 , . . . , a4m }, B, s) eine Eingabe für 4-PARTITIONq . Der Baum G besteht aus einer Wurzel und m Teilbäumen, die Ketten der mit jeweils B + 1 Knoten sind. Der 49 Wald H besteht aus einem Stern mit m+1 Knoten und 4m Wegen der mit s(a1 ), . . . , s(a4m ) Knoten. m G B+1 H s(a 1 ) s(a 4m ) m Die Transformation kann in polynomieller Zeit berechnet werden, da Graphen mit jeweils insgesamt (B + 1)m + 1 Knoten erzeugt werden und B ≤ q(4m) ist. 4.) Bei jeder isomorphen Einbettung muss der Mittelpunkt des Sternes auf die Wurzel des Baumes abgebildet werden. H hat also genau dann ein isomorphes Bild in G, wenn die Wege so in m Gruppen eingeteilt werden können, dass die Summe der Knotenzahlen in jeder Gruppe B beträgt. Genau dann hat 4-PARTITION eine Lösung. 2 Es sei noch einmal darauf hingewiesen, dass für diese Transformation die starke NP– Vollständigkeit von 4-PARTITION entscheidend ist. Falls wir nicht polynomiell große Zahlen in Eingaben von 4-PARTITION betrachten, dann würden auch die in der Transformation erzeugten Graphen nicht polynomiell groß sein und könnten natürlich nicht in polynomieller Zeit erzeugt werden. 50 6 6.1 Die Komplexität von Suchproblemen Turing-Reduzierbarkeit, NP-harte, NP-leichte und NP-äquivalente Probleme Buch Theoretische Informatik, Kap. 3.6. 6.2 Methoden zum Beweis, dass ein Problem NP-hart ist Bisher haben wir das Konzept der Orakelmaschinen noch nicht voll ausgereizt. Entweder wurde das Orakel nur einmal befragt (Beweis von Satz 3.6.14, Buch) oder die Orakel waren dem eigentlichen Problem recht ähnlich (TSP). Wir wollen nun mit einer allgemeinen Turing-Reduktion für ein Problem zeigen, dass es NP-hart ist. Von diesem Problem nimmt man an, dass es nicht in NP enthalten ist. Es gibt allerdings pseudopolynomielle Algorithmen zur Lösung des Problems. Definition 6.2.1: k-th SMALLEST SUBSET P Für eine endliche Menge A, s : A → , eine Zahl B ≤ a∈A s(a) und eine Zahl k ≤ 2|A| soll entschieden werden, ob es k verschiedene Teilmengen A0 von A gibt, für die gilt: P a∈A0 s(a) ≤ B. Satz 6.2.2: k-th SMALLEST SUBSET ist NP-hart. Beweis: Als NP-vollständige Sprache L wählen wir PARTITION und zeigen PARTITION ≤T k-th SMALLEST SUBSET. Sei AL ein Algorithmus (Orakel) für k-th SMALLEST SUBSET. Sei (A =P {a1 , . . . , an }, s : A → ) eine Eingabe für PARTITION. Zunächst berechnen wir s(A) := a∈A s(a). Falls s(A) ungerade, wird das Ergebnis Nein“ ” gedruckt. Ansonsten sei B = s(A)/2. Das Zwischenziel besteht in der Berechnung von L∗ , der Anzahl aller A0 ⊆ A mit s(A0 ) ≤ B. Wir benutzen die Methode der Binären Suche. Trivialerweise ist 0 ≤ L∗ ≤ 2n . Für L = 2n−1 wird AL auf die Eingabe (A, s, B, L) angewendet. Falls die Antwort Ja“ ist, wird L ” auf 2n−1 + 2n−2 gesetzt, sonst auf 2n−1 − 2n−2 . Nach n Orakelfragen ist L∗ bekannt. Nun wird das Orakel für (A, s, B − 1, L∗ ) befragt. Falls die Antwort Ja“ ist, kann es kein ” A0 mit s(A0 ) = B geben. Wir antworten für PARTITION mit Nein“. Falls die Antwort ” des Orakels Nein“ ist, muss es mindestens ein A0 mit s(A0 ) = B geben. Wir antworten ” für PARTITION mit Ja“. 2 ” Warum vermuten wir, dass das Problem k-th SMALLEST SUBSET nicht in NP enthalten ist? Der triviale Rate und Verifiziere“ Algorithmus würde erfordern, dass wir k ” Teilmengen von A raten, aber k ist nicht polynomiell in der Eingabelänge beschränkt, wenn die Zahlen s(a) nicht astronomisch groß sind. 51 7 7.1 Die polynomielle Hierarchie Die Klasse NPI Wir wollen die Struktur von NP untersuchen. Falls NP = P ist, ist dieses Problem gegenstandslos. In diesem Abschnitt werden wir also wieder unter der Hypothese NP 6= P arbeiten. Definition 7.1.1: a) NPC (NP-complete) ist die Klasse der NP-vollständigen Probleme. b) NPI := NP − P − NPC (NP-incomplete) ist die Klasse der NP-unvollständigen Probleme. Falls NP = P, ist NPC = P − {∅, Σ∗ } und NPI = ∅. Ist es möglich, dass NPI = ∅ ist, falls NP 6= P ist? Dies ist nicht möglich. In der strukturellen Komplexitätstheorie wurden die beiden folgenden Sätze bewiesen. Satz 7.1.2: Falls NP 6= P, ist N P I 6= ∅. Satz 7.1.3: Falls NP 6= P, gibt es in N P − {∅, Σ∗ } unvergleichbare Probleme L und L0 , d.h. es gilt weder L ≤p L0 noch L0 ≤p L. Natürlich ist von keinem Problem bewiesen, dass es in NPI liegt. Daraus würde ja sofort NP 6= P folgen. Für einige Zeit hat man das im Folgenden definierte Problem COMPOSITE als ein mögliches Kandidatenproblem angesehen, das in NPI liegen könnte. Seit August 2002 weiß man jedoch, dass dies nicht sein kann, denn die drei Forscher Manindra Agarwal, Nitin Saxena und Neeraj Kayal konnten beweisen, dass man das Problem PRIMES und somit das Problem COMPOSITE deterministisch in Polynomialzeit lösen kann. Für Interessenten der Link: http://www.cse.iitk.ac.in/news/primality.html Hinweis: Eventuell stellen wir diesen neuen Polynomialzeitalgorithmus in der Vorlesung vor. Dann wird zu diesem auf der Webseite eine Ausarbeitung abrufbar sein. Definition 7.1.4: COMPOSITE Entscheide für n, ob n eine zusammengesetzte Zahl, also keine Primzahl ist. PRIMES ist das Komplementproblem zu COMPOSITE: Entscheide, ob eine Zahl n eine Primzahl ist. Satz 7.1.5: PRIMES und somit auch COMPOSITE sind in P. Als prominentester Kandidat für ein Problem in NPI verbleibt damit das Graphenisomorphieproblem: Definition 7.1.6: GRAPH ISOMORPHISM oder GI Für zwei ungerichtete Graphen G = (V, E) und G0 = (V 0 , E 0 ) soll entschieden werden, ob sie isomorph sind, d.h. ob es eine bijektive Abbildung f : V → V 0 gibt, so dass {i, j} ∈ E genau dann ist, wenn {f (i), f (j)} ∈ E 0 ist. 52 Wir erinnern uns daran, dass das auf den ersten Blick nur etwas allgemeinere Problem SUBGRAPH ISOMORPHISM bereits NP-vollständig ist, siehe Satz 4.2.9. Das Graphenisomorphieproblem liegt vermutlich nicht in P. Diese Vermutung basiert zunächst auf der intensiven, aber erfolglosen Suche nach polynomiellen Algorithmen. Noch länger untersucht wurden ähnliche Probleme über die Isomorphie von Gruppen. Selbst die viel älteren und daher teilweise stärkeren mathematischen Methoden über Gruppen haben nicht ausgereicht, um polynomielle Algorithmen für diese Probleme zu entwerfen. Andererseits zeigen Reduktionen, dass polynomielle Algorithmen für das Graphenisomorphieproblem polynomielle Algorithmen für die Gruppenprobleme implizieren. Gründe, warum das Graphenisomorphieproblem wohl nicht NP-vollständig ist, folgen in Kap. 9. 7.2 Die Klasse co-NP Definition 7.2.1: Die Klasse co-NP enthält alle Sprachen L, deren Komplementsprachen L̄ := Σ∗ − L in NP liegen. Trivialerweise gilt P= co-P. Außerdem wurde bereits erwähnt, dass vermutlich NP 6= coNP ist. Grund für diese Annahme war die Erkenntnis, dass wir z.B. leicht eine erfüllende Belegung aller Klauseln einer Eingabe für SAT raten können, falls eine derartige Eingabe existiert; es aber völlig unklar ist, wie wir eine Information raten können, aus der sich in polynomieller Zeit nachweisen lässt, dass die Klauseln der Eingabe nicht gleichzeitig erfüllbar sind. Die Vermutung NP 6= co-NP ist weitergehend als die Vermutung NP 6= P, wie folgender Satz zeigt. Satz 7.2.2: N P 6= co-NP ⇒ NP 6= P. Beweis: Falls NP = P, folgt, da P = co-P, auch NP = P = co-P = co-NP. 2 Satz 7.2.3: Falls es eine NP-vollständige Sprache L mit L̄ ∈ N P gibt, gilt N P = co-NP. Beweis: Wir nehmen an, dass L NP-vollständig und L̄ ∈ N P ist. Daraus wollen wir folgern, dass jede Sprache L0 ∈ NP auch in co-NP liegt, d. h., dass L̄0 ∈ NP ist. Die Umkehrung folgt analog. Da L NP-vollständig und L0 ∈ NP ist, gilt L0 ≤p L. Es gibt also eine deterministisch in polynomieller Zeit berechenbare Funktion f , so dass gilt: x ∈ L0 ⇐⇒ f (x) ∈ L. Folgende nichtdeterministische, polynomiell zeitbeschränkte T M entscheidet L̄0 . Für die Eingabe x wird f (x) berechnet. Danach wird nichtdeterministisch in polynomieller Zeit entschieden, ob f (x) ∈ L̄ ist. Eine derartige T M existiert, da L̄ ∈ NP. Die Entscheidung ist korrekt, da auch gilt x ∈ L̄0 ⇐⇒ f (x) ∈ L̄. 2 Nach diesem Satz ist es nicht überraschend, dass für kein NP-vollständiges Problem L gezeigt werden konnte, dass L̄ ∈ NP ist. Wegen Satz 7.2.2 konnte natürlich auch nicht gezeigt werden, dass L̄ ∈ / NP ist. 53 7.3 Die polynomielle Hierarchie Buch Theoretische Informatik, S. 81-83. Definition 7.3.1: ist Definition 3.9.5 aus dem Buch. Satz 7.3.2: ist Satz 3.9.6 aus dem Buch. Definition 7.3.3: ist Definition 3.9.7 aus dem Buch. Satz 7.3.4: ist Satz 3.9.8 aus dem Buch. Satz 7.3.5: ist Satz 3.9.9 aus dem Buch. Definition 7.3.6: ist Definition 3.9.10 aus dem Buch. Definition 7.3.7: a) Σ0 := Π0 := 40 := P. b) Σk+1 := NP(Σk ) für k ≥ 0. c) 4k+1 := P(Σk ) für k ≥ 0. d) Πk+1 := Sco-Σk+1 für k ≥ 0. e) PH := k≥0 Σk . PH heißt polynomielle Hierarchie und enthält die beschriebenen Klassen. Satz 7.3.5 enthält in der neuen Sprechweise die Aussage MEC ∈ Σ2 . Zur Veranschaulichung beschreiben wir Σ4 ausführlich als NP(NP(NP(NP))). Lemma 7.3.8: a) 41 = P . b) Σ1 = N P . c) Π1 = co-NP. Wir finden also unsere bekannten Komplexitätsklassen wieder. Beweis von Lemma 7.3.8: Die Aussagen a) und b) folgen einfach, da ein Orakel für L ∈ P durch polynomiell zeitbeschränkte Unterprogramme ersetzt werden kann. Die Aussage c) folgt aus Aussage b) nach Definition. 2 Satz 7.3.9: a) Σk+1 = N P (Πk ). b) 4k+1 = P (Πk ). c) Πk+1 = co-NP (Πk ). d) Σk+1 = N P (4k+1 ). e) Πk+1 = co-NP (4k+1 ). Beweis: a) Nach Definition gilt Σk+1 = NP(Σk ) = NP(co-Πk ). Für L ∈ Σk+1 gibt es also eine polynomiell zeitbeschränkte Orakel-N T M mit Orakel L0 ∈ co-Πk . Wir verwenden nun das Orakel L̄0 ∈ Πk . Wenn das Orakel Ja“ ( Nein“) sagt, fahren wir mit der Rechnung ” ” so fort, als hätte das Orakel für L0 Nein“ ( Ja“) gesagt. ” ” b) und c) werden analog bewiesen. 54 d) Es ist Σk ⊆ 4k+1 , da eine Orakelfrage genügt. Also gilt Σk+1 = NP(Σk ) ⊆ NP(4k+1 ). Sei nun B ∈ 4k+1 = P (Σk ). Dann gibt es eine polynomiell zeitbeschränkte Orakel-DT M M0 mit Orakel L ∈ Σk für B. Jede Maschine M1 mit Orakel B kann nun durch eine OrakelT M mit Orakel L ersetzt werden, indem jede Orakelfrage für B durch das durch M0 gegebene Unterprogramm ersetzt wird. Also lässt sich jede Sprache aus N P (∆k+1 ) auch nichtdeterministisch mit einem Orakel aus Σk berechnen, d. h. N P (∆k+1 ) ⊆ N P (Σk ) = Σk+1 . e) folgt, da Πk+1 = co-Σk+1 ist. 2 Satz 7.3.10: a) 4k = co-4k . b) P (4k ) = 4k . c) Σk ∪ Πk ⊆ 4k+1 . d) 4k ⊆ Σk ∩ Πk . e) Alle Klassen der polynomiellen Hierarchie sind bzgl. Durchschnitt und Vereinigung abgeschlossen. f ) Σk ⊆ Πk ⇒ Σk = Πk . Beweis: Übungsaufgabe. 2 55 PH pp pp pp pp ∆3 Σ2 Σ2 @ @ Σ2 S T Π2 @ @ Π2 Π2 ∆2 Σ1 Σ1 = NP Σ1 @ T@ S Π1 @ @ Π1 = co-NP Π1 = NP T co-NP Σ0 = Π 0 = ∆ 0 = ∆ 1 = P Die polynomielle Hierarchie Es wird vermutet, dass die gesamte Hierarchie echt ist, d.h. dass alle Sprachklassen verschieden sind. In Satz 3.2.10 haben wir die Klasse NP charakterisiert. Der folgende Satz ist eine Erweiterung dieser Charakterisierung. Wir verzichten auf den Beweis, da er technisch etwas aufwendig ist. Die wesentlichen Ideen haben wir aber im Beweis von Satz 3.2.10 und in den früheren Beweisen dieses Kapitels kennengelernt. Satz 7.3.11: Die folgenden Aussagen gelten für alle k ≥ 0. a) A ∈ Σk genau dann, wenn es eine Menge B ∈ P und ein Polynom p gibt, so dass gilt A = {x | ∃y1 , |y1 | ≤ p(|x|); ∀y2 , |y2 | ≤ p(|x|); . . . ; Qyk , |yk | ≤ p(|x|) : (x, y1 , . . . , yk ) ∈ B}. Hierbei ist Q = ∀, falls k gerade, und Q = ∃, falls k ungerade. b) A ∈ Πk genau dann, wenn es eine Menge B ∈ P und ein Polynom p gibt, so dass gilt A = {x | ∀y1 , |y1 | ≤ p(|x|); ∃y2 , |y2 | ≤ p(|x|); . . . ; Qyk , |yk | ≤ p(|x|) : (x, y1 , . . . , yk ) ∈ B}. Hierbei ist Q = ∃, falls k gerade, und Q = ∀, falls k ungerade. 56 Diese Charakterisierung erleichtert einige Schlussfolgerungen. Satz 7.3.12: Falls Σk = Πk für ein k ≥ 1, folgt Σk+j = Πk+j = Σk = Πk für alle j ≥ 0. Beweis: Induktion über j. Für j = 0 ist nichts zu zeigen. Wir nehmen an, dass Σk+j = Πk+j = Σk ist. Sei nun A ∈ Σk+j+1 . Nach Satz 7.3.11 lässt sich A darstellen mit einer Sprache B ∈ P und einer Quantorenfolge ∃ ∀ ∃ ∀ . . . Q der Länge k + j + 1. Die Sprache L = {(x, y1 ) | |y1 | ≤ p(|x|); ∀y2 ; . . . ; Qyk+j+1 : (x, y1 , . . . , yk+j+1 ) ∈ B}. ist nach Satz 7.3.11 in Πk+j . Nach Induktionsvoraussetzung ist Πk+j = Σk+j . Die Sprache L kann daher für eine Sprache C ∈ P und ein Polynom q geschrieben werden als L = {(x, y1 ) | |y1 | ≤ p(|x|); ∃y2 , |y2 | ≤ q(|(x, y1 )|); . . . ; Q̄yk+j+1 : (x, y1 , . . . , yk+j+1) ∈ C}. Dabei ist Q̄ = ∀, falls Q = ∃, und Q̄ = ∃, falls Q = ∀. Also gilt A = {x | ∃y1 , |y1 | ≤ p(|x|); ∃y2 ; ∀y3 ; . . . ; Q̄yk+j+1 : (x, y1 , . . . , yk+j+1) ∈ C}. Die beiden führenden ∃-Quantoren können zusammengefasst werden. Also ist wieder nach Satz 7.3.11 A ∈ Σk+j . Nach Induktionsvoraussetzung folgt A ∈ Σk = Πk und Σk+j+1 = Σk = Πk . Analog kann Πk+j+1 = Πk = Σk bewiesen werden. 2 Korollar 7.3.13: Falls P 6= Σk für ein k ≥ 1, ist P 6= N P . Beweis: Es sei P = NP angenommen, d.h. Σ0 = Σ1 . Es gilt Σ0 ⊆ Π1 , also Σ1 ⊆ Π1 . Nach Satz 7.3.10f folgt Σ1 = Π1 . Nach Satz 7.3.12 folgt Σ1 = Σk . Mit der Annahme Σ0 = Σ1 folgt Σ0 = P = Σk im Widerspruch zur Voraussetzung. 2 Korollar 7.3.14: Entweder gilt Σk 6= Σk+1 für alle k ≥ 0, oder PH enthält nur endlich viele verschiedene Klassen Σk , k ≥ 0. Beweis: Es sei Σk = Σk+1 angenommen. Da Σk ⊆ Πk+1 , ist Σk+1 ⊆ Πk+1 . Nach Satz 7.3.10f ist Σk+1 = Πk+1 . Nach Satz 7.3.12 folgt Σk = Σk+1 = Σk+2 = . . ., und PH enthält nur endlich viele verschiedene Σ-Klassen. 2 Falls PH nur endlich viele verschiedene Σ-Klassen enthält, sind dies Σ0 , Σ1 , . . . , Σk für ein k ≥ 0. Wir sagen, dass dann die polynomielle Hierarchie auf der k-ten Stufe zusammenbricht. Völlig analog zur Theorie der NP-Vollständigkeit gibt es für alle k eine Theorie der Σk Vollständigkeit. Definition 7.3.15: Eine Sprache L heißt Σk -vollständig, wenn L ∈ Σk ist und für alle L0 ∈ Σk gilt: L0 ≤p L. 57 Definition 7.3.16: Die Sprache Bk besteht aus allen booleschen Ausdrücken E über V = {xij | 1 ≤ i ≤ k, 1 ≤ j ≤ mi }, wobei m1 , . . . , mk ≥ 0, für die die folgende Formel wahr ist: ∃x1,1 , . . . , x1,m1 ; ∀x2,1 , . . . , x2,m2 ; . . . ; Qxk,1 , . . . , xk,mk : E(x) = 1. Die Sprachen Bk spielen für die Klassen Σk die Rolle, die SAT für NP gespielt hat. Sie sind die ersten Probleme, für die bewiesen wurde, dass sie Σk -vollständig sind. Satz 7.3.17: Bk ist Σk -vollständig. Wir verzichten auf einen Beweis dieses Satzes. Am Ende dieses etwas abstrakten Abschnittes sollten sich die Leserin und der Leser noch einmal vor Augen führen, dass wir nur die Theorie der NP-Vollständigkeit auf kanonische Weise verallgemeinert haben. 58 8 8.1 Komplexitätstheorie und probabilistische Methoden Probabilistische Komplexitätsklassen siehe Buch Theoretische Informatik, Kap. 3.8. Die Bezeichnungen 8.1.1 - 8.1.10 beziehen sich auf 3.8.1 - 3.8.10 aus dem Buch. An dieser Stelle soll ein anderer Beweis für die Verringerung der Irrtumswahrscheinlichkeit von BPP-Algorithmen vorgestellt werden. Dazu sind zwei wahrscheinlichkeitstheoretische Ungleichungen nötig, die bei der Analyse randomisierter Algorithmen von grundlegender Bedeutung sind. Eine dritte Ungleichung, die wir in Kap. 9 benötigen, wird ebenfalls gezeigt. Lemma 8.1.11: (Markoff-Ungleichung) Sei X eine Zufallsvariable mit endlich vielen Werten, die alle nicht negativ sind (d.h. X ≥ 0). Dann gilt für alle t > 0 Prob(X ≥ t) ≤ E(X)/t. Beweis: Die Aussage folgt aus folgender Rechnung, wobei A die Werte enthält, die X annehmen kann. P E(X) = x · Prob(X = x) x∈A P P = x · Prob(X = x) + x · Prob(X = x) x∈A,x<t x∈A,x≥t ≥ 0 + t · Prob(X ≥ t). 2 Im Beweis der Markoff-Ungleichung haben wir alle Werte in [0, t) durch 0 und alle Werte in [t, ∞) durch t nach unten abgeschätzt. Es ist klar, dass diese Abschätzung korrekt ist, aber in vielen Fällen wohl auch sehr ungenau ist. Für jede streng monoton wachsende Funktion f können wir X ≥ t durch f (X) ≥ f (t) ersetzen. Dann können Werte in [0, f (t)) durch 0 und Werte in [f (t), ∞) durch f (t) nach unten abgeschätzt werden. In anderen Worten wird die Markoff-Ungleichung auf f (X) angewendet. Für f (X) = X 2 erhalten wir die Tschebyscheff-Ungleichung siehe Lemma 8.1.12. Wenn z.B. t = 1/2 ist, ist die Abschätzung von a2 durch 0 für a < 1/4 genauer als die von a durch 0. Für a ≥ 1/4, wird nun a2 durch 1/16 abgeschätzt anstatt a durch 1/4. Für kleine a ≥ 41 ist a2 −1/16 < a−1/4, für große a kehrt sich das Verhältnis um. Wenn die Abschätzung im Durchschnitt besser ist, ergibt die Tschebyscheff-Ungleichung bessere Werte als die Markoff-Ungleichung. Die Chernoff-Schranke verwendet eine noch stärker gekrümmte Funktion, nämlich etX für ein t > 0, dass wir später geeignet wählen. Lemma 8.1.12: (Tschebyscheff-Ungleichung) Sei X eine Zufallsvariable mit endlich vielen Werten. Dann gilt für alle ε > 0 Prob(|X − E(X)| ≥ ε) ≤ V (X)/ε2 . 59 Beweis: Es gilt Prob(|X − E(X)| ≥ ε) = Prob(|X − E(X)|2 ≥ ε2 ) = Prob((X − E(X))2 ≥ ε2 ). Auf die Zufallsvariable Y = (X − E(X))2 und ε2 kann die Markoff-Ungleichung angewendet werden. Also ist Prob(|X − E(X)| ≥ ε) ≤ E((X − E(X))2 )/ε2 . Bekanntlich ist E((X − E(X))2 ) = V (X). 2 Lemma 8.1.13: (Chernoff-Ungleichung) Es seien X1 , . . . , Xn unabhängige Zufallsvariablen mit Werten in {0, 1}, wobei Prob(Xi = 1) = pi ist. Es sei X = X1 + · · · + Xn die Anzahl der Erfolge“. Dann ist E(X) = p1 + · · · + pn und ” Prob(X ≤ (1 − δ)E(X)) ≤ e−E(X)δ 2 /2 für 0 ≤ δ ≤ 1. Falls pi = p für alle i ist, ist X binomialverteilt zu n und p und die Chernoff-Ungleichung ist eine sehr gute Abschätzung, um Abweichungen von X von E(X) zu messen. Auf ähnliche Weise wie Lemma 8.1.12 lässt sich eine Abschätzung für Prob(X ≥ (1 + δ)E(X)) beweisen. Beweis: Im ersten Schritt ersetzen wir die ≤-Ungleichung durch eine ≥-Ungleichung, um dann etX und dann die Markoff-Ungleichung anzuwenden. Sei t > 0. Prob(X ≤ (1 − δ)E(X)) = Prob(−X ≥ −(1 − δ)E(X)) = Prob(e−tX ≥ e−t(1−δ)E(X) ) ≤ E(e−tX )/e−t(1−δ)E(X) . Wir betrachten zunächst nur E(e−tX ). E(e−tX ) = E(e−t(X1 +···+Xn ) ) = E(e−tX1 ∗ · · · ∗ e−tXn ) Y = E(e−tXi ) (U nabhängigkeit) 1≤i≤n = Y 1≤i≤n = Y 1≤i≤n (1 · (1 − pi ) + e−t · pi ) (Def inition Erwartungswert) (1 + pi (e−t − 1)) (triviale U mf ormung). 60 Bekanntlich gilt 1 + x < ex für alle x < 0. Da t > 0, ist also 1 + pi (e−t − 1) < epi (e Dies sieht komplizierter aus, wird aber zu einer Vereinfachung führen. Es folgt E(e−tX ) < Y epi (e −t −1) =e P 1≤i≤n pi (e−t −1) = eE(X)(e −t −1) −t −1) . . 1≤i≤n Insgesamt ist −t eE(X)(e −1) Prob (X ≤ (1 − δ)E(X)) < −t(1−δ)E(X) . e 1 Hier wählen wir t = ln 1−δ . Dann ist t > 0 und e−t = 1 − δ. Es folgt Prob(X ≤ (1 − δ)E(X)) < ( e−δ )E(X) . (1 − δ)1−δ 2 Unsere Behauptung folgt, falls (1−δ)1−δ > e−δ+δ /2 ist. Dies ist äquivalent zu (1−δ) ln(1− δ) > −δ + δ 2 /2. Diese Ungleichung folgt aus der Taylor-Reihe für x ln x. 2 Wir betrachten nun einen BPP-Algorithmus, der für die Eingabe w die richtige Antwort mit einer Wahrscheinlichkeit von pw ≥ 21 + ε macht. Wir betrachten nun die m-fache unabhängige Wiederholung dieses Algorithmus, wobei wir w akzeptieren, wenn mehr als m/2 Läufe dies tun. Es sei Xi die Zufallsvariable, die beschreibt, ob der i-te Lauf die richtige Entscheidung trifft (Xi = 1) oder nicht (Xi = 0). Dann ist E(Xi ) = pw und für X = X1 + · · · + Xm ist E(X) = m · pw . Die Wahrscheinlichkeit für eine fehlerhafte Entscheidung kann abgeschätzt werden durch Prob(X ≤ m/2) = Prob(X ≤ (1 − (1 − Für δ = 1 − 1 2pw 1 ))E(X)). 2pw können wir die Chernoff-Ungleichung anwenden. Also ist Prob(X ≤ m/2) < e−m·pw δ 2 /2 . Die Schranke ist für pw = 12 + ε am kleinsten. Es gibt also eine positive Konstante c, so dass die Fehlerwahrscheinlichkeit durch e−c·m beschränkt ist. Also genügt eine lineare Anzahl von Wiederholungen, um die Fehlerwahrscheinlichkeit auf 2−n zu senken. Wir wissen, dass RP ⊆ NP ⊆ PP und RP ⊆ BPP ⊆ PP ist, aber wir wissen noch nichts über das Verhältnis von NP und BPP. Hier stehen sich einseitiger Irrtum mit sehr großer Irrtumswahrscheinlichkeit und zweiseitiger Irrtum mit sehr kleiner Irrtumswahrscheinlichkeit gegenüber. Es scheint nicht möglich zu sein, die unbeschränkte Irrtumswahrscheinlichkeit stark zu senken, selbst wenn zweiseitiger Irrtum erlaubt ist. Daher wird NP ⊆ BPP nicht gelten. Andernfalls wären NP-vollständige Probleme mit BPPAlgorithmen zu behandeln, was in vielen Anwendungen völlig ausreicht. Um BPP ⊆ NP zu beweisen, müssten wir zweiseitigen Irrtum bei sehr kleiner Irrtumswahrscheinlichkeit durch einseitigen Irrtum mit allerdings sehr großer Irrtumswahrscheinlichkeit ersetzen. 61 Bisher gibt es hierfür kein Verfahren. Lange Zeit ist stark vermutet worden, dass BPP keine Teilmenge von NP ist. Verbesserte Methoden der Derandomisierung von Algorithmen haben manchen veranlasst, die Gleichung BPP=P in Betracht zu ziehen. Dies würde zu keiner komplexitätstheoretischen Vermutung kollidieren. Innerhalb der polynomiellen Hierarchie können wir nur beweisen, dass BPP ⊆ Σ2 ∩ Π2 ist. Satz 8.1.14: BP P ⊆ Σ2 ∩ Π2 . Beweis: Wir zeigen, dass BPP ⊆ Σ2 ist. Dies ist gleichbedeutend zu co-BPP ⊆ Π2 . Da BPP bezüglich Verwerfen“ und Akzeptieren“ symmetrisch definiert ist, gilt BPP = ” ” co-BPP ⊆ Π2 . Sei also L ∈ BPP. Nach Satz 3.8.4 (Buch) gibt es eine probabilistische Turingmaschine M , die für jede Eingabe der Länge n genau p(n) Rechenschritte (p ist ein Polynom) auf jedem Rechenweg durchführt, nur die Ausgaben 0 und 1 liefert und deren Irrtumswahrscheinlichkeit kleiner als 2−n ist, d. h. weniger als 2p(n)−n Rechenwege liefern das falsche Resultat. Die Menge der Rechenwege identifizieren wir mit {0, 1}p(n) . Für eine Eingabe x der Länge n sei Y (x) die Menge der Rechenwege, für die M die Ausgabe 1 liefert, und N (x) die Menge der Rechenwege, für die M die Ausgabe 0 liefert. Wir nehmen o. B. d. A. an, dass p(n) durch n teilbar ist, und setzen k(n) = p(n)/n. Da in Zukunft n fest ist, kürzen wir p(n) und k(n) durch p bzw. k ab. Außerdem genügt es, Werte für n zu betrachten, für die k < 2n ist. Für Tripel (x, y, z) mit |x| = n, y = (y1 , . . . , yk ) ∈ {0, 1}pk , d. h. yi ∈ {0, 1}p , und z ∈ {0, 1}p sei K so definiert, dass (x, y, z) ∈ K genau dann gilt, wenn es mindestens ein i mit yi ⊕z ∈ Y (x) gibt. Dabei bedeutet yi ⊕z, dass die Vektoren yi und z komponentenweise mod 2 addiert werden. Da ein Rechenweg von M in polynomieller Zeit simuliert werden kann und die Zahl k der betrachteten Rechenwege polynomiell ist, gilt K ∈ P. Mit der folgenden Charakterisierung von L können wir also zeigen, dass L ∈ Σ2 ist: x ∈ L ⇔ ∃y ∈ {0, 1}pk ∀z ∈ {0, 1}p : (x, y, z) ∈ K. Wie können wir diese Charakterisierung von L intuitiv verstehen ? Falls x ∈ L ist, gibt es nur wenige Rechenwege in N (x). Für jedes z ∈ {0, 1}p ist die Menge aller y⊕z, y ∈ {0, 1}p , gleich der Menge {0, 1}p . Nahezu alle y ⊕ z liegen also in Y (x). Für z 0 ∈ {0, 1}p mit z 0 6= z sind auch nahezu alle y ⊕ z 0 , y ∈ {0, 1}p in Y (x), aber typischerweise sind es teilweise andere y, die zu Elementen von Y (x) führen. Wenn wir jedoch genügend viele verschiedene y wählen dürfen, sollte jedes z einen Partner finden, so dass die ⊕-Summe in Y (x) liegt. Falls x 6∈ L ist, gibt es nur wenige Rechenwege in Y (x). Wenn wir nicht sehr viele verschiedene y wählen dürfen, können wir wohl nicht für alle z einen passenden Partner finden. Der Wert k = p/n erweist sich als passende Zahl für die Zahl der yVektoren. Im folgenden wird die Korrektheit der Charakterisierung von L bewiesen. ⇒“: Sei x ∈ L. Wähle y = (y1 , . . . , yk ) zufällig. Für festes i und festes z ist yi ⊕ z ” ein zufälliger Rechenweg, auf dem die probabilistische Turingmaschine mit einer Wahrscheinlichkeit von mehr als 1 − 2−n akzeptiert. Also gilt Prob(yi ⊕ z 6∈ Y (x)) < 2−n . Da 62 y1 , . . . , yk unabhängige Zufallsstrings sind, folgt Prob(∀1 ≤ i ≤ k : yi ⊕ z 6∈ Y (x)) < 2−kn . Das bedeutet, dass die Wahrscheinlichkeit, dass (x, y, z) 6∈ K gilt, kleiner als 2−kn ist. Da es 2p verschiedene Werte für z gibt, folgt dann Prob(∃z : (x, y, z) 6∈ K) < 2p · 2−kn < 1. Also gibt es ein y, so dass für alle z die Behauptung (x, y, z) ∈ K erfüllt ist. Man beachte, dass wir im letzten Schritt ein probabilistisches Argument benutzt haben: Daraus, dass ein zufällig gewähltes y mit positiver Wahrscheinlichkeit die gewünschte Eigenschaft hat, haben wir geschlossen, dass es ein y mit der gewünschten Eigenschaft gibt. Beweise mit derartigen probabilistischen Argumenten sind häufig einfacher, allerdings sind sie nicht konstruktiv, d. h. , wir erfahren nichts darüber, wie man an ein konkretes y mit den gewünschten Eigenschaften kommt. ⇐“: Sei x 6∈ L und y = (y1 , . . . , yk ) beliebig. Wähle z ∈ {0, 1}p zufällig. Dann be” schreibt yi ⊕ z einen zufälligen Rechenweg (auf dem die Turingmaschine mit einer Wahrscheinlichkeit kleiner als 2−n akzeptiert) und es gilt Prob(yi ⊕ z ∈ Y (x)) < 2−n . Es folgt Prob(∃1 ≤ i ≤ k : yi ⊕ z ∈ Y (x)) < k · 2−n < 1, also Prob((x, y, z) ∈ K) < 1. Insbesondere gibt es also ein z, so dass (x, y, z) 6∈ K ist. 2 Die Komplexitätsklasse PP lässt sich bisher nicht in die polynomielle Hierarchie einordnen. Wir wissen nur, dass PP ⊆ PSPACE gilt. Dabei enthält PSPACE alle Probleme, die von deterministischen Turingmaschinen auf polynomiellem Platz entscheidbar sind. 8.2 Probabilistische Komplexitätsklassen, eine Übersicht In der Vorlesung wurden die vier Komplexitätsklassen PP, BPP, RP und ZPP definiert. Die Fehlerarten“ können auf die folgende Weise klassifiziert werden: Es gibt zweiseitigen ” Fehler (d.h., Wörter aus der Sprache L dürfen auch verworfen werden, Wörter, die nicht in L sind, dürfen auch akzeptiert werden), einseitigen Fehler (Wörter aus L dürfen verworfen werden, Wörter, die nicht L sind, dürfen aber nicht akzeptiert werden), sowie den fehlerfreien Fall (der Algorithmus darf die Antwort verweigern, wenn er aber antwortet, muss das Ergebnis stimmen). Es sollte klar sein, dass die Fehlerwahrscheinlichkeit bei zweiseitigem Fehler kleiner als 1/2 sein muss, anderenfalls kann man auch einfach würfeln, und bei einseitigem Fehler kleiner als 1 sein muss, anderenfalls könnte man immer verwerfen. Man unterscheidet daher auch die Fälle, dass die Fehlerwahrscheinlichkeit beliebig nahe an der trivialen Schranke sein darf (hier spricht man auch von unbeschränktem Fehler) oder dass die Fehlerwahrscheinlichkeit einen konstanten Abstand von der trivialen Fehlerschranke haben muss, in diesem Fall spricht man von beschränktem Fehler. Bei dieser Klassifizierung der Fehlerarten erhält man sechs mögliche Definitionen von probabilistischen Komplexitätsklassen, die in der folgenden Tabelle dargestellt sind. 63 ⊇ NP beschränkter Fehler BPP ⊇ RP fehlerfrei ⊇ NP ∩ co-NP ⊇ ZPP = RP ∩ co-RP ⊆ PP ⊆ unbeschränkter Fehler einseitiger Fehler ⊆ zweiseitiger Fehler Bei einseitigem unbeschränktem Fehler erhält man die Komplexitätsklasse NP, denn wir haben in der Vorlesung gezeigt: Satz: Eine Sprache L ist genau dann in NP, wenn es eine polynomiell zeitbeschränkte probabilistische Turingmaschine M gibt, so dass für alle Wörter w ∈ Σ∗ gilt: w ∈ L ⇒ Prob(M (w) = 1) > 0, w∈ / L ⇒ Prob(M (w) = 0) = 1. Analog kann man zeigen (vgl. Übungsaufgabe 7.1): Satz: Eine Sprache L ist genau dann in NP ∩ co-NP, wenn es eine polynomiell zeitbeschränkte probabilistische Turingmaschine M gibt, so dass für alle Wörter w ∈ Σ∗ gilt: w ∈ L ⇒ Prob(M (w) = 0) = 0 ∧ Prob(M (w) = 1) > 0, w∈ / L ⇒ Prob(M (w) = 1) = 0 ∧ Prob(M (w) = 0) > 0. D.h., NP ∩ co-NP ist die Komplexitätsklasse, die die Sprachen enthält, die in polynomieller Zeit fehlerfrei mit unbeschränkter Misserfolgswahrscheinlichkeit akzeptiert werden können, wobei ein Misserfolg die Situation ist, dass der zugehörige Algorithmus die Antwort verweigert. Es ist naheliegend, dass die in der Tabelle angegebenen Inklusionen gelten (wobei natürlich für alle Inklusionen offen ist, ob sie echt sind oder nicht). Allerdings folgen nur wenige dieser Inklusionen direkt aus den Definitionen der Komplexitätsklassen, die übrigen Inklusionen, sowie die Aussage ZPP = RP ∩ co-RP mussten extra bewiesen werden. Eine wichtige Technik hierbei ist die Probability Amplification, d.h. die Wiederholung von Algorithmen, um die Fehler- bzw. Misserfolgswahrscheinlichkeit zu verringern. Wir haben uns auch davon überzeugt, dass bei Anwendung der vorgestellten Variante von Probability Amplification auf Algorithmen mit unbeschränktem Fehler exponentiell viele Iterationen nötig sind, um Algorithmen mit beschränktem Fehler zu erhalten. Dies deutet nochmal den Unterschied zwischen den Komplexitätsklassen mit beschränktem und unbeschränktem Fehler an. 64 9 9.1 Interaktive Beweise, Zero-Knowledge-Beweise und das PCP-Theorem Beweisorientierte Charakterisierungen bekannter Komplexitätsklassen Welche Forderungen stellen wir an Beweise? Ein formaler Beweis in einem gegebenen Kalkül darf nur auf Axiomen dieses Kalküls aufbauen und darf neue Aussagen nur aus Schlussregeln des Kalküls, die auf Axiome und bereits gefolgerte Aussagen angewendet werden, folgern. Wir sind aber nicht zufrieden, wenn uns jemand mitteilt, er habe einen Beweis für eine Aussage, sondern wir wollen den Beweis sehen“, um ihn zu überprüfen. ” Typischerweise ist es nämlich schwieriger, einen Beweis zu finden“ als ihn zu überprüfen, ” d. h. zu verifizieren. Ein Kalkül ist aber nur dann gut geeignet“, wenn es einen allgemei” nen, möglichst effizienten Verifikationsalgorithmus V gibt, der für Aussagen x überprüft, ob y ein Beweis der Aussage x ist. Der Algorithmus V soll genau in diesen Fällen (x, y) akzeptieren. Anders ausgedrückt: Die Aussage x ist relativ zu V beweisbar, wenn es ein y gibt, so dass V die Eingabe (x, y) akzeptiert. Wenn wir an V keine weiteren Forderungen stellen (Algorithmen sollen auf allen Eingaben nach endlicher Zeit halten), dann haben wir soeben die rekursiv aufzählbaren Sprachen charakterisiert. Einerseits können wir zu x nacheinander alle Beweisversuche y ausprobieren. Wenn andererseits die Sprache L rekursiv aufzählbar ist, kann, falls x ∈ L ist, dies durch eine endliche Rechnung bewiesen werden. Was geschieht, wenn wir fordern, dass der Verifikationsalgorithmus polynomiell zeitbeschränkt ist? Wir erinnern uns an die logikorientierte Charakterisierung der Sprachklasse NP aus Satz 3.2.10: Die Sprache L ist genau dann in NP enthalten, wenn es ein polynomiell entscheidbares Prädikat P und ein Polynom p gibt, so dass sich die Menge aller x ∈ L schreiben lässt als L = {x | ∃y : |y| ≤ p(|x|) und P (x, y) ist wahr}. In unserer neuen Denkweise ist ein polynomieller Algorithmus, der P entscheidet, ein effizienter Verifikationsalgorithmus und y ein Beweis, dass x zu L gehört. Falls NP 6= P, ist es einfacher, einen Beweis zu verifizieren als ihn zu finden. In der realen Welt der Forschung und Lehre werden Beweise nicht axiomatisch geführt. Axiomatische Beweise lassen sich oft tatsächlich nur verifizieren und nicht verstehen“. ” Was ist denn ein Beweis? Ein Beweis ist ein sozialer Prozess, bei dem ein Beweiser (Prover), nennen wir ihn Peter, eine Beweisüberprüferin (Verifier), nennen wir sie Vera, von einem Beweis in einem Dialog überzeugen will. In der Tat gilt ein neues Theorem als bewiesen, wenn der Autor oder die Autorin die Experten und Expertinnen des Gebiets überzeugt hat. Beweisdialoge dieser Art sind schon aus der Antike bekannt (Sokrates). Nun lässt sich Überzeugung“ nicht formalisieren, und wir übernehmen aus diesen Über” legungen nur die Idee, Beweise durch Dialoge und Interaktion zu ermöglichen. 65 Die Kontraposition des Pumping Lemmas ist eine Strategie zum Beweis, dass Sprachen nicht regulär sind: ∀N ∈ ∃z ∈ L, |z| ≥ N ∀ Zerlegung z = uvw, |uv| ≤ N, |v| ≥ 1 ∃i ≥ 0 : uv i w 6∈ L ⇒ L ist nicht regulär. Wenn Peter mit dem Pumping Lemma beweisen will, dass L nicht regulär ist, muss er in folgendem Pumping Spiel gegen Vera gewinnen. Peter erhält die ∃-Rolle und Vera die ∀-Rolle. Runde 1: Vera wählt eine natürliche Zahl N . Runde 2: Peter wählt ein Wort z aus L mit mindestens N Buchstaben. Wenn ein solches Wort nicht existiert, hat Peter verloren. Runde 3: Vera wählt eine Zerlegung z = uvw mit |uv| ≤ N und |v| ≥ 1. Runde 4: Peter wählt ein i ≥ 0. Peter gewinnt genau dann, wenn er in Runde 4 ein i mit uv i w 6∈ L präsentiert. Die Sprache L ist nicht regulär, wenn Peter eine Strategie hat, mit der er gegen jede Strategie von Vera gewinnt. Die Gewinnstrategie von Peter ist ein Beweis, dass L nicht regulär ist. Es ist ein interaktiver Beweis, die Interaktion zwischen Peter und Vera dauert vier Runden. Falls Peter eine Gewinnstrategie hat, ist Vera am Ende des Beweises überzeugt und akzeptiert“ ” den Beweis. Auch die logikorientierte Charakterisierung der Sprachenklasse Σk aus Satz 7.3.11 lässt sich als ∀- und ∃-Spiel auffassen. Es gibt k Kommunikationsrunden, in denen polynomiell viele Bits geschrieben werden können. Die Rechenzeit von Peter ist nicht beschränkt, und Vera muss in der Lage sein, am Ende (Peter sendet in der k-ten Runde) den Beweis in polynomieller Zeit zu akzeptieren. Unsere bisherigen Betrachtungen haben uns bekannte Komplexitätsklassen und Beweisstrategien von einer neuen Seite beleuchtet. Wir haben Nichtdeterminismus durch Peter“, ” einen Beweiser, ausgedrückt, der unbeschränkte Rechenzeit hat, aber nur polynomiell viele Bits übermitteln darf. In Kapitel 8 haben wir gelernt, dass Randomisierung hilfreich ist. Was gewinnen wir oder was erhalten wir, wenn wir Nichtdeterminismus und Randomisierung gemeinsam benutzen? Wir kommen zur Definition interaktiver Beweissysteme, wie sie von Goldwasser, Micali und Rackoff (1989) vorgeschlagen wurden. Definition 9.1.1: Ein interaktives Beweissystem besteht aus zwei randomisierten Algorithmen, die wir mit Peter oder Prover und Vera oder Verifier bezeichnen. Beide haben ein eigenes Arbeitsband, einen eigenen Zufallszahlengenerator, Zugriff auf die Eingabe und Zugriff auf ein gemeinsames Kommunikationsband. In jeder Runde ist nur eine der beiden Personen aktiv. Die Rechnung endet, wenn Vera die Eingabe akzeptiert oder verwirft, was 66 natürlich von den benutzten Zufallsbits abhängt, d.h. (P, V )(x) ist die Zufallsvariable, die für die Algorithmen Peter P und Vera V bei Eingabe x den Wert 0 bzw. 1 annimmt, wenn Vera schließlich akzeptiert bzw. verwirft. Eine Sprache L gehört zur Sprachklasse IP (= interactive proof), falls es einen Algorithmus V gibt, der in allen Runden zusammen nur polynomielle Rechenzeit benutzt, so dass für alle Eingaben x gilt : x∈L ⇒ ∃ Algorithmus P : Prob[(P, V )(x) = 1] ≥ 3 , 4 1 . 4 Eine Sprache L gehört zur Sprachklasse IP(k), wenn L zu IP gehört und ein interaktives Beweissystem mit k Kommunikationsrunden auskommt. Dabei gehört die Verifikation durch Vera nicht zu den Kommunikationsrunden. x 6∈ L ⇒ ∀ Algorithmus P : Prob[(P, V )(x) = 1] ≤ Aus unseren Betrachtungen zur Sprachklasse BPP in Kapitel 8 ist klar, dass die Konstanten ε = 41 und 1 − ε = 43 in Definition 9.1.1 willkürlich gewählt sind. Peter und Vera können denselben Algorithmus polynomiell oft parallel ausführen. Wenn Vera am Ende eine Majoritätsentscheidung trifft, kann sie so die Irrtumswahrscheinlichkeit senken. Statt ε = 14 ist jedes ε < 21 ebensogut wie ε = 2−n . In einem interaktiven Beweissystem ist gefordert, dass Peter, falls x ∈ L ist, Vera mit hoher Wahrscheinlichkeit von dieser Tatsache überzeugen kann, während sich Vera, falls x 6∈ L ist, nur mit kleiner Wahrscheinlichkeit vom Gegenteil überzeugen lässt. Es ist entscheidend, dass die Rechenzeit von Vera, aber nicht die von Peter polynomiell beschränkt ist. Da Vera in polynomieller Zeit nur polynomiell viele Bits lesen kann, können wir o. B. d. A. annehmen, dass Peter nur polynomiell viele Bits schreibt. Damit folgt sofort, dass NP ⊆ IP(1) ist, wobei Peter und Vera auf die Zufallsbits verzichten können. Die Klasse IP ist dagegen sehr groß. Es konnte gezeigt werden, dass sie gleich der Klasse PSPACE (siehe Kapitel 11) ist, die alle Sprachen enthält, die von Turingmaschinen auf polynomiellem Platz erkannt werden können. Damit enthält IP alle Sprachklassen der polynomiellen Hierarchie. Wir haben nun ein hübsches Spielzeug, aber wozu? Aus diesem Spielzeug wird im nächsten Abschnitt ein Handwerkzeug, mit dem wir interessante Aussagen über das Graphenisomorphieproblem GI (siehe Definition 7.1.6) herleiten können. 9.2 Ist das Graphenisomorphieproblem NP-vollständig? In Kapitel 7.1 haben wir GI als Kandidaten für die Klasse NPI vorgestellt. Da SUBGRAPH ISOMORPHISM NP-vollständig ist, warum sollte nicht auch GI NP-vollständig sein? Wir werden aus der Annahme, dass GI NP-vollständig ist, eine Konsequenz ziehen, die sehr wahrscheinlich nicht wahr ist. Zwar ist NP ⊆ IP(1), aber was ist mit co-NP? Die Asymmetrie zwischen Vera und Peter führt dazu, dass wir keine einfachen 67 Schlussfolgerungen ziehen können. Wir werden zeigen, dass GI, das Komplement von GI, in IP(2) liegt. Falls GI NP-vollständig ist, ist also jedes co-NP-vollständige Problem in IP(2). Da jedoch für kein NP-vollständiges Problem bekannt ist, dass das Komplement in IP(k) für ein konstantes k ist, ist dies ein deutlicher Fingerzeig für die Vermutung, dass GI nicht NP-vollständig ist. Beim Problem GI besteht ein Beweis, dass zwei Graphen isomorph sind, einfach in der Angabe der Isomorphieabbildung. Wir wissen nicht, ob GI ∈ NP (oder GI ∈ co-NP) ist. Wir kennen also keinen kurzen, leicht verifizierbaren Beweis, dass zwei Graphen nicht isomorph sind. Im Rahmen der interaktiven Beweissysteme haben wir mehr Kommunikationsrunden und Probabilismus zur Verfügung. Wenn die Knotenmenge eines der beiden Graphen G0 und G1 einer zufälligen Permutation unterzogen wird, lässt sich hinterher nur herausfinden, welcher Graph das war, wenn G0 und G1 nicht isomorph sind. Dies führt zu dem im folgenden Beweis benutzten interaktiven Beweissystem. Satz 9.2.1: GI ∈ IP (2). Beweis: Die Eingabe sei das Graphenpaar (G0 , G1 ) mit je n Knoten. Wenn die Knotenzahl der Graphen verschieden ist, sind die Graphen trivialerweise nicht isomorph. Dies kann vorab in polynomieller Zeit überprüft werden. Vera und Peter benutzen folgendes interaktives Beweissystem. Runde 1: Vera erzeugt ein Zufallsbit i ∈ {0, 1} und eine zufällige Permutation π auf {1, . . . , n}. Sie berechnet H := π(Gi ), d.h. den Graphen H, der aus Gi nach Umnummerierung der Knoten gemäß π entsteht. Sie schreibt H auf das Kommunikationsband. Runde 2: Peter berechnet ein j ∈ {0, 1} und schreibt j auf das Kommunikationsband. Entscheidung: Vera akzeptiert, wenn i = j ist. Wir analysieren die Kommunikation. Natürlich kann Vera in polynomieller Zeit ihre Arbeit tun. Falls G0 und G1 nicht isomorph sind, d.h. (G0 , G1 ) ∈ GI, kann Peter (durch Ausprobieren) herausfinden, ob H zu G0 oder zu G1 isomorph ist. Den entsprechenden Index wählt er als j, und Vera akzeptiert mit Wahrscheinlichkeit 1. Falls G0 und G1 isomorph sind, d.h. (G0 , G1 ) 6∈ GI, sind G0 , G1 und H isomorph. Die Information H ist für Peter wertlos. Nachdem Vera i ausgewählt hat, ist für Peter Prob(i = 0) = Prob(i = 1) = 12 . Nachdem Peter nun die Information H erhalten hat, ändert sich dies nicht. Da G0 und G1 isomorph sind, gibt es gleich viele Permutationen, die H aus G0 erzeugen, wie es Permutationen gibt, die H aus G1 erzeugen. Peter kann also die Wahrscheinlichkeit, dass Vera akzeptiert, nicht über 12 bringen. Wir haben es hier mit einem interaktiven Beweissystem mit einseitigem Fehler zu tun und, analog zu RP -Algorithmen, kann mit zweimaliger Ausführung des Protokolls der Fehler auf 41 gesenkt werden. Da die Ausführungen parallel erfolgen, bleibt die Rundenzahl erhalten. 2 68 Der Erfolg des soeben beschriebenen interaktiven Beweissystems beruht darauf, dass die Zufallsbits, die Vera benutzt, Peter unbekannt bleiben. Vera benutzt also private coins“. ” Wenn es nur einen Zufallszahlengenerator gibt, dessen Ergebnisse Peter und Vera sehen, spricht man von public coins“. Natürlich lassen sich öffentliche Münzwürfe durch private ” Münzwürfe simulieren, indem der Erzeuger der privaten Münzwürfe die Ergebnisse publiziert. Hier kann nur erwähnt werden, dass sich private Münzwürfe auch durch öffentliche Münzwürfe simulieren lassen. Wir werden ein interaktives Beweissystem für GI vorstellen, in dem die Zufallsbits veröffentlicht werden. Definition 9.2.2: Die Klasse BP(NP) (die auch AM genannt wird) enthält alle Sprachen L, für die es eine Sprache B ∈ P gibt mit 3 4 1 x 6∈ L ⇒ Prob(∃y : (x, r, y) ∈ B) ≤ . 4 Dabei darf y nur in |x| polynomielle Länge haben, und r ist ein Zufallsvektor mit in |x| polynomieller Länge. x ∈ L ⇒ Prob(∃y : (x, r, y) ∈ B) ≥ Zunächst zur Bezeichnungsweise BP(NP). Für festes r ist das Prädikat ∃y : (x, r, y) ∈ B“, ” da B ∈ P, ein NP-Prädikat, um das herum“ ein BPP-Algorithmus eingesetzt wird. Für ” Sprachen in BP(NP) gibt es die oben angegebenen speziellen Beweissysteme. Satz 9.2.3: BP (N P ) ⊆ IP (2). Beweis: Folgendes interaktives Beweissystem beweist die Behauptung. Runde 1: Vera erzeugt einen Zufallsvektor r und schreibt ihn auf das Kommunikationsband. Runde 2: Peter berechnet ein y und schreibt y auf das Kommunikationsband. Entscheidung: Vera akzeptiert, wenn (x, r, y) ∈ B ist. Vera kann ihre Arbeit in polynomieller Zeit vollbringen, da B ∈ P ist. Falls x ∈ L ist, kann Peter mit einer Wahrscheinlichkeit von mindestens 34 ein y berechnen, das Vera überzeugt. 2 Falls x 6∈ L, gelingt ihm dies nur mit einer Wahrscheinlichkeit von höchstens 41 . Es ist nun auch klar, warum nicht Peter die Zufallsbits erzeugen darf. Er könnte dann betrügen, indem er r so wählt, dass es, auch wenn x 6∈ L ist, ein y gibt, das Vera überzeugt. Die Bezeichnung AM geht auf frühere Definitionen interaktiver Beweissysteme zurück. Dabei steht A für König Artus (aus der Legende der Artusrunde) und M für den Zauberer Merlin aus derselben Legende. Im Englischen ist König Artus King Arthur. Daher wird von Arthur-Merlin-Spielen gesprochen. Für Sprachen der Komplexitätsklasse AM stellt Arthur (bei uns Vera) eine Frage (Anforderung), die der allmächtige (keine Rechenzeitbeschränkung) Merlin (bei uns Peter) mit großer Wahrscheinlichkeit so beantworten kann, dass Arthur die Antwort überprüfen kann. 69 Satz 9.2.4: GI ∈ BP (N P ). Beweis: Wieviele zu H isomorphe Graphen gibt es? Man ist versucht, die Antwort n! zu geben. Betrachten wir aber einmal einen Graphen auf V = {1, 2, 3} mit der einzigen Kante e1 = {1, 2}. Die Permutation π mit π(1) = 2, π(2) = 1 und π(3) = 3 erzeugt wieder H, während π 0 mit π 0 (1) = 3, π 0 (2) = 2 und π 0 (3) = 1 den zu H isomorphen Graphen H 0 mit der Kante e01 = {2, 3} erzeugt. Die Permutationen auf H, die wieder H ergeben (so wie im Beispiel π), heißen Automorphismen auf H. Die Menge Aut(H) aller Automorphismen auf H bildet eine Untergruppe der Gruppe Σn aller Permutationen. Die Gruppenoperation ist dabei die Hintereinanderausführung von Funktionen. Seien nun π1 (H), . . . , πk (H) die verschiedenen zu H isomorphen Graphen. Dann gilt Σn = π1 Aut(H) + · · · + πk Aut(H) , d. h. wir haben Σn disjunkt in linke Nebenklassen bzgl. Aut(H) zerlegt. Dies ist einfach zu zeigen. Falls π ∈ Aut(H), gilt πi (H) = πi ◦π(H). Sei nun π ∈ Σn beliebig. Dann gibt es ein i ∈ {1, . . . , k} mit π(H) = πi (H), also gibt es ein π 0 ∈ Aut(H) mit π = πi ◦π 0 ∈ πi Aut(H). Für unsere Überlegungen ist nur wichtig, dass die Menge aller (H, π) mit H ≡ G0 und π ∈ Aut(H) genau n! Elemente enthält. Nun können wir ähnlich zum Beweis von Satz 9.2.1 Unterschiede in Paaren (G0 , G1 ) feststellen in Abhängigkeit davon, ob G0 und G1 isomorph sind. Sei N (G0 , G1 ) = {(H, π)|H ≡ G0 und π ∈ Aut(H)} ∪ {(H, π)|H ≡ G1 und π ∈ Aut(H)} . Die beiden betrachteten Mengen sind identisch, falls G0 ≡ G1 , und disjunkt, falls G0 6≡ G1 . Also gilt n! falls G0 ≡ G1 |N (G0 , G1 )| = . 2n! falls G0 6≡ G1 Den großen“ Unterschied zwischen n! und 2n! machen wir uns zunutze. Um die passenden ” Wahrscheinlichkeiten zu erhalten, vergrößern wir den Unterschied noch etwas und betrachten X := (N (G0 , G1 ))5 = N (G0 , G1 ) × N (G0 , G1 ) × N (G0 , G1 ) × N (G0 , G1 ) × N (G0 , G1 ). Dann ist |X| = (n!)5 , falls G0 ≡ G1 , und |X| = 32(n!)5 , falls G0 6≡ G1 . Ein Element aus N (G0 , G1 ) wird einfach auf übliche Weise als Paar (H, π) codiert. Die Codierung eines Elementes aus X ist die Konkatenation der Codierungen der fünf Elemente aus N (G0 , G1 ). Somit hat die Codierung von Elementen aus X polynomielle Länge l in Abhängigkeit von n. Es ist bei üblichen Codierungen von Permutationen auch sichergestellt, dass 0l kein gültiges Codewort ist. Es sei k := dlog(4(n!)5 )e. Für eine k×l-Matrix W mit Einträgen aus {0, 1} und (a1 , . . . , al ) ∈ {0, 1}l sei M hj (a1 , . . . , al ) = ai wji , 1≤j≤k. 1≤i≤l l Dann kann h = (h1 , . . . , hk ) : {0, 1} → {0, 1}k als Hashfunktion bezeichnet werden. Wenn wir W zufällig wählen, hat h mit hoher Wahrscheinlichkeit gute Eigenschaften, wie wir 70 sehen werden. Sei A ⊆ {0, 1}l und (0, . . . , 0) ∈ / A. Sei S die Zufallsvariable, die die Anzahl von Vektoren aus A angibt, die von einer zufälligen linearen Funktion h : {0, 1}l → {0, 1}k auf (0, . . . , 0) abgebildet werden. Hier sehen wir, warum der Nullvektor bei der Codierung ausgeschlossen ist. Er wird von linearen Abbildungen stets auf 0 abgebildet. L Sei also ai = 1. Mit Wahrscheinlichkeit 1/2 ist wij = 0 bzw. wij = 1. Unabhängig von r6=i ar wjr nimmt hj (a1 , . . . , al ) also mit Wahrscheinlichkeit 1/2 den Wert 0 bzw. 1 an. Die einzelnen Bits von h sind unabhängig voneinander. Also ist h(a1 , . . . , al ) mit Wahrscheinlichkeit 2−k der Nullvektor. S kann beschrieben werden als die Summe von |A| Zufallsvariablen Zi , wobei Zi genau dann den Wert 1 annimmt, wenn für das i-te Element ai in A gilt, dass h(ai ) = (0, . . . , 0). Wir zeigen nun zunächst, dass die Zufallsvariablen Zi und Zp für i 6= p unabhängig sind. Seien also ai und ap das i-te bzw. p-te Element von A, d. h. insbesondere ai 6= ap . Wir zeigen, dass die Wahrscheinlichkeit, dass sowohl hj (ai1 , . . . , ail ) als auch hj (ap1 , . . . , apl ) beide Null sind, gleich 1/4 ist. Wir betrachten hj (ai1 , . . . , ail ) = 0 ∧ hj (ap1 , . . . , apl ) = 0 als lineares Gleichungssystem über 2 mit zwei Gleichungen, wobei wj,1 , . . . , wj,l die Variablen sind. Da (ai1 , . . . , ail ) und (ap1 , . . . , apl ) verschieden und ungleich dem Nullvektor sind, ist die Anzahl der Lösungen des Gleichungssystems gleich 2l−2 . Die Anzahl der möglichen Belegungen von wj,1 , . . . , wj,l ist 2l , so dass bei zufälliger Wahl von wj,1 , . . . , wj,l die Wahrscheinlichkeit, dass das Gleichungssystem erfüllt wird, 1/4 beträgt. Also ist S die Summe von |A| paarweise unabhängigen Zufallsvariablen. Der Erwartungswert E(S) und die Varianz V(S) von S erhält man mit denselben Formeln wie bei der Binomialverteilung. Diese Formeln lauten: E(S) = 2−k |A| und V(S) = 2−k (1 − 2−k )|A| ≤ E(S) . Wir betrachten nun die Eingabemenge X, die nach Konstruktion den Nullvektor nicht enthält. Falls G0 6≡ G1 , gilt (beachte d·e) 5 E(S) = 2−dlog(4(n!) )e · 32(n!)5 1 1 · · 32(n!)5 = 4 . ≥ 2 4(n!)5 Falls dagegen G0 ≡ G1 , gilt E(S) = 2−dlog(4(n!) 5 )e · (n!)5 ≤ 1 . 4 Wir wenden nun Definition 9.2.2 an, um zu zeigen, dass GI ∈ BP(NP) ist. Dabei entspricht x der Eingabe (G0 , G1 ), und r ist eine zufällige lineare Transformation h, genauer eine zufällige Matrix der Größe k × l, wobei k und l von der Knotenzahl in den Graphen G0 und G1 abhängen. Schließlich besteht y aus zwei Teilen y 0 und y 00 . Dabei ist y 0 die Codierung eines Elements aus X = N (G0 , G1 )5 , wie oben besprochen. Allerdings muss auch überprüfbar sein, ob y 0 ∈ X ist. Daher soll y 00 ein Beweis sein, dass y 0 ∈ X ist. Der Beweis ist ein Paar (a, α) mit a ∈ {0, 1}5 und α ∈ Σ5n . Das Tripel (x, r, y = (y 0 , y 00 )) 71 gehört genau dann zu B, wenn y 00 beweist, dass y 0 ∈ X ist, d. h. für i ∈ {1, . . . , 5} muss αi (Gai ) = H sein, wenn die angegebenen πi tatsächlich Automorphismen auf H sind und wenn h(y 0 ) = 0 ist. Nach Definition ist B ∈ P. Wir müssen nun in den beiden Fällen G0 ≡ G1 und G0 6≡ G1 die Wahrscheinlichkeit des Ereignisses E := {∃y 0 |h(y 0 ) = (0, . . . , 0)} abschätzen. Sei zunächst G0 6≡ G1 . Dann benutzen wir die Tschebyscheff - Ungleichung (Lemma 8.1.12): Prob(|S − E(S)| ≥ ε) ≤ V(S)/ε2 . In unserem Fall setzen wir ε := E(S) und benutzen die oben bewiesene Ungleichung V(S) ≤ E(S). Es folgt G0 6≡ G1 ⇒ Prob(E) = 1 − Prob(S = 0) ≥ 1 − Prob(|S − E(S)| ≥ E(S)) ≥ 1 − V(S)/E(S)2 ≥ 1 − 1/E(S) ≥ 3/4 . Im Fall G0 ≡ G1 benutzen wir die Markoff-Ungleichung (Lemma 8.1.11) für t = 1 und erhalten Prob(S ≥ 1) ≤ E(S). Also gilt G0 ≡ G1 ⇒ Prob(E) = Prob(S ≥ 1) ≤ E(S) ≤ 1/4 . 2 Warum macht dieses Ergebnis es noch unwahrscheinlicher“, dass GI NP-vollständig ist? ” Satz 9.2.5: Falls GI NP-vollständig ist, ist Σ2 = Π2 . Nach Satz 7.3.12 folgt aus Σ2 = Π2 , dass PH = Σ2 = Π2 ist. Beweis von Satz 9.2.5: Nach Satz 7.3.10 genügt es, Σ2 ⊆ Π2 zu zeigen. Sei also L ∈ Σ2 . Nach Satz 7.3.11 lässt sich L als ∃∀-Formel für eine Sprache B ∈ P schreiben: L = {x | ∃y ∀z : (x, y, z) ∈ B}. Dabei müssen y und z in ihrer Länge polynomiell in |x| beschränkt sein. Sei p das Polynom, das die Längenbeschränkung für y ergibt. Für L0 = {(x, y) | ∀z : (x, y, z) ∈ B} ist L = {x | ∃y : (x, y) ∈ L0 }. Dabei ist L0 ∈ Π1 = co-NP. Wenn GI NP-vollständig ist, ist GI co-NP-vollständig. Wir können also L0 polynomiell auf GI reduzieren und L0 durch GI ersetzen. Darüber hinaus wählen wir für GI eine BP(NP)-Darstellung, bei der die Irrtumswahrscheinlichkeit auf 18 2−p(n) gesetzt wurde. Also gibt es ein C ∈ P mit (x, y) ∈ L0 (x, y) ∈ / L0 ⇒ ⇒ 1 Prob(∃z : (x, y, z, r) ∈ C) ≥ 1 − 2−p(n) , 8 Prob(∃z : (x, y, z, r) ∈ C) ≤ 72 1 −p(n) 2 . 8 Die Länge von z ist natürlich stets polynomiell beschränkt. Wir fassen die Aussagen zusammen: x∈L ⇒ ⇒ ⇒ ∃y : (x, y) ∈ L0 ∃y, |y| ≤ p(n) : Prob(∃z : (x, y, z, r) ∈ C) ≥ 1 − 81 2−p(n) Prob(∃y, |y| ≤ p(n), ∃z : (x, y, z, r) ∈ C) ≥ 1 − 18 2−p(n) . Wenn es ein gutes“ y gibt, ist die Wahrscheinlichkeit für die Existenz eines guten“ ” ” y genau 1. Somit kann die Existenzaussage in die Wahrscheinlichkeitsaussage hinein ” gezogen“ werden. Im Fall x ∈ / L nutzen wir die Tatsache aus, dass die Wahrscheinlichkeit für die Vereinigung von Ereignissen Ei nie größer als die Summe der Wahrscheinlichkeiten von Ei ist. Es gibt weniger als 2p(n)+1 Vektoren y mit |y| ≤ p(n). x∈ /L ⇒ ⇒ ⇒ ∀y, |y| ≤ p(n) : (x, y) ∈ / L0 ∀y, |y| ≤ p(n) : Prob(∃z : (x, y, z, r) ∈ C) ≤ 81 2−p(n) Prob(∃y, |y| ≤ p(n), ∃z : (x, y, z, r) ∈ C) ≤ 2p(n)+1 · 18 · 2−p(n) = 1/4. Ob wir ∃y ∃z oder ∃w = (y, z) schreiben, ist egal. Wir haben also eine Darstellung von L erhalten von der Form x∈L ⇒ Prob(∃w : (x, w, r) ∈ C) ≥ 3/4, x∈ /L ⇒ Prob(∃w : (x, w, r) ∈ C) ≤ 1/4, wobei C ∈ P ist. Allgemein wissen wir, dass L1 ∈ BPP äquivalent ist zu der Aussage: es gibt eine Sprache D ∈ P mit v ∈ L1 ⇒ Prob((v, r) ∈ D) ≥ 3/4, v 6∈ L1 ⇒ Prob((v, r) ∈ D) ≤ 1/4. Anstelle der Aussage (v, r) ∈ D“ haben wir es hier mit ∃w : (x, w, r) ∈ C“ zu tun. Mit ” ” dieser Aussage können wir den Beweis von Satz 8.1.14 für die Aussage BPP ⊆ Π2 analog führen und erhalten, dass wir L für eine Sprache E ∈ P charakterisieren können durch L = {x|∀t∃u∃w : (x, t, u, w) ∈ E}. Wenn wir ∃u∃w zu ∃(u, w) zusammenführen, zeigt dies L ∈ Π2 . 2 Abschließend soll der Beweis informal in Operatorendenkweise“ beschrieben werden. ” Es ist L ∈ Σ2 , also als ∃∀ (stets um ein Prädikat aus P ergänzt) darstellbar. Da GI co-NPvollständig, also Π1 -vollständig oder ∀-vollständig“ ist, können wir den ∀-Quantor durch ” GI ersetzen. Aber nach Satz 9.2.4 ist GI durch BP∃ darstellbar, wobei wir BP als Operator auffassen. Insgesamt erhalten wir für L eine ∃BP∃-Darstellung. Die Überlegungen im Beweis zeigen, dass wir ∃BP durch BP∃ ersetzen können, also für L eine BP∃∃ = BP∃Darstellung erhalten. Da BPP ⊆ Π2 können wir BP durch ∀∃ ersetzen und erhalten eine ∀∃∃ = ∀∃-Darstellung, also eine Π2 -Darstellung. Insgesamt können wir mit Operatoren rechnen“, wenn wir die bewiesenen Regeln beachten. ” 73 9.3 Zero-Knowledge-Beweise In Kap. 9.1 haben wir NP ⊆ IP(1) gezeigt. In dem zugehörigen interaktiven Beweissystem offenbart Peter, falls x ∈ L, einen Beweis, dass x ∈ L ist. Im Falle des Graphenisomorphieproblems zeigt Peter, falls G0 ≡ G1 , Vera die zugehörige Isomorphieabbildung π. Kann Peter Vera auch davon überzeugen, dass G0 ≡ G1 ist, ohne dass Vera hinterher effizienter eine Isomorphieabbildung berechnen kann als zuvor? Ein denkbares Szenario wäre folgendes. Peters Passwort besteht aus zwei isomorphen Graphen G0 und G1 , die öffentlich bekannt sein können, und einer nur ihm bekannten Isomorphieabbildung π zwischen G0 und G1 . Vera kennt G0 und G1 . Nun möchte Vera sicher sein, dass am anderen Ende der Kommunikationsleitung wirklich Peter sitzt. Dabei ist die Leitung unsicher und wird von Mata Hari abgehört. Wenn Vera aus der Kommunikation nichts lernen kann, kann Mata Hari dies auch nicht und das Geheimnis bleibt gewahrt und kann für weitere Identitätsüberprüfungen benutzt werden. Wir starten ohne formale Definition mit einem Dialog zwischen Peter und Vera und liefern die Formalisierung nach. Seien G0 und G1 Graphen auf n Knoten. Runde 1: Peter wählt zufällig i ∈ {0, 1} und π ∈ Σn und schreibt H := π(Gi ) auf das Kommunikationsband. Runde 2: Vera erzeugt zufällig j ∈ {0, 1} und schreibt j auf das Kommunikationsband. Runde 3: Peter berechnet eine Permutation π ∗ ∈ Σn und schreibt sie auf das Kommunikationsband. Entscheidung: Vera akzeptiert, falls H = π ∗ (Gj ). Zunächst fällt auf, dass Peter in Runde 1 das Verhalten von Vera in dem interaktiven Beweissystem aus dem Beweis von Satz 9.2.1 nachahmt, und Vera in der zweiten Runde eine Information auswürfelt, die Peter im angegebenen Beweissystem berechnet. Im neuen Dialog kann Vera ihre Arbeit natürlich in polynomieller Zeit verrichten. Nehmen wir zunächst an, dass G0 ≡ G1 ist. In diesem Fall sind Gj und H isomorph und Peter kann die Permutation π ∗ , die Vera überzeugt, berechnen. Falls i = j ist, ist offensichtlich π ∗ = π eine passende Antwort. Falls jedoch i 6= j ist, kann Peter auf sein Geheimnis zurückgreifen, nämlich eine Permutation π 0 mit G1 = π 0 (G0 ). Ist i = 1 und j = 0, dann ist π ◦ π 0 (G0 ) = π(G1 ) = H und π ∗ = π ◦ π 0 geeignet. Ist dagegen i = 0 und j = 1, so ist π ◦ (π 0 )−1 (G1 ) = π(G0 ) = H und π ∗ = π ◦ (π 0 )−1 geeignet. Falls G0 6≡ G1 , muss Peter in der ersten Runde einen Graphen H auf n Knoten senden. Sonst würde Vera die Abweichung merken und sich nicht überzeugen lassen. Da G0 6≡ G1 , kann H zu maximal einem der beiden Graphen isomorph sein. Falls H weder zu G0 noch zu G1 isomorph ist, hat Peter keine Chance, Vera zu überzeugen. Ansonsten würfelt Vera mit Wahrscheinlichkeit 1/2 das Bit j so aus, dass H und Gj nicht isomorph sind, und Peter kann Vera nicht überzeugen. Wir haben also ein neues interaktives Beweissystem für GI mit einseitigem Fehler. Das Besondere soll sein, dass Vera aus dem Dialog nichts lernt. Oder lernt sie vielleicht doch mit kleiner Wahrscheinlichkeit etwas? Es könnte doch i = j = 0 und H = G1 sein. Dann ist π ∗ ein Isomorphismus zwischen G0 und G1 . In diesem Fall ist die zufällige Permutation π ein Isomorphismus zwischen G0 und G1 . Dies ist aber kein Extravorteil für Vera. Sie 74 kann ja selber polynomiell viele Permutationen auswürfeln und testen, ob eine davon einen Isomorphismus zwischen G0 und G1 darstellt. Wir merken, dass wir bei der Definition von Zero-Knowledge“ sehr vorsichtig sein müssen. ” Definition 9.3.1: Sei (P, V ) ein interaktives Protokoll für die Sprache L, d. h. V ist der polynomielle Algorithmus für Vera und P der Algorithmus für Peter, der für x ∈ L Vera mit genügend großer Wahrscheinlichkeit überzeugt. Das Protokoll hat die perfekte ZeroKnowledge-Eigenschaft, wenn es für jeden polynomiellen Algorithmus V 0 für Vera einen probabilistischen Algorithmus M mit erwarteter polynomieller Rechenzeit gibt, der auf jeder Eingabe x ∈ L dieselbe Wahrscheinlichkeitsverteilung wie das Protokoll (P, V 0 ) für den Output liefert. Vera lernt also, selbst wenn sie vom Protokoll abweicht, oder Mata Hari die Botschaften von Vera verändert, nichts (außer der Tatsache x ∈ L), was sie nicht auch ohne den Dialog lernen könnte. Satz 9.3.2: GI hat interaktive Beweissysteme mit der perfekten Zero-Knowledge-Eigenschaft. Beweis: Wir zeigen, dass das oben beschriebene interaktive Beweissystem für GI die Zero-Knowledge-Eigenschaft hat. Sei V 0 ein polynomieller Algorithmus. Wir beschreiben die probabilistische Simulationsmaschine auf (G0 , G1 ). 1.) 2.) Repeat until i = j: - erzeuge zufällig i ∈ {0, 1} und π ∈ Σn , - berechne H = π(Gi ), - simuliere V 0 auf der Nachricht H von Peter in Runde 1 und berechne, welches j der Algorithmus V 0 in Runde 2 sendet. Gib für den Versuch mit i = j das Tripel (H, i, π) als Ausgabe aus. Nach Voraussetzung ist jede Runde in der repeat-Schleife in polynomieller Zeit durchführbar. Da V 0 das Bit i nicht kennt, ist die Wahrscheinlichkeit für das Ereignis i = j genau 1/2. Wir warten bei einer fairen Münze, wann sie das erste Mal auf Zahl fällt. Die mittlere Wartezeit beträgt 2. Also hat die Simulationsmaschine erwartete polynomielle Rechenzeit. Da (P, V 0 ) simuliert wird und, falls i = j, H = π(Gi ) = π(Gj ) ist, wird mit (H, i, π) derselbe zufällige Output geliefert wie von (P, V 0 ), falls G0 ≡ G1 . 2 Können auch NP-vollständige Probleme Zero-Knowledge-Beweise haben? Dies können wir nur unter einer weiteren Annahme zeigen. In der Kryptographie werden Einwegfunktionen f benötigt, dies sind injektive Funktionen, die in polynomieller Zeit auszuwerten sind (berechne y = f (x)) und die nicht in polynomieller Zeit zu invertieren sind (berechne zu y ein Bit von x mit f (x) = y). Für die Existenz von Einwegfunktionen reicht die Annahme NP 6= P nicht aus (sie ist jedoch (Übungsaufgabe) notwendig). Für das 75 Hamiltonkreisproblem kann ein interaktiver Beweis mit computational Zero-KnowledgeEigenschaft entworfen werden, d. h. unter der Annahme der Existenz einer injektiven Einwegfunktion. Mit injektiven Einwegfunktionen f lassen sich Bits b wie folgt probabilistisch verschlüsseln. Für eine genügend lange Zufallszahl z wird y = f (z, b) berechnet. Aus y lässt sich nach Annahme weder (z, b) noch das Bit b in polynomieller Zeit berechnen. Der Absender kann, wenn er will, b entschleiern“, indem er z bekannt gibt. Es ist dann effizient zu ” überprüfen, ob y = f (z, 0) oder y = f (z, 1) ist. Hier soll auch deutlich werden, dass der Absender nicht nachträglich sein Bit b verändern kann. Da f injektiv ist, gibt es nur ein Urbild zu y. Wir sprechen von Bit Commitment, da sich der Absender mit y auf ein Bit b festlegt, das er nicht mehr ändern kann und das der Empfänger nicht vorzeitig (bevor es der Absender will und z sendet) lesen kann. Das Senden von y entspricht dem Übersenden einer verschlossenen Kiste, die b enthält. Dabei ist f das Schließsystem und z der Schlüssel. Satz 9.3.3: HC hat interaktive Beweissysteme mit der computational Zero-KnowledgeEigenschaft. Da HC NP-vollständig ist, gilt diese Aussage mit Hilfe polynomieller Reduktionen für alle Sprachen in NP. Für NP-vollständige Probleme würde allerdings die Existenz eines interaktiven Beweissystems mit der perfekten Zero-Knowledge-Eigenschaft implizieren, dass die polynomielle Hierarchie zusammenbricht. Beweis von Satz 9.3.3: Wir geben ein interaktives Beweissystem an. Runde 1: Peter erzeugt eine zufällige Permutation π ∈ Σn , wobei n die Knotenzahl des betrachteten Graphen G ist. Peter erzeugt sich eine Beschreibung von π, also die Folge π(1), . . . , π(n) und eine Liste aller umnummerierten Kanten {π(i), π(j)} mit {i, j} ∈ E in zufälliger Reihenfolge. Diese Information schreibt er bitweise in Kisten (s. o.) verpackt auf das Kommunikationsband. Er kann diese Bits nun nicht mehr ändern, wenn er sie zeigen will. Runde 2: Vera erzeugt ein Zufallsbit b ∈ {0, 1} und schreibt es auf das Kommunikationsband. Runde 3: Falls b = 0, entschlüsselt Peter alle Kisten, und Vera erhält die Information über die Permutation und die umnummerierten Kanten. Falls b = 1, entschlüsselt Peter nur die Kisten für die umnummerierten Kanten eines Hamiltonkreises. Entscheidung: Falls b = 0, akzeptiert Vera, wenn Peter tatsächlich eine Permutation offenbart hat und die Kantenliste tatsächlich der mit der Permutation umnummerierten Kantenliste des Graphen entspricht. Falls b = 1, akzeptiert Vera, wenn die von Peter offenbarten n Kanten einen Hamiltonkreis darstellen. Offensichtlich kann Vera die nötige Arbeit in polynomieller Zeit durchführen. Falls G einen Hamiltonkreis enthält, kann Peter, indem er dem Protokoll folgt, Vera überzeugen. Wenn G keinen Hamiltonkreis enthält, kann Peter nicht beide Anforderungen gleichzeitig erfüllen. Da er mindestens eine Anforderung nicht erfüllt und das Bit b nur mit Wahr76 scheinlichkeit 1/2 erahnen kann, wird er mit Wahrscheinlichkeit 1/2 (oder größer) entlarvt. Bei zweifacher paralleler Ausführung erhalten wir die geforderten Wahrscheinlichkeiten. Warum ist dies aber ein Zero-Knowledge-Beweis? Vera kann sich die im Protokoll für sie offenbarten Informationen selber besorgen. Sie erzeugt zufällig b ∈ {0, 1}. Falls b = 0, erzeugt sie sich eine zufällige Umnummerierung von G und eine zufällige Permutation der umnummerierten Kantenliste. Falls b = 1, erzeugt sie sich einen zufälligen Hamiltonkreis auf dem vollständigen Graphen und positioniert diese Kanten an zufälligen Stellen einer Kantenliste der Länge |E|, wobei alle anderen |E| − n Stellen leer bleiben. 2 Wie schon gesagt, können wir die Existenz einer Einwegfunktion nicht zeigen, da wir sonst sogar NP 6= P bewiesen hätten. Wie könnte jedoch eine Einwegfunktion aussehen? Viele kryptographische Verfahren beruhen auf der Annahme, dass Faktorisieren wesentlich schwerer als Primzahltesten ist. Es sei m so beschaffen, dass Zahlen mit m Bits effizient auf ihre Primzahleigenschaft getestet werden können (mit randomisierten Algorithmen), aber das Faktorisieren einer m-Bitzahl nicht effizient möglich ist. Wenn wir nun b ver” packen“ wollen, erzeugen wir eine Primzahl p der Länge m, so dass die Parität der Bits von p gerade b ergibt, und eine Primzahl q < p der Länge m. Das verschlüsselte Bit wird durch n := pq beschrieben. Wie wir sehen, gehen hier Gebiete wie Komplexitätstheorie, Effiziente Algorithmen, Logik, Kryptographie, Stochastik und Zahlentheorie eine fruchtbare Symbiose ein. 9.4 Das PCP-Theorem Das PCP-Theorem wurde 1992 von Arora, Lund, Motwani, Sudan und Szegedy bewiesen. Diesen fünf Wissenschaftlern gebührt aber nicht der gesamte Verdienst für dieses Resultat, das unbestritten als ein Höhepunkt der Theoretischen Informatik gilt. Sie haben aber den entscheidenden Schlusspunkt unter eine Vielzahl von Arbeiten gesetzt. Die nackte Aussage des Theorems, eine neue Charakterisierung von NP, wird ohne weiteren Kommentar auf alle ziemlich abstrus und uninteressant wirken. In Kap. 10 wird sich jedoch herausstellen, dass dieses Theorem zahlreiche Implikationen für den praktischen Algorithmenentwurf hat. Die Entwicklung zu diesem Theorem hin begann ca. 10 Jahre vor dem Beweis mit der Motivation, die Unmöglichkeit von guten Approximationsalgorithmen für viele Probleme zu zeigen. Zwischenschritte waren die gerade behandelten Beweissysteme. Nach 1992 ging die Entwicklung rasant weiter, stärkere Varianten des PCP-Theorems wurden ebenso bewiesen wie verbesserte Anwendungen. Wir werden das PCP-Theorem nicht beweisen (in einer Spezialvorlesung habe ich dafür 12 Doppelstunden gebraucht), sondern nur versuchen, das PCP-Theorem zu formulieren und eine Idee zu bekommen, warum es gelten könnte. Die Klasse NP haben wir charakterisiert durch die Existenz von Beweisen polynomieller Länge, die in polynomieller Zeit überprüft werden können. Typischerweise wird dabei der gesamte Beweis gelesen. Die Klasse co-RP (es wird sich als natürlicher erweisen, hier co-RP und nicht RP zu betrachten) wird charakterisiert mit Hilfe einer Quelle von Zufallsbits, so dass für x ∈ L jeder Zufallsvektor uns überzeugt, während für x ∈ / L höchstens die Hälfte 77 der Zufallsvektoren uns dazu verführt zu glauben, dass x ∈ L sein kann. Da RP ⊆ NP, würde die Kombination von Beweis und RP-Zufall nicht mehr ergeben als Beweise. Eine Kombination von co-RP und NP könnte jedoch hilfreich sein. Wir können die Zufallsbits dazu benutzen, nur wenige Bits des Beweises auszuwählen und nur die ausgewählten Bits zu lesen. Definition 9.4.1: Seien r, q : → 0 . Ein (r(n), q(n))-beschränkter Verifizierer ist ein polynomieller Algorithmus mit Zugriff auf die Eingabe x, O(r(n)) Zufallsbits und einen Beweis B. Er darf auf der Grundlage von x und der Zufallsbits O(q(n)) Positionen des Beweises berechnen, dann diese O(q(n)) Bits des Beweises lesen und muss nach einer weiteren Rechnung x akzeptieren oder verwerfen. Definition 9.4.2: Die Klasse PCP(r(n), q(n)) (probabilistically checkable proofs with O(r(n)) random bits and O(q(n)) query bits) ist die Klasse aller Sprachen L, für die es einen (r(n), q(n))-beschränkten Verifizierer mit folgenden Eigenschaften gibt: x ∈ L ⇒ ∃ Beweis B0 : Prob[V (x, r, B0 ) = 1] = 1 x∈ / L ⇒ ∀ Beweise B : Prob[V (x, r, B) = 0] ≥ 1/2. Im Falle x ∈ L gibt es also einen Beweis, der uns mit den beschränkten Ressourcen mit Sicherheit überzeugt, während uns für x ∈ / L kein Beweis mit einer Wahrscheinlichkeit von mehr als 1/2 überzeugt. Natürlich können wir, da die Zahl der Zufalls- und Fragebits nur größenordnungsmäßig beschränkt ist, k unabhängige Verifikationsbeweise parallel ausführen und die Irrtumswahrscheinlichkeit auf 2−k senken. Wir finden bekannte Komplexitätsklassen in diesem neuen Konzept wieder. Satz 9.4.3: i) PCP (0, 0) = P. ii) PCP (poly(n), 0) = co-RP. iii) PCP (0, poly(n)) = NP. Beweis: i) Die Aussage ist trivial, da der Verifizierer nur rechnen darf. Ohne Zufallsbits ist jede positive Wahrscheinlichkeit die Wahrscheinlichkeit 1. ii) Hier haben wir keinen Beweis (genauer: es gibt einen Beweis, den wir uns aber nicht ansehen können), und die Zufallsbits können nur in der probabilistischen Rechnung verwendet werden. iii) Hier gibt es keine Zufallsbits, also wird für x ∈ / L in jedem Fall verworfen. Da der ganze Beweis polynomieller Länge gelesen werden kann, erhalten wir NP. 2 Lemma 9.4.4: Falls L ∈ PCP(r(n), q(n)), kann L nichtdeterministisch von einer poly(n)2O(r(n)) = 2O(r(n)+log n) zeitbeschränkten Turingmaschine erkannt werden. 78 Die nichtdeterministische Turingmaschine hat keinen Beweis zur Verfügung wie die PCPBerechnung. Außerdem darf sie Eingaben x 6∈ L in keinem Fall akzeptieren. Für jede Belegung des Ratestrings kann die PCP-Berechnung nur polynomiell viele Beweisbits lesen, für alle 2O(r(n)) Belegungen des Ratestrings sind es insgesamt poly(n)2O(r(n)) Beweispositionen. Die nichtdeterministische Turingmaschine rät die Belegung von poly(n)2O(r(n)) Beweisbits und deren Positionen im Beweisstring in aufsteigender Folge. Dann simuliert sie die PCP-Berechnung auf allen Ratestrings. Die nichtdeterministische Turingmaschine verwirft die Eingabe, wenn eine Beweisposition gefragt wird, die es nicht gibt, oder wenn die simulierte PCP-Berechnung für einen Ratestring nicht akzeptiert. Nur wenn alle Simulationen akzeptiert werden, akzeptiert die nichtdeterministische Turingmaschine. Nach Definition 9.4.2 werden so genau die Eingaben x ∈ L akzeptiert. Wir haben es mit 2O(r(n)) Simulationen polynomieller Länge zu tun, wobei es jeweils poly(n)2O(r(n)) Zeit dauern kann, bis ein Beweisbit gelesen wird. Damit ist die Zeit der nichtdeterministischen Turingmaschine durch poly(n)2O(r(n)) beschränkt. Korollar 9.4.5: i) PCP(log n, poly(n)) = NP. ii) PCP(log n, 1) ⊆ NP. i) Die Beziehung ⊇ “folgt aus Satz 9.4.3 iii) und ⊆ “folgt aus Lemma 9.4.4. ” ” ii) Dies folgt direkt aus i). Beweis: 2 Für die Klasse NP genügt ein Beweis polynomieller Länge, wenn er vollständig gelesen werden darf. Es kann dann auf Zufallsbits verzichtet werden, und selbst O(log n) Zufallsbits vergrößern die Ausdruckskraft nicht. Dagegen sieht PCP(log n, 1) sehr klein“ aus. ” Mit O(log n) Zufallsbits können nur O(1) verschiedene Positionen in einem Beweis polynomieller Länge beschrieben werden. Ist es überhaupt eine Hilfe, wenn wir O(1) Bits eines Beweises erfragen können? PCP-Theorem 9.4.6: NP = PCP(log n, 1). Die ⊇“-Beziehung haben wir in Korollar 9.4.5ii bewiesen. Sensationellerweise genügt es, ” mit O(log n) Zufallsbits O(1) Beweisbits zu erfragen, um NP zu charakterisieren. Wie groß ist O(1)? Vielleicht 10100 oder größer? Heute wissen wir, dass wenige Beweisbits ausreichen. Zwei Beweisbits sind nur genug, wenn NP = P ist. Wenn wir die erlaubte Irrtumswahrscheinlichkeit auf etwas über 1/2 erhöhen, reichen sogar 3 Beweisbits. Wie sehen nun die Beweisideen für NP ⊆ PCP(log n, 1) aus? Da 3-SAT NP-vollständig ist, genügt es 3-SAT ∈ PCP(log n, 1) zu zeigen. Falls x ∈ 3-SAT, ist eine erfüllende Belegung y ein geeigneter Beweis. In y ist die Information lokalisiert, d.h. yi sagt nur etwas über die Belegung der i-ten Variablen aus. Selbst wenn wir die Hälfte von y lesen können, hilft uns das fast gar nichts. Wir müssen nun also die Information über den ganzen Beweis verschmieren“. Jedes Beweisbit soll in einem gewissen Sinn Teilinformationen über jeden ” Teil von y enthalten. Eine erste Idee hierzu liefern fehlerkorrigierende Codes, bei denen 79 die vollständige Information nicht verloren geht, wenn einige Bits verfälscht werden oder eben nicht gelesen werden. Fehlerkorrigierende Codes sind zwangsläufig länger als kürzeste Codes. Der Beweis des PCP-Theorems besteht aus der Konstruktion von zwei Verifizierern. Der eine kommt bereits mit O(log n) Zufallsbits aus und liest O(1) Beweissymbole aus einem Alphabet, das langsam mit der Eingabegröße wächst. Der andere Verifizierer benutzt dagegen O(n3 ) Zufallsbits und liest O(1) Beweisbits. Mit einem Kompositionslemma werden die beiden Verifizierer benutzt, um einen Verifizierer mit den gewünschten Eigenschaften zu erzeugen. Was nützen nun sehr viele Zufallsbits, wenn nur wenige Beweisbits gelesen werden dürfen? Der Beweis kann dann exponentiell lang sein und die Zufallsbits reichen dennoch aus, um die verschiedenen Positionen der Beweisbits zu beschreiben. Wir können einen Vektor y ∈ {0, 1}n codieren durch alle Skalarprodukte ⊕1≤i≤n yi ri für r ∈ {0, 1}n , die Länge des Codewortes ist also 2n . Sei ein unbekanntes y einmal durch sich selbst und einmal auf die eben beschriebene Weise codiert. Wir erhalten nun einen Vektor a ∈ {0, 1}n und sollen möglichst wenige Bits der Codierung lesen und mit kleiner, einseitiger Irrtumswahrscheinlichkeit entscheiden, ob y = a ist. Im ersten Fall könnten sich y und a an genau einer Stelle unterscheiden, und solange wir die entsprechene y-Stelle nicht lesen, wissen wir nicht, dass y 6= a ist. Wenn wir ein zufälliges Bit lesen und uns im Fall y = a nicht irren dürfen, gilt in diesem Szenario: 1. y = a ⇒ Entscheidung y = a mit Wahrscheinlichkeit 1. 2. y 6= a ⇒ Entscheidung y 6= a mit Wahrscheinlichkeit 1/n. Bei der Codierung durch Skalarprodukte sind unsere Chancen besser. Wir wählen einen zufälligen Vektor r ∈ {0, 1}n , lesen das Bit y T r (Skalarprodukt im Körper 2 ) und berechnen aT r. Falls y = a, ist y T r = aT r, und wir entscheiden uns mit Sicherheit für die Entscheidung y = a. Falls y 6= a, sei k die Zahl der Stellen, an denen sich y und a unterscheiden. Es ist y T r = aT r genau dann, wenn r an einer geraden Anzahl der k ausgewählten Stellen eine 1 hat. Dies geschieht mit einer Wahrscheinlichkeit von genau 1/2. Das letzte der betrachteten Bits entscheidet, ob die Zahl gerade oder ungerade ist. Für y 6= a, kommen wir also mit der Wahrscheinlichkeit 1/2 1/n zu der Entscheidung y 6= a. n Etwas allgemeiner ist jeder Vektor aus {0, 1}2 die Codierung einer booleschen Funktion. Die Funktion y(r) := y T r ist eine lineare Funktion. Wir wollen nun probabilistisch überprüfen, ob das Codewort die lineare Funktion aT r ist. Dies ist natürlich nicht exakt möglich, da sich die dargestellte Funktion nur an wenigen Stellen von aT r unterscheiden muss. Ob die dargestellte Funktion f linear ist, kann für zufällige r, s ∈ {0, 1}n mit dem Lesen ? von 3 Bits und dem Test f (r) + f (s) = f (r + s) getestet werden. Die Notation r + s bedeutet ausführlich (r1 + s1 , . . . , rn + sn ). Entweder wir entlarven f als nicht linear oder f ist mit hoher Wahrscheinlichkeit fast linear. Wir haben gesehen, dass sich zwei lineare Funktionen an der Hälfte der Stellen unterscheiden. Eine fast lineare und eine lineare 80 Funktion unterscheiden sich noch an genügend vielen Stellen, um dies mit dem Vergleich einiger zufälliger Funktionswerte herauszufinden, zumindest mit genügend großer Wahrscheinlichkeit. In Wirklichkeit arbeitet der Beweis nicht mit linearen Funktionen, sondern mit Polynomen von kleinem Grad. Eine Verallgemeinerung der obigen Ideen führt zu zwei effizienten Tests. Im ersten Test wird überprüft, ob die abgespeicherte Funktion sich nur an wenigen Stellen von einem Polynom kleinen Grades unterscheidet. Wenn dies der Fall ist, können Funktionswerte des einzigen Polynoms kleinen Grades, das der abgespeicherten Funktion sehr ähnlich ist, mit kleiner Irrtumswahrscheinlichkeit ermittelt werden. Um dies zu ermöglichen, muss die Funktion mehrfach auf verschiedene Weise codiert werden. Mit unseren Überlegungen haben wir uns weit von 3-SAT-Formeln entfernt. Was haben 3-SAT-Formeln mit Polynomen zu tun? Der Zusammenhang ist einfach hergestellt. Es sei Xi eine Variable mit Werten in einem später festzulegenden Körper. Die Klausel xi ∨xj ∨xk ist genau dann durch einen Vektor a erfüllt, wenn das Polynom (1 − Xi )Xj (1 − Xk ) an der Stelle a eine Nullstelle hat. Um alle Klauseln zusammen zu behandeln, benutzen wir Hilfsfunktionen. So sei χj (c, r) = 1 genau dann, wenn das j-te Literal in der c-ten Klausel die r-te Variable betrifft, und sj (c) = 1 genau dann, wenn das j-te Literal in der c-ten Klausel nicht negiert ist. Es soll nun A(r) den Wert der r-ten Variablen angeben. Dann ist für erfüllende Belegungen Π1≤j≤3 χj (c, r)(sj (c) − A(r)) = 0. Nun sind aber χ und s keine Polynome. Wenn wir den Körper passend“ vergrößern und eine passende“ Gradschranke ” ” wählen, gibt es jedoch Polynome χ̂ und ŝ, die auf den vorgegebenen Werten mit χ und s übereinstimmen. Schließlich können wir die bisher betrachteten Polynome in ein Polynom packen“, so dass die Polynomerweiterung erfüllender Belegungen nach Einsetzung in das ” Polynom dazu führt, dass das Polynom an bestimmten vorgegebenen Punkten den Wert 0 hat. Diese Eigenschaft wird dann probabilistisch überprüft. Dies sind naturgemäß nur wenige zentrale Beweisideen, im vollständigen Beweis sind noch mehr Schwierigkeiten zu überwinden. Wir werden das PCP-Theorem in Kapitel 10 anwenden. 81 10 10.1 Die Komplexität von Approximationsproblemen Gütekriterien für Approximationsalgorithmen Buch Theoretische Informatik, Kap. 3.7, S. 68–70. Die Definitionen 10.1.1–10.1.5 sind die Definitionen 3.7.1–3.7.5 aus dem Buch. Wir halten noch einmal fest, dass der Algorithmus von Karmarkar und Karp RM IN (BPP) = 1 impliziert. Später wird gezeigt, dass unter der Annahme P 6= NP jeder polynomielle Approximationsalgorithmus A für BPP eine worst case Güte von mindestens 3/2 haben muss. Inzwischen gibt es ein polynomielles Approximationsschema für das Euklidische TSP. Die Entwicklung zu diesem Resultat zeigt die Wechselbeziehungen zwischen Komplexitätstheorie und Algorithmenentwurf exemplarisch auf. Arora wollte eigentlich beweisen, dass es kein polynomielles Approximationsschema für das Euklidische TSP gibt. Die Analyse, warum seine Beweisversuche scheiterten, führte ihn zu dem polynomiellen Approximationsschema. Wir führen nun Komplexitätsklassen für Optimierungsprobleme ein. Definition 10.1.6: i) Die Klasse der Optimierungsprobleme, für die es ein voll polynomielles Approximationsschema gibt, wird mit FPAS bezeichnet. ii) Die Klasse der Optimierungsprobleme, für die es ein polynomielles Approximationsschema gibt, wird mit PAS bezeichnet. iii) Die Klasse der Optimierungsprobleme, die in polynomieller Zeit bis auf einen konstanten Faktor approximiert werden können, wird mit APX bezeichnet. Natürlich gilt FPAS ⊆ PAS ⊆ APX. Das Rucksackproblem ist in FPAS enthalten und das Euklidische TSP in PAS. Das Bin Packing Problem ist in APX enthalten. Polynomielle Reduktionen und Turing-Reduktionen sind für Optimierungsprobleme ohne Wert. Wir betrachten die Probleme IP und VC und ihre Optimierungsvarianten IPmax und VCmin . Die einfachen Reduktionen IP ≤p VC (Satz 4.2.3) und VC ≤p IP zeigen sogar, wie sich optimale Lösungen für ein Problem aus optimalen Lösungen des anderen Problems berechnen lassen. Später werden wir sehen, dass es für IPmax , falls NP 6= P, keine guten Approximationsalgorithmen gibt, insbesondere ist IP max ∈ / APX. Ganz anders ist die Situations für VCmin . Satz 10.1.7: RM IN (V Cmin ) ≤ 2 und V Cmin ∈ AP X. Beweis: Wir entwerfen einen Greedy Algorithmus. Wir wählen eine beliebige Kante. Solange es noch eine Kante gibt, die mit keiner bereits gewählten Kante einen Knoten gemeinsam hat, wird eine solche Kante gewählt. Dieses Verfahren arbeitet offensichtlich in polynomieller Zeit. 82 Als vertex cover wählen wir die Endpunkte der ausgewählten Kanten. Diese Knotenmenge bildet stets ein vertex cover. Ansonsten würde es eine Kante geben, die der Algorithmus gewählt hätte. Andererseits haben wir ein Matching berechnet. m Kanten Unser vertex cover enthält 2m Knoten. Offensichtlich sind bereits mindestens m Knoten nötig, um die m Kanten des Matchings zu überdecken. Also ist für unseren Algorithmus A(I) = 2m und OPT(I) ≥ m, also RA (I) ≤ 2. 2 Warum ist die unabhängige Menge, die wir erhalten, wenn wir die Komplementmenge zu dem berechneten vertex cover bilden, nicht eine gute Approximation für eine unabhängige Menge maximaler Größe? Dazu betrachten wir den Graphen auf n = 2m Knoten, der aus m sich nicht berührenden Kanten besteht. Unser Algorithmus bildet als vertex cover die gesamte Menge V , während ein minimales vertex cover nur m Knoten enthält. Die Güte ist 2. Das Komplement von V ist jedoch ∅, die leere Menge, zweifellos eine unabhängige Menge. Die größte unabhängige Menge enthält offensichtlich m Knoten. Die Güte unserer Approximation ist m0 oder ∞. Wir benötigen also auf Optimierungsprobleme angepasste Reduktionskonzepte, nämlich sogenannte approximationserhaltende Reduktionen. Definition 10.1.8: Ein Optimierungsproblem Π = (D, S, w) heißt APX-reduzierbar auf ein Optimierungsproblem Π∗ = (D ∗ , S ∗ , w ∗ ), falls es eine in polynomieller Zeit berechenbare Transformation f : D → D ∗ für die Problemeingaben, eine in polynomieller Zeit berechenbare Rücktransformation g : S ∗ (f (D)) → S(D) für die Problemlösungen und eine Konstante ρ > 0 gibt, so dass für alle ε > 0, alle I ∈ D und alle L∗ ∈ S ∗ (f (I)) folgendes gilt: R(f (I), L∗ ) ≤ 1 + ρε ⇒ R(I, g(L∗ )) ≤ 1 + ε. Dabei ist R(I, L) die Güte der Lösung L für die Eingabe I. Dieser Reduktionsbegriff ist komplexer als die uns bekannten Reduktionsbegriffe. Bei Entscheidungsproblemen ist die Rücktransformation einfach die Abbildung g(0) = 0 und g(1) = 1. Hier soll eine Reduktion folgendermaßen algorithmisch genutzt werden. Wir wollen Π für eine Eingabe I bearbeiten und kennen einen polynomiellen Approximationsalgorithmus A∗ für Π∗ mit worst case Güte 1 + δ. Der polynomielle Algorithmus A berechnet f (I) und ruft dann A∗ für f (I) auf. Dieser Aufruf von A∗ liefert eine Lösung L∗ mit einer durch 1 + δ beschränkten Güte. Dann wird die Lösung L := g(L∗ ) für Π berechnet, und die Güte von L ist beschränkt durch 1 + δ/ρ. Für untere Schranken folgt sofort, dass Π ∈ / APX impliziert, dass Π∗ 6∈ APX ist. Die bekannte polynomielle Reduktion von 3-SAT auf CLIQUE kann verallgemeinert werden, um für die zugehörigen Optimierungsprobleme eine APX-Reduktion mit ρ = 1 zu liefern. 83 Definition 10.1.9: Ein Optimierungsproblem Π∗ heißt APX–vollständig, falls Π∗ ∈ APX ist und sich jedes Problem Π ∈ APX auf Π∗ APX–reduzieren lässt. Das Optimierungsproblem Π∗ heißt APX–hart, wenn sich jedes Problem Π ∈ APX auf Π∗ APX–reduzieren lässt. Nun folgt auf die übliche Weise, dass PAS = APX ist, falls ein APX–vollständiges Problem in PAS enthalten ist. 10.2 Klassische Methoden zum Nachweis der Nichtapproximierbarkeit von Optimierungsproblemen Natürlich können wir die Nichtapproximierbarkeit von Optimierungsproblemen nur beweisen, wenn wir uns auf polynomielle Algorithmen beschränken und annehmen, dass NP 6= P ist. Zunächst betrachten wir Approximationen mit additivem Fehler. Das Beweisprinzip für die Nichtexistenz derartiger Algorithmen ist das folgende. Wir folgern aus der Existenz eines Approximationsalgorithmus mit additivem Fehler für ein gegebenes NP-hartes Suchproblem, dass das zugehörige Entscheidungsproblem in polynomieller Zeit lösbar und damit P = NP ist. Satz 10.2.1: s. Buch Satz 3.7.7. Der Trick dieses Beweises, bestimmte Daten mit k + 1 zu multiplizieren, um eine Approximationslösung mit Fehler kleiner als 1 und damit eine optimale Lösung zu berechnen, funktioniert für viele Probleme. Im folgenden Problem kommen keine Zahlen vor, die multipliziert werden können. Statt dessen werden Mengen multipliziert“, besser vielfach ” kopiert. Satz 10.2.2: Falls NP 6= P, gibt es keinen Approximationsalgorithmus mit additivem Fehler für das Problem, eine unabhängige Menge maximaler Größe zu berechnen. Beweis: Sei o.B.d.A. k ganzzahlig, sonst wird k durch dke ersetzt. Wir setzen die Existenz eines Approximationsalgorithmus A mit additivem Fehler k voraus. Sei G ein Graph. Dann sei Gk+1 der Graph, der aus k + 1 disjunkten Kopien von zu G isomorphen Graphen besteht. Unabhängige Mengen können in den einzelnen Kopien unabhängig von den anderen Kopien von G gesucht werden. Also ist OPT(Gk+1 ) = (k + 1)OPT(G). A liefert für Gk+1 eine unabhängige Menge M mit mindestens OPT(Gk+1 ) − k = (k + 1)OPT(G) − k = (k + 1)(OPT(G) − 1) + 1 Knoten. Also muss M auf mindestens einer der Kopien von G mindestens OPT(G) Knoten enthalten. Damit erhalten wir für diese Kopie von G eine unabhängige Menge mit OPT(G) Knoten. Der Algorithmus arbeitet in polynomieller Zeit. Also ist NP = P. Widerspruch zur Voraussetzung. 2 Wir zeigen nun, dass bestimmte Probleme, falls NP 6= P ist, nicht in FPAS oder sogar nicht in PAS liegen. 84 Wir haben bereits erwähnt, dass das Rucksackproblem in FPAS enthalten ist. Das voll polynomielle Approximationsschema wird (s. EFFIZIENTE ALGORITHMEN) aus einem pseudopolynomiellen Algorithmus abgeleitet. Diese Vorgehensweise ist nicht zufällig, wie der folgende Satz zeigt. Satz 10.2.3: s. Buch Satz 3.7.9. Korollar 10.2.4: s. Buch Korollar 3.7.10. In Kap. 5.3 finden wir Probleme, für die Korollar 10.2.4 impliziert, dass sie, falls NP 6= P ist, kein voll polynomielles Approximationsschema haben. Wir wollen nun sogar polynomielle Approximationsschemata ausschließen. Satz 10.2.5: Sei Π ein Minimierungsproblem, in dem der Wert aller Lösungen ganzzahlig ist. Für eine Konstante k sei bereits das Entscheidungsproblem, ob OPT(I) ≤ k ist, NPhart. Falls NP 6= P, gibt es für Π keinen polynomiellen Approximationsalgorithmus A mit RA < 1 + k1 . Insbesondere gibt es kein polynomielles Approximationsschema. Beweis: Die letzte Behauptung folgt aus der vorherigen, da ein polynomielles Approximationsschema für festes ε < k1 ein Approximationsalgorithmus A mit RA ≤ 1 + ε < 1 + k1 ist. Falls es einen polynomiellen Approximationsalgorithmus A für Π mit RA < 1 + k1 = k+1 k gibt, muss dieser Algorithmus für jede Eingabe I ∈ DΠ mit OPT(I) ≤ k eine Lösung A(I) berechnen, die optimal ist. Jede nicht optimale Lösung hat einen Wert von mindestens OPT(I) + 1. Die Güte einer solchen Lösung ist nicht kleiner als OPT(I) + 1 1 1 =1+ ≥1+ OPT(I) OPT(I) k im Widerspruch zu RA < 1 + k1 . 2 Satz 10.2.6: Für das Problem, einen Graphen mit der minimalen Zahl von Farben zu färben, gibt es, falls NP 6= P, keinen polynomiellen Approximationsalgorithmus A mit RA < 34 . Beweis: Nach Satz 5.2.3 ist GC-3 NP-vollständig. Der Wert aller Lösungen des Färbbarkeitsproblems ist ganzzahlig. Also folgt die Aussage direkt aus Satz 10.2.5. 2 Satz 10.2.7: Für das BIN PACKING Problem gibt es, falls NP 6= P, keinen polynomiellen Approximationsalgorithmus A mit RA < 32 . Beweis: BPP ist bereits dann NP-vollständig, wenn wir uns auf den Fall einschränken zu entscheiden, ob 2 Kisten ausreichen. Dies folgt, da PARTITION ein Spezialfall dieser BPP-Einschränkung ist. Der Wert aller Lösungen von BPP ist ganzzahlig. Also folgt die Aussage direkt aus Satz 10.2.5. 2 85 In Kap. 5.2 haben wir eine Komplexitätsanalyse des Färbbarkeitsproblems durchgeführt. Wir konnten alle Teilprobleme als in P oder als NP-vollständig klassifizieren. Dabei haben wir das Gefühl bekommen, dass wir die Komplexität des Färbbarkeitsproblems gut verstehen. Was wissen wir über die Existenz von Approximationsalgorithmen? Nach Satz 10.2.5 gibt es kein polynomielles Approximationsschema, falls NP 6= P. Also ist für das Färbbarkeitsproblem Π für RM IN (Π) noch jeder Wert in (1, ∞) oder ∞ möglich. Wir zeigen zunächst, dass (falls NP 6= P) RM IN (Π) ≥ 43 ist. Lange Zeit war 2 die beste bekannte untere Schranke für RM IN (Π), falls NP 6= P. Der sehr komplexe Beweis ist im Buch von Garey und Johnson nachzulesen. Wir werden sehen, dass es inzwischen viel bessere Ergebnisse gibt. Satz 10.2.8: Falls NP 6= P, gibt es für das Färbbarkeitsproblem, d.h. die Berechnung der ∞ chromatischen Zahl, keinen polynomiellen Approximationsalgorithmus A mit R A < 34 . Beweis: Wir nehmen an, dass es einen polynomiellen Approximationsalgorithmus A mit ∞ RA < 34 gibt. Wir zeigen, dass es dann für GC-3 im Widerspruch zu NP 6= P einen polynomiellen Algorithmus gibt. Wir arbeiten wieder mit der Methode, Graphen aufzublähen“. Für G1 = (V1 , E1 ) und ” G2 = (V2 , E2 ) soll der Graph G = G1 [G2 ] aus G1 entstehen, indem jeder Knoten durch eine Kopie von G2 ersetzt wird und jede Kante durch einen vollständigen bipartiten Graphen zwischen den beiden Kopien von G2 , die die Endpunkte der Kante repräsentieren, ersetzt wird. G1 G2 G 1 [ G 2] Formal: G = G1 [G2 ] = (V, E) mit V = V1 × V2 und E = { {(u1 , u2 ), (v1 , v2 )} | {u1 , v1 } ∈ E1 oder u1 = v1 und {u2 , v2 } ∈ E2 }. 86 Aus dem Knoten u1 wird {u1 } × V2 , auf diesem Teil existieren alle Kanten aus E2 , also der Graph G2 . Die Kante {u1 , v1 } wird durch alle Kanten {(u1 , u2 ), (v1 , v2 )} ersetzt. ∞ Da RA < 34 , ist A(G) < 43 OPT(G), falls OPT(G) ≥ k für eine geeignete Konstante k. Sei nun G ein beliebiger Graph, den wir auf Dreifärbbarkeit untersuchen wollen. Sei G0 ein vollständiger Graph auf k Knoten und G∗ := G0 [G]. Da jeder Knoten jeder Kopie von G mit allen Knoten aller anderen Kopien von G verbunden ist, müssen für die verschiedenen Kopien von G verschiedene Farben benutzt werden. Also ist OPT(G∗ ) = kOPT(G) ≥ k. Da k eine von G unabhängige Konstante ist, kann G∗ in polynomieller Zeit konstruiert werden. Wir wenden nun A auf G∗ an. Der Algorithmus liefert in polynomieller Zeit eine Lösung mit A(G∗ ) < 43 OPT(G∗ ) = 34 kOPT(G). Wenn eine Kopie von G mit höchstens drei Farben gefärbt ist, wissen wir, dass G dreifärbbar ist. Wenn alle Kopien von G mindestens vier Farben haben, ist A(G∗ ) ≥ 4k, also 4k < 34 kOPT(G) und OPT(G) > 3. G ist also nicht dreifärbbar. Wir haben GC-3 in polynomieller Zeit gelöst im Widerspruch zu NP 6= P. 2 Die von uns bisher behandelten Probleme hatten für konstantes k Subprobleme vom Typ Ist OPT(I) ≤ k ?“, die schwierig sind. Wir haben, unter der Annahme NP 6= P, ge” zeigt, dass die Existenz polynomieller Approximationsalgorithmen zum Widerspruch NP = P führt, da die beschriebenen Subprobleme in polynomieller Zeit lösbar sind. Für das Problem IP (INDEPENDENT SET) ist die Situation anders. Für konstantes k kann in polynomieller Zeit entschieden werden, ob es eine unabhängige Menge mit k Elementen gibt. Es müssen nämlich nur alle k-elementigen Mengen auf ihre Unabhängigkeit getestet werden. In dieser Situation können wir mit einer klassischen Methode nicht zeigen, dass RM IN (IP) = ∞ ist, falls NP 6= P ist, aber wir können zeigen, dass es für IP sehr gute Approximationsalgorithmen geben muss, wenn es überhaupt gute Approximationsalgorithmen gibt. Satz* 10.2.9: Falls RM IN (IP) < ∞ ist, gibt es, falls NP 6= P, ein polynomielles Approximationsschema für IP. Beweis: Sei angenommen, dass A ein polynomieller Approximationsalgorithmus für IP ∞ mit RA < ∞ ist. Der Algorithmus wird so verändert, dass er niemals die leere Menge ausgibt. Die leere Menge kann durch beliebige einelementige Mengen ersetzt werden, die stets unabhängig sind. Dann ist auch r := RA < ∞. Wir suchen für festes ε > 0 einen in n polynomiellen Algorithmus, der eine (1 + ε)optimale Lösung für IP berechnet. Der Algorithmus muss also für G eine unabhängige Menge mit mindestens OPT(G)/(1 + ε) Elementen berechnen. Wir wählen N = N (ε), so dass r 1/N < 1 + ε ist. Sei G1 := G und Gi := Gi−1 [G]. Da N nur von r und ε und nicht von G abhängt, kann GN in polynomieller Zeit berechnet werden. Wir wenden dann A auf GN an. Nach Voraussetzung über A gilt OPT(GN )/A(GN ) ≤ r < (1 + ε)N . 87 Wir zeigen, dass OPT(Gi ) = (OPT(G))i ist. Für i = 1 ist dies trivial. Sei die Behauptung für i − 1 bewiesen. Gi entsteht aus Gi−1 , indem die Knoten in Gi−1 durch Kopien von G ersetzt werden. Sei M eine größte unabhängige Menge in Gi−1 , dann enthält M nach Induktionsvoraussetzung genau (OPT(G))i−1 Elemente. Wir ersetzen nun jedes Element durch eine maximal unabhängige Menge in dem Graphen G, der in Gi dieses Element ersetzt. Wir erhalten eine unabhängige Menge mit (OPT(G))i Elementen. Andererseits muss jede unabhängige Menge für Gi auf jeder Kopie von G eine unabhängige Menge enthalten, dies sind höchstens OPT(G) Elemente pro Kopie von G. Da aber Kopien von G, aus denen wir Elemente für eine unabhängige Menge für Gi wählen, in Gi−1 nicht benachbart sein können, ist es nur möglich, aus maximal (OPT(G))i−1 Kopien von G Elemente für eine unabhängige Menge zu wählen. Daher können unabhängige Mengen nicht mehr als (OPT(G))i Elemente enthalten. Also ist OPT(GN ) = (OPT(G))N . Algorithmus A liefert auf GN eine Lösung MN mit A(GN ) Elementen. Wir betrachten nun die verschiedenen Kopien von G in GN . Auf jeder Kopie G∗ = (V ∗ , E ∗ ) von G ist MN ∩ V ∗ eine unabhängige Menge. Wir suchen die Kopie, die die größte unabhängige Menge M liefert. Des weiteren betrachten wir die aus GN geschrumpften Graphen GN −1 , . . . , G1 . In GN −1 können wir wieder die Kopien von G untersuchen. Die Knoten einer G-Kopie, die in GN eine G-Kopie repräsentieren, die mit MN einen nichtleeren Schnitt hat, bilden eine unabhängige Menge. Auch hier suchen wir die größte unabhängige Menge, usw. Insgesamt untersuchen wir in Gi genau |V |i−1 Kopien von G. Es sei M ∗ die größte gefundene unabhängige Menge. Aus ihr können wir mit dem Verfahren aus dem Beweis, dass OPT(Gi ) ≥ (OPT(G))i ist, eine unabhängige Menge in GN mit |M ∗ |N Elementen konstruieren. Wenn wir diese Menge mit der von A auf GN konstruierten Menge vergleichen, folgt aus der Konstruktion von M ∗ , dass A(GN ) ≤ |M ∗ |N ist. Unser polynomielles Approximationsschema liefert M ∗ als Lösung. Es gilt, wie bereits gezeigt OPT(GN ) . A(GN ) > (1 + ε)N Also ist 1 1 |M ∗ | ≥ A(GN )1/N > OPT(GN )1/N = OPT(G) 1+ε 1+ε und OPT(G) < 1 + ε. |M ∗ | Damit haben wir also tatsächlich ein polynomielles Approximationsschema entworfen. 2 Viele unserer bisherigen Resultate haben darauf hingewiesen, dass TSP ein besonders schwieriges Problem ist. Dies wird dadurch untermauert, dass sich RM IN (TSP) = ∞, falls NP 6= P, sehr einfach beweisen lässt. Satz 10.2.10: Falls NP 6= P, ist RM IN (TSP) = ∞. Beweis: s. Buch Theoretische Informatik, Satz 3.7.8. 88 2 10.3 Nichtapproximierbarkeit und das PCP-Theorem Wir suchen nach einer Brücke zwischen der Approximierbarkeit bzw. Nichtapproximierbarkeit von Optimierungsproblemen und dem PCP-Theorem. Auch hier erweist sich eine SAT-Variante als guter Startpunkt. Eine verallgemeinerte SAT-Variante erhält eine Zahl k als zusätzliche Eingabe, und es soll entschieden werden, ob es eine Belegung der Variablen gibt, die mindestens k der Klauseln erfüllt. Für k = n, der Anzahl der Klauseln, erhalten wir SAT als Spezialfall. Die Maximierungsvarianten SATmax und 3-SATmax beschreiben nun die Aufgabe, die Anzahl gleichzeitig erfüllbarer Klauseln zu maximieren. Satz 10.3.1: SATmax , 3-SATmax ∈ APX. Dabei lässt sich SATmax bis auf den Faktor 4/3 und 3-SATmax bis auf den Faktor 8/7 ≤ 1, 143 in polynomieller Zeit approximieren. Beweis: Für SATmax zeigen wir nur den Faktor 2. Dieser Faktor 2 folgt durch einen polynomiellen Algorithmus, der stets mindestens die Hälfte aller Klauseln erfüllt. Dabei werden die Variablen x1 , . . . , xn nacheinander behandelt. Für xi betrachte alle Klauseln, in denen xi oder x̄i vorkommt und die noch nicht durch die Belegung von x1 , . . . , xi−1 erfüllt worden sind. Wähle für xi den Wert ai , mit dem mindestens die Hälfte der betrachteten Klauseln erfüllt werden. Für Eingaben für 3-SATmax , bei denen jede Klausel genau drei verschiedene Literale enthält, erhalten wir auf diese Weise in polynomieller Zeit den Approximationsfaktor 4/3. Wenn eine Klausel für xi betrachtet, aber nicht erfüllt wird, setzen wir einen Verweis auf eine im gleichen Schritt erfüllte Klausel. Durch unsere Majoritätsentscheidung können wir dabei sicherstellen, dass jede erfüllte Klausel nur einen Verweis erhält. Ist eine Klausel am Ende nicht erfüllt, gehen von ihr drei Verweise aus. Also ist die Anzahl erfüllter Klauseln mindestens dreimal so groß wie die Anzahl nicht erfüllter Klauseln. Wir geben uns mit dem Beweis des Approximationsfaktors 4/3 zufrieden. 2 Im folgenden soll gezeigt werden, dass unter der Annahme NP 6= P das Problem 3-SATmax und damit auch SATmax für ein ε > 0 nicht in polynomieller Zeit (1 + ε)-approximierbar sind. Insbesondere sind diese Probleme nicht in PAS enthalten. Unsere Vorgehensweise ist folgende. Wir wollen eine beliebige Sprache L ∈ NP auf 3SATmax so reduzieren, dass folgendes für die zu x erzeugte Klauselmenge C(x) und eine Konstante ε > 0 gilt - x ∈ L ⇒ die Klauseln C(x) sind gemeinsam erfüllbar. - x ∈ / L ⇒ jede Belegung erfüllt höchstens einen Anteil von 1 − ε der Klauseln in C(x). Wenn nun 3-SATmax ∈ PAS ist, gibt es einen polynomiellen Approximationsalgorithmus für 3-SATmax , dessen worst case Güte kleiner als (1 − ε)−1 ist. Wir können dann L folgendermaßen entscheiden. Wir benutzen die angegebene Reduktion und wenden den Approximationsalgorithmus für 3-SATmax an. Falls der Anteil erfüllter Klauseln für die 89 berechnete Belegung größer als 1 − ε ist, ist x ∈ L. Ist der Anteil höchstens 1 − ε, können wir folgern, dass x ∈ / L ist. Für x ∈ L muss der Algorithmus, da die Klauseln in C(x) gemeinsam erfüllbar sind, einen Anteil von mehr als 1 − ε der Klauseln erfüllen, um seine worst case Güte einzuhalten. Wenn wir ein NP-vollständiges Problem L wählen, würde NP = P folgen. Also ist 3-SATmax , falls NP 6= P, nicht δ-approximierbar für δ < (1 − ε)−1 . Warum liefert der Beweis des Satzes von Cook nicht das Gewünschte? Indem wir den Übergang von einer Konfiguration zur nächsten fälschen“, können wir die Turingmaschi” ne dazu bringen, dass sie akzeptiert. In unserem Beweis können wir sogar alle Klauseln bis auf den Test, dass die letzte Konfiguration akzeptierend ist, stets erfüllen, indem wir die Rechnung der Turingmaschine einsetzen. Der Beweis des Satzes von Cook unterscheidet also nur zwischen alle Klauseln gemeinsam erfüllbar“ und nicht alle Klauseln gemein” ” sam erfüllbar“. Für den von Cook verfolgten Zweck war das ausreichend. Hier müssen wir eine viel schärfere Unterscheidung erzwingen. Wie soll das gehen? Na ja, es ist nun keine Überraschung mehr: Das PCP-Theorem lässt sich anwenden. Satz 10.3.2: Es gibt eine Konstante ε > 0, so dass es NP-hart ist, (1 + ε)-Approximationen für 3-SATmax zu berechnen. Beweis: Wir verfolgen die oben beschriebene Beweisstrategie und wählen eine beliebige NP-vollständige Sprache L, z.B. 3-SAT, aus. Nach dem PCP-Theorem ist L ∈ PCP(log n, 1). Es seien nun c und k Konstanten, so dass der Verifizierer höchstens cblog nc Zufallsbits benutzt und k Beweisbits erfragt. Es ist keine Einschränkung, wenn wir annehmen, dass stets die gleiche Anzahl von Zufallsbits und Beweisbits gelesen werden. Da es nur N := 2cblog nc ≤ nc verschiedene Zufallsfolgen gibt, werden für jede Eingabe der Länge n bezogen auf alle Zufallsfolgen nur höchstens kN verschiedene Beweispositionen betrachtet. Also können wir die nie benutzten Beweispositionen streichen und uns auf Beweise der Länge kN beschränken. Die möglichen Beweise werden durch die booleschen Variablen y1 , . . . , ykN beschrieben. Es sei nun fix für 0 ≤ i ≤ N − 1 und |x| = n die folgende boolesche Funktion auf den k Variablen yj(1) , . . . , yj(k) , wobei der Verifizierer bei Eingabe x, wenn der Zufallsvektor die Binärdarstellung von i ist, die Beweispositionen j(1), . . . , j(k) liest. Die Funktion fix nimmt den Wert 1 genau dann an, wenn der Verifizierer bei Eingabe x, Zufallsvektor i und Beweis y die Eingabe akzeptiert. In polynomieller Zeit können die Wertetabellen all dieser Funktionen berechnet werden. Welche Eigenschaften von den Funktionen können wir aus den Eigenschaften des Verifizierers ableiten? - x ∈ L ⇒ Es gibt einen Beweis, den der Verifizierer für jede Zufallsfolge akzeptiert. Dieser Beweis als y-Eingabe führt dazu, dass alle Funktionen fix , 0 ≤ i ≤ N − 1, den Wert 1 annehmen. - x∈ / L ⇒ Für alle Beweise, also y-Eingaben, führt höchstens die Hälfte der Zufallsfolgen zum Akzeptieren der Eingabe. Damit nehmen für jedes y nur höchstens die Hälfte der Funktionen fix , 0 ≤ i ≤ N − 1, den Wert 1 an. Die Funktionen fix hängen nur von k Variablen ab. Sie lassen sich als konjunktive Normalform und damit als Konjunktion von höchstens 2k Klauseln der Länge k darstellen. 90 Jede Klausel der Länge k lässt sich (siehe die Reduktion SAT ≤p 3-SAT) durch k − 2 Klauseln der Länge 3 ersetzen. Wir erhalten also in polynomieller Zeit für jede Eingabe x höchstens (k − 2)2k N Klauseln der Länge 3 mit folgenden Eigenschaften. - x ∈ L ⇒ alle Klauseln sind gemeinsam erfüllbar. - x ∈ / L ⇒ nur die Hälfte der Funktionen fix , 0 ≤ i ≤ N − 1, lässt sich gemeinsam erfüllen. Für die anderen Funktionen ist dann mindestens eine der (k − 2)2k zugehörigen Klauseln unerfüllt. Stets bleiben also mindestens 12 N der (k − 2)2k N 1 Klauseln unerfüllt, der Anteil erfüllter Klauseln ist durch 1 − (k−2)2 k+1 nach oben beschränkt. Ein polynomieller Approximationsalgorithmus für 3-SATmax mit einer worst case Güte von weniger als 1 1 =1+ 1 (k − 2)2k+1 − 1 1 − (k−2)2k+1 kann diese beiden Fälle unterscheiden. Also haben wir das gesteckte Ziel für ε< 1 , (k − 2)2k+1 − 1 z.B. ε = ((k − 2)2k+1 )−1 erreicht. 2 Für 3-SATmax konnte sogar bewiesen werden, dass für jedes ε > 0 aus der Existenz eines polynomiellen Approximationsalgorithmus mit einer Güte von 8/7 − ε folgt, dass P=NP ist. Andererseits kennt man für 3-SATmax polynomielle Approximationsalgorithmen mit einer Güte von 8/7. Also ist hier die Lücke zwischen unterer und oberer Schranke geschlossen. Im Beweis von Satz 10.3.2 haben wir implizit angenommen, dass k ≥ 3 ist. Wir können nun unser Wissen über Verifizierer, die nur 2 Beweisbits lesen dürfen, leicht erweitern. Die Beweismethode von Satz 10.3.2 liefert dann Klauseln der Länge 2, und es kann, da 2-SAT ∈ P, in polynomieller Zeit entschieden werden, ob alle Klauseln gemeinsam erfüllbar sind, d.h. ob x ∈ L ist. Verifizierer mit O(log n) Zufallsbits, die nur bis zu 2 Beweisbits lesen können, können also nur Probleme in P entscheiden. Das dritte Beweisbit ist, wie wir in Kap. 9 erwähnt haben, entscheidend. Korollar 10.3.3: PAS $ APX, falls NP 6= P. Beweis: Es ist 3-SATmax ∈ APX, und es ist 3-SATmax ∈ / PAS, falls NP 6= P. 2 Es folgt, dass alle APX-harten Probleme nicht in PAS enthalten sind, falls NP 6= P. Approximationsserhaltende Reduktionen führen zu konkreten Konstanten ε, so dass Probleme nicht (1 + ε)-approximierbar sind. Zu diesen Problemen zählen die Optimierungsvarianten von IP, VC, CLIQUE, MINIMUM COVER, MAX CUT, 3-DM und das TSP mit Dreiecksungleichung. Das Euklidische TSP stellt also einen einfacheren Spezialfall dar. 91 Wir wenden uns nun dem Cliquenproblem zu. Alle Ergebnisse lassen sich direkt auf IP übertragen. Der beste bekannte polynomielle Approximationsalgorithmus für CLIQUE hat eine Approximationsgüte von O(n/ log2 n). Ist das nicht beschämend schlecht? Eine Approximationsgüte n erhalten wir schon, wenn wir stets die Clique, die nur den Knoten 1 enthält, ausgeben. Die aus der Vorlesung GTI bekannte Reduktion 3-SAT≤p CLIQUE war approximationserhaltend für ρ = 1. Die größte Anzahl gemeinsam zu erfüllender Klauseln war gleich der Größe der größten Clique in dem in der Transformation berechneten Graphen. Wir erinnern uns. Es wurde bei m gegebenen Klauseln ein Graph auf 3m Knoten gebildet. Die drei Knoten, die eine Klausel repräsentierten, bildeten eine unabhängige Menge. Knoten in verschiedenen unabhängigen Mengen wurden durch eine Kante genau dann verbunden, wenn die durch sie repräsentierten Literale sich nicht widersprachen. Angesichts des oben genannten Algorithmus ist die Lücke zwischen der besten erreichten Approximationsgüte und dem eben beschriebenen Nichtapproximationsresultat gewaltig. Satz 10.3.4: Falls NP 6= P, gibt es für keine Konstante c einen polynomiellen Approximationsalgorithmus, der CLIQUE mit Approximationsgüte c löst. Beweis: Wir nutzen das PCP-Theorem für 3-SAT direkt aus. Zu jeder Eingabe x betrachten wir für jeden der N Zufallsvektoren r die 2k Belegungen der gelesenen Beweisbits. Für jede Belegung der Beweisbits, die den Verifizierer zum Akzeptieren bringt, erzeugen wir einen Knoten im Graphen. Wenn es zu r genau z(r) derartige Belegungen der gelesenen Beweisbits gibt, bilden die z(r) zugehörigen Knoten eine unabhängige Menge. Jeder Knoten repräsentiert eine Belegung von k der Beweisbits. Zwei Knoten in verschiedenen unabhängigen Mengen werden genau dann durch eine Kante verbunden, wenn es in den zugehörigen Teilbelegungen der Beweisbits keinen Widerspruch gibt. Wenn die gegebene 3-SAT-Formel erfüllbar ist, führt eine Belegung der Beweisbits für alle Zufallsfolgen zum Akzeptieren. Wir können also eine Clique bilden, die aus jeder unabhängigen Menge die zum Beweis gehörige Belegung auswählt. Wenn die gegebene 3-SAT-Formel nicht erfüllbar ist, führt jede Belegung der Beweisbits höchstens für die Hälfte der Zufallsfolgen zum Akzeptieren. Eine Clique enthält nur maximal einen Knoten jeder unabhängigen Menge. Durch jeden Knoten werden die Werte von k Beweisbits festgelegt. Die einzelnen Knoten einer Clique enthalten keine widersprüchlichen Beweisbitbelegungen. Die durch die Clique festgelegte teilweise Beweisbitbelegung kann zu einer vollständigen Belegung erweitert werden. Dieser vollständige Beweis wird aber nur bei der Hälfte der Zufallsfolgen akzeptiert. Also ist die Größe der Clique durch die Hälfte der Anzahl unabhängiger Mengen beschränkt. Aus diesem Beweis folgt, dass CLIQUE, falls NP 6= P, nicht mit einem Faktor c < 2 in polynomieller Zeit approximierbar ist. Wichtig ist, dass dieser Faktor von k, der Anzahl der gelesenen Beweisbits, unabhängig ist. Wir können nämlich im Beweis des PCP-Theorems die Fehlerwahrscheinlichkeit auf jede Konstante ε > 0 senken, indem wir konstant viele Verifizierer parallel arbeiten lassen. Dadurch erhöht sich natürlich die Anzahl gelesener Beweisbits, und der Trick nützt nichts, um bessere Nichtapproximierbarkeitsresultate für 3-SATmax zu erhalten. Hier führt unser obiger Beweis sofort zum Resultat, dass CLIQUE, falls NP 6= P, nicht in polynomieller Zeit mit einem Faktor c < ε−1 approximierbar ist. 2 92 Da wir PCP(log n, 1)-Verifizierer nur konstant oft parallel arbeiten lassen dürfen, stellt sich die Frage, wie wir noch bessere Ergebnisse erhalten können. Der Trick ist ökolo” gisch wertvoll“. Wir benutzen ein Recycling der Zufallsbits. Natürlich können wir nicht dieselben Zufallsbits mehrfach benutzen. Aus wenigen echten Zufallsbits erzeugen wir viel mehr Bits, die nur noch fast zufällig sind. Sie sind aber genügend zufällig, um die Irrtumswahrscheinlichkeit von Verifizierern zu senken. Diese Ideen umzusetzen, ist technisch sehr aufwendig. Die Beweise können in einer Stammvorlesung nicht vorgestellt werden. Die momentan besten Resultate lauten: - Falls NP 6= P, gibt es keinen polynomiellen Approximationsalgorithmus für CLIQUE mit Güte n1/4 . - Falls coRP 6= NP, gibt es für kein ε > 0 einen polynomiellen Approximationsalgorithmus für CLIQUE mit Güte n1−ε . Für IP gelten dieselben Resultate wie für CLIQUE. Für das Graphenfärbungsproblem gibt es etwas schlechtere Resultate. Die klassischen Ergebnisse aus Kap. 10.2 waren schon Ende der 70er Jahre bekannt. Nach einem längeren Stillstand hat erst das PCP-Theorem zu zahlreichen neuen Resultaten über die effiziente Approximierbarkeit und Nichtapproximierbarkeit von Optimierungsproblemen geführt. 93 11 11.1 Komplexitätsklassen für Speicherplatzbedarf Speicherplatzklassen und eine Charakterisierung kontextsensitiver Sprachen Buch Theoretische Informatik, Kap 5.4 bis einschließlich Korollar 5.4.6. 11.2 Der Satz von Savitch Wir vermuten, dass NP 6= P ist. Wir vermuten sogar, dass deterministische Turingmaschinen für bestimmte Probleme, eben NP-vollständige Probleme, exponentiell mehr Zeit benötigen als nichtdeterministische Turingmaschinen. Wie ist die Situation beim Platzbedarf? Platz brauchen wir trivialerweise nicht mehr als Zeit“, exakter: In t(n) Re” chenschritten werden höchstens t(n) + 1 Bandzellen besucht. Platz kann während einer Rechnung mehrfach benutzt werden. Wir haben bei deterministischen Turingmaschinen schon mehrfach den Trick benutzt, alle Folgen der Länge ` (z.B. alle Folgen von Übergangstripeln) auf Platz ` aufzuzählen. Daher sollte es nicht allzusehr überraschen, dass nichtdeterministische Turingmaschinen bereits mit etwas mehr“ Platz durch determini” stische Turingmaschinen simuliert werden können. Für unsere Simulation benötigen wir den technischen Begriff der Bandkonstruierbarkeit, um exotische“ Platzschranken s(n) auszuschließen. In den Übungen werden wir sehen, ” dass alle vernünftigen Platzschranken bandkonstruierbar sind. → heißt bandkonstruierbar, wenn es eine Definition 11.2.1: Eine Funktion s : O(s(n))-platzbeschränkte deterministische TM gibt, die bei Eingabe x die Binärdarstellung von s(|x|) berechnet. Satz 11.2.2: (Satz von Savitch) Sei s : → bandkonstruierbar und s(n) ≥ log n. Dann gilt NTAPE(s(n)) ⊆ DTAPE(s(n)2 ). Beweis: Es sei M eine c·s(n)-platzbeschränkte nichtdeterministische TM. Wir wollen M durch eine DTM M 0 simulieren. Wir wissen aus der Vorlesung GTI, dass k-Band Turingmaschinen mit Platzbedarf s(n) durch Turingmaschinen mit Platzbedarf s(n) simuliert werden können. Daher darf M 0 mehr als ein Band benutzen. Aus Kap. 11.1 wissen wir auch, dass für Eingaben der Länge n, die akzeptiert werden, die kürzesten akzeptierenden Rechenwege Länge 2O(s(n)) haben. Hier geht die Bedingung s(n) ≥ log n ein. Wir haben aber nicht genügend Platz, um derartige Rechenwege (Konfigurationenfolgen) aufzuschreiben. Daher wollen wir zwar alle Rechenwege ausprobieren, aber nicht in lexikographischer Reihenfolge. Der Trick ist uralt: Binäre Suche. Ausgehend von der Anfangskonfiguration probieren wir nicht alle Nachfolgekonfigurationen aus, sondern alle mittleren“ Konfigurationen, und ” testen nacheinander, ob wir von der Anfangskonfiguration zur mittleren Konfiguration 94 kommen können und ob wir von der mittleren Konfiguration zur akzeptierenden Konfiguration kommen können. Wir beschreiben die Simulation zunächst softwaremäßig“, also ohne auf die eingeschränk” te Arbeitsweise von Turingmaschinen Rücksicht zu nehmen. Entscheidend ist das Prädikat (K1 , K2 , t) für Konfigurationen K1 und K2 und t ∈ . Das Prädikat ist genau dann wahr, wenn es eine Berechnung von M gibt, mit der aus der Konfiguration K1 die Konfiguration K2 in höchstens t Rechenschritten auf durch c · s(n) beschränktem Platz erreicht werden kann. Für t = 1 ist das Prädikat genau dann wahr, wenn K1 = K2 ist oder K2 direkte Nachfolgekonfiguration von K1 ist. Dies ist leicht zu testen. Für t ≥ 2 gilt: (K1 , K2 , t) ist genau dann wahr, wenn es ein K3 gibt, so dass (K1 , K3 , bt/2c) und (K3 , K2 , dt/2e) wahr sind. Konfigurationen von M können auf Platz O(s(n)) beschrieben werden. Dabei kann nach Voraussetzung s(n) zuvor berechnet werden. Die Zeitschranke t(n) = 2O(s(n)) lässt sich ebenfalls auf Platz O(s(n)) durch ihre Binärdarstellung beschreiben. Wir können o.B.d.A. annehmen, d. h. M so modifizieren, dass M sich seine Platzschranke selbst berechnet und sich Bandmarken setzt. Wir definieren nur Konfigurationen als erreichbar, bei denen diese Marken nicht überschritten werden. Die Anfangskonfiguration K0 ist eindeutig. Ebenfalls durch Modifikation von M können wir erreichen, dass M nur akzeptiert, wenn zwischen den beiden Marken nur Leerzeichen stehen, der Kopf rechts neben der linken Marke steht und ein eindeutiger Zustand q ∗ erreicht wurde. Also ist auch die akzeptierende Konfiguration K ∗ eindeutig. M 0 berechnet zunächst die Platzschranke s∗ (n), die Zeitschranke t∗ (n), die Anfangskonfiguration K0 und die akzeptierende Konfiguration K ∗ , o.B.d.A. ist t∗ (n) eine Zweierpotenz. Die Zeitschranke kann einfach durch die nächstgrößere Zweierpotenz ersetzt werden. Schließlich wird M so modifiziert, dass K ∗ die einzige direkte Nachfolgekonfiguration von K ∗ ist. Die deterministische Turingmaschine M 0 schreibt nun für x das Prädikat (K0 (x), K ∗ , t∗ (|x|)) auf ihr erstes Band. Dieses Prädikat soll getestet werden. Dies geschieht, indem für die Konfigurationen K 0 in lexikographischer Reihenfolge (K0 (x), K 0 , t∗ (|x|)/2) und (K 0 , K ∗ , t∗ (|x|)/2) getestet werden. Bei der Zeitschranke speichern wir ab, welches Zeitintervall [0, t∗ (|x|)/2] bzw. [t∗ (|x|)/2, t∗ (|x|)] simuliert wird. Zunächst wird (K 0 , K ∗ , t∗ (|x|)/2) getestet. Falls der Test negativ ausgeht, wird der Test abgebrochen, in beiden Problemen wird K 0 durch den lexikographischen Nachfolger ersetzt. Wenn es den nicht mehr gibt, ist das zugehörige Prädikat nicht erfüllbar. Falls der Test positiv ausgeht, gehen wir zum ersten Problem über. Geht der Test auch positiv aus, ist der gesamte Test positiv. Ist der Test negativ, wird K 0 durch den direkten lexikographischen Nachfolger K 00 ersetzt. Der Gesamttest ist dann negativ, wenn K 00 nicht existiert. Offensichtlich wird x durch diesen Algorithmus genau dann akzeptiert, wenn x durch M akzeptiert wird. Eine rein rekursive Beschreibung des Algorithmus wäre wesentlich einfacher. Wir haben die halb iterative“ Version benutzt, um zu verdeutlichen, dass M 0 ” mit der Verwaltung des Algorithmus kein Problem hat. Wieviel Platz braucht M 0 ? Wir sehen, dass maximal zwei Prädikate (·, ·, t∗ (|x|)/2) auf dem Band stehen. Nur an einem dieser Probleme wird gearbeitet. Induktiv folgt dann, 95 dass stets nur höchstens zwei Prädikate (·, ·, t∗ (|x|)/2` ) auf dem Band stehen, 1 ≤ ` ≤ log (t∗ (|x|)). Die Gesamtzahl der Prädikate auf dem Band ist also durch 2 log (t∗ (|x|)) = O(s(|x|)) beschränkt. Da die Länge jedes Prädikats durch O(s(|x|)) beschränkt ist, ist M O(s(|x|)2 ) platzbeschränkt. 2 Wir wollen an den Beweis noch ein veranschaulichendes Beispiel anschließen. M 0 möge für das 21. Zeitintervall der Länge t∗ /32 testen, ob aus K20 die Konfiguration K21 erreichbar ist. Wie sieht dann die Bandinschrift aus? (K0 , K16 , t∗ /2) : noch nicht getestet. (K16 , K20 , t∗ /8) : noch nicht getestet. (K20 , K21 , t∗ /32) : im Test. (K21 , K22 , t∗ /32) : positiv getestet. (K22 , K24 , t∗ /16) : positiv getestet. (K24 , K32 , t∗ /4) : positiv getestet. Wenn der Test positiv ausgeht, können wir zusammenfassen, dass (K20 , K24 , t∗ /8) positiv getestet ist. Es wird (K16 , K20 , t∗ /8) getestet. Wenn der Test von (K20 , K21 , t∗ /32) jedoch 0 negativ ausgeht, wird K21 durch ihren lexikographischen Nachfolger K21 ersetzt. 0 (K20 , K21 , t∗ /32) : noch nicht getestet. 0 (K21 , K22 , t∗ /32) : im Test. Wenn K21 keinen lexikographischen Nachfolger hat, ist auch (K20 , K22 , t∗ /16) negativ 0 getestet. Es muss der lexikographische Nachfolger K22 von K22 getestet werden. 0 (K20 , K22 , t∗ /16) : noch nicht getestet. 0 (K22 , K24 , t∗ /16) : im Test. Die Gedanken werden analog weiter geführt, wenn auch K22 keinen lexikographischen Nachfolger hat. Korollar 11.2.3: P SP ACE = N P SP ACE. Korollar 11.2.4: Es gilt Σk , Πk , ∆k ⊆ P SP ACE. Beweis: Induktion über k. Für k = 0 ist Σ0 = Π0 = ∆0 = P ⊆ PSPACE. Sei Σk ⊆ PSPACE. Dann gilt Σk+1 = NP(Σk ) ⊆ NP(PSPACE) = PSPACE. Die letzte Gleichung benutzt zunächst die Aussage, dass PSPACE-Orakel durch eine DTM mit polynomiellem Platzbedarf ersetzt werden können, also ist NP(PSPACE) = NPSPACE. Aus Korollar 11.2.3 folgt NPSPACE = PSPACE. Es ist ∆k+1 ⊆ Σk+1 ⊆ PSPACE und Πk+1 ⊆ Σk+2 ⊆ PSPACE. 2 Viel schwächer als die Vermutung NP 6= P ist die Vermutung PSPACE 6= P. Selbst diese Vermutung ist noch unbewiesen. Aus der strukturellen Komplexitätstheorie ist bekannt, dass für bandkonstruierbare Funktionen s gilt: DTIME(s(n)) ( DTAPE(s(n)), mit einem Band der Länge O(s(n)) können also mehr Probleme gelöst werden als in Zeit O(s(n)). 96 11.3 PSPACE-vollständige Probleme Probleme außerhalb von PSPACE müssen als äußerst komplex gelten. Von den Problemen in PSPACE können wir wieder einige Probleme als schwerste Probleme auszeichnen. Definition 11.3.1: L heißt PSPACE-vollständig, wenn L ∈ PSPACE ist und für alle L0 ∈ PSPACE gilt L0 ≤p L. Nachdem wir in Kap. 7.3 die Σk -vollständigen Sprachen Bk kennengelernt haben, liegt es nahe zu vermuten, dass die Vereinigung aller Bk PSPACE-vollständig ist. Definition 11.3.2: QUANTIFIED BOOLEAN FORMULAS (QBF) Boolesche Formeln F bestehen aus einem booleschen Ausdruck E über einer Variablenmenge V = {x1 , . . . , xn } und Quantoren Qi und haben die Form F = (Q1 x1 ) . . . (Qn xn )E. Das Problem QBF besteht darin zu entscheiden, ob F wahr ist. Es soll noch einmal ausdrücklich darauf hingewiesen werden, dass n variabel ist. Es zeigt sich wiederum, dass boolesche Probleme“ gute Kandidaten für erste vollständige Proble” me sind. Satz 11.3.3: QBF ist PSPACE-vollständig. Beweis: QBF ∈ PSPACE. Sei (Q1 x1 ) . . . (Qn xn )E die Eingabe. Für n = 0 muss der Ausdruck E, der nur Konstanten enthält, darauf überprüft werden, ob er gleich 1 (wahr) ist. Dies ist sogar auf linearem Platz möglich. Sei ein platzeffizienter Algorithmus An−1 für n − 1 Quantoren bekannt. Wir ersetzen in einer Kopie von E die Variable x1 zunächst durch 0 und nennen den neuen Ausdruck E0 . Wir wenden An−1 auf (Q2 x2 ) . . . (Qn xn )E0 an und notieren das Resultat res0 . Dann wenden wir An−1 auf (Q2 x2 ) . . . (Qn xn )E1 an, wobei E1 aus E entsteht, indem x1 auf 1 gesetzt wird, aus res0 und res1 kann das Ergebnis res für (Q1 x1 ) . . . (Qn xn )E direkt berechnet werden. Der Algorithmus An benötigt gegenüber An−1 nur O(1) Extraplatz. Also braucht An nur O(n) Extraplatz gegenüber der Eingabe. Also ist QBF ∈ DTAPE(N ), wobei N die Länge der Eingabe ist. Sei nun L ∈ PSPACE. Dann gibt es eine deterministische Turingmaschine M mit einem Band, die L mit polynomiell beschränktem Band akzeptiert. Nach den Ergebnissen aus Kap. 11.1 ist die Turingmaschine für ein Polynom p sowohl 2p(n) -zeitbeschränkt als auch p(n)-platzbeschränkt. Wir wollen L ≤p QBF zeigen. Aus dem Beweis, dass SAT NP-vollständig ist, wissen wir bereits, wie sich Turingmaschinenberechnungen in boolesche Ausdrücke umformulieren lassen. Wir beschreiben Konfigurationen auf analoge Weise durch boolesche Variablen. Für jede Eingabe x, für die M testet, ob x ∈ L ist, soll eine boolesche Formel Qx in polynomieller Zeit derart konstruiert werden, dass x ∈ L genau dann ist, wenn Qx wahr ist. Für Variablenmengen I1 und I2 , die Konfigurationen von M beschreiben, soll Fj (I1 , I2 ) genau dann wahr sein, wenn M aus der zu I1 gehörenden Konfiguration in höchstens 2j 97 Schritten in die Konfiguration I2 gelangen kann. Dann kann Qx folgendermaßen gewählt werden: Qx = ∃I0 ∃If [Fp(n) (I0 , If ) ∧ INITIAL(I0 ) ∧ ACC(If )]. Dabei testet INITIAL(I0 ), ob I0 Anfangskonfiguration für die Eingabe x ist, und ACC(If ), ob If akzeptierend ist. Diese Tests können wir wie im NP-Vollständigkeitsbeweis für SAT codieren. Es genügt also anzugeben, wie wir Fj definieren. Es liegt nahe, wie im Beweis des Satzes von Savitch folgende Formel zu verwenden. Fj (I1 , I2 ) = ∃I(Fj−1 (I1 , I) ∧ Fj−1 (I, I2 )). Die Formel beschreibt zwar den richtigen Sachverhalt, die Länge von Fp(n) wäre aber 2p(n) . Exponentiell lange Formeln lassen sich aber offensichtlich nicht in polynomieller Zeit erzeugen. Mit einem einfachen Trick können wir ein Vorkommen von Fj−1 einsparen. Fj (I1 , I2 ) = ∃I∀J∀K[(¬(J = I1 ∧ K = I) ∧ ¬(J = I ∧ K = I2 )) ∨ Fj−1 (J, K)]. Wir lesen die Formel. Wir können die innere Formel nach der de Morgan-Regel umformen zu (¬[(J, K) = (I1 , I) ∨ (J, K) = (I, I2 )]) ∨ Fj−1 (J, K). Falls die erste Klammer nicht erfüllt ist, gilt (J, K) = (I1 , I) oder (J, K) = (I, I2 ). In diesen beiden Fällen muss Fj−1 (J, K) erfüllt sein, d. h. Fj−1 (I1 , I) und Fj−1 (I, I2 ) müssen erfüllt sein für eine Konfiguration I. Die Schreibweise ∃I oder ∀J ist natürlich schlampig. Wir dürfen nur über Variablen und nicht über Konfigurationen quantifizieren. Dies bereitet uns aber kein Problem. Wir quantifizieren über die entsprechenden Variablen und fügen, wie im Beweis der NP-Vollständigkeit von SAT, die Bedingungen, dass die Variablen Konfigurationen beschreiben, hinzu. Die Formel Fj enthält außer Fj−1 nur O(p(n)) Variablen und boolesche Ausdrücke der Länge O(p(n)). Also hat Fj Länge O(jp(n)). Da die Turingmaschine 2p(n) -zeitbeschränkt ist, ist Qx eine boolesche Formel der Länge O(p(n)2 ), die genau dann wahr ist, wenn die Turingmaschine x akzeptiert. Es ist offensichtlich, dass Qx in polynomieller Zeit erzeugt werden kann. 2 Wir stellen zunächst ohne Beweis weitere PSPACE-vollständige Probleme vor. Brettspiele für zwei Personen sind im Allgemeinen endliche Spiele. Beim Schach sichert die Regel Remis, wenn dreimal die gleiche Stellung auf dem Brett erreicht wird“, dass jedes Spiel ” endet. Daraus folgt, dass es in jeder Spielsituation nur drei Möglichkeiten gibt: Spieler I hat eine Gewinnstrategie. Spieler II hat eine Gewinnstrategie. Beide Spieler haben Remisstrategien. Die erste Situation lässt sich, wenn Spieler I am Zug ist und noch k Züge möglich sind (o.B.d.A. wird bei Spielende ohne Figurenbewegung weitergespielt“), folgendermaßen ” beschreiben. ∃ ein Zug für mich ∀ Züge des Gegners ∃∀ . . . Qk : Ich habe gewonnen. 98 Spiele sind also spezielle Eingaben für QBF, also sind Spiele in PSPACE enthalten. Diese Aussage mutet unsinnig an, da Spiele eine feste (Brett-) Größe haben. Wir müssen also annehmen, dass wir die Spiele auf natürliche Weise auf beliebig große Bretter verallgemeinern können. Dies ist einfach für Dame und Go, aber schwierig für Schach. Die Spiele sind so allgemein, dass sich Klauseln durch Spielstellungen codieren lassen. Es konnte also gezeigt werden, dass die verallgemeinerten Spiele Dame und Go, PSPACE-vollständig sind. Dies erklärt, warum diese Spiele auch bei häufigem Spielen nicht langweilig werden (müssen). Wir definieren noch die verallgemeinerte Version von HEX. Definition 11.3.4: GENERALIZED HEX Für einen ungerichteten Graphen G = (V, E) mit Quelle q ∈ V und Senke s ∈ V wählen die Spieler abwechselnd Knoten aus V − {q, s}. Spieler I gewinnt, wenn es auf V1 ∪ {q, s} für die von ihm gewählte Knotenmenge V1 einen Weg zwischen q und s gibt. Es ist zu entscheiden, ob Spieler I für G eine Gewinnstrategie hat. Satz 11.3.5: GENERALIZED HEX ist PSPACE-vollständig. Das tatsächliche Spiel HEX ist ein Spiel fester Größe. Die Löcher im Brett entsprechen den Knoten im Graphen. Benachbarte Löcher werden im Graphen durch eine Kante verbunden. Für Spiele war klar, wie sie sich als boolesche Formeln polynomieller Länge schreiben lassen. Außerdem muss“ die Zahl der Quantorenwechsel bei wachsender Brettgröße mit” wachsen. Dadurch war die Verbindung zu PSPACE-vollständigen Problemen gegeben. Für PSPACE-vollständige Probleme aus dem Bereich FORMALE SPRACHEN und AUTOMATENTHEORIE ist die Verbindung nicht so offensichtlich. Definition 11.3.6: REGULAR EXPRESSION NON-UNIVERSALITY Für reguläre Ausdrücke über einem endlichen Alphabet Σ soll entschieden werden, ob sie L 6= Σ∗ darstellen. Satz 11.3.7: REGULAR EXPRESSION NON-UNIVERSALITY ist PSPACE-vollständig. Definition 11.3.8: CONTEXT SENSITIVE LANGUAGES (CSL) Für Eingaben x#w, wobei x die Codierung einer kontextsensitiven Grammatik Gx und w ∈ Σ∗ ist, soll entschieden werden, ob w zu der durch Gx beschriebenen Sprache gehört. Satz 11.3.9: CSL ist PSPACE-vollständig. Beweis: Wir haben in Kap. 11.1 gezeigt, dass CSL ∈ NTAPE(n) ist. Somit ist CSL ∈ NPSPACE = PSPACE. Sei nun L ∈ PSPACE. Wir zeigen L ≤p CSL. Es sei M eine DTM, die L auf polynomiell beschränktem Band erkennt, und p das zugehörige Polynom. Sei L0 = {y$p(|y|) | y ∈ L}. Mit dieser so genannten Padding-Technik wird y künstlich verlängert. Da L auf durch p 99 beschränktem Band erkannt werden kann, kann L0 auf linearem Band erkannt werden. Damit ist L0 kontextsensitiv. Die zugehörige kontextsensitive Grammatik hat konstante Länge und kann (siehe Buch, Beweis Satz 5.4.5) effizient berechnet werden, ihre Codierung sei G(L). Für eine Eingabe y, die auf Zugehörigkeit zu L getestet werden soll, wird nun in polynomieller Zeit der String G(L)#y$p(|y|) erzeugt. Dieser String gehört genau dann zu CSL, wenn y ∈ L ist. 2 Wir haben viele NP-vollständige Probleme kennengelernt, die nichtdeterministisch in linearer Zeit gelöst werden konnten. Hier haben wir ein PSPACE-vollständiges Problem, das nichtdeterministisch auf linearem Band erkannt werden kann. Das Problem QBF kann sogar deterministisch auf linearem Band erkannt werden. NP-vollständig heißt nicht schwierig in NP“, sondern: Falls ein NP-vollständiges Problem in P ist, sind alle NP” Probleme in P. Ebenso sind PSPACE-vollständige Probleme nicht schwierig in PSPACE, sie können durchaus speicherplatzeffizient gelöst werden. Erweist sich jedoch ein PSPACEvollständiges Problem L als zu Σn gehörig, dann gilt für alle L0 ∈ PSPACE, dass L0 ≤p L ist. Es ist also PSPACE ⊆ P(Σn ) = ∆n+1 und mit Korollar 11.2.4 sogar PSPACE = ∆n+1 , d. h. die polynomielle Hierarchie bricht zusammen. Falls L ∈ Σ0 = P, wäre also PSPACE = ∆1 = P. Für PSPACE-vollständige Probleme ist es also besonders unwahrscheinlich, dass sie polynomielle Algorithmen haben. 11.4 Das LBA-Problem und der Satz von Immerman/Szelepcsényi Gibt es über PSPACE eine Hierarchie analog zur polynomiellen (Zeit-) Hierarchie? Die Antwort ist leicht: Nein. Die Begründung ist, dass bereits PSPACE = NPSPACE ist (Korollar 11.2.3). Wenn wir uns aber genauer auf eine Platzschranke festlegen, wird die Situation wieder spannend. Nach dem Satz von Savitch wissen wir nur, dass NTAPE(s(n)) ⊆ DTAPE(s(n)2 ) ist. Insbesondere das LBA-Problem (LBA = linear bounded automaton) ist ein seit den 60er Jahren im Mittelpunkt des Interesses stehendes, ungelöstes Problem. Es ist die Frage, ob NTAPE(n) = DTAPE(n) ist. Äquivalent ist die Frage, ob das Wortproblem (ist x ∈ L?) für kontextsensitive Sprachen von linear bandbeschränkten deterministischen Turingmaschinen gelöst werden kann. Es ist also denkbar, dass es eine Hierarchie von Klassen Σk TAPE(s(n)), Πk TAPE(s(n)), ∆k TAPE(s(n)) gibt. Besser gesagt: Es war denkbar. Im Jahr 1987 wurde nämlich folgender Satz von Immerman und Szelepcsényi bewiesen. Satz 11.4.1: Für bandkonstruierbare Funktionen s : NTAPE(s(n)) = co-NTAPE(s(n)). Beweis: Buch Theoretische Informatik, Satz 5.4.9. 100 → mit s(n) ≥ log n gilt 12 Vollständige Probleme in P, NTAPE(log n) und #P 12.1 Log-SPACE-Reduktionen Wir haben für viele Probleme gezeigt, dass sie NP-vollständig oder gar PSPACE-vollständig sind. Sinn dieser Aussagen ist die Implikation, dass diese Probleme (sehr wahrscheinlich) nicht effizient lösbar sind. Dabei war es nicht ausgeschlossen, dass diese Probleme nichtdeterministisch sehr schnell oder auf linearem Platz gelöst werden können. Gleichzeitig sind die NP-vollständigen Probleme Kandidaten für den Nachweis, dass NP 6= P ist. Wir wollen nun Komplexitätsklassen innerhalb von P untersuchen. Vollständige Probleme werden dann ebenfalls in P sein. Analog zu den Vorbetrachtungen darf nicht erwartet werden, dass diese Probleme schwer in P“ sind, also nur mit großem polynomiellen Aufwand ” lösbar sind. Sie sind Kandidaten, um P von anderen Komplexitätsklassen zu trennen. Innerhalb von P wird der Reduktionsbegriff ≤p“ sinnlos, da L ≤p L0 für alle L, L0 ∈ ” P , L0 6= ∅, L0 6= Σ∗ gilt. Wir brauchen also einen neuen Reduktionsbegriff. Außerdem wollen wir Turingmaschinen mit geringerem Platzbedarf als n betrachten. Dies würde aber bedeuten, dass die Turingmaschine nicht die gesamte Eingabe lesen kann und auch keine Ausgabe der Länge n berechnen kann. Der Ausweg besteht darin, für das Lesen und Schreiben besondere Bänder vorzusehen. Wir betrachten also Turingmaschinen mit drei Bändern: - Ein Read-Only-Band, auf dem die Eingabe zwischen zwei Marken steht. Auf dieses Band darf nichts geschrieben werden, und die Marken dürfen nicht überschritten werden. - Ein Write-Only-Band, auf dem zu Beginn nichts steht, der Kopf dieses Bandes darf nicht nach links gehen. Die Inschrift dieses Bandes ist am Ende der Rechnung die Ausgabe. - ein normales Arbeitsband. Der Platzbedarf der Turingmaschine ist das Maximum von 1 und der Zahl der auf dem Arbeitsband besuchten Zellen. Satz 12.1.1: DTAPE(log n) ⊆ NTAPE(log n) und DTAPE(log n) ⊆ P . Beweis: Die erste Inklusion gilt trivialerweise. Für die zweite Inklusion genügt es wieder, die Zahl möglicher Konfigurationen einer c log n platzbeschränkten deterministischen Turingmaschine zu zählen. Die Inschrift des Eingabebandes ist für jede Rechnung konstant. Nur die Kopfposition variiert. Es gibt n + 2 mögliche Kopfpositionen auf dem Eingabeband und höchstens c log n Kopfpositionen auf dem Arbeitsband. Hinzu kommen |Γ|c log n 101 verschiedene Inschriften des Arbeitsbandes und |Q| Zustände. Die Zahl der Konfigurationen lässt sich also abschätzen durch |Q|(n + 2) c log n |Γ|c log n = c|Q|(n + 2)(log n)nc log |Γ| und damit durch ein Polynom in n. Wir können wieder die Schranke vorab berechnen und Rechnungen, die diese Zeitschranke überschreiten, abbrechen. Die Turingmaschine ist dann in eine Endlosschleife geraten. 2 Definition 12.1.2: L1 heißt log-SPACE reduzierbar auf L2 , Notation L1 ≤log L2 , wenn es eine Abbildung f : Σ∗1 → Σ∗2 gibt, die von einer log n-platzbeschränkten deterministischen Turingmaschine berechnet werden kann, so dass gilt: ∀x ∈ Σ∗1 : (x ∈ L1 ⇐⇒ f (x) ∈ L2 ). Definition 12.1.3: Für eine Sprachklasse C (z.B. P oder NTAPE(log n)) heißt L ∈ C log-SPACE-vollständig für C, falls L0 ≤log L für alle L0 ∈ C gilt. Die Aussagen des folgenden Satzes zeigen, dass die neuen Begriffe die von Reduktionen zu erwartenden Eigenschaften haben. Satz 12.1.4: a) L1 ≤log L2 , L2 ≤log L3 ⇒ L1 ≤log L3 . b) L1 ≤log L2 , L2 ∈ DTAPE(log n) ⇒ L1 ∈ DTAPE(log n). c) Es sei L log-SPACE-vollständig für C ⊇ DTAPE(log n), dann gilt L ∈ DTAPE(log n) genau dann, wenn DTAPE(log n) = C ist. Beweis: Übungsaufgabe. 2 Wir wissen nun, dass DTAPE(log n) ⊆ P ⊆ NP ⊆ PSPACE ist. Die strukturelle Komplexitätstheorie hat nachgewiesen, dass DTAPE(log n) 6= PSPACE ist. Eine der obigen Inklusionen muss also echt sein. Wir wissen aber nicht welche. Wir glauben sogar, dass alle drei Inklusionen echt sind. 12.2 Ein P-vollständiges Problem Um den Umgang mit log-SPACE-Reduktionen einzuüben und um einen Kandidaten kennenzulernen, der P und DTAPE(log n) trennen könnte, stellen wir ein Problem vor, das log-SPACE-vollständig für P ist. Definition 12.2.1: EMPTINESS OF CONTEXT FREE LANGUAGES (ECFL) Für kontextfreie Grammatiken soll entschieden werden, ob die zugehörige Sprache leer ist. Satz 12.2.2: ECFL ist log-SPACE-vollständig für P. Beweis: In der Vorlesung GTI wird gezeigt, dass ECFL ∈ P ist. Sei nun L ∈ P . Wir werden eine O(log n)-platzbeschränkte deterministische Turingmaschine entwerfen, die zu x eine kontextfreie Grammatik Gx derart erzeugt, dass die zu 102 Gx gehörige Sprache genau dann leer ist, wenn x ∈ L ist. Da co-P = P ist, gehen wir von einer polynomiell zeitbeschränkten deterministischen Turingmaschine M für L̄ aus. Ihre Rechenzeit sei durch das Polynom p beschränkt. Wir konstruieren die Grammatik Gx so, dass sie keine Terminals enthält. Damit ist höchstens das leere Wort ε ableitbar. Eine Ableitung von ε soll einer akzeptierenden Berechnung von M für x entsprechen. Das wiederum bedeutet, da M die Sprache L̄ erkennt, x 6∈ L. Die Menge der Variablen (Nichtterminalbuchstaben) von Gx sieht folgendermaßen aus. Sie enthält neben dem Startsymbol S Variablen (X, i, t) für 0 ≤ i ≤ p(n)+1 und 0 ≤ t ≤ p(n). X kann jeder Buchstabe des Bandalphabets von M sein oder jedes Paar [q, Y ] aus einem Zustand von M und einem Buchstaben des Bandalphabets oder #. Das Sonderzeichen # soll für die Turingmaschine andeuten, dass wir uns am Anfang oder Ende der Bandinschrift befinden. Offensichtlich soll i die Position auf dem Band kennzeichnen und t den Zeitpunkt der Simulation. Die Menge der Produktionen (Ableitungsregeln) besteht aus vier Gruppen. 1.) S → ([qf , Y ], i, t) für alle i, t, Y und alle akzeptierenden Zustände qf . Es wird also eine denkbare Endkonfiguration geraten. 2.) Es seien X, Y, Z Symbole, also # oder Bandbuchstaben oder Paare [q, U ] aus Zustand und Bandbuchstabe. Ein derartiges Paar soll andeuten, dass der Kopf auf diese Position schaut. Wenn X, Y, Z die Situation an den Positionen i − 1, i, i + 1 zum Zeitpunkt t − 1 beschreibt, ist bei einer deterministischen Turingmaschine nur ein Symbol an Position i zum Zeitpunkt t möglich. Für dieses Symbol W = f (X, Y, Z) sind die Ableitungen (W, i, t) → (X, i − 1, t − 1)(Y, i, t − 1)(Z, i + 1, t − 1) zulässig für 1 ≤ i ≤ p(n) und 1 ≤ t ≤ p(n). Dabei werden Tripel (·, i, ·) mit i < 0 oder i > p(n) weggelassen. 3.) (#, i, 0) → ε ist zulässig für i = 0 und i > n, ebenso (B, i, 0) → ε für das Leerzeichen B, i = 0 und i > n. 4.) (xi , i, 0) → ε ist zulässig für i ∈ {2, . . . , n} und den i-ten Buchstaben xi der Eingabe x, und ([q0 , x1 ], 1, 0) → ε ist zulässig. Da auf logarithmischem Platz bis p(n) gezählt werden kann, lässt sich Gx von einer deterministischen Turingmaschine auf logarithmischem Arbeitsband erzeugen. ∗ Es bleibt zu zeigen, dass S → ε“ und M akzeptiert x“ äquivalent sind. ” ” Falls M die Eingabe x akzeptiert, kann diese erfolgreiche Rechnung rückwärts geraten werden. Die Gruppe 2 der Regeln erzwingt zwar, dass Informationen über eine Bandzelle und einen Zeitpunkt mehr als einmal notiert werden. Dies führt aber zu keinen Problemen, da am Ende alle Beschreibungen der Anfangskonfiguration durch ε ersetzt werden. Wenn andererseits S nach ε abgeleitet werden kann, beginnt die Ableitung mit einer Regel aus Gruppe 1. Danach werden, bis Variablen für den Zeitpunkt 0 erreicht werden, nur Regeln der Gruppe 2 angewendet. Für jede Situation können hierbei alle denkbaren 103 ∗ Vorgängersituationen erzeugt werden. Da aber schließlich in der Ableitung S → ε nach den Regeln aus Gruppe 3 und 4 das leere Wort ε abgeleitet wird, muss in jedem Fall die Anfangskonfiguration erreicht werden. Dies ist aber nur möglich, wenn die Rechnung von M den gleichen Weg rückwärts zurücklegt und dabei x akzeptiert wird. 2 Damit haben wir nachgewiesen, dass ECFL nur in dem unwahrscheinlichen Fall, dass DTAPE(log n) = P ist, deterministisch auf logarithmischem Platz entschieden werden kann. 12.3 Ein NTAPE(log n)-vollständiges Problem Folgendes Problem wird DTAPE(log n) und NTAPE(log n) trennen, wenn die beiden Klassen verschieden sind. Definition 12.3.1: GRAPH REACHABILITY PROBLEM (GRP) Für einen gerichteten Graphen G = (V, E) soll entschieden werden, ob es einen gerichteten Pfad vom Knoten 1 zum Knoten n = |V | gibt. Satz 12.3.2: GRP ist log-SPACE-vollständig für NTAPE(log n). Beweis: GRP ∈ NTAPE(log n), da wir den gerichteten Pfad raten können. Auf dem Band muss nur jeweils der letzte Knoten des Pfades vermerkt sein. Dann wird in der Eingabe zufällig ein möglicher Nachfolger dieses Knotens ausgewählt. Sei nun L ∈ NTAPE(log n). Wir wollen L ≤log GRP beweisen. Sei M eine nichtdeterministische Turingmaschine, die L auf Platz O(log n) erkennt. Nach dem Beweis von Satz 12.1.1 können Konfigurationen von M auf Platz O(log n) beschrieben werden, wenn nicht der Inhalt des Eingabebandes, sondern nur die zugehörige Kopfposition notiert wird. Wir bilden nun eine Eingabe x, die auf Zugehörigkeit zu L getestet werden soll, auf einen gerichteten Graphen Gx ab. Die Knoten von Gx entsprechen den Konfigurationen von M , die Anfangskonfiguration wird zum Knoten 1. Schließlich gibt es einen zusätzlichen Knoten, der Endknoten des Pfades werden soll. Für alle Paare (I, J) von Konfigurationen wird nun getestet, ob J direkte Nachfolgekonfiguration von I bei Eingabe x sein kann. Im positiven Fall erhält Gx die Kante von I nach J. Schließlich erhält Gx für alle akzeptierenden Konfigurationen K Kanten von K zum zusätzlichen Knoten. Es ist klar, dass Gx mit logarithmischem Arbeitsband erzeugt werden kann. Da Wege im Graphen zulässigen Rechnungen entsprechen, gibt es in Gx genau dann einen Pfad vom Knoten 1, der Anfangskonfiguration, zum Endknoten, der alle akzeptierenden Endkonfigurationen vereinigt“, wenn die Turingmaschine M die Eingabe x akzeptiert. 2 ” 12.4 Die Klasse #P Bisher haben wir uns vor allem mit Entscheidungsproblemen beschäftigt: Gibt es (mindestens) eine Belegung der gegebenen Variablen, die alle Klauseln erfüllt? Wir haben dann 104 in Kap. 6 gesehen, dass die zugehörigen Suchprobleme kaum schwieriger sind. Finde, falls existent, eine Belegung der Variablen, die alle Klauseln erfüllt. Noch nicht behandelt haben wir sogenannte Anzahlprobleme oder #-Probleme. Die Notation kommt aus der häufig benutzten Bezeichnung #M für die Mächtigkeit von M . Ein typisches #-Problem ist #-SAT. Definition 12.4.1: #-SAT Für eine Menge V von Variablen und eine Menge C von Klauseln soll die Anzahl der erfüllenden Belegungen berechnet werden. Es sollte nun klar sein, wie #-HC, #-CLIQUE oder #-PARTITION definiert sind. Diese Probleme haben alle gemeinsam, dass die zu berechnende Anzahl höchstens exponentiell ist und daher auf polynomiellem Band darstellbar ist. Es gibt keine naheliegende Idee, wie diese Anzahlprobleme von nichtdeterministischen Turingmaschinen in polynomieller Zeit gelöst werden können. Implizit löst aber unser NP-Algorithmus für SAT auch #-SAT. Wir können den Algorithmus so modifizieren, dass für n = |V | jede Folge aus {0, 1}n genau auf einem Berechnungsweg geraten wird. Danach wird die geratene Variablenbelegung nur noch deterministisch verifiziert. Also: Es gibt soviele akzeptierende Rechenwege wie es erfüllende Variablenbelegungen gibt. Dies führt zur Betrachtung der Klasse #P. Definition 12.4.2: #P enthält alle Suchprobleme Π, für die es eine nichtdeterministische Turingmaschine gibt, die für jede zulässige Eingabe I ∈ DΠ genau |SΠ (I)| akzeptierende Rechenwege hat, wobei die Länge jedes akzeptierenden Rechenweges durch ein Polynom in der Länge von I beschränkt ist. Definition 12.4.3: Ein Suchproblem Π ist #P-vollständig, wenn Π ∈ #P ist und alle Probleme Π0 ∈ #P sich auf Π Turing-reduzieren lassen, d.h. Π0 ≤T Π für alle Π0 ∈ #P. Es sollte nicht überraschen, dass wir bei Suchproblemen wieder auf den Begriff der TuringReduktion zurückgreifen. Ohne Beweis wollen wir das folgende, nicht überraschende Ergebnis anführen. Satz 12.4.4: #-SAT ist #P-vollständig. In der Vorlesung EFFIZIENTE ALGORITHMEN wird ein polynomieller Algorithmus angegeben, der Graphen G = (V, E) darauf testet, ob sie ein perfektes Matching (PM) haben, das sind b|V |/2c knotendisjunkte Kanten. Erstaunlicherweise ist #-PM bereits für bipartite Graphen #P-vollständig. Es ist dies das Problem der Berechnung der Permanente einer n × n-Matrix X aus Nullen und Einsen X perm(X) := x1,π(1) ∗ · · · ∗ xn,π(n) . π Permutation auf {1,...,n} Die Permanente sieht nun wiederum fast so aus wie die Determinante. Die Berechnung der Determinante ist aber in polynomieller Zeit möglich (s. LINEARE ALGEBRA). 105 Dies gilt für Determinanten in beliebigen Ringen, also erst recht auch für den Körper 2. Da xij ∈ {0, 1}, ergibt x1,π(1) ∗ · · · ∗ xn,π(n) über 2 den gleichen Wert wie über . Bei der Determinante muss dieses Produkt mit (−1)sign(π) multipliziert werden. Über 2 ist jedoch −1 ≡ +1 mod 2. Über 2 stimmen also Determinante und Permanente überein. Also kann perm(X) mod 2 in polynomieller Zeit berechnet werden. Erstaunlicherweise können wir also effizient feststellen, ob es gerade oder ungerade viele bipartite, perfekte Matchings gibt, aber wir können vermutlich nicht effizient die Anzahl bipartiter, perfekter Matchings berechnen. 106 13 13.1 Nichtuniforme Komplexitätsklassen Schaltkreise und zugehörige Komplexitätsmaße Wir haben schon in der Einleitung auf den Unterschied zwischen nichtuniformen und uniformen Rechnern hingewiesen. Hier soll der Unterschied formalisiert werden. Für Turingmaschinen haben wir im allgemeinen Sprachen L ⊆ Σ∗ betrachtet, und es ist keine Einschränkung, nur Sprachen über dem Alphabet Σ = {0, 1} zu betrachten. Sprachen über {0, 1} und Folgen boolescher Funktionen f = (fn ) mit fn ∈ Bn , d.h. fn : {0, 1}n → {0, 1}, stehen in eineindeutiger Beziehung. Zu L gehören die Funktionen f L = (fnL ) mit fnL (x) = 1 genau für x ∈ L ∩ {0, 1}n. Zu f = (fn ) gehört die Sprache Lf , die die Vereinigung aller fn−1 (1) ist. Hierbei haben wir bereits, wie wir es auch in Zukunft tun werden, 0-1-Vektoren und 0-1-Strings miteinander identifiziert. Turingmaschinen (wie alle Rechner) sind uniform. Sie arbeiten mit einem Programm für Eingaben beliebiger Länge. Auf der Softwareebene haben wir es also mit uniformen Rechnern zu tun. Dagegen können wir auf der Hardwareebene nur nichtuniforme Rechner“ ” entwerfen. Die Zahl der Inputs ist auf Hardwareebene fest. Für jede Eingabelänge können und müssen wir einen neuen Rechner“ entwerfen. Das übliche Hardwaremodell ist ein ” Schaltkreis. Schaltkreise bestehen aus Bausteinen vom Typ ∧, ∨ und ¬ mit 2 Eingängen oder einem Eingang. Eingang eines Bausteins kann jede Komponente des Inputs x, eine boolesche Konstante oder die Ausgabe eines Bausteins mit kleinerer Nummer sein. Damit sollte auch klar sein, was an den einzelnen Bausteinen eines Schaltkreises berechnet wird. Schaltkreise lassen sich gut durch gerichtete azyklische Graphen beschreiben. x1 x2 x3 x4 Richtung der Kanten Die Größe eines Schaltkreises ist die Zahl seiner Bausteine, in unserem Beispiel 9. Die Schaltkreisgröße misst die Hardwaregröße und die Zahl der Rechenschritte und damit die sequentielle Rechenzeit. Allerdings arbeiten Schaltkreise parallel. Die Tiefe eines Schaltkreises ist die größte Zahl von Bausteinen auf einem gerichteten Pfad, in unserem Beispiel 107 5. Die Tiefe misst die parallele Rechenzeit. Wir werden noch sehen, dass es zwischen der parallelen Rechenzeit und dem Speicherplatzbedarf enge Beziehungen gibt. Diese Vorüberlegungen führen zu den folgenden Komplexitätsklassen. Definition 13.1.1: a) SIZE(c(n)) ist die Klasse der Folgen boolescher Funktionen f = (fn ), die durch Schaltkreise der Größe O(c(n)) berechenbar sind. P-SIZE ist die Vereinigung aller SIZE(nk ). b) DEPTH(d(n)) ist die Klasse der Folgen boolescher Funktionen f = (fn ), die durch Schaltkreise der Tiefe O(d(n)) berechenbar sind. Worin bestehen nun eigentlich die Unterschiede zwischen uniformer und nichtuniformer Komplexität? Die in allen Programmiersprachen und auch für Turingmaschinen bestehende Möglichkeit bedingter Abfragen lässt sich in Schaltkreisen nicht ohne Mehraufwand simulieren. Die Probleme von Simulationen in der anderen Richtung sind weit grundlegenderer Natur. Aus der Vorlesung GTI wissen wir, dass es unentscheidbare Sprachen L gibt, z.B. das Halteproblem. Die zugehörigen booleschen Funktionen f L = (fnL ) sind jedoch trivialerweise durch Schaltkreise berechenbar, z.B. durch die DNF. Höhere Komplexitäten als exponentielle Komplexität treten für boolesche Funktionen nicht auf. So stellt sich unter anderem die Frage, ob die zu NP-vollständigen Problemen gehörigen booleschen Funktionen nicht vielleicht polynomielle Schaltkreisgröße haben. In diesem Kapitel gehen wir den Beziehungen zwischen uniformer und nichtuniformer Komplexität etwas näher auf den Grund. 13.2 Simulationen von Turingmaschinen durch Schaltkreise Zunächst wollen wir Zeit von Turingmaschinen und Größe von Schaltkreisen in Beziehung setzen, danach den Platzbedarf von Turingmaschinen und die Tiefe von Schaltkreisen. Wir haben schon gesehen, dass die Probleme bei der Simulation von Turingmaschinen durch Schaltkreise in den bedingten Abfragen liegen. Die Folge der Kopfbewegungen einer Turingmaschine ist für verschiedene Eingaben im Allgemeinen verschieden. Wir zeigen zunächst, dass ansonsten eine Simulation sehr einfach ist. Definition 13.2.1: Eine Turingmaschine heißt stereotyp (engl.: oblivious), wenn die Folge der Kopfbewegungen nur von der Eingabelänge, aber nicht vom Inhalt der Eingabe abhängt. Satz 13.2.2: Falls L ⊆ {0, 1}∗ von einer stereotypen Turingmaschine in Zeit t(n) akzeptiert wird, gibt es für die booleschen Funktionen f L = (fnL ) Schaltkreise der Größe O(t(n)). Beweis: Wir führen den Beweis nur für Turingmaschinen M mit einem Band. Wir halten die Eingabelänge n fest. Dann ist die Kopfposition pos(t) nach t Schritten für 0 ≤ t ≤ t(n) für alle Eingaben x mit |x| = n gleich. Die t-te Konfiguration von M auf Eingabe x wird nun eindeutig beschrieben durch den Zustand q(t, x) und den Bandinhalt b(t, x, j) 108 für −t(n) + 1 ≤ j ≤ t(n) + 1. Wir codieren Zustände und Bandbuchstaben durch 0-1Folgen der Länge dlog |Q|e bzw. dlog |Γ|e. Die 0-te Konfiguration ist gegeben: q(0, x) = q0 , b(0, x, j) = xj für 1 ≤ j ≤ n und b(0, x, j) = B für das Leerzeichen B sonst. Wir können annehmen, dass die Turingmaschine, anstatt zu akzeptieren oder zu verwerfen, eine 1 oder 0 in Bandposition 1 schreibt. Dann kann die Turingmaschine, ohne noch etwas zu verändern oder zu stoppen, weiter arbeiten“. Die Ausgabe ist also b(t(n), x, 1). ” Wir zeigen nun, wie wir q(t + 1, x) und alle b(t + 1, x, j) aus q(t, x) und allen b(t, x, j) berechnen können. Die Übergangsfunktion von M sei δ : Q × Γ → Q × Γ × {R, L, N }. Mit δ1 und δ2 bezeichnen wir die ersten beiden Projektionen von δ. Dann gilt (1) q(t + 1, x) = δ1 (q(t, x), b(t, x, pos(t))), (2) b(t + 1, x, pos(t)) = δ2 (q(t, x), b(t, x, pos(t))), (3) b(t + 1, x, j) = b(t, x, j) für j 6= pos(t). Da δ eine endliche Funktion unabhängig von |x| ist, gibt es für (1) und (2) einen Schaltkreis, z.B. die zugehörigen DNFs, der Größe O(1). Um (3) zu realisieren, sind überhaupt keine Bausteine nötig. Umgangssprachlich müssen nur die zugehörigen Drähte verlängert“ werden. Da wir t(n) Schritte simulieren, hat der Schaltkreis Größe O(t(n)). ” 2 Satz 13.2.3: Jede t(n)-zeitbeschränkte Turingmaschine mit t(n) ≥ n kann durch eine O(t(n)2 )-zeitbeschränkte stereotype Turingmaschine simuliert werden. Beweis: Der Beweis ähnelt der Simulation von k-Band Turingmaschinen durch Turingmaschinen mit einem Band. Im 0-ten Schritt wird die Simulation vorbereitet. Es werden Marken # auf die Positionen 0 und n + 1 geschrieben. Außerdem wird die Position des zu simulierenden Kopfes, also Position 1, mit einer Marke $ neben dem Buchstaben versehen. Der Kopf der Maschine steht auf der linken #-Marke. Die Turingmaschine merkt sich den Zustand q0 der zu simulierenden Maschine. Dies alles kann stereotyp in O(n) Schritten erfolgen. Vor der Simulation des j-ten Schrittes ist der simulierenden Maschine der Zustand q der simulierten Maschine bekannt. Die Position, wo der simulierte Kopf steht, enthält zusätzlich $, und die #-Marken stehen an den Positionen 1−j und n+j. Die Bandinschrift ist ansonsten vollständig simuliert. Der Kopf steht auf der linken #-Marke. Während der Simulation des j-ten Schrittes wird zunächst die linke Marke um eine Position nach links verschoben. Dann wird nach rechts gesucht, bis die $-Position gefunden wird. Dort stehe der Buchstabe a. Es sei δ(q, a) = (q 0 , a0 , d). Dann merkt sich die Maschine den neuen Zustand q 0 . Falls d = N , wird (a, $) durch (a0 , $) ersetzt. Falls d = R, wird (a, $) durch a0 ersetzt und die rechts anschließende Position mit $ markiert. Falls d = L, wird (a, $) durch (a0 , $∗ ) ersetzt. Danach geht der Kopf nach rechts weiter, versetzt die #-Marke um eine Position nach rechts. Dann geht der Kopf nach links bis zur linken #-Marke. Wird unterwegs die $∗ -Marke gefunden, wird sie gelöscht und der linke Nachbar mit $ markiert. Der j-te Schritt kann also in O(n + j) Schritten stereotyp simuliert werden. Die Gesamtkosten der Simulation betragen O(t(n)(n + t(n))) = O(t(n)2 ). 109 2 Satz 13.2.4: Jede t(n)-zeitbeschränkte und s(n)-platzbeschränkte Turingmaschine kann durch eine O(t(n) log s(n)) = O(t(n) log t(n))-zeitbeschränkte stereotype Turingmaschine simuliert werden. Wir verzichten auf den Beweis dieses Satzes. Uns ist vor allem wichtig, dass polynomiell zeitbeschränkte Turingmaschinen durch polynomiell zeitbeschränkte, stereotype Turingmaschinen simuliert werden können. Korollar 13.2.5: Falls L ⊆ {0, 1}∗ von einer t(n)-zeitbeschränkten und s(n)-platzbeschränkten Turingmaschine akzeptiert wird, gibt es für die booleschen Funktionen f L = (fnL ) Schaltkreise der Größe O(t(n) log s(n)) = O(t(n) log t(n)). Beweis: Satz 13.2.2 und Satz 13.2.4 . 2 Korollar 13.2.6: P ⊆ P-SIZE. Die Schaltkreise in den Simulationen für Satz 13.2.3 und 13.2.4 haben große Tiefe. Die Tiefe ist im wesentlichen so groß wie die Schaltkreisgröße. Andererseits lässt sich jede boolesche Funktion auf n Variablen mit der DNF in Tiefe n+dlog ne realisieren. Wir zeigen nun, wie wir Turingmaschinen durch Schaltkreise mit oftmals kleiner Tiefe simulieren können. Die Simulation ist dann gut, wenn die Turingmaschinen nur geringen Platzbedarf haben. Hier bekommen wir erste Argumente für die These, dass parallele Rechenzeit und Speicherplatzbedarf eng verknüpft sind. Satz 13.2.7: Die Sprache L ⊆ {0, 1}∗ werde von einer t(n)-zeitbeschränkten und s(n)platzbeschränkten Turingmaschine erkannt. Es sei l(n) := max{s(n), dlog ne}. Für die booleschen Funktionen f L = (fnL ) gibt es Schaltkreise der Tiefe O(l(n) log t(n)) = O(l(n)2 ). Beweis: Da wir hier wieder von Platzschranken s(n) < n ausgehen (sonst ist die Aussage des Satzes trivial), nehmen wir wieder an, dass die Eingabe auf einem Read-Only-Band steht. Die Zahl der Konfigurationen ist daher beschränkt durch k(n) = |Q|(n + 2)|Γ|cs(n) cs(n). Da die Turingmaschine auf allen Eingaben stoppt, ist t(n) ≤ k(n) und log t(n) ≤ log k(n) = O(l(n)). Also gilt auch O(l(n) log t(n)) = O(l(n)2 ). Wir modifizieren die gegebene Turingmaschine so, dass sie niemals stoppt, sondern statt dessen nichts mehr verändert und weiter arbeitet“. Die Rechnung auf Eingabe x kann ” also beschrieben werden durch k0 (x), . . . , kt(n) (x). Es ist x ∈ L genau dann, wenn die erste Zelle des Arbeitsbandes nach t(n) Rechenschritten die Zahl 1 enthält. Für jede Konfiguration k(x) ist die Nachfolgekonfiguration k 0 (x) eindeutig bestimmt. Sie hängt nicht von der gesamten Eingabe x ab, sondern nur von dem xi , so dass der Kopf auf 110 dem Eingabeband auf Position i steht. Wir definieren nun für jedes Konfigurationenpaar (k, k 0 ) die Funktion ak,k0 (x). Sie soll genau dann 1 sein, wenn k 0 (x) direkter Nachfolger von k(x) ist. Wenn in Konfiguration k der Kopf auf dem Eingabeband auf Position i steht, ist ak,k0 (x) eine der Funktionen 0, 1, xi und x̄i . Die Matrix A(x) = (ak,k0 (x)) kann also in Tiefe 1 berechnet werden. Das boolesche A, B mit booleschen Werten ist definiert W Produkt C zweier Matrizen i durch cij = (x) das Produkt von i Kopien von A(x). Da W m ai,m ∧ bm,j . Es sei nun A i 00 0 aik,k0 (x) = k00 ai−1 ∧ a , folgt, dass a 00 k ,k k,k 0 (x) = 1 genau dann ist, wenn bei Eingabe x k,k 0 die Konfiguration k die i-te Nachfolgekonfiguration von k ist. Ein Induktionsbeweis für diese Aussage ist einfach. Für i = 1 haben wir A1 (x) = A(x) gerade so gewählt. Für i > 1 gibt es genau eine Konfiguration k 00 , die nach i − 1 Schritten erreicht wird. Es ist aik,k0 (x) = 1 genau dann, wenn für eine Konfiguration k 00 sowohl ai−1 k,k 00 (x) = 1 als auch ak00 ,k0 (x) = 1 ist. Es sei nun T = 2dlog t(n)e . Wir können die Matrix AT durch fortgesetztes Quadrieren mit dlog t(n)e booleschen Matrizenmultiplikationen berechnen. Nach Definition kann jede Matrizenmultiplikation in Tiefe dlog k(n)e + 1 durchgeführt werden. Die Gesamttiefe beträgt also dlog t(n)e(dlog k(n)e + 1). Wenn K ∗ die Menge der akzeptierenden Konfigurationen W bezeichnet und k0 die Anfangskonfiguration ist, gilt fnL (x) = k∈K ∗ aTk0 ,k (x). Die Gesamttiefe unseres Schaltkreises beträgt somit 1 + dlog t(n)e(dlog k(n)e + 1) + dlog k(n)e = O(l(n) log t(n)). 2 Korollar 13.2.8: DTAPE(log n) ⊆ DEPTH(log2 n). 13.3 Simulation von Schaltkreisen durch nichtuniforme Turingmaschinen Wir haben schon diskutiert, warum Schaltkreisfolgen C = (Cn ) für boolesche Funktionen f = (fn ) nicht immer durch Turingmaschinen simuliert werden können. Es werden daher nichtuniforme Turingmaschinen betrachtet. Definition 13.3.1: Eine nichtuniforme Turingmaschine M ist eine Turingmaschine, die mit einem weiteren Read-Only-Band versehen ist. Für Inputs x mit n = |x| enthält dieses Extraband ein Orakel an , das zwar von n = |x|, aber nicht von x selber abhängen darf. Die Rechenzeit wird auf normale Weise gemessen. Der Speicherplatzbedarf ist die Summe aus dem Speicherplatzbedarf auf dem Arbeitsband und dlog |an |e. Diese Definition bedarf einiger Erläuterungen. Wir bezeichnen an wieder als Orakel. Wenn wir nämlich aus |x| auf effiziente Weise a|x| berechnen können, kann das Orakel wiederum durch dieses Programm ersetzt werden, und wir erhalten eine (uniforme) Turingmaschine. Zum Speicherplatzbedarf wird dlog |an |e und nicht, wie vielleicht erwartet, |an | addiert. 111 Wir haben gesehen, dass für Turingmaschinen k(n) ≈ 2s(n) ist. Konfigurationen für nichtuniforme Turingmaschinen müssen die Kopfposition auf dem Orakelband enthalten. Dafür gibt es |an | Möglichkeiten. Indem wir dlog |an |e zu s(n) addieren, bleibt die Beziehung k(n) ≈ 2s(n) richtig. Außerdem hoffen wir, dass wir in gutartigen Fällen nicht das gesamte Orakel auf das Band schreiben müssen, sondern nur kleine Teile des Orakels. Schön wäre es, wenn dafür Platz O(log |an |) ausreicht. Diese Diskussion greifen wir am Ende dieses Abschnitts wieder auf. Satz 13.3.2: Die Folge boolescher Funktionen f = (fn ) möge durch Schaltkreise C = (Cn ) der Größe c(n) = Ω(n) berechnet werden. Dann kann die Sprache Lf von einer nichtuniformen Turingmaschine in Zeit t(n) = O(c(n)2 ) auf Platz s(n) = O(c(n)) akzeptiert werden. Beweis: Als Orakel verwenden wir die einzige Information, die wir vorliegen haben, nämlich den Schaltkreis Cn der Größe c(n) für fn . Dazu benötigen wir eine Codierung von Schaltkreisen. Wir nummerieren die Inputs und Bausteine von Cn mit 1, . . . , n + c(n). Bausteine werden nun codiert durch ihre Nummer, ihren Typ (∧, ∨, ¬) und die Nummern der direkten Vorgänger. Damit kann jeder Baustein mit O(log c(n)) Bits codiert werden. Die Codierung von Cn , und damit das Orakel an , hat Länge O(c(n) log c(n)). Die Turingmaschine kann nun den Schaltkreis Schritt für Schritt simulieren. Nach der Simulation von i − 1 Bausteinen stehen die Ergebnisse dieser Bausteine auf dem Arbeitsband. Für die Simulation des i-ten Bausteins werden die Nummern der Vorgänger gelesen, die Werte der Vorgänger auf dem Eingabeband bzw. dem Arbeitsband gesucht. Dann ist es einfach, das Ergebnis des Bausteins zu berechnen und auf das Arbeitsband zu schreiben. Mit zwei Arbeitsbändern ist es leicht, jeden Baustein in Zeit O(c(n)) zu simulieren. Auf den Arbeitsbändern genügt Platz O(c(n)), das Orakelband trägt nur O(log c(n)) zum Platzbedarf bei. 2 Satz 13.3.3: Die Folge boolescher Funktionen f = (fn ) möge durch Schaltkreise C = (Cn ) der Tiefe d(n) = Ω(log n) berechnet werden. Dann kann die Sprache Lf von einer nichtuniformen Turingmaschine in Zeit t(n) = O(n2d(n) ) auf Platz s(n) = O(d(n)) akzeptiert werden. Auch dieser Satz zeigt den engen Zusammenhang zwischen paralleler Rechenzeit (Tiefe) und Speicherplatzbedarf auf. Beweis von Satz 13.3.3: Wir haben nicht genügend Platz, die Ergebnisse aller Bausteine von Cn auf das Arbeitsband zu schreiben. Wir haben im wesentlichen nur Platz für die Ergebnisse der Bausteine auf einem gerichteten Pfad in Cn . Die Schaltkreise Cn sind daher als Orakel nicht geeignet. Wir ersetzen die Schaltkreise Cn durch Formeln Fn der gleichen Tiefe. Formeln sind spezielle Schaltkreise, in denen jeder Baustein nur einen direkten Nachfolger haben darf. Die Variablen dürfen mehrfach vorkommen, jede Kopie einer Variablen darf aber nur einen direkten Nachfolger haben. Der zugrunde liegende Graph ist also ein Baum. Es ist leicht, einen Schaltkreis durch eine entsprechende Formel 112 zu ersetzen. Wir gehen die Bausteine gemäß ihrer Nummerierung durch. Wenn ein Baustein B genau i Nachfolger hat, wird der Baum mit Wurzel B i-mal kopiert. Aus dem Schaltkreis in Kap. 13.1 wird dann folgende Formel. x1 x2 x4 x2 x3 x2 x3 x4 x3 x4 1 3 8 5 2 6 9 4 7 10 Als Orakel an wird nun die Formel Fn in binärer Codierung verwendet. Formeln lassen sich auf wenig Platz simulieren, da jedes Ergebnis nur einmal benutzt wird. Als Nummerierung benutzen wir die Postorder auf den Bausteinen (s. Abbildung). Jeder Baustein wird nun codiert durch seinen Typ und Zahlen il , ir ∈ {0, . . . , n}. Die Codierung il für den linken Vorgänger hat folgende Interpretation. Falls il = 0, ist der linke Vorgänger ein Baustein. Falls il ≥ 1, ist der linke Vorgänger der Input xil . Ebenso ist die Codierung ir für den rechten Vorgänger zu verstehen. Auf sie kann für Negationsbausteine verzichtet werden. Auf diese Weise genügen für jeden Baustein O(log n) Bits. Bäume der Tiefe d haben höchstens 2d − 1 Knoten. Also hat die Codierung von Fn höchstens O((log n)2d(n) ) Bits. Es folgt dlog |an |e = O(d(n)). Die Turingmaschine simuliert die Formel nun Schritt für Schritt. Die Ergebnisse der Bausteine werden gelöscht, wenn sie benutzt wurden. Neue Ergebnisse werden an die Ergebnisliste rechts angehängt. Wegen der Postorder wird ein Baustein direkt nach seinen beiden Teilformeln simuliert. Die Ergebnisse der Vorgänger stehen dann am rechten Ende des Arbeitsbandes. Vorgänger, die Variablen sind, werden auf dem Eingabeband gelesen. Die anderen Ergebnisse werden am rechten Ende des Arbeitsbandes gelesen und gelöscht, das neue Ergebnis rechts angefügt. Mit Hilfe eines zweiten Arbeitsbandes zum Zählen kann jeder Baustein in Zeit O(n) simuliert werden. Daher folgt die Zeitschranke. Auf dem Arbeitsband für das Zählen brauchen wir nur Platz O(log n). Es bleibt zu zeigen, dass auf dem eigentlichen Arbeitsband nicht mehr als d(n) Bits stehen. Dies zeigen wir durch Induktion über d. Für d = 1 ist die Aussage trivial. Für d > 1 wird zunächst der linke Teilbaum ausgewertet. Er hat höchstens Tiefe d−1. Es stehen also nicht mehr als d − 1 Bits auf dem Arbeitsband. Am Ende steht nur noch das Ergebnis dort. Bei der Simulation des rechten Teilbaumes stehen höchstens d − 1 Bits auf dem Arbeitsband, 113 mit dem Ergebnis für den linken Teilbaum nur d Bits. Am Ende der Simulation stehen noch die 2 Bits für die Vorgänger der Wurzel auf dem Arbeitsband. Sie werden gelöscht, und das Ergebnis der gesamten Simulation wird auf das Band geschrieben. 2 Wir notieren den Inhalt des Arbeitsbandes für die Beispielformel und die Eingabe (0, 1, 0, 1): 0k1k1, 1k1k1, 1k1, 1k1k1, 1k1, 0k0. Die Simulationen von Turingmaschinen durch Schaltkreise sind auch für nichtuniforme Turingmaschinen zu verwenden. Da Schaltkreise nur auf festen Eingabelängen arbeiten, sind die Orakel konstante Eingaben, die Schaltkreisen keine Probleme bereiten. Wir können die Ergebnisse nun neu interpretieren. – Schaltkreisgröße und nichtuniforme Zeit für Turingmaschinen sind polynomiell verknüpft, falls beide mindestens linear in der Eingabelänge sind. – Schaltkreistiefe und nichtuniformer Platz für Turingmaschinen sind polynomiell verknüpft, falls beide mindestens logarithmisch in der Eingabelänge sind. Um ähnliche Ergebnisse für uniforme Turingmaschinen zu erhalten, müssen Voraussetzungen an die zugehörigen Schaltkreise gestellt werden. Es gibt mehrere Definitionen für uniforme Schaltkreise. Der Begriff der Uniformität ist allerdings sehr robust, so dass alle Definitionen zu ähnlichen Ergebnissen führen. Wir begnügen uns hier mit einer Definition. Definition 13.3.4: Eine Folge von Schaltkreisen C = (Cn ) der Größe c(n) heißt uniform, wenn aus n die binäre Codierung von Cn von einer O(log c(n)) platzbeschränkten Turingmaschine berechnet werden kann. Uniforme Schaltkreise können direkt durch Turingmaschinen simuliert werden. Das Orakel wird ersetzt durch eine Turingmaschine, die das Orakel berechnet“. Wir wissen, dass ” die Zeitkomplexität von O(log c(n))-platzbeschränkten Turingmaschinen polynomiell in c(n) ist. Also sind Schaltkreisgröße uniformer Schaltkreise und Zeitkomplexität von Turingmaschinen polynomiell verknüpft. Hierbei ist zu beachten, dass die Schaltkreise, die Turingmaschinen simulieren, uniform sind. Dieses Resultat untermauert wiederum die erweiterte Churchsche These. Es stellt sich fast die Frage, ob es überhaupt sinnvolle“ Schaltkreise gibt, die nichtuniform ” sind. Dies ist in der Tat der Fall. Lange Zeit waren die einzigen bekannten Schaltkreise mit Tiefe O(log n) für die Division zweier Zahlen im Sinne von Definition 13.3.4 nichtuniform. Erst im Jahr 2001 wurden uniforme Schaltkreise der Tiefe O(log n) für die Division gefunden. Der Vorteil der nichtuniformen Schaltkreise für die Division bestand darin, dass man bei der Konstruktion der Schaltkreise Primzahlen p1 , . . . , pl , die von der Eingabelänge abhängen, benutzt hat. Dies ermöglichte es, durch Anwendung des Chinesischen Restklassensatzes Operationen modulo dieser Primzahlen und damit auf kleineren Zahlen auszuführen. Auf die nichtuniformen Komplexitätsklassen SIZE(c(n)), P-SIZE und DEPTH(d(n)) neben den uniformen Komplexitätsklassen DTIME(t(n)), P und DTAPE(s(n)) kann auf jeden Fall auch in der Praxis nicht verzichtet werden. Andererseits haben wir aber auch gesehen, dass es im Normalfall enge Beziehungen zwischen uniformer und nichtuniformer Komplexität gibt. 114 Wir werden nun auch für nichtuniforme Rechner, also Schaltkreise, nichtdeterministische Komplexitätsklassen einführen, um zu zeigen, dass es in beiden Bereichen ähnliche Probleme gibt. Dann wenden wir uns der praktisch höchst interessanten Frage zu, ob NPvollständige Probleme, selbst wenn NP 6= P ist, polynomielle Schaltkreise haben können. Dies ist also die Frage, ob Hardwarelösungen das NP 6= P-Problem umgehen können. 13.4 Eine Charakterisierung der Sprachen mit polynomiellen Schaltkreisen In den bisherigen Abschnitten dieses Kapitels haben wir uns mit nichtuniformen Schaltkreisen vertraut gemacht und uns an nichtuniforme Komplexitätsklassen herangetastet. Jetzt sind wir in der Lage, allgemein nichtuniforme Komplexitätsklassen zu definieren und zu untersuchen. Es wird sich zeigen, dass für nichtuniforme Komplexitätsklassen Schaltkreise ein gutes Beschreibungsmittel sind. Die Definition der Komplexitätsklassen geht aber auf Turingmaschinen mit Orakeleingabe zurück. Wir werden nun nur noch das Alphabet {0, 1} benutzen. Dabei benutzen wir die Abbildung h·, ·i : ({0, 1}∗ )2 → {0, 1}∗ als Codierung eines Paares (x, y) als String in {0, 1}∗ . Die Länge von hx, yi ist O(|x| + |y|), und (x, y) soll aus hx, yi in Zeit O(|x| + |y|) berechenbar sein. Definition 13.4.1: Sei F eine Klasse von Funktionen h : → {0, 1}∗ . Insbesondere sei Poly die Klasse aller Funktionen h, für die |h(n)| durch ein Polynom p(n) beschränkt ist. Sei C eine Klasse von Sprachen über {0, 1}. Dann ist C/F := {L ⊆ {0, 1}∗ | ∃B ∈ C ∃h ∈ F : L = {x | hx, h(|x|)i ∈ B}} die Klasse aller Sprachen, die relativ zu einer Orakelfunktion aus F zur Klasse C gehören. Der folgende Satz zeigt, dass diese Definition mit unserer Intuition übereinstimmt. Satz 13.4.2: Die Sprache L gehört genau dann zu P/Poly, wenn die booleschen Funktionen f L = (fnL ) polynomielle Schaltkreise haben. Beweis: Sei zunächst angenommen, dass L ∈ P/Poly ist. Dann gibt es eine Sprache B ∈ P und ein Orakel polynomieller Länge h ∈ Poly, so dass L = {x | hx, h(|x|)i ∈ B} ist. Also gibt es eine polynomiell zeitbeschränkte Turingmaschine, die entscheidet, ob hx, h(|x|)i ∈ B ist. Für die Simulation durch einen Schaltkreis für Eingaben x der Länge n ist h(|x|) = h(n) ein konstanter String. Nach Korollar 13.2.5 kann diese Turingmaschine durch polynomielle Schaltkreise simuliert werden. Sei nun angenommen, dass es für f L = (fnL ) Schaltkreise Cn polynomieller Größe gibt. Es sei B die Sprache aller hx, yi, so dass y die Codierung eines Schaltkreises C auf |x| Inputs ist und C auf x den Wert 1 berechnet. Der Beweis von Satz 13.3.2 zeigt, dass B ∈ P ist. Sei nun h(n) die Codierung von Cn . Dann ist h ∈ Poly und L = {x | hx, h(|x|)i ∈ B}. Also ist L ∈ P/Poly. 2 Korollar 13.4.3: P-SIZE = P/Poly. 115 Wir werden in Zukunft die gebräuchlichere Bezeichnung P/Poly verwenden. Damit wird deutlich gemacht, dass nur das Vorhandensein von Orakeln nichtuniforme von uniformen Komplexitätsklassen unterscheidet. Nach Definition 13.4.1 ist auch die Klasse NP/Poly definiert. Was haben wir uns unter dieser Klasse vorzustellen? Definition 13.4.4: Die Sprache L ⊆ {0, 1}∗ hat erzeugende Schaltkreise Cn polynomieller Größe, wenn k(n), die Zahl der Inputs von Cn , und c(n), die Zahl der Bausteine von Cn , polynomiell beschränkt sind und wenn es n + 1 ausgewählte Bausteine G0 , . . . , Gn in Cn gibt, so dass gilt L ∩ {0, 1}n = {(res(G1 , a), . . . , res(Gn , a)) | a ∈ {0, 1}k(n) , res(G0 , a) = 1}. Hierbei gibt res(G, a) an, was an Baustein G bei Eingabe a berechnet wird. Die Vektoren in L ∩ {0, 1}n sind also genau die Vektoren, die an (G1 , . . . , Gn ) für die Eingaben berechnet werden, für die an G0 der Wert 1 berechnet wird. Wir erklären diesen Begriff an Sprachen L ∈ P/Poly. Dann gibt es für fnL polynomielle Schaltkreise Cn mit genau n Inputs. Diese Schaltkreise erzeugen auf triviale Weise L∩{0, 1}n . Als (G1 , . . . , Gn ) wählen wir den Inputvektor (x1 , . . . , xn ) und als G0 den Outputbaustein, an dem fnL (x) berechnet wird. Natürlich stimmt L∩{0, 1}n mit der Menge der Vektoren x = (x1 , . . . , xn ) überein, für die fnL (x) = 1 ist. Der Begriff erzeugende Schaltkreise wird aber nicht durch diese einfache Betrachtung, sondern durch den folgenden Satz motiviert. Satz 13.4.5: Die Sprache L gehört genau dann zu NP/Poly, wenn L erzeugende Schaltkreise polynomieller Größe hat. Beweis: Sei zunächst angenommen, dass L ∈ NP/Poly ist. Also gibt es eine Sprache B ∈ NP und ein Orakel h ∈ Poly, so dass gilt L = {x | hx, h(|x|)i ∈ B}. Nach Satz 7.3.11 gibt es, da NP = Σ1 ist, eine Sprache L0 ∈ P und ein Polynom p, so dass gilt L = {x | ∃y ∈ {0, 1}p(|x|) : hx, h(|x|), yi ∈ L0 }. Da L0 ∈ P ist, gibt es nach Korollar 13.2.5 Schaltkreise Cn polynomieller Größe q(n), die auf dem Inputvektor (x, y) der Länge n + p(n) arbeiten, das Orakel h(n) als konstanten Input haben und genau dann 1 berechnen, wenn hx, h(n), yi ∈ L0 ist. Diese Schaltkreise erzeugen L. Als (G1 , . . . , Gn ) wählen wir (x1 , . . . , xn ) und als G0 den Outputbaustein. Genau für alle x ∈ L gibt es ein y, so dass Cn auf (x, y) den Wert 1 berechnet. Sei nun angenommen, dass Cn eine Folge erzeugender Schaltkreise polynomieller Größe für L ist. Wir definieren das Orakel h(n) als Codierung von Cn , G0 , . . . , Gn und k(n). Dann ist h ∈ Poly. Sei B die Menge aller hx, yi, so dass für n = |x| gilt: – y ist die Codierung eines Schaltkreises auf k(n) Inputs sowie von n + 1 Bausteinen G0 , . . . , Gn und von k(n). – es gibt einen Input a ∈ {0, 1}k(n) mit res(G0 , a) = 1 und res(Gi , a) = xi für 1 ≤ i ≤ n. 116 Es gilt B ∈ NP. Die erste Bedingung kann deterministisch überprüft werden. Die zweite Bedingung kann nichtdeterministisch überprüft werden, indem a geraten wird. Nach Definition gilt L = {x | hx, h(|x|)i ∈ B}, und damit ist L ∈ NP/Poly. 2 Nun sollte es niemanden mehr überraschen, dass es ein interessantes offenes Problem ist, ob NP/Poly 6= P/Poly ist. 13.5 Probleme in BPP haben polynomielle Schaltkreise Die Klasse BPP beschreibt Probleme, die praktisch gut handhabbar sind, da die Irrtumswahrscheinlichkeit sehr klein gemacht werden kann. Falls BPP eine echte Oberklasse von P ist, können wir die Irrtumswahrscheinlichkeit vermutlich nicht auf 0 senken. Dies gilt allerdings nur, wenn wir uns auf uniforme Algorithmen beschränken. Der nächste Satz zeigt, dass Probleme in BPP nichtuniform, also mit Schaltkreisen, irrtumsfrei in polynomieller Zeit gelöst werden können. Da RP ⊆ BPP, folgt die Existenz von Schaltkreisen polynomieller Größe, die Zahlen darauf testen, ob sie Primzahlen sind. Satz 13.5.1: BPP ⊆ P/Poly, d.h. die zu Sprachen L ∈ BPP gehörigen booleschen Funktionen f L = (fnL ) haben Schaltkreise polynomieller Größe. Beweis: Sei M eine BPP-Turingmaschine für L. Wenn es einen Rechenweg von M gibt, der für alle x mit |x| = n das richtige Ergebnis liefert, dann kann dieser Rechenweg als Orakel polynomieller Länge dienen. Deterministische Turingmaschinen können ohne Zeitverlust probabilistische Turingmaschinen auf einem gegebenen Rechenweg simulieren. Allerdings muss es für M einen solchen Rechenweg nicht geben. Wir wenden Satz 3.8.4 (Buch) für k = 2|x| an. Die probabilistische Turingmaschine Mk ist, da ε eine Konstante ist, polynomiell zeitbeschränkt. Rechenwege probabilistischer Turingmaschinen mit Zeitschranke p(n) lassen sich als Vektoren a ∈ {0, 1}p(n) beschreiben. Es gibt 2n+p(n) Paare (x, a) aus Eingaben und Rechenwegen. Da die Irrtumswahrscheinlichkeit von Mk durch 2−2n für n = |x| beschränkt ist, ist die Zahl falscher Rechenwege für festes x durch 2p(n)−2n beschränkt. Also ist die Zahl der Paare (x, a), für die a ein falscher Rechenweg für die Eingabe x ist, durch 2p(n)−n beschränkt. Da 2p(n) − 2p(n)−n ≥ 1 ist, gibt es mindestens einen Rechenweg h(n) ∈ {0, 1}p(n) , der für alle Eingaben x mit |x| = n korrekt ist. Nach Definition ist h ∈ Poly. Sei B = {hx, yi | y ∈ {0, 1}p(|x|), Mk (x) = 1 auf Rechenweg y}. Nach unseren Vorbemerkungen ist B ∈ P . Also ist L = {x | hx, h(|x|)i ∈ B} ∈ P/Poly und nach Satz 13.4.2 hat f L = (fnL ) Schaltkreise polynomieller Größe. 2 Die im Beweis von Satz 13.5.1 konstruierten“ Schaltkreise sind nichtuniform. Wir haben ” keine Idee, wie wir den goldenen“ Rechenweg h(n) effizient berechnen können. Wir se” hen also, dass der Unterschied zwischen uniformen und nichtuniformen Schaltkreisen aus heutiger Sicht gravierend ist. 117 13.6 Kann SAT polynomielle Schaltkreise haben? Falls NP = P, ist SAT ∈ P und hat polynomielle Schaltkreise. Aber selbst wenn NP 6= P ist, können wir bisher nicht ausschließen, dass SAT polynomielle Schaltkreise hat. Wir wollen in diesem Abschnitt eine typische Vorgehensweise aus der Komplexitätstheorie vorstellen. Wir glauben nicht, dass SAT polynomielle Schaltkreise hat. Aus der Annahme, dass SAT doch polynomielle Schaltkreise hat, leiten wir eine noch unwahrscheinlichere Aussage her und unterstützen damit unsere ursprüngliche Vermutung. Definition 13.6.1: Eine Sprache L heißt polynomiell selbstreduzierbar, wenn sie von einer polynomiell zeitbeschränkten Orakelturingmaschine mit Orakel L akzeptiert wird, wobei für Eingaben der Länge n das Orakel nur für Eingaben der Länge m < n befragt werden darf. Satz 13.6.2: SAT ist polynomiell selbstreduzierbar. Beweis: Die Eingabe bestehe aus der Variablenmenge V = {x1 , . . . , xn } und der Klauselmenge C = {c1 , . . . , cm }. Wir befragen das Orakel für V 0 = {x2 , . . . , xn } und die Klauselmenge C 0 = {c01 , . . . , c0m }, wobei c0i aus ci entsteht, indem x1 durch 0 ersetzt wird. Danach befragen wir das Orakel für V 0 und C 1 = {c11 , . . . , c1m }, wobei c1i aus ci entsteht, indem x1 durch 1 ersetzt wird. Die Eingabe wird genau dann akzeptiert, wenn eine der beiden Orakelfragen mit Ja“ beantwortet worden ist. 2 ” Bevor wir unser Hauptergebnis dieses Abschnitts beweisen können, benötigen wir noch zwei Hilfsaussagen. Leider sind deren Beweise recht technisch. Mit L≤n bezeichnen wir die Vereinigung aller L∩{0, 1}m mit m ≤ n. Für Turingmaschinen M und Sprachen B bezeichnen wir mit L(M ) die von M akzeptierte Sprache und mit L(M, B) die Sprache, die M akzeptiert, wenn als Orakel die Sprache B benutzt wird. Lemma 13.6.3: Es sei A polynomiell selbstreduzierbar und sei M die zugehörige polynomiell zeitbeschränkte Turingmaschine. Falls L(M, B)≤n = B≤n ist, dann ist auch A≤n = B≤n . Beweis: Induktion über n. Für n = 0 darf M das Orakel nicht befragen. Also arbeitet M für alle Orakel gleich, d.h. A≤0 = L(M, A)≤0 = L(M, B)≤0 = B≤0 . Im Induktionsschritt ist L(M, B)≤n+1 = B≤n+1 vorausgesetzt. Damit gilt aber auch L(M, B)≤n = B≤n und nach Induktionsvoraussetzung A≤n = B≤n . Nach Definition 13.5.1 befragt M für Eingaben x mit |x| ≤ n + 1 das Orakel nur für Wörter y mit |y| ≤ n. Für diese Wörter sind jedoch die Orakel A und B, wie gezeigt, gleich. Es folgt A≤n+1 = L(M, A)≤n+1 = L(M, A≤n )≤n+1 = L(M, B≤n )≤n+1 = L(M, B)≤n+1 = B≤n+1 . 2 118 Im Folgenden sei eine Codierung von Eingaben für SAT festgelegt. Ein polynomieller Schaltkreis für SAT ist eine Folge C0 , C1 , . . . von Schaltkreisen, wobei wir davon ausgehen, dass der Schaltkreis Ci als Eingabe eine Codierung einer Formel (=Konjunktion von Klauseln) bekommt, wobei die Länge der Codierung höchstens i ist. Sei M die Orakelturingmaschine aus dem Beweis der Selbstreduzierbarkeit für SAT. Wir bezeichnen mit L(M, Cm ) die Sprache, die von dieser Turingmaschine akzeptiert wird, wenn sie anstelle der Orakelaufrufe den Schaltkreis Cm auswertet. Wenn M polynomiell zeitbeschränkt ist und Cm polynomielle Größe hat, kann man (durch Simulation) für jede Eingabe x mit |x| ≤ m in polynomieller Zeit testen, ob x ∈ L(M, Cm ) ist. Wie schon früher sei genau dann L(M, Cm )(w) = 1, wenn w ∈ L(M, Cm ), und ansonsten 0. Dann gilt: ∀ Codierungen w mit Länge höchstens m : L(M, Cm )(w) = Cm (w). (1) D.h., wir erhalten auf w dasselbe Ergebnis, wenn wir den Schaltkreis Cm auswerten oder wenn wir die Orakelturingmaschine M mit Orakel Cm laufen lassen. Diese Eigenschaft von Schaltkreisen für SAT (oder allgemeiner von Schaltkreisen für polynomiell selbstreduzierbare Sprachen) wird auch als Selbsttest-Eigenschaft bezeichnet. Lemma 13.5.3 besagt, dass bereits aus der Bedingung (1) folgt, dass Cm für Eingaben mit Länge höchstens m das Problem SAT berechnet. Im folgenden Beweis werden wir den Ausdruck ∃ Schaltkreis S polynomieller Größe ∀w, |w| ≤ m : L(M, S)(w) = S(w) (2) benutzen. Wenn SAT polynomielle Schaltkreise C0 , C1 , . . . hat, erfüllt Cm für S eingesetzt die Bedingung in (2). Aus Lemma 13.5.3 folgt, wie eben gesagt, dass ein Schaltkreis S in (2) auf Eingaben mit Länge höchstens m das Problem SAT löst. Wir werden diesen Ausdruck in die Σ3 -Charakterisierung einer Sprache integrieren, die sich durch die Verwendung von S in eine Σ2 -Charakterisierung umformen lässt. Da S hinter einem Existenzquantor steht, braucht der verwendete polynomielle Schaltkreis für SAT nicht bekannt und auch nicht einmal berechenbar zu sein. Satz: SAT ∈ P/P oly ⇒ Σ2 = Σ3 . Beweis: Sei C0 , C1 , . . . eine Folge von polynomiellen Schaltkreisen für SAT mit den o.g. Eingabekonventionen. Es genügt zu zeigen, dass Σ3 ⊆ Σ2 folgt. Sei also L ∈ Σ3 . Nach Satz 7.3.11 gibt es ein Polynom p und eine Sprache B ∈ P, so dass L = {x | ∃y, |y| ≤ p(|x|), ∀z, |z| ≤ p(|x|), ∃z 0 , |z 0 | ≤ p(|x|) : (x, y, z, z 0 ) ∈ B}. Aufgrund der Charakterisierung von NP in Satz 3.2.10 gibt es eine Sprache R ∈ NP, so dass L = {x | ∃y, |y| ≤ p(|x|), ∀z, |z| ≤ p(|x|) : (x, y, z) ∈ R}. Da SAT NP-vollständig ist, gilt R ≤p SAT, d.h., es gibt eine polynomiell berechenbare Funktion f , so dass f (x, y, z) eine Konjunktion von Klauseln ist, die genau dann erfüllbar ist, wenn (x, y, z) ∈ R. Dabei ist die Größe von f (x, y, z) polynomiell in der Länge von 119 (x, y, z) beschränkt. Wir gehen o.B.d.A. davon aus, dass die Länge der Codierung von f (x, y, z) durch p(|x|) beschränkt ist. Im Folgenden unterscheiden wir nicht mehr explizit zwischen f (x, y, z) und seiner Codierung. Wir erhalten: L = {x | ∃y, |y| ≤ p(|x|), ∀z, |z| ≤ p(|x|) : f (x, y, z) erfüllbar}. (3) Um zu zeigen, dass L ∈ Σ2 , beweisen wir die folgende Charakterisierung von L. Sei M wieder die Orakelturingmaschine aus dem Beweis der Selbstreduzierbarkeit von SAT. L = {x | ∃ Schaltkreis S polynomieller Größe ∃y, |y| ≤ p(|x|), ∀w, |w| ≤ p(|x|), ∀z, |z| ≤ p(|x|) : (a) L(M, S)(w) = S(w) und (b) S(f (x, y, z)) = 1}. (4) Zunächst beachten wir, dass die Bedingungen (a) und (b) in polynomieller Zeit getestet werden können, da es sich um die Simulation einer polynomiell zeitbeschränkten Orakelturingmaschine mit einem durch einen polynomiellen Schaltkreis ersetzten Orakel und um die Simulation von polynomiellen Schaltkreisen handelt. Also handelt es sich um eine Charakterisierung nach Satz 7.3.11, d.h., es folgt L ∈ Σ2 . Es bleibt die Korrektheit der Charakterisierung zu zeigen. Wir beginnen mit der Inklusion ⊆“. Sei x ∈ L gegeben. Als Schaltkreis S wählen wir den polynomiellen Schaltkreis ” Cp(|x|) für SAT; dieser erfüllt nach der Vorbetrachtung die Bedingung (a) für alle w mit |w| ≤ p(|x|). Da x ∈ L, gibt es wegen (3) ein y, |y| ≤ p(|x|), so dass für alle z, |z| ≤ p(|x|), die Formel f (x, y, z) erfüllbar ist. Da die Länge von f (x, y, z) durch p(|x|) beschränkt ist, berechnet der Schaltkreis S für SAT auf dieser Formel eine 1. Wir zeigen nun die Inklusion ⊇“. Das Wort x erfülle also die Charakterisierung (4). Da ” nach dieser Charakterisierung ∀w, |w| ≤ p(|x|) : L(M, S)(w) = S(w), berechnet der Schaltkreis S nach Lemma 13.5.3 für Eingaben mit Länge höchstens p(|x|) das Problem SAT. Wegen Bedingung (b) gibt es ein y, |y| ≤ p(|x|), so dass für alle z, |z| ≤ p(|x|) die Formel f (x, y, z) erfüllbar ist. Wegen (3) folgt x ∈ L. 2 Da wir vermuten, dass Σ2 6= Σ3 ist, haben wir nun eine gute Basis für die Vermutung, dass zumindest die polynomiell selbstreduzierbaren NP-vollständigen Probleme keine polynomiellen Schaltkreise haben. Der für diese wichtige Aussage benutzte Beweis ist nicht mehr anschaulich, leider! In der Komplexitätstheorie ist stets darauf zu achten, dass man nicht der Gefahr erliegt, Aussagen der Art If horses can whistle, then pigs can fly“ zu beweisen. In diesem Kapitel ” sind wir wohl dieser Gefahr noch nicht erlegen. 120 13.7 Branchingprogramme und nichtuniformer Platz Die Beziehungen zwischen Schaltkreisgröße und Zeitbedarf nichtuniformer Turingmaschinen sind sehr eng, während die Beziehungen zwischen Schaltkreistiefe (und damit paralleler Rechenzeit) und Platzbedarf nichtuniformer Turingmaschinen eng, aber nicht sehr eng sind. Hier stellen wir ein Berechnungsmodell für boolesche Funktionen vor, dessen Größe einen sehr engen Bezug zum Platzbedarf nichtuniformer Turingmaschinen hat. Definition 13.7.1: Ein Branchingprogramm über der Menge X = {x1 , . . . , xn } boolescher Variablen ist ein gerichteter azyklischer Graph mit höchstens zwei Senken, die mit booleschen Konstanten markiert sind. Innere Knoten sind mit einer booleschen Variablen aus X markiert und haben zwei ausgehende Kanten, von denen eine mit 0 und die andere mit 1 markiert ist. Jeder Knoten v stellt eine boolesche Funktion fv : {0, 1}n → {0, 1} dar. Man erhält den Wert fv (a), wenn man an v startet und an xi -Kanten der mit ai markierten Kante folgt und schließlich die Markierung der erreichten Senke ausgibt. Die Größe eines Branchingprogramms ist gleich der Anzahl seiner Knoten. Die Branchingprogrammgröße BP (f ) einer booleschen Funktion f ist die Größe des kleinsten Branchingprogrammes, das f berechnet. Satz 13.7.2: Sei fn : {0, 1}n → {0, 1} eine Folge boolescher Funktionen, dann gibt es nichtuniforme Turingmaschinen, die fn mit Platzbedarf O(log(BP (fn ))+log n) berechnen. Beweis: Die nichtuniforme Turingmaschine erhält als Orakel bei Eingabelänge n die Beschreibung eines Branchingprogrammes Gn , das fn mit Größe BP (fn ) berechnet. Dabei wird Gn als Folge der Knoten beschrieben, wobei die Beschreibung eines Knotens die Knotennummer, die Markierung und die Nummern der beiden Nachfolger enthält. Die Funktion fn wird o.B.d.A. am Knoten 1 dargestellt. Die Beschreibung eines Knotens hat die Länge O(log(BP (fn ))+log n), also ist die Orakellänge O(BP (fn )(log(BP (fn ))+log n)) und trägt O(log BP (fn ) + log log n) zum Platzbedarf bei. Bei der Auswertung von fn ist es ausreichend, wenn der aktuelle Knoten auf dem Berechnungspfad auf dem Arbeitsband steht. Hat der Knoten die Markierung xi , wird auf dem Inputband der Wert von xi bestimmt und damit die Nummer des Nachfolgeknotens auf dem Berechnungspfad festgelegt. Alle weiteren Informationen über den aktuellen Knoten werden gelöscht und es wird vom Orakelband die Beschreibung des nun aktuellen Knotens kopiert. Der Platzbedarf auf dem Arbeitsband ist durch die Beschreibungslänge für einen Knoten beschränkt. 2 Satz 13.7.3: Sei fn : {0, 1}n → {0, 1} eine Folge boolescher Funktionen, die mit Platzbedarf s(n) von einer nichtuniformen Turingmaschine berechnet werden kann. Dann kann fn von Branchingprogrammen der Größe 2O(s(n)+log n) berechnet werden. Beweis: Wir wissen, dass 2O(s(n)+log n) eine Schranke für die Anzahl verschiedener Konfigurationen der gegebenen nichtuniformen Turingmaschinen ist. Für jede Konfiguration erzeugen wir einen Knoten des Branchingprogrammes. Die Berechnung startet an dem Knoten, der der Anfangskonfiguration entspricht. Endkonfigurationen werden Senken. Akzeptierende Endkonfigurationen werden zu einer 1-Senke verschmolzen, verwerfende 121 Endkonfigurationen zu einer 0-Senke. Alle anderen Konfigurationen werden mit der Variablen xi markiert, die auf dem Eingabeband gelesen wird. Der c-Nachfolger, c ∈ {0, 1}, entspricht der Konfiguration, die Nachfolgekonfiguration für den Fall xi = c ist. Damit ist offensichtlich, dass das erzeugte Branchingprogramm fn berechnet. 2 122 14 14.1 Untere Schranken für die Komplexität boolescher Funktionen Schaltkreisgröße Nach den Ergebnissen aus Kap. 13 ist klar, dass wir für Funktionenfolgen, die zu Problemen in NP gehören, keine nichtpoynomiellen unteren Schranken kennen. Die Situation ist noch schlimmer. Selbst für Funktionen fn : {0, 1}n → {0, 1}n gibt es keine nichtlinearen unteren Schranken und für keine Funktion kann nachgewiesen werden, dass sie nicht gleichzeitig mit linearer Größe und logarithmischer Tiefe berechenbar ist. Die größte bewiesene untere Schranke für die Schalkreisgröße einer explizit beschriebenen (d. h. die Folge beschreibt ein Problem in NP) booleschen Funktion ist seit Beginn der 80er Jahre eine Schranke der Größe 3n − O(log n). Hierbei setzen wir voraus, dass an Bausteinen jede boolesche Funktion mit zwei Inputs (also z. B. auch EXOR) realisiert werden kann. Die Schranke n − 1 ist für jede Funktion, die essentiell von n Variablen abhängt, dagegen trivial. Ein zusammenhängender Graph mit n Quellen und einer Senke, braucht 2n − 1 Knoten und damit n − 1 Bausteine. Die Beweise aller Schranken der Größe (2 + ε)n, ε ≥ 0, (es gibt gar nicht viele) sind kompliziert. Wir stellen daher nur eine 2n − 3-Schranke vor. n Satz 14.1.1: Es sei T≥2 die so genannte Thresholdfunktion, die überprüft, ob die Eingabe n mindestens zwei Einsen enthält. Dann ist C(T≥2 ) ≥ 2n − 3. n Beweis: Der topologisch erste Baustein G1 eines optimalen Schaltkreises für T≥2 hat zwei Variablen als Vorgänger. Der Schaltkreis kann nämlich verkleinert werden, wenn er auf eine Konstante zugreift. Gleiches gilt, wenn ein Baustein dieselbe Variable an beiden Eingängen hat. Es seien xi und xj die Eingänge von G1 . Es sei x0 = x und x1 = x. Dann realisiert G1 (xai ∧ xbj )c oder xi ⊕ xj ⊕ a für geeignete a, b, c ∈ {0, 1}. Wenn xj den Fan-out 1 hat, kann im ersten Fall durch die Konstantsetzung xi = a der Schaltkreis von xj unabhängig gemacht werden. Die Funktion n T≥2 hängt aber für xi = a noch von xj ab (sofern n ≥ 2). Wenn xi und xj den Fan-out 1 haben, dann erhalten wir für xi = xj = 0 und für xi = xj = 1 denselben Subschaltkreis n−2 n und im zweiten Fall durch die im Widerspruch dazu, dass T≥2 im ersten Fall durch T≥2 Konstante 1 ersetzt wird. Also können wir o. B. d. A. davon ausgehen, dass xj Fan-out n−1 . Da wir die von xj 2 hat. Wir setzen xj = 0 und erhalten einen Schaltkreis für T≥2 erreichten Bausteine eliminieren können, folgt für n ≥ 2 n n−1 ) + 2. C(T≥2 ) ≥ C(T≥2 2 Die Behauptung folgt, da T≥2 (x1 , x2 ) = x1 ∧ x2 ist. 123 2 14.2 Formelgröße und Branchingprogrammgröße Für diese beiden mit dem Platzbedarf verwandten Komplexitätsmaße gibt es nicht lineare, aber keine quadratischen unteren Schranken. Die besten Schranken gehen auf eine Methode zurück, die von Nechiporuk in den 60er Jahren entwickelt wurde. Lemma 14.2.1: Die Anzahl boolescher Funktionen fn : {0, 1}n → {0, 1} mit BP(fn ) ≤ s ist für s ≥ 2 durch (s − 2)ns−2 ((s − 1)!)2 + 2 nach oben beschränkt. Beweis: Wir benutzen eine umgekehrte topologische Reihenfolge der Knoten des Branchingprogramms, wobei die ersten beiden Knoten die Senken sind. Der Faktor ns−2 beschreibt die Möglichkeiten, die inneren Knoten zu markieren, und der Faktor s − 2 die Tatsache, dass ein Branchingprogramm mit s Knoten, von denen zwei Senken sind, s − 2 nicht konstante Funktionen berechnet. Der Summand 2 erfasst die konstanten Funktionen. Der j-te innere Knoten hat die Wahl zwischen j + 1 Knoten (j − 1 innere Knoten und 2 Senken) für den 0-Nachfolger und ebenso vielen Knoten für den 1-Nachfolger. Damit ist die Anzahl verschiedener Verknüpfungen durch ((s − 1)!)2 nach oben beschränkt. 2 Satz 14.2.2: Sei f : {0, 1}n → {0, 1} eine boolesche Funktion, die von allen n Variablen essentiell abhängt. Seien S1 , . . . , Sk ⊆ X = {x1 , . . . , xn } disjunkte Variablenmengen und si die Anzahl verschiedener nicht konstanter Subfunktionen von f , die entstehen, wenn alle Variablen außerhalb von Si durch Konstanten ersetzt werden. Dann gilt X BP(f ) = Ω( (log si )/ log log si ). 1≤i≤k Hinter dieser Methode steht die Idee, dass Funktionen mit vielen verschiedenen Subfunktionen schwierig sein müssen. Allerdings ist zu beachten, dass es eine Funktion mit extrem vielen Subfunktionen gibt, die lineare Schaltkreisgröße hat. Beweis von Satz 14.2.2: Sei G ein Branchingprogramm minimaler Größe für f und sei ti die Anzahl der mit Variablen aus Si markierten Knoten. Dann gilt BP(f ) ≥ t1 + · · · + tk + 2 und es genügt ti = Ω((log si )/ log log si ) zu zeigen. Da f von allen Variablen essentiell abhängt, gilt ti ≥ |Si |. Jede Subfunktion von f auf Si wird durch ein Branchingprogramm berechnet, das wir auf folgende Weise aus G erhalten. Die Variablen außerhalb von Si werden durch Konstanten ersetzt. Damit steht für die zugehörigen Knoten der Nachfolger fest und die in den Knoten eingehenden Kanten können direkt zum Nachfolger geleitet werden. Also ist die Größe des entstehenden Branchingprogramms durch ti + 2 beschränkt. Nach Lemma 14.2.1 ist die Anzahl der nicht konstanten Subfunktionen von f auf Si also auf folgende Weise beschränkt: si ≤ ti · |Si |ti ((ti + 1)!)2 . 124 Da |Si | ≤ ti , folgt für ti ≥ 4 i si ≤ ttii +1 ((ti + 1)!)2 ≤ t4t i . Hieraus folgt ti log ti = Ω(log si ) und schließlich ti = Ω((log si )/ log log si ). 2 Satz 14.2.3: Mit den Voraussetzungen von Satz 14.2.2 gilt für die Formelgröße L(f ), dass X L(f ) = Ω( log si ) 1≤i≤k ist. Beweis: Formeln können durch binäre Bäume dargestellt werden, wobei viele Blätter mit derselben Variablen markiert sein dürfen. Wir zeigen die untere Schranke für die Anzahl der Blätter, die um 1 größer als die Anzahl innerer Knoten ist. Sei ti die Anzahl der mit Variablen aus Si markierten Blätter. Es genügt zu zeigen, dass ti ≥ 41 log si ist. Wir betrachten nun die Menge Wi der Knoten in der Formel, für die im linken und im rechten Teilbaum Si -Blätter liegen. Dann ist |Wi | = ti − 1. Wir betrachten nun Pfade im Baum, die an Si -Blättern oder Wi -Knoten starten und in Wi -Knoten oder der Wurzel enden, ohne im Inneren Wi -Knoten zu enthalten. Bei jedem Wi -Knoten kommen zwei dieser Pfade an, bei der Wurzel eventuell ein weiterer Pfad. Also gilt für die Anzahl pi der Pfade, dass pi ≤ 2|Wi | + 1 ist. Wenn wir nun die Variablen außerhalb von Si durch Konstanten ersetzen und den Start eines Pfades als Funktion g auffassen, dann wird am Ende des Pfades g, g, 0 oder 1 berechnet. Also gibt es maximal 4pi Si -Subfunktionen, d.h. si ≤ 4pi ≤ 42|Wi |+1 ≤ 42ti und somit log si ≤ 4ti und ti ≥ 1 4 log si . 2 Schließlich wollen wir eine Funktion angeben, mit der wir die größtmöglichen unteren Schranken erhalten, die mit der Nechiporuk-Methode erzielbar sind. Definition 14.2.4: Die Funktion ISAn (indirect storage access, indirekte Adressierung) ist für n = 2k auf n + k Variablen x0 , . . . , xn−1 , a0 , . . . , ak−1 definiert. Der Vektor (ak−1 , . . . , a0 ) wird als Binärzahl |a| ∈ {0, 1, . . . , n − 1} und damit als indirekte Adresse interpretiert. Dann betrachten wir die k x-Variablen x|a| , . . . , x|a|+k−1 (die Indizes werden mod n interpretiert) und interpretieren diesen Vektor als Binärzahl α(x, a) ∈ {0, 1, . . . , n − 1}. Schließlich ist ISAn (a, x) = xα(a,x) . Satz 14.2.5: i) BP(ISAn ) = Ω(n2 / log2 n). 125 ii) L(ISAn ) = Ω(n2 / log n). Beweis: Wir betrachten die bn/kc disjunkten Variablenmengen Si = {x(i−1)k , . . . , xik−1 }, 1 ≤ i ≤ bn/kc. Wir sind an unteren Schranken für die Anzahl si der Si -Subfunktionen interessiert. Dazu setzen wir die a-Variablen nur auf eine Weise konstant, nämlich die, für die |a| = (i − 1)k ist. Die Variablen aus Si dienen nun als direkte Adresse, die auf jede x-Variable, insbesondere aber auf die n − k x-Variablen außerhalb von Si zeigen kann. Daher liefern alle 2n−k Belegungen dieser Variablen verschiedene Subfunktionen. Es folgt si ≥ 2n−k und log si = Ω(n). Da (log x)/ log log x eine monoton wachsende Funktion ist, ist (log si )/ log log si = Ω(n/ log n). Die Schranken folgen aus Satz 14.2.2 und Satz 14.2.3, da wir bn/kc = Ω(n/ log n) Si -Mengen haben. 2 Auf eingeschränkte Branchingprogrammmodelle, für die exponentielle untere Schranken beweisbar sind, gehen wir nicht näher ein. Diese Modelle und Schranken sind einerseits durch die Entwicklung von Techniken motiviert, mit denen untere Schranken bewiesen werden können. Andererseits bilden einige dieser Modelle Datenstrukturen für boolesche Funktionen, die vielfältige Anwendungen, insbesondere in der Verifikation finden. 14.3 Reduktionskonzepte für Schaltkreise und zugehörige Komplexitätsklassen Wir stellen hier Reduktionskonzepte vor, mit denen sich untere Schranken für die Komplexität boolescher Funktionen übertragen lassen. In diesem Zusammenhang ist es sinnvoll, auch Komplexitätsklassen vorzustellen, die auf Schaltkreisen mit beschränkter Tiefe aufbauen. Da Nick Pippenger 1979 die entscheidenden Ergebnisse über die Robustheit dieser Komplexitätsklassen erzielt hat, wurden diese Klassen von Cook mit NC (Nick’s Class) bezeichnet. Definition 14.3.1: a) NC ist die Klasse boolescher Funktionen f = (fn ), fn ∈ Bn,m(n) , die durch Schaltkreise polynomieller Größe und polylogarithmischer Tiefe logO(1) n berechnet werden können. b) NC k ist die Klasse boolescher Funktionen f = (fn ), fn ∈ Bn,m(n) , die durch Schaltkreise polynomieller Größe und Tiefe O(logk n) berechnet werden können. Bemerkung 14.3.2: NC 1 ⊆ NC 2 ⊆ . . . ⊆ NC k ⊆ NC k+1 ⊆ . . . ⊆ NC ⊆ P/Poly. NC-Schaltkreise gelten als effiziente Schaltkreise. An die Tiefe, also die parallele Rechenzeit stellen wir also weitaus größere Anforderungen als an die Schaltkreisgröße, also die sequentielle Rechenzeit. Die zentrale Rolle, die die Klasse P bzw. P/Poly für die Effizienz sequentieller Berechnungen spielt, wird für parallele Berechnungen durch die Klasse NC k bzw. NC übernommen. Bisher haben wir Schaltkreise betrachtet, deren Bausteine höchstens zwei Eingänge haben. In der Praxis ist dieser sogenannte Fan-in nicht durch 2 beschränkt. Daher werden auch 126 Schaltkreise mit unbeschränktem Fan-in betrachtet, d. h. ∧- und ∨-Bausteine dürfen eine beliebige Anzahl von Eingängen haben. Die der NC-Hierarchie entsprechende Hierarchie wird mit AC (Alternating Class) bezeichnet. Diese Namensgebung soll auf den engen Zusammenhang zu alternierenden Turingmaschinen, die wir in dieser Vorlesung nicht behandeln, hinweisen. Definition 14.3.3: a) AC ist die Klasse der Folgen boolescher Funktionen f = (fn ), fn ∈ Bn,m(n) , die durch Schaltkreise mit unbeschränktem Fan-in, polynomieller Größe und polylogarithmischer Tiefe berechnet werden können. b) AC k bzw. AC 0,d ist die Klasse der Folgen boolescher Funktionen f = (fn ), fn ∈ Bn,m(n) , die durch Schaltkreise mit unbeschränktem Fan-in, polynomieller Größe und Tiefe O(logk n) bzw. d berechnet werden können. Bei unbeschränktem Fan-in können bereits in konstanter Tiefe Funktionen, die von allen Eingaben abhängen, berechnet werden. Daher ist die Definition der Klassen AC 0 , wobei O(log0 n) als O(1) interpretiert wird, und AC 0,d sinnvoll. Bei Betrachtungen von AC 0,d wird angenommen, dass neben den Eingabevariablen x1 , . . . , xn auch deren Negationen x̄1 , . . . , x̄n Eingänge des Schaltkreises sind. Auch hier gilt offensichtlich die folgende Bemerkung. Bemerkung 14.3.4: AC 0,1 ⊆ AC 0,2 ⊆ . . . ⊆ AC 0,d ⊆ AC 0,d+1 ⊆ . . . ⊆ AC 0 ⊆ AC 1 ⊆ . . . ⊆ AC k ⊆ AC k+1 ⊆ . . . ⊆ AC. Die NC- und AC-Hierarchie sind eng verzahnt. Satz 14.3.5: a) NC k ⊆ AC k . b) AC k ⊆ NC k+1 . c) NC = AC. Beweis: a) Jeder NC k -Schaltkreis ist auch ein AC k -Schaltkreis. b) Sei C = (Cn ) eine Folge von Schaltkreisen für f = (fn ) mit unbeschränktem Fan-in, polynomieller Größe p(n) und Tiefe O(logk n). Für ∧- und ∨-Bausteine ist es nutzlos, wenn zwei oder mehrere Eingänge gleich sind. Es gilt z. B. y ∧ x ∧ y = x ∧ y. Auch sollten nicht xi und x̄i Eingänge des gleichen Bausteins sein. Konstante Eingänge sind ebenfalls sinnlos. Also hat jeder Baustein weniger als p(n)+n Eingänge. Derartige Bausteine können durch balancierte, binäre Bäume mit Bausteinen des gleichen Typs ersetzt werden. Die Schaltkreisgröße wächst höchstens um den Faktor p(n) + n und bleibt polynomiell. Die Tiefe wächst höchstens um den Faktor dlog(p(n) + n)e = O(log n) und ist O(logk+1 n). c) Diese Aussage folgt aus den Aussagen a) und b). 2 Wir haben erwähnt, dass es auch für Schaltkreise kaum befriedigende untere Schranken für die Komplexität von Problemen gibt. Den Ausweg kennen wir bereits. Wir bestimmen mit Hilfe von Reduktionskonzepten die relative Komplexität von Problemen. Das erfolgreiche Konzept von Orakelturingmaschinen ersetzen wir hier durch Orakelschaltkreise. 127 Definition 14.3.6: Es sei g = (gn ) mit gn ∈ Bk(n),l(n) für polynomiell wachsende Funktionen k und l. Orakelschaltkreise mit Orakel g dürfen neben den üblichen Bausteinen auch Bausteine für gi und ḡi , wobei i ≤ p(n) für ein Polynom p ist, enthalten. Der Einfachheit halber nehmen wir im folgenden an, dass auch die negativen Literale x̄1 , . . . , x̄n zu den Inputs der Schaltkreise gehören. Ein Problem P1 ist insbesondere dann auf P2 reduzierbar, wenn P1 in einem gewissen Sinn ein Spezialfall von P2 ist. Definition 14.3.7: f = (fn ) ist eine Projektion von g = (gn ), Notation f ≤proj g, wenn f durch g-Orakelschaltkreise berechenbar ist, die nur aus einem Orakelbaustein bestehen. Eine Projektion heißt read-once Projektion, Notation f ≤rop g, wenn in den Orakelbaustein jede Variable xi nur einmal (eventuell negiert) eingeht. Im Allgemeinen enthalten Orakelschaltkreise sowohl viele normale Bausteine als auch viele Orakelbausteine. Daher stellt sich die Frage, welche Kosten die Orakelbausteine verursachen. Definition 14.3.8: a) f = (fn ) heißt NC 1 -reduzierbar auf g = (gn ), Notation f ≤1 g, wenn f durch g-Orakelschaltkreise polynomieller Größe und Tiefe O(log n) berechenbar ist. Der Fan-in normaler Bausteine ist dabei durch 2 beschränkt. Ein Orakelbaustein für gi oder ḡi trägt den Summanden i zur Schaltkreisgröße bei, seine Tiefe ist dlog ie. b) f = (fn ) heißt AC 0 -reduzierbar (constant depth reducible) auf g = (gn ), Notation f ≤cd g, wenn f durch g-Orakelschaltkreise mit unbeschränktem Fan-in, polynomieller Größe und Tiefe O(1) berechenbar ist. Ein Orakelbaustein für gi oder ḡi trägt den Summanden i zur Schaltkreisgröße bei, seine Tiefe ist 1. Lemma 14.3.9: a) f ≤proj g ⇒ f ≤cd g ⇒ f ≤1 g. b) ≤proj , ≤cd und ≤1 sind reflexiv und transitiv. Beweis: a) Falls f ≤proj g, lässt sich fn durch einen Orakelbaustein für gi oder ḡi mit i ≤ p(n) für ein Polynom p berechnen. Dieser g-Orakelschaltkreis beweist auch f ≤cd g. Falls f ≤cd g, lässt sich f durch g-Orakelschaltkreise mit unbeschränktem Fan-in berechnen. Die Größe ist polynomiell und die Tiefe O(1). Wir ersetzen wie im Beweis von Satz 14.3.5 ∧- und ∨-Bausteine mit zu großem Fan-in durch balancierte binäre Bäume. Jeder Baum hat polynomielle Größe und logarithmische Tiefe. Für die Orakelbausteine ändert sich nur die Bewertung der Tiefe, die Tiefe jedes Orakelbausteins ist O(log n). Der so erhaltene Fan-in 2 g-Orakelschaltkreis hat polynomielle Größe und logarithmische Tiefe. b) Offensichtlich gilt f ≤proj f , f ≤cd f und f ≤1 f , da sich fn durch einen fn Orakelbaustein berechnen lässt. Wir zeigen die Transitivität zunächst für Projektionen. Sei f ≤proj g und g ≤proj h. Dann gibt es (o.B.d.A. monoton wachsende) Polynome p und q, so dass sich fn durch einen Orakelbaustein gi oder ḡi mit i ≤ p(n) und gi durch einen Orakelbaustein hj oder h̄j mit j ≤ q(i) berechnen lässt. Also lässt sich fn durch einen Orakelbaustein hj oder h̄j mit j ≤ q ◦ p(n) berechnen. 128 Sei nun f ≤cd g und g ≤cd h. Wir konstruieren einen h-Orakelschaltkreis für fn , indem wir in dem wegen f ≤cd g existierenden g-Orakelschaltkreis (unbeschränkter Fan-in, polynomielle Größe, konstante Tiefe c) für fn jeden g-Orakelbaustein durch einen wegen g ≤cd h existierenden h-Orakelschaltkreis ersetzen. Diese h-Orakelschaltkreise haben polynomielle Größe und eine durch eine Konstante c0 beschränkte Tiefe. Der h-Orakelschaltkreis für fn hat eine durch cc0 beschränkte Tiefe. Die Kosten i der g-Orakelbausteine für gi oder ḡi werden für ein Polynom q durch q(i) ersetzt. Damit bleiben die Kosten polynomiell. Sei schließlich f ≤1 g und g ≤1 h. Der Orakelschaltkreis für f ≤1 h wird genauso wie im letzten Abschnitt konstruiert. Analog folgt, dass die Größe polynomiell bleibt. Für die Abschätzung der Tiefe betrachten wir einen Pfad in dem g-Orakelschaltkreis für fn . Wenn dieser Pfad k Bausteine und m Orakelbausteine für g-Funktionen mit i(1), . . . , i(m) Inputs enthält, gilt für eine Konstante c k + dlog i(1)e + · · · + dlog i(m)e ≤ c log n. Die Tiefe des h-Orakelschaltkreises, der den Orakelbaustein gi(j) oder ḡi(j) ersetzt, ist für eine Konstante c0 ≥ 1 durch c0 dlog i(j)e beschränkt. Insgesamt ist also die Tiefe des h-Orakelschaltkreises für fn durch cc0 log n beschränkt. 2 Satz 14.3.10: a) Falls g ∈ AC k und f ≤cd g, ist f ∈ AC k . b) Falls g ∈ NC k und f ≤1 g, ist f ∈ NC k . Beweis: a) Wir starten mit g-Orakelschaltkreisen mit unbeschränktem Fan-in, die fn mit polynomieller Größe und einer durch eine Konstante c beschränkten Tiefe berechnen. Diese Schaltkreise existieren, da f ≤cd g vorausgesetzt ist. Nun ersetzen wir, wie bei Orakeln üblich, die g-Orakelbausteine durch AC k -Schaltkreise. Analog zu dem Beweis von Lemma 14.3.9 folgt, dass die Größe polynomiell bleibt. Jeder Orakelbaustein wird durch einen Schaltkreis der Tiefe O(logk n) ersetzt, also ist die Gesamttiefe O(logk n). b) Der Beweis verläuft bis auf die Abschätzung der Tiefe analog zum Beweis von Aussage a). Auf jedem Pfad des g-Orakelschaltkreises für fn liegen O(log n) normale Bausteine und Orakelbausteine für gi(1) , . . . , gi(m) bzw. deren Negationen. Dabei ist nach Voraussetzung die Summe aller dlog i(j)e für eine Konstante c durch c log n beschränkt. Die Orakelbausteine werden durch Schaltkreise mit Fan-in 2 ersetzt, deren Tiefe für ein Polynom p durch O(logk p(i(j))) und damit für eine Konstante c0 durch c0 logk i(j) beschränkt ist. Da für k ≥ 1 die Funktion x → xk konvex ist, ist die Summe aller c0 logk i(j) für eine Konstante c00 durch c00 logk n beschränkt. 2 Falls f ≤proj g und g polynomielle Formelgröße hat, hat auch f polynomielle Formelgröße, gleiches gilt für die Branchingprogrammgröße. 14.4 Schaltkreise mit unbeschränktem Fan-in und konstanter Tiefe Bevor wir in das Thema dieses Unterkapitels einsteigen, soll erwähnt werden, dass für unbeschränkte Tiefe für den Spezialfall monotoner Schaltkreise (nur AND und OR sind 129 als Bausteine zugelassen) exponentielle Schranken bekannt sind. Allerdings ist diese Basis nicht vollständig und es können nur genau die monotonen Funktionen (a ≤ b ⇒ f (a) ≤ f (b)) realisiert werden. Bisher haben wir exponentielle untere Schranken für die Komplexität von Problemen nur unter (allerdings plausiblen) Vermutungen zeigen können. Für Schaltkreise mit stark beschränkter Tiefe ist die Situation anders. Wir wollen die drei wichtigsten Resultate vorstellen. Allerdings sind die Beweise so kompliziert, dass wir jeweils nur die Beweisideen vorstellen. Die kleinste Klasse innerhalb der AC-NC-Hierarchie ist AC 0 . Es gibt heutzutage viele Methoden, um zu zeigen, dass Funktionen nicht in AC 0 enthalten sind. Wir werden die Methode von Håstad (1986) vorstellen. Håstad hat 1994 für diese Arbeit den Gödelpreis erhalten. Satz 14.4.1: Die Paritätsfunktion PARn (x1 , . . . , xn ) = x1 ⊕ · · · ⊕ xn ist nicht in AC 0 enthalten. Die Methode von Håstad ist sehr exakt. Die Methode kann direkt angewendet werden auf alle Funktionen, die nur lange Primimplikanten und Primklauseln haben. Mit Reduktionen können weitere Funktionen als nicht zu AC 0 gehörig nachgewiesen werden. Wir kennen keine Methode, um zu zeigen, dass Funktionen in NP−NC 1 liegen. Andererseits ist NC 1 − AC 0 6= ∅, da die Paritätsfunktion trivialerweise in NC 1 enthalten ist. Wir sind daher an Komplexitätsklassen zwischen AC 0 und NC 1 interessiert. Definition 14.4.2: ACC k [m] ist die Klasse aller booleschen Funktionen, die in Schaltkreisen mit unbeschränktem Fan-in, polynomieller Größe, Tiefe O(logk n) über Bausteinen, die ∧, ∨ und MOD-m realisieren können, berechenbar sind. In ACC 0 [2]-Schaltkreisen sind bei konstanter Tiefe und polynomieller Größe Konjunktionen und Paritätsbausteine erlaubt. Wir können auf Disjunktionen leicht verzichten, da Negationen durch ⊕1“ ersetzt werden können und sich daher Disjunktionen mit den de ” Morgan Regeln ersetzen lassen. Das folgende Ergebnis stammt von Razborov (1987), wobei der Beweis von Paterson vereinfacht wurde. Smolensky hat die Resultate auf ACC 0 [p] und beliebige Primzahlen p und Primzahlpotenzen erweitert. Bis heute kann für Zahlen m mit zwei verschiedenen Primfaktoren, also z. B. m = 6, nicht nachgewiesen werden, dass Funktionen in NP − ACC 0 [m] liegen. Satz 14.4.3: Die Majoritätsfunktion MAJn (x1 , . . . , xn ), die den Wert 1 liefert, wenn mindestens die Hälfte der Inputs Einsen sind, ist nicht in ACC 0 [2] enthalten. Schaltkreise 1/(2k−1) ) der Tiefe k über {∧, ⊕} benötigen mindestens 2Ω(n Bausteine. Damit die Größe log n 1 nötig. Andererseits polynomiell wird, ist für eine Konstante c mindestens Tiefe 2 c+log log n log n genügt bei Tiefe O( log log n ) polynomielle Größe. Damit ist die Majoritätsfunktion auch nicht in AC 0 enthalten. Mit geeigneten Reduktionen kann für zahlreiche weitere Funktionen nachgewiesen werden, dass sie weder in AC 0 noch in ACC 0 [2] liegen. 130 Die Majoritätsfunktion ist auch in NC 1 enthalten. Daher wäre es konsequent, im nächsten Schritt zusätzlich Majoritätsbausteine zuzulassen. Statt dessen werden Thresholdbaun steine erlaubt, die Thresholdfunktion T≥k (x1 , . . . , xn ) liefert den Wert 1, wenn die Einn n gabe mindestens k Einsen enthält. T≤k ist die Negation von T≥k+1 . Offensichtlich ist n n MAJn = T≥dn/2e . Andererseits ist jede Thresholdfunktion T≥k eine Projektion von MAJ2n . In der Eingabe für MAJ2n werden n − k Variablen auf 1 und k Variablen auf 0 gesetzt, um n T≥k zu erhalten. Konjunktionen und Disjunktionen sind ebenfalls Thresholdfunktionen, n n nämlich T≥n und T≥1 . Die Paritätsfunktion ist keine Thresholdfunktion, sie kann aber durch Thresholdschaltkreise polynomieller Größe in Tiefe 2 dargestellt werden. Definition 14.4.4: TC 0,d und TC k sind die Klassen boolescher Funktionen, die in Thresholdschaltkreisen mit unbeschränktem Fan-in, polynomieller Größe (hier zählen auch die Kanten) und Tiefe d bzw. O(logk n) berechenbar sind. Satz 14.4.5: Die Paritätsfunktion ist in TC 0,2 enthalten. Beweis: Auf der ersten Ebene benutzen wir für jedes ungerade k ≤ n zwei Thresholdbausteine und realisieren T≥k (x1 , . . . , xn ) und T≤k (x1 , . . . , xn ). Dieses Paar von Bausteinen liefert für alle Eingaben mindestens eine 1. Genau dann, wenn die Eingabe k Einsen enthält, liefert das Paar zwei Einsen. Wir haben l = dn/2e Bausteinpaare. Sie liefern l Einsen, wenn die Zahl der Einsen im Input gerade ist, und l + 1 Einsen, wenn die Zahl der Einsen ungerade ist. Also erhalten wir in der zweiten Ebene die Paritätsfunktion, wenn 2l wir T≥l+1 auf die Bausteine der ersten Ebene anwenden. 2 Korollar 14.4.6: AC k ⊆ ACC k [2] ⊆ TC k ⊆ NC k+1 für alle k. Beweis: Die erste Beziehung ist trivial, die zweite folgt aus Satz 14.4.5 und die dritte aus der Tatsache, dass die Thresholdfunktionen in NC 1 liegen (Übungsaufgabe). 2 Wir wissen aus Satz 14.4.3, dass MAJ ∈ TC 0,1 − ACC 0 [2] ist. Da die Paritätsfunktion in den einzelnen Variablen weder monoton noch antiton ist, ist PAR ∈ / TC 0,1 . Mit Satz 14.4.5 folgt PAR ∈ TC 0,2 − TC 0,1 . Das innere Produkt (Skalarprodukt) IP zweier Vektoren ist definiert durch IP(x1 , . . . , xn , y1 , . . . , yn ) = x1 y1 ⊕ x2 y2 ⊕ · · · ⊕ xn yn . Nach Satz 14.4.5 ist IP ∈ TC 0,3 . Hajnal, Maass, Pudlák, Szegedy und Turán (1987) haben gezeigt, dass IP ∈ / TC 0,2 ist. In Kap. 14.5 werden wir daraus mit Hilfe einer Reduktion folgern, dass die Multiplikation nicht in TC 0,2 enthalten ist. Satz 14.4.7: Das innere Produkt ist nicht in TC 0,2 enthalten. Aus heutiger Sicht kann noch nicht widerlegt werden, dass TC 0,3 = NP (uniforme Variante von TC 0,3 ) ist. Im folgenden wollen wir die Beweise der Sätze 14.4.1, 14.4.3 und 14.4.7 zumindest skizzieren. 131 Satz 14.4.1: Die Paritätsfunktion PARn (x1 , . . . , xn ) = x1 ⊕ · · · ⊕ xn ist nicht in AC 0 enthalten. Schaltkreise mit unbeschränktem Fan-in und Tiefe d benötigen mindestens 1/d 2(n /10)−1 Bausteine. Damit die Größe polynomiell wird, ist für eine Konstante c minlog n nötig. Andererseits genügt bei Tiefe d logloglogn n e + 1 eine Größe von destens Tiefe c+log log n O(n2 / log n). Beweis: Die obere Schranke ergibt sich folgendermaßen. Wir fassen jeweils dlog ne Variablen mit der Paritätsfunktion zusammen. Wenn wir dafür ein Minimalpolynom oder die duale Variante einsetzen, genügt Tiefe 2 bei linearer Größe. Mit höchstens dn/ log ne dieser Module können wir die Paritätsfunktion in Größe O(n2 / log n) realisieren. Die Tiefe beträgt 2d logloglogn n e. Dabei gehen wir von einem binären Baum der Tiefe dlog ne aus, in dem jeweils dlog log ne Ebenen durch parallele Module ersetzt werden. Wenn wir nun für die Ebenen abwechselnd ∧-∨-Schaltkreise und ∨-∧-Schaltkreise einsetzen, können benachbarte Ebenen verschmolzen werden. Es bleibt die untere Schranke für Tiefe d zu zeigen. Die anderen Ergebnisse folgen daraus durch Standardrechnungen. Der Beweis ist ein Induktionsbeweis über die Tiefe d. Wir unterscheiden Σd - und Πd Schaltkreise, bei denen die Bausteintypen ∧ und ∨ auf den Ebenen abwechseln und die Outputebene einen ∨-Baustein (bei Σd -Schaltkreisen) bzw. einen ∧-Baustein (bei Πd Schaltkreisen) enthält. Dabei geht man davon aus, dass mit Hilfe der de-Morgan-Regeln Negationen an die Eingänge geschoben werden und bei der Tiefe nicht mitzählen. Diese Bezeichnungen sind absichtlich ähnlich zu denen der polynomiellen Hierarchie gewählt, denn Disjunktionen entsprechen ∃-Quantoren und Konjunktionen ∀-Quantoren. Es ist offensichtlich, dass Σ2 - und Π2 -Schaltkreise für PARn auf der ersten Ebene 2n−1 Bausteine mit Fan-in n haben. Wie kann der Induktionsschritt durchgeführt werden? Betrachten wir einen Schaltkreis, dessen erste Ebene aus ∧-Bausteinen und dessen zweite Ebene aus ∨-Bausteinen besteht, diese beiden Ebenen bilden also Σ2 -Schaltkreise. Wenn wir nun diese Teilschaltkreise durch äquivalente Π2 -Schaltkreise ersetzen, enthalten die Ebenen 2 und 3 ∧-Bausteine und können verschmolzen werden. Das Ergebnis ist ein Schaltkreis der Tiefe d − 1, für den die Induktionsvoraussetzung angewendet werden kann. Dies ist aber nur dann sinnvoll, wenn die Ersetzung der Σ2 -Schaltkreise durch Π2 Schaltkreise die Größe der Schaltkreise nicht zu sehr vergrößert hat. Dies kann jedoch im allgemeinen nicht sichergestellt werden. Håstad hat den Fan-in auf der ersten Ebene (im Folgenden kurz 1-Fan-in) zum Maßstab gemacht. Damit dieser für den gegebenen Schaltkreis klein ist, erhält der Schaltkreis zu Beginn eine Dummy-Ebene mit Bausteinen mit Fan-in 1, die also die Identität realisieren. Aber was ist gewonnen? Ein Σ2 -Schaltkreis mit kleinem 1-Fan-in kann u.U. nur durch einen Π2 -Schaltkreis mit großem 1-Fan-in ersetzt werden, z.B. hat x1 x2 ∨x3 x4 ∨· · ·∨xn−1 xn auf der ersten Ebene Fan-in 2. Die Primklauseln haben jedoch Länge n/2, und Π2 Schaltkreise brauchen auf der ersten Ebene Fan-in n/2. Die Paritätsfunktion hat die Struktureigenschaft, dass wir nach Konstantsetzung einiger Variablen eine Paritätsfunktion (oder ihre Negation) auf weniger Variablen erhalten. Vielleicht können wir ja sicher stel132 len, dass es genügt, wenige Variablen geeignet konstant zu setzen, um die Σ2 -Schaltkreise durch Π2 -Schaltkreise mit kleinem Fan-in auf der ersten Ebene zu ersetzen (analoges gilt dann natürlich für die Ersetzung von Π2 -Schaltkreisen durch Σ2 -Schaltkreise)? Niemand weiß, wie eine solche Konstantsetzung zu berechnen ist. Håstads Switching Lemma sichert aber die Existenz einer geeigneten Konstantsetzung. Um das Switching-Lemma anzugeben, betrachten wir zufällige Belegungen einer Teilmenge von Variablen. Sei Rnl die Menge aller partiellen Belegungen von n Variablen, bei denen l Variablen unbelegt bleiben. Wir können partielle Belegungen aus Rnl zufällig gemäß Gleichverteilung wählen, indem wir zunächst zufällig eine Menge von n − l Variablen wählen und die Variablen in dieser Menge anschließend zufällig gemäß Gleichverteilung mit Nullen oder Einsen belegen. Durch Anwendung einer solchen Konstantsetzung ρ auf eine Funktion f entsteht die Subfunktion f|ρ auf l Variablen. Das Switching-Lemma lautet: Switching-Lemma: Sei f : {0, 1}n → {0, 1} eine Funktion, die Σ2 -Schaltkreise mit 1Fan-in höchstens s hat, und sei l > 0. Sei ρ eine zufällig gewählte partielle Belegung aus Rnl . Die Wahrscheinlichkeit, dass f|ρ keinen Π2 -Schaltkreis mit 1-Fan-in höchstens t hat, ist kleiner als t 5ls . n Wir verzichten auf den Beweis des Switching-Lemmas und verweisen für die Beweisidee auf das Buch von Jukna (Extremal Combinatorics, Springer, 2001, S. 118ff.). Wir wollen aber intuitiv erklären, warum das Switching Lemma gilt. Die Funktion f kann nach Voraussetzung als Disjunktion von recht kurzen Primimplikanten, die Länge ist durch t beschränkt, dargestellt werden. Wie zuvor an dem Beispiel x1 x2 ∨ x3 x4 ∨ · · · ∨ xn−1 xn gesehen, können die Primklauseln lang sein. Eine einzelne lange Primklausel hat bei der zufälligen Konstantsetzung eine große Chance, durch 1 ersetzt zu werden. Allerdings arbeitet die Konstantsetzung nicht unabhängig auf den Primklauseln, da diese gleiche Literale und entgegengesetzte Literale enthalten können. Kurze Primimplikanten implizieren aber, dass Konstantsetzungen, die mit hoher Wahrscheinlichkeit nicht zu viele Variablen durch Konstanten ersetzen, dennoch lange Primklauseln genügend verkürzen. Wir führen nun die oben skizzierte Beweisidee aus und beweisen den Satz indirekt. Sei 1/d C die größte Zweierpotenz mit C < 2n /10 und sei ni := bn/(10 log C)d−i+1 c. Mit einer Induktion über die Tiefe i beweisen wir die folgende Aussage (*): Für i ∈ {2, . . . , d + 1} gibt es weder einen {∧, ∨}-Schaltkreis mit Tiefe i und unbeschränktem Fan-in für PARni noch für PARni , bei dem die Anzahl der Bausteine auf den Ebenen 2, . . . , i höchstens C ist und der 1-Fan-in durch log C beschränkt ist. Der Induktionsanfang ist i = 2. Dann ist die Anzahl der Variablen n 10n log C 10n log C n2 = = > = 10 log C. (10 log C)d−1 (10 log C)d n Die Ungleichung folgt dabei aus der Definition von C. Andererseits ist aus Rechnerstrukturen bekannt, dass die Primimplikanten und Primklauseln für Parity auf n2 Variablen 133 mindestens die Länge n2 haben. Nach der Rechnung ist der 1-Fan-in log C aber kleiner als n2 /10. Ein solcher Schaltkreis kann also nicht PARn2 oder PARn2 berechnen. Für den Induktionsschritt von i − 1 nach i setzen wir voraus, dass die Aussage für Tiefe i − 1 bewiesen ist. Annahme: Es gibt {∧, ∨}-Schaltkreise mit unbeschränktem Fan-in, Tiefe i und 1-Fan-in log C für PARni oder PARni , bei denen die Anzahl der Bausteine auf den Ebenen 2, . . . , i durch C beschränkt ist. O.B.d.A. bestehe die erste Ebene aus ∧-Bausteinen. Aus der Größenschranke folgt, dass die Anzahl der ∨-Bausteine auf der zweiten Ebene höchstens C ist. Wir betrachten nun die Funktion, die an einem ∨-Baustein g der zweiten Ebene berechnet wird. Aufgrund des beschränkten 1-Fan-ins des Schaltkreises ist dies eine Funktion, die als Disjunktion von Monomen der Länge höchstens log C darstellbar ist. Wir wenden auf diese Funktion das Switching-Lemma mit ni l= und s = t = log C 10 log C an. Die Misserfolgswahrscheinlichkeit ist kleiner als t log C log C 5l log C 1 5ni log C 1 ≤ = = . ni 10(log C)ni 2 C Wenn wir also das Switching-Lemma auf alle (d.h. maximal C) Funktionen, die auf der zweiten Ebene berechnet werden, anwenden, ist die Misserfolgswahrscheinlichkeit kleiner als C · 1/C = 1. Dies heißt, dass es eine partielle Belegung in Rnl i gibt, so dass nach Ausführung dieser Belegung alle Funktionen, die auf der zweiten Ebene des Schaltkreises berechnet werden, in Konjunktionen von Klauseln der Länge höchstens t = log C umgeformt werden können. Nach Durchführung dieser Umformung erhalten wir einen Schaltkreis, der auf der zweiten und dritten Ebene ∧-Bausteine enthält. Diese Bausteine können zu einer Ebene zusammengefasst werden. Der entstandene Schaltkreis hat die Tiefe i − 1, einen 1-Fan-in von höchstens log C und er berechnet Parity (oder die Negation von Parity) auf l = bni /(10 log C)c = ni−1 Variablen. Die Anzahl der Bausteine auf den Ebenen 2, . . . , i − 1 ist nicht größer als die Anzahl der Bausteine auf den Ebenen 2, . . . , i in dem gegebenen Schaltkreis der Tiefe i. Die Aussage für die Negation der berechneten Funktion folgt durch Negation der Ausgabe und anschließendes Verschieben dieser Negation zu den Eingängen mit Hilfe der de-Morgan-Regeln. Wir erhalten damit einen Widerspruch zur Induktionsvoraussetzung. Also ist die Annahme falsch und wir haben die Aussage (*) bewiesen. Aus der Aussage (*) folgt nun die untere Schranke des Satzes: Wenn es einen {∧, ∨}Schaltkreis mit unbeschränktem Fan-in, Tiefe d und Größe höchstens C für PARn gäbe, könnten wir durch Einfügen von Dummy-Bausteinen an den Eingängen einen {∧, ∨}Schaltkreis mit unbeschränktem Fan-in, Tiefe d + 1, höchstens C Bausteinen auf den Ebenen 2, . . . , d + 1 und 1-Fan-in 1 konstruieren. Diesen gibt es aber nach der Aussage (*) nicht. 2 134 Beweisskizze von Satz 14.4.3: Die Menge {0, 1} mit den Operationen ⊕ und ∧ bildet den Körper 2 . Daher ist es hier naheliegend, anstelle der im Beweis von Satz 14.4.1 benutzten kombinatorischen Methoden algebraische Methoden zu verwenden. Indem wir in der DNF für f Negationen durch ⊕1 und die äußere Disjunktion durch die Paritätsfunktion ersetzen, erhalten wir, nachdem wir ausmultipliziert haben, ein Polynom über 2 für f . Da in der Mintermdarstellung der DNF stets höchstens ein Term 1 liefern kann, ist die Ersetzung der äußeren Disjunktion durch die Paritätsfunktion korrekt. Wir zeigen zunächst, dass sich jede Funktion in ACC 0 [2] gut durch ein Polynom kleinen Grades approximieren lässt, und dann, dass dies für bestimmte Thresholdfunktionen nicht möglich ist. Die untere Schranke für die Majoritätsfunktion folgt, da jede Thresholdfunktion auf n Variablen eine Projektion von MAJ2n ist. Was sind Approximationen? Wir definieren den Abstand d(f, g) zweier boolescher Funktionen f und g als die Zahl der Inputs a mit f (a) 6= g(a) und den Abstand d(f, A) zwischen f und einer Funktionenmenge A als Minimum aller d(f, g) mit g ∈ A. Es sei Pd die Menge der Polynome, deren Grad durch d beschränkt ist. Offensichtlich erhöhen Additionen, also ⊕-Bausteine, den Grad nicht, wohl aber Multiplikationen, also ∧-Bausteine. So hat das Produkt p von n Variablen, also Polynomen vom Grad 1, selber Grad n. Es ist p = x1 ∧ · · · ∧ xn . Offensichtlich kann dieses Produkt durch ein Polynom kleinen Grades approximiert werden. Der Abstand zum Nullpolynom beträgt nur 1. Diese triviale Erkenntnis wollen wir verallgemeinern. Behauptung 1: Sei H eine Teilmenge von Pd und h die Konjunktion aller Funktionen in H. Dann kann h durch ein Polynom, dessen Grad nicht zu groß ist, gut approximiert werden. Genauer: Für jedes r gibt es ein g ∈ Pdr mit d(h, g) ≤ 2n−r . Wir zeigen die Behauptung durch Abzählargumente, d. h. wir benutzen das einfache Schubfachprinzip (pigeon-hole principle): Werden z Objekte auf k Schubfächer verteilt, enthält mindestens ein Schubfach mindestens dz/ke Objekte (Engländer argumentieren mit Tauben und Taubenschlägen). Sei H = {h1 , . . . , hm }, also h = h1 ∧ · · · ∧ hm . Sei H ∗ die Menge aller Summen einiger hi = hi ⊕ 1. Dann ist H ∗ ⊆ Pd . Für q1 , . . . , qr ∈ H ∗ ist also g = q1 ∧ · · · ∧ qr ∈ Pdr . Wir werden zeigen, dass ein g die Behauptung erfüllt. Dazu untersuchen wir die Beziehungen zwischen h und den Funktionen in H ∗ . Falls h(a) = 1, sind alle hi (a) = 1, also alle hi (a) = 0 und somit q(a) = 0 für q ∈ H ∗ . Falls h(a) = 0, gibt es ein i mit hi (a) = 0. Da hi Summand genau der Hälfte der Funktionen in H ∗ ist, gilt für genau die Hälfte der 2m formalen Summen q ∈ H ∗ , dass q(a) = 1 ist. Ein q ∈ H ∗ heißt gut für S ⊆ h−1 (0), wenn |q −1 (1) ∩ S| ≥ |S| /2 ist. Für jedes a ∈ S gilt für die Hälfte der Funktionen q, dass a ∈ q −1 (1) ist. Ein solches Paar (a, q) nennen wir Erfolg. Also beträgt die Zahl der Erfolge |S| |H ∗ | /2. Diese Erfolge verteilen sich irgendwie auf |H ∗ | Funktionen. Also gibt es nach dem Schubfachprinzip ein q ∈ H ∗ , das gut für S ist. Sei S0 = h−1 (0). Wir wählen eine gute Funktion q1 für S0 . Sei S1 = S0 − q1−1 (1). Wir wählen eine gute Funktion q2 für S1 , usw., bis wir q1 . . . , qr und S1 , . . . , Sr erhalten haben. Nach Definition von gut ist |Si+1 | ≤ |Si | /2 und somit |Sr | ≤ |S0 | /2r ≤ 2n−r . Sei nun 135 g = q1 ∧ · · · ∧ qr . Dann ist g ∈ Pdr . Falls h(a) = 1, ist (s.o.) qi (a) = 0 für alle i und g(a) = 1. Falls h(a) = 0 und g(a) = 1, ist qi (a) = 0 für alle i. Nach Konstruktion heißt dies, dass a ∈ Sr ist. Also gibt es höchstens 2n−r Abweichungen zwischen g und h, d. h. d(f, g) ≤ 2n−r . Die nächste Behauptung beschreibt eine allgemeine untere Schranke. Behauptung 2: Schaltkreise mit unbeschränktem Fan-in über {⊕, ∧}, die nur k ∧Level haben und f berechnen, haben für jedes r ≥ 1 mindestens d(f, Prk )2r−n Bausteine. Die Schranke wird sogar für die Zahl der ∧-Bausteine bewiesen. Wir zeigen, dass mit l ∧-Bausteinen und k ∧-Ebenen nur Funktionen berechnet werden können, die durch Polynome aus Prk mit durch l2n−r beschränktem Abstand approximiert werden können. Dies ist offensichtlich nur eine Umformulierung der Behauptung. Wir zeigen die Behauptung mit Induktion über l. Für l = 0 können nur Polynome vom Grad 1 berechnet werden, die sich selbst ohne Fehler approximieren. Wir nennen im folgenden einen Input a Fehler, wenn er bei der Approximation irgendeines Bausteines zu einer Abweichung führt. Werden h1 , . . . , hm durch p1 , . . . , pm approximiert, approximieren wir h = h1 ⊕ · · · ⊕ hm durch p = p1 ⊕ · · · ⊕ pm , ohne einen neuen Fehler zu erhalten. Nun betrachten wir den l-ten ∧-Baustein, der h = h1 ∧· · ·∧hm berechnet. Ohne diesen Baustein war die Zahl der Fehler durch (l − 1)2n−r beschränkt. Die Funktionen h1 , . . . , hm werden in Subschaltkreisen mit höchstens k −1 ∧-Ebenen berechnet. Die zugehörigen Approximationen haben daher einen durch r k−1 beschränkten Grad. Das Polynom p∗ = p1 ∧ · · · ∧ pm approximiert h ohne neuen Fehler, der Grad ist aber nur durch mr k−1 beschränkt. Wir wenden Behauptung 1 für H = {p1 , . . . , pm } an und erhalten eine Approximation p für h, deren Grad durch rr k−1 = r k beschränkt ist und die, da d(p, p∗ ) ≤ 2n−r , höchstens 2n−r neue Fehler erzeugt. Die Zahl der Fehler ist also durch l2n−r beschränkt. Schließlich muss diese Schrankenmethode angewendet werden. n Behauptung 3: Es sei 2a + r k < n. Dann kann T≥n−a nicht mit k ∧-Ebenen und n r−n Bausteinen berechnet werden. höchstens a 2 Nach Behauptung 2 genügt es zu zeigen, dass jedes Polynom g mit durch r k beschränktem n Grad an mindestens na Stellen von T≥n−a abweicht. Sei U die Menge der Inputs b mit n g(b) 6= T≥n−a (b). Es sei ∆u der Minterm, der an der Stelle u den Wert 1 liefert. Dann gilt M n T≥n−a = ∆u ⊕ g. u∈U n kritische Es sei E die Menge der na Inputs mit genau n − a Einsen. Dies sind für T≥n−a Eingaben. Wir konzentrieren uns auf Eingaben aus E. Für Vektoren b und c sei b ∧ c = (b1 ∧ c1 , . . . , bn ∧ cn ). Die Anzahl der Einsen in b∧ c ist mindestens n − 2a und höchstens n − a. Jeder Funktion f ordnen wir eine na × na - Matrix M f zu. Die Zeilen und Spalten entsprechen jeweils den Eingaben aus E. Der Matrixeintrag in Zeile b und Spalte c ist f (b ∧ c). n Als Hilfsmittel betrachten wir den Rang der Matrizen M f . Dies ist einfach für T = T≥n−a , n denn M T ist nach Definition die Einheitsmatrix, deren Rang a ist. Für die anderen 136 Funktionen ist dies schwieriger. Dabei hat sich der τ -Operator als hilfreich erwiesen. Dieser Operator hat auch viele weitere Anwendungen. Wir definieren b ≤ c durch bi ≤ ci für alle i. Dann ist die Funktion τ f definiert durch M τ f (b) = f (c). c≤b Dieser Operator ist nach Definition linear, d. h. τ (f1 ⊕ f2 ) = τ f1 ⊕ τ f2 . Wir wenden τ nun auf unsere Beziehung zwischen T , g und ∆u an. Es folgt M τT = τ ∆u ⊕ τ g. u∈U Auch der Matrixoperator M ist linear. Also gilt M MτT = M τ ∆u ⊕ M τ g. u∈U Aus der Linearen Algebra sollte bekannt sein, dass die Rangfunktion für Matrizen sublinear ist, d. h. Rang(A ⊕ B) ≤ Rang(A) + Rang(B). Also ist X Rang(M τ T ) ≤ Rang(M τ ∆u ) + Rang(M τ g). u∈U Die Ränge der betrachteten Matrizen lassen sich nun abschätzen. Die Funktion τ T nimmt für Eingaben mit weniger als n − a Einsen den Wert 0 an und für Eingaben mit genau n − a Einsen den Wert 1. Dies folgt direkt nach Definition. Also ist M τ T = M T und, wie oben gesehen, Rang(M τ T ) = na . Von der Funktion g wissen wir nur, dass sie ein Polynom mit durch r k beschränktem Grad ist. Damit ist g eine Summe von Monomen t, deren Länge durch r k < n − 2a beschränkt ist. Sei b ein Input mit j ≥ n − 2a Einsen. Falls t(b) = 0, ist τ t(b) = 0, da t monoton ist. Falls t(b) = 1, können wir genau die s = j −r k ≥ 1 Stellen, an denen b den Wert 1 hat und die nicht in t vorkommen, auch durch Nullen ersetzen, ohne dass t seinen Wert ändert. Also gibt es in der Definition von τ t(b) genau 2s Einsen. Da s ≥ 1, ist 2s gerade und τ t(b) = 0. Damit ist τ t die Nullfunktion. Gleiches gilt dann für τ g, und Rang(M τ g) = 0. Nach Definition ist τ ∆u (b) = 1 genau dann, wenn b ≥ u ist. Die Matrix M τ ∆u hat also 1-Einträge genau an den Positionen (b, c) mit b ≥ u und c ≥ u. Damit sind alle Zeilen für b 6≥ u Nullzeilen, und alle Zeilen für b ≥ u gleich. Somit ist der Rang von M τ ∆u durch 1 beschränkt. Wenn wir nun alle Rangabschätzungen einsetzen, folgt |U | ≥ na . Schließlich müssen wir die freien Parameter r und a wählen. Für r = bn1/(2k−1) c und a = b(n − r k − 1)/2c ergeben sich nach einer mühseligen, aber elementaren Rechnung die behaupteten Schranken. 2 137 Beweisskizze von Satz 14.4.7: Das innere Produkt fassen wir als Funktion auf {0, 1}n ×{0, 1}n auf. Bei Eingaben (a, b) haben beide Teile Länge n, und a ist die Belegung der x-Variablen. Die Menge {0, 1}n × {0, 1}n fassen wir nun geometrisch als Quadrat auf. Teilrechtecke sind Mengen A × B mit A, B ⊆ {0, 1}n . Für n = 3 stellen wir IP bildlich dar. 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 Mit Ausnahme der 000-Zeile hat jede Zeile gleich viele 0 wie 1. Allgemein ist IP−1 (1) = 22n−1 −2n−1 und IP−1 (0) = 22n−1 +2n−1 . Sei A = {011, 100, 110} und B = {001, 010, 101, 110}. Das Rechteck A × B ist eingezeichnet. Es enthält 8 1-Einträge und 4 0-Einträge. Sind nun 8 und 4 sehr verschieden? Ein Satz aus der Kombinatorik (das Lemma von ” Lindsey“) besagt, dass für die Fläche F := |A| · |B| eines Rechtecks A × B folgendes gilt: √ n −1 F IP (1) ∩ (A × B) ≤ + F · 2 2 2 Gleiches gilt auch für IP−1 (0). Mit anderen Worten: Für große Rechtecke ist die Anzahl der 1-Einträge (bzw. der 0-Einträge) in der Nähe der Hälfte der Fläche. Dieses Ergebnis ist erstaunlicherweise der Schlüssel zum Beweis der unteren Schranke für Majoritätsschaltkreise der Tiefe 2. Wenn ein Majoritätsschaltkreis der Tiefe 2 eine Funktion f darstellt, muss es einen Baustein auf der ersten Ebene geben, der auf einem Mindestbruchteil das gleiche berechnet wie f . Diese Idee formalisieren wir im folgenden. Ein Schaltkreis S heißt ε-Diskriminator für eine boolesche Funktion f auf n Variablen, falls |{x : f (x) = S(x)}| 1 ≥ +ε n 2 2 ist. Behauptung: Sei S ein Majoritätsschaltkreis der Tiefe 2, der eine Funktion fS berechr net. Wenn der Baustein auf der zweiten Ebene die Funktion T≥(r+1)/2 realisiert, dann ist mindestens ein Baustein auf der ersten Ebene ein 1/(2r)-Diskriminator für fS . Beweis: Wir schreiben abkürzend T1 := fS−1 (1), T0 := fS−1 (0) und k := (r + 1)/2. Seien g1 , . . . , gr die Funktionen, die auf den Inputkanten des Bausteins auf der zweiten Ebene realisiert werden. Wir schauen uns alle r ·2n Paare (gi , x) an und nennen ein solches Paar richtig, wenn gi (x) = fS (x) ist. Wir schätzen zunächst ab, wieviele richtige Paare es mindestens geben muss. 138 Für einen Vektor a mit fS (a) = 1 gilt, dass mindestens k der Funktionen gi auf a auch eine Eins berechnen. Analog gilt für einen Vektor a mit fS (a) = 0, dass mindestens r − k + 1 viele gi eine Null berechnen. Über alle a summiert, finden wir somit mindestens L := T1 k + T0 (r − k + 1) = T1 k + T0 k = k2n viele richtige Paare. Nach dem Schubfachprinzip gibt es dann ein gi , so dass es mindestens L/r = 2n k/r richtige Paare (gi , ·) gibt. Dieses gi rechnet somit auf einem Inputanteil von k/r = (1/2) + (1/2r) richtig und ist daher ein 1/(2r)-Diskriminator. 2 Wir betrachten nun einen Majoritätsschaltkreis S, der IP in Tiefe 2 realisiert. O.B.d.A. können wir annehmen, dass der Outputbaustein eine monotone Majoritätsfunktion darstellt. Sei w der maximale Fan-In eines Knotens im Schaltkreisgraphen. Nach der oben bewiesenen Behauptung gibt es einen Baustein G auf der ersten Ebene von S, der ein 1/(2w)-Diskriminator von IP ist. Die Anzahl der Einsen, die G als Input bekommen kann, liegt im Intervall [0, w]. Daher können wir die Menge X der x-Vektoren und die Menge Y der y-Vektoren wie folgt partitionieren: Für l = 0, . . . , w sei Al ⊆ X die Menge aller x-Vektoren, die genau l Einsen in das Gatter G liefern. Analog definieren wir Mengen Bl für Y . Damit haben wir X × Y disjunkt in R := (w + 1)2 viele Rechtecke Ai × Bj zerlegt. Nach Wahl der Rechtecke berechnet G auf jedem Rechteck eine Konstante. Angenommen, die Rechtecke haben die Flächen F1 , . . . , FR . Nach dem oben aufgeführten Satz aus der Kombinatorik kann G nur auf höchstens √ √ R F1 F1 · 2 n FR · 2 n FR 22n 2n/2 X p Fi ( + )+···+( + )= + 2 2 2 2 2 2 i=1 vielen Inputs mit dem inneren Produkt übereinstimmen. Wegen der Konkavität der Wurzelfunktion ist dieser Ausdruck maximal, wenn alle Fi gleich sind, also Fi = 22n /R. Damit ist der Wert des Ausdrucks beschränkt durch U := 22n 2n/2 √ 22n 23n/2 + + (w + 1). R · 2n = 2 2 2 2 G ist ein 1/(2w)-Diskriminator für IP, also folgt U 1 1 1 1 ≥ + , somit ist (w + 1) ≥ , 22n 2 2w 2n/2 w was zeigt, dass w exponentiell groß sein muss, und somit wächst die Größe von S exponentiell. 2 14.5 Einige Beispiele für Reduktionen Zunächst zeigen wir, dass bereits read-once Projektionen mächtig genug sind, um interessante Resultate zu liefern. Innerhalb der Komplexitätsklasse P/Poly gibt es ein bezüglich ≤rop vollständiges Problem. 139 Definition 14.5.1: CIRCUIT VALUE PROBLEM (CVP) Für Eingaben, die aus Codierungen von Schaltkreisen C mit Fan-in 2 mit c Bausteinen und n Inputs und einem Inputvektor a ∈ {0, 1}n bestehen, soll entschieden werden, ob der Schaltkreis C auf der Eingabe a den Wert 1 berechnet. Satz 14.5.2: CVP ist bezüglich ≤rop P/Poly-vollständig. Beweis: Zunächst ist zu zeigen, dass CVP ∈ P/Poly ist. Die Bausteine werden nacheinander gemäß ihrer Nummerierung simuliert. Für den i-ten Baustein werden die Nummern der Vorgänger mit allen Nummern der Inputs und früheren Bausteinen verglichen. Nur ein Vergleich gibt den Wert 1. Es seien vj die Vergleichswerte und aj die an den Inputs bzw. Bausteinen berechneten Werte. Dann ist die Disjunktion aller vj ∧ aj der Input unseres Bausteins. Nachdem beide Inputs berechnet sind, werden alle Bausteintypen simuliert, und an Hand der Codierung des Bausteintyps wird das richtige Ergebnis herausgefiltert. Insgesamt kann jeder Baustein mit polynomieller Schaltkreisgröße simuliert werden. Sei nun f ∈ P/Poly. Offensichtlich kann fn durch einen CVP-Orakelbaustein mit polynomieller Eingabe berechnet werden. Die Eingabe des Orakelbausteins bestehe aus der Codierung des Schaltkreises polynomieller Größe für fn und der aktuellen Eingabe für fn . 2 Wir haben untere Schranken für PARn und IPn bewiesen. Diese werden nun auf die arithmetischen Funktionen BSUMn (Summe von n Bits), MULn (Multiplikation zweier n-Bitzahlen), SQUn (Quadrieren einer n-Bitzahl), INVn (Berechnung der n signifikanten Bits von x−1 aus einer n-Bitzahl x) und DIVn (Division zweier n-Bitzahlen, genauer Berechnung der n signifikantesten Bits) übertragen. Damit diese Funktionen schwierig sind, genügt es, wenn ein Bit schwierig ist. Wir werden aber in den Reduktionen sogar die gesamte Information wieder finden. Hier ist zu beachten, dass read-once Projektionen (f ≤rop g), aber auch Projektionen, die Tiefe von Schaltkreisen erhalten, also folgt z.B. aus g ∈ TC0,d und f ≤rop g auch f ∈ TC0,d . Satz 14.5.3: PAR≤rop IP≤rop MUL≤rop SQU≤rop INV ≤rop DIV, BSUM≤rop MUL. Beweis: 1.) PAR≤rop IP, da IPn (x1 , . . . , xn , 1, . . . , 1) = PARn (x1 , . . . , xn ). 2.) IP≤rop MUL. Es sei N eine Folge von dlog ne Nullen. Wir betrachten die Multiplikation der m-Bitzahlen, m = n + (n − 1)dlog ne, x0 = (xn−1 , N, xn−2 , N, . . . , x1 , N, x0 ) und y 0 = (y0 , N, y1 , N, . . . , yn−2 , N, yn−1 ). Wenn wir die Schulmethode der schriftlichen Multiplikation betrachten, erhalten wir eine Spalte die x0 y0 , x1 y1 , . . . , xn−1 yn−1 enthält. Die jeweils dlog ne benachbarten Spalten enthalten nur Nullen, so dass es zu keinen Überträgen kommt. Damit ist das Produktbit in der benachbarten Spalte gerade x0 y0 ⊕ · · · ⊕ xn−1 yn−1 und damit IPn (x0 , . . . , xn−1 , y0 , . . . , yn−1 ). 3.) BSUM≤rop MUL. Wir verwenden die Methode aus der Reduktion IP≤rop MUL und setzen y0 = · · · = yn−1 = 1. Dann erhalten wir in der betrachteten Spalte und den davor liegenden Spalten die Binärdarstellung von BSUMn (x0 , . . . , xn−1 ). 140 4.) MUL≤rop SQU. Wir betrachten das Quadrat der (3n + 2)-Bitzahl z = (xn−1 , . . . , x0 , 0, . . . , 0, yn−1, . . . , y0 ). Es sei |z| der Wert von z. Dann gilt |z|2 = (|x|22n+2 + |y|)2 = |x|2 · 24n+4 + |x| · |y| · 22n+3 + |y|2 . Es kommt also zu keinen Überträgen zwischen den Zahlen |x|2 , |x| · |y| und |y|2 und damit finden wir |x| · |y| im Ergebnis von SQU3n+2 (z). 5.) SQU≤rop INV. Wir betrachten die Invertierung der (10n)-Bitzahl 1 − |q| mit |q| = |x| · 2−t + 2−T mit x = (xn−1 , . . . , x0 ), t = 4n und T = 10n. Es sei (q−1 , . . . , q−10n ) die 0 0 Binärdarstellung von |q| und (q−1 , . . . , q−10n ) die Binärdarstellung von 1 − |q|. Nach 0 0 Definition ist q−10n = 1 und daher q−10n = 1 und q−i = q −i für alle i < 10n. Damit 0 0 ist (q−1 , . . . , q−10n ) eine für read-once Projektionen zulässige Eingabe. Im folgenden stellen wir (1 − |q|)−1 als unendliche Reihe dar: (1 − |q|)−1 = = = = 1 + |q| + |q|2 + |q|3 + · · · 1 + (|x|2−t + 2−T ) + (|x|2−t + 2−T )2 + (|x|2−t + 2−T )3 + · · · 1 + |x|2−t + |x|2 2−2t + 2−T + 2|x|2−t−T + 2−2T + (|x|2−t + 2−T )3 + · · · 1 + |x|2−t + |x|2 2−2t + Rest. Der Rest lässt sich für n ≥ 2 abschätzen durch 2−10n + 2−12n + 2−20n + 2 · 2−9n < 2−8n . Also stellen die 8n + 1 signifikanten Bits von (1 − |q|)−1 die Zahl 1 + |x|2−t + |x|2 2−2t dar. Da |x|2 ≤ 22n , kommt es auch hier zu keinen Überlappungen und wir finden 0 0 das Quadrat von x in INV10n (q−1 , . . . , q−10n ). 6.) INV≤rop DIV. Es ist ausreichend, den Zähler von x/y durch die Zahl 1 zu ersetzen. 2 Die Aussage MUL≤rop SQU besagt, dass die Multiplikation im wesentlichen nicht schwieriger als das Quadrieren ist (und das bezüglich des eingeschränktesten Reduktionskonzeptes ≤rop ). Es konnte bewiesen werden, dass SQU6≤rop MUL ist. Aber natürlich ist SQU≤proj MUL, da SQUn (x) =MULn (x, x) ist. Bei dieser Projektion wird jedes Bit von x zweimal verwendet. Abschließend stellen wir noch zwei ≤cd -Reduktionen vor; wobei MULTADDn die Addition von n n-Bitzahlen beschreibt. Satz 14.5.4: MUL≤cd MULTADD≤cd BSUM. 141 1.) MUL ≤cd MULTADD. Dies folgt aus der Schulmethode der schriftlichen Multiplikation. Im ersten Schritt werden in Tiefe 1 mit n2 Bausteinen alle xi yj berechnet. Der zweite Schritt der schriftlichen Multiplikation ist die Addition von n Zahlen, die nach Auffüllung mit Nullen Länge 2n − 1 haben. Dies kann an einem MULTADD-Orakelbaustein geschehen. 2.) MULTADD ≤cd BSUM. Diese Behauptung ist schwer zu beweisen, da MULTADD offensichtlich schwieriger“ als BSUM ist. Wir wollen mit Hilfe von BSUM-Orakelbau” steinen die Zahlen ai = (ai,n−1 , . . . , ai,0 ) für 1 ≤ i ≤ n addieren. In der ersten Stufe benutzen wir parallel n Orakelbausteine für BSUMn , wobei der j-te Orakelbaustein, 0 ≤ j ≤ n − 1, die Bits a1j , . . . , anj addiert. Als Ergebnis erhalten wir n Zahlen b0 , . . . , bn−1 mit je dlog(n + 1)e Bits, so dass die Summe aller |bj |2j gleich der Summe s aller |ai | ist. Für 0 ≤ r < l := dlog(n + 1)e können die Zahlen |br |2r , |br+l |2r+l , |br+2l |2r+2l , . . . kostenlos addiert werden, indem sie einfach aneinandergehängt werden. Wir erhalten also l(1) := l Zahlen, deren Länge durch 2n beschränkt ist und deren Summe s ist. Mit diesen wenigen Summanden wiederholen wir den Trick der ersten Stufe und erhalten l(2) = dlog(l(1)+1)e Summanden, deren Länge durch 2n beschränkt ist und deren Summe s ist. Die Tiefe bleibt leider nicht konstant, wenn wir analog fortfahren. Wir argumentieren“ ” nun auf analoge Weise weiter. Es seien x und y die schließlich entstehenden 2 Summanden, deren Summe s ist. Von wievielen Bits der in Stufe 2 berechneten l(2) Summanden hängt ein einzelnes Bit, z. B. xi , der beiden Summanden x und y ab? Aus l(j) Summanden werden in einem Schritt l(j + 1) := dlog(l(j) + 1)e Summanden gemacht, wobei jedes Bit der neuen Summanden von genau einem Bit jedes vorherigen Summanden, also insgesamt von l(j) Bits abhängt. Wenn wir k = k(n) Stufen benötigen, um auf 2 Summanden zu kommen, hängt xi also von l(2)∗· · ·∗l(k−1) Bits der l(2) in Stufe 2 erzeugten Summanden ab. Da l(j + 1) := dlog(l(j) + 1)e und l(2) = O(log log n) ist, folgt l(2) ∗ · · · ∗ l(k − 1) = O((log log n)2 ) = o(log n). Diese Abschätzung lässt sich folgendermaßen begründen. Es ist k = O(log∗ n), wobei log∗ n angibt, wie oft wir log auf n anwenden müssen, um die Schranke 2 zu unterschreiten. Es ist l(2) = O(log log n) und das Produkt der übrigen O(log∗ n) Faktoren ∗ (log log log n)O(log n) = (log log log)O(log log log log n) = O(log log n), wobei die letzte Gleichung einfach ist, wenn man beide Seiten logarithmisiert. Wir berechnen nun die Bits xi und yi von x und y direkt aus den l(2) Summanden der Stufe 2 in Tiefe 2 durch ihre DNF. Da xi und yi nur von o(log n) Bits dieser l(2) Summanden abhängen, hat die DNF o(n) Minterme. Schließlich müssen noch x und y addiert werden. Die Carry Look Ahead-Methode (s. RECHNERSTRUKTUREN) liefert einen AC 0 -Schaltkreis zur Addition zweier Zahlen. 142 Übersicht über Ω(N log N )-Schranken Satz von Ben-Or ELEMENT UNIQUENESS -CLOSENESS ≤N CLOSEST PAIR ≤N SORTIEREN ≤N KONVEXE HÜLLE ≤N LINE SEGMENT INTERSECTION TEST ≤N INTERSECTION OF HALF-PLANES ≤N CONTOUR OF UNION OF RECTANGLES ≤N MEASURE OF UNION OF RECTANGLES 143 ≤N ALL NEAREST NEIGHBORS ≤N EUCLIDEAN MINIMUM SPANNING TREE n ≤N TRIANGULATION Übersicht über NP-harte Probleme Methoden: 1: Restriktion, 2: Lokale Ersetzung, 3: Verbundene Komponenten <3p GC-3 <1p GC < k, k > 3 <1p GC- k, k > 3 <2p GC-3 für D<4 <2p GC-3 für D<4 und planare Graphen <2,3 p KP* <1,2 p PARTITION 144 <3 p CLIQUE 3 2 L <p SAT <p 3-SAT <1p MULTIPROCESSOR SCHEDULING <2p SEQUENCING WITH INTERVALS < k -th SMALLEST SUBSET T <1p KP <1 <1p BPP <1 p IP p VC <1p SUBGRAPH ISOMORPHISM <1p HITTING SET <2p BOOLEAN SUMS <3p MINIMUM TARDINESS SEQUENCING <3p DHC <3p 3-DM <1p MED <2p HC <1p TSP 1 <1,2 p HAMILTONIAN PATH <p BOUNDED DEGREE SPANNING TREE <1p MINIMUM COVER <2p PARTITION INTO TRIANGLES <2p MINIMUM TEST COLLECTION <3p 4-PARTITION <3p 3-PARTITION für polynom. große Zahlen <3p MP3 für polynom. große Zahlen <3p SEQUENCING WITH INTERVALS für polynom. große Zahlen <3p SUBFOREST ISOMORPHISM Unmöglichkeit von Approximationsalgorithmen, falls NP6=P Additiver Fehler: pol. Approx.schema: voll pol. Approx.schema: Konstanter mult. Fehler: Endliche Güte: PSPACE-vollst. Probleme: P-vollständige Probleme: P/Poly-vollständige Probleme: NTAPE(log n)-vollst. Probl.: #P-vollständige Probleme: Projektionen, cd-Reduktionen: KP IP IP alle stark NP-vollständigen Probleme < 1, 5 : BPP (bzgl. worst case Güte) 8 − ε : 3-SATmax 7 TSP CLIQUE IP QBF, GENERALIZED HEX REGULAR EXPRESSION NON-UNIVERSALITY CSL EMPTINESS OF CONTEXT FREE LANGUAGES CIRCUIT VALUE PROBLEM GRAPH REACHABILITY #SAT PERM PAR ≤rop IP ≤rop MUL ≤rop SQU ≤rop INV ≤rop DIV, BSUM ≤rop MUL, SQU ≤proj MUL, MUL ≤cd MULTADD ≤cd BSUM 145 Auflistung aller Probleme aus dem Komplexitätstheorieskript Problemname BIN PACKING Bk BDST CVP CSL DHC 2-DM 3-DM ECFL GC Boolesche Ausdrücke BOOLEAN SUMS BOUNDED DEGREE SPANNING TREE CIRCUIT VALUE PROBLEM CLIQUE COMPOSITE CONTEXT SENSITIVE LANGUAGES DIRECTED HAMILTONIAN CIRCUIT BIPARTITES MATCHING Dreidimensionales Matching EMPTINESS OF CONTEXT FREE LANGUAGES GENERALIZED HEX GRAPH COLORABILITY GC-k für k ≥ 3 GC≤ k für k ≥ 3 GC-k für k ≤ 2 GC≤ k für k ≤ 2 GC-3 für Grad ≤ 4 GC-3 für planare Graphen GC-3 für Grad ≤ 4 und planare Graphen Charakterisierung NP-vollständig RM IN = 1 falls P 6= NP, ist RA ≥ 23 für alle P Algorithmen A k -vollständig NP-vollständig Seite Buch 55 Buch 70 NP-vollständig P/Poly-vollständig bzgl. ≤proj NP-vollständig ∈APX / P 26 140 Buch 52 92 S. 52 PSPACE-vollständig NP-vollständig P NP-vollständig 85 58 28 99 Buch 56 22 22 log-SPACE-vollständig für P PSPACE-vollständig NP-vollständig NP-vollständig NP-vollständig P P NP-vollständig NP-vollständig 102 99 38 38 38 38 38 39 41 NP-vollständig 42 146 GI GRP HC IP IP MAJ MED MP3 Problemname GRAPH ISOMORPHISM GRAPH REACHABILITY PROBLEM HAMILTONIAN CIRCUIT HAMILTONIAN PATH HITTING SET INDEPENDENT SET Inneres Produkt KNAPSACK Charakterisierung vermutl. in NPI GI ∈ IP(2) GI ∈ BP(NP) hat interaktives Beweissystem mit perfekter Zero-Knowledge Eigenschaft log-SPACE-vollständig für NTAPE(log n) NP-vollständig hat interaktives Beweissystem mit der computational Zero-Knowledge Eigenschaft NP-vollständig NP-vollständig NP-vollständig ∈ / APX TC0,3 − TC0,2 NP-vollständig, pseudopol.Algorithmus voll pol. Approximationsschema k-th SMALLEST SUBSET Majoritätsfunktion MAX CUT MAX CUT für planare Graphen MINIMUM COVER MINIMUM EQUIVALENT DIGRAPH MINIMUM TARDINESS SEQUENCING MINIMUM TEST COLLECTION Meisterschaftsproblem mit 3-Punkte-Regel MULTIPROCESSOR SCHEDULING Paritätsfunktion 147 Seite 52, 67 68 70 75 104 Buch 58 76 26 25 93 131 Buch 53 Buch 60 EA-Skript NP-hart NC1 − ACC0 [2] NP-vollständig 51 130 41 P NP-vollständig 41 26 NP-vollständig 27 NP-vollständig 32 NP-vollständig 30 NP-vollständig 33 NP-vollständig TC0,2 − AC0 27 130, 131 Problemname PARTITION QBF SAT PARTITION INTO TRIANGLES 3-PARTITION 4-PARTITION Permanente PRIMES QUANTIFIED BOOLEAN FORMULAS REGULAR EXPRESSION NON-UNIVERSALITY SATISFIABILITY PROBLEM #-SAT 3-SAT 2-SAT SATmax 3-SATmax TSP-1 SEQUENCING WITH INTERVALS SUBFOREST ISOMORPHISM SUBGRAPH ISOMORPHISM TRAVELING SALESMAN PROBLEM TSP-2 TSP4 VC Euklidisches TSP VERTEX COVER Charakterisierung NP-vollständig, pseudopolynomieller Algorithmus Seite Buch 55 NP-vollständig stark NP-vollständig stark NP-vollständig #P-vollständig P 28 45 43 105 S. 52 PSPACE-vollständig 97 PSPACE-vollständig NP-vollständig pol. selbstreduzierbar #P-vollständig NP-vollständig P ∈ APX ∈ APX für alle Algorithmen A und alle ε > 0 ist RA ≥ 8/7 − ε 99 Buch 47 118 105 Buch 51 Buch 51 89 89 stark NP-vollständig NP-vollständig NP-vollständig NP-äquivalent Falls P 6= NP, ist RM IN = ∞ stark NP-vollständig NP-äquivalent RM IN ≤ 32 49 49 26 Buch 66 Buch 71 Buch 62 polyn. Approximationsschema NP-vollständig RM IN ≤ 2 148 89 Buch 70 EA-Skript 82 25 82