Johannes Blömer • Skript zur Vorlesung Komplexitätstheorie • Universität Paderborn Sommersemester 2010 Inhaltsverzeichnis 1 Einleitung 2 2 Turingmaschinen, Zeit- und Platzkomplexität 2.1 Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Mehrband Turingmaschinen . . . . . . . . . . . . . . . . . . 2.3 Die Klassen P und PSPACE . . . . . . . . . . . . . . . . . 2.4 Nichtdeterministische Turingmaschinen und die Klasse N P 2.5 Polynomielle Reduktionen . . . . . . . . . . . . . . . . . . . 2.6 N P- und PSPACE-Vollständigkeit . . . . . . . . . . . . . . 2.7 Der Satz von Savitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 12 15 20 25 30 37 3 Innerhalb von P und N P 40 3.1 Reduktionen, Co-Klassen und die Klasse co-N P . . . . . . . 40 3.2 Der Satz von Ladner . . . . . . . . . . . . . . . . . . . . . . . 46 3.3 Die Klassen L, N L und L-Reduktionen . . . . . . . . . . . . . 50 4 Hierarchiesätze und Diagonaliserung 62 4.1 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2 Die Hierarchiesätze . . . . . . . . . . . . . . . . . . . . . . . . 63 5 Orakel-Turingmaschinen, Grenzen der Diagonalisierung und die Polynomialzeithierarchie 5.1 Orakel-Turingmaschinen . . . . . . . . . . . . . . . . . . . . . 5.2 Orakel-Turingmaschinen und die Grenzen der Diagonalisierung 5.3 Die Polynomialzeithierarchie . . . . . . . . . . . . . . . . . . 67 67 70 72 6 Probabilistische Komplexitätsklassen 78 6.1 Einfache probabilistische Algorithmen . . . . . . . . . . . . . 78 6.2 Probabilistische Komplexitätsklassen . . . . . . . . . . . . . . 80 6.3 BPP und die Polynomialzeithierarchie . . . . . . . . . . . . . 83 1 Kapitel 1 Einleitung Ziel dieser Vorlesung ist es eine Einführung in eines der wichtigsten Teilgebiete der Theoretischen Informatik, die Komplexitätstheorie, zu geben. Die Komplexitätstheorie versucht zu verstehen, wie schwer Probleme auf einem Computer zu lösen sind. Um dies mathematisch präzise zu fassen, benötigen wir zunächst einmal ein geeignetes theoretisches Rechnermodell, um mit Hilfe dieses Rechnermodells dann den Ressourcenverbrauch zu charakterisieren, den die Lösung eines Problems erfordert. Dabei muss natürlich auch gesagt werden, welche Resourcen betrachtet werden. In der Komplexitätstheorie betrachtet man in aller Regel als mathematisches Rechnermodell die Turingmaschinen. Als Ressourcen werden hauptsächlich Zeit und Speicher untersucht. Die Komplexitätstheorie versucht dann Probleme gemäß des Zeit- und des Speicherbedarfs zu charakterisieren, die zu ihrer Lösung auf einer Turingmaschine benötigt werden. Sprachen, deren Lösung einen ähnlichen Zeit- bzw. Speicherbedarf erfordert, werden dann in der Komplexitätstheorie in so genannten Komplexitätsklassen zusammen gefasst. Um etwa die Zeit zu charakterisieren, die die Lösung eines Problems auf einer Turingmaschine benötigt, werden sowohl obere als auch untere Schranken benötigt. Um eine obere Schranke für die Zeit, die die Lösung eines Problems benötigt, zu erhalten, wird in der Regel explizit eine Turingmaschine angegeben, die das Problem löst und dann die Laufzeit dieser Turingmaschine mit Hilfe der O-Notation bestimmt. In der Komplexitätstheorie sind wir in der Regel nur an recht groben oberen Schranken interessiert. Häufig genügt es uns zu zeigen, dass ein Problem in polynomieller Zeit gelöst werden kann, ohne dass wir versuchen, ein möglichst geringe polynomielle Laufzeit zu zeigen. Dieses überlassen wir Vorlesungen aus dem Bereich des Algorithmenentwurfs wie Datenstrukturen und Algorithmen“, ” 2 Grundlegende Algorithmen“ und Effiziente Algorithmen“. ” ” Um z.B. untere Schranken für den Zeitbedarf zu zeigen, die die Lösung eines Problems auf einer Turingmaschine benötigt, muss andererseits gezeigt werden, dass jede Turingmaschine, die das Problem korrekt löst, einen Mindestzeitbedarf hat, den wir mit Hilfe der Ω-Notation angeben. Um etwa zu zeigen, dass ein Problem Zeitbedarf Ω(n2 ) besitzt, muss gezeigt werden, dass jede Turingmaschine, die das Problem korrekt löst, Laufzeit mindestens Ω(n2 ) besitzt. Es hat sich nun als sehr schwer herausgestellt, untere Schranken für die Zeit, die zur Lösung von Problemen benötigt wird, zu beweisen. So ist z.B. für kein NP-vollständiges Problem eine nichtlineare untere Schranke bekannt. Wir können also zur Zeit für kein NP-vollständiges Problem beweisen, dass jede Turingmaschine (oder Algorithmus), die das Problem löst, etwa Laufzeit mindestens Ω(n log(n)) besitzt. Ganz zu schweigen von superpolynomiellen unteren Schranken. Dieses Unvermögen, untere Schranken für den Zeit- oder Platzbedarf von explizit definierten Problemen zu zeigen, ist in vieler Hinsicht der Ausgangspunkt für die Komplexitätstheorie. Unser Ausgangspunkt in dieser ? Vorlesung ist noch etwas konkreter, nämlich die Frage ist P = N P. Wir werden unterschiedliche Ergebnisse und Techniken kennen lernen, die sich aus Versuchen ergaben, diese zentrale Frage der Informatik zu verstehen und zu beantworten. Wir werden z.B. sehen, dass wir das Konzept des Nichtdeterminismus im Kontext von Platzbedarf von Problemen deutlich besser verstehen als beim Zeitbedarf. Wir werden auch sehen, dass wir sehr wohl zeigen können, dass es Probleme gibt, deren Lösung auf jeder Turingmaschine Zeit mindestens Ω(n2 ) benötigt, die andererseits aber auch in Zeit O(n4 ) auf einer Turingmaschine gelöst werden können. Leider können wir diese Probleme nur indirekt definieren und die Probleme haben keinerlei Ähnlichkeit mit uns interessierenden Problemen aus der Praxis. Wir werden sehen, dass uns hierbei die Technik der Diagonalisierung sehr nützlich sein wird. Diese Technik spielt natürlich auch bei der Konstruktion von unentscheidbaren Problemen eine zentrale Rolle. Wir werden allerdings auch sehen, dass ? wir mit Hilfe der Diagonalisierung die Frage P = N P nicht beantworten können. Weiter werden wir das Konzept von Reduktionen, das bei der Definition von N P-Vollständigkeit eine zentrale Rolle spielt, genauer untersuchen. Dabei werden wir weitere Komplexitätsklassen und die so genannte Polynomialzeit-Hierarchie kennen lernen. Wir werden uns auch fragen, ob der Zufall uns helfen kann, vermutlich schwierige Probleme effizient zu lösen. Auch hier werden wir keine abschließende Antwort geben. Allerdings werden 3 auch diese Untersuchungen unser Verständnis der Komplexität von Problemen verbessern. ? Am Ende der Vorlesung werden wir der Beantwortung der Frage P = N P nicht viel näher gekommen sein, aber Sie werden hoffentlich viel über ein faszinierendes Gebiet der Informatik gelernt haben, und Sie werden hoffentlich ein besseres Verständnis dafür entwickelt haben, warum es trotz großer Anstrengungen vieler theoretischer Informatiker immer noch nicht gelungen ? ist, die Frage P = N P zu beantworten. 4 Kapitel 2 Turingmaschinen, Zeit- und Platzkomplexität In diesem Kapitel werden wir formal die Zeit- bzw. Platzkomplexität eines Algorithmus und einer Turingmaschine definieren. Wir werden dann die Klasse P der in Polynomialzeit entscheidbaren Sprachen definieren. 2.1 Turingmaschinen Die Turingmaschine wurde 1936 (vor der Entwicklung erster elektronischer Rechenanlagen) von Alan Turing eingeführt. Sie diente ihm als formales Modell, um den Begriff berechenbar“ zu formalisieren. Als Speicherme” dium besitzt eine Turingmaschine ein nach rechts unendliches Band, das in Zellen aufgeteilt ist. Eine Zelle kann ein Element aus dem so genannten Bandalphabet speichern. Die Turingmaschine besitzt eine Kontrolle und einen Lesekopf. Die Kontrolle befindet sich stets in einem von endlich vielen Zuständen. Der Lesekopf kann den Inhalt einer Speicherzelle lesen, aber auch ein neues Zeichen in eine Zelle schreiben (schematisch dargestellt in Abbildung 2.1. Weitere Bausteine des Modells sind in der folgenden Definition zusammengefasst. Definition 2.1.1 Eine deterministische 1-Band- Turingmaschine oder auch einfach Turingmaschine (DTM) wird durch ein 4-Tupel M = (Q, Σ, Γ, δ) beschrieben. Dabei sind Q, Σ, Γ endliche, nicht leere Mengen und 1. Q ist die Zustandsmenge. Diese enthält immer die ausgezeichneten Zustände s, qaccept , qreject , wobei qaccept 6= qreject gelten muss. s ist der 5 Abbildung 2.1: Band und Lesekopf einer DTM Startzustand, qaccept ist der akzeptierende Zustand und qreject ist der ablehnende Zustand. 2. Σ ist das Eingabealphabet, wobei das Blank ⊔ und das Startsymbol ⊲ nicht in Σ liegen. 3. Γ ist das Bandalphabet, wobei Σ ⊂ Γ und ⊔, ⊲ ∈ Γ. Außerdem sind die Symbole L, R, N nicht in Γ enthalten. 4. δ : Q\{qaccept , qreject } × Γ → Q × Γ × {R, L, N } ist die Übergangsfunktion. Für qaccept × Γ, qreject × Γ ist δ also nicht definiert. 5. Für das Symbol ⊲ ∈ Γ und alle Zustände q ∈ Q gilt δ(q, ⊲) = (p, ⊲, R) mit p ∈ Q. Außerdem muss für alle q ∈ Q und a ∈ Γ, a 6= ⊲, gelten δ(q, a) = (p, b, D), wobei p ∈ Q, b ∈ Γ, b 6= ⊲ und D ∈ {L, R, N }. Mit anderen Worten: ⊲ kann nur dann als zweite Koordinate eines Funktionswertes von δ auftauchen, wenn es auch zweite Koordinate des Argumentes ist. Wir werden in Kürze auch nichtdeterministische Turingmaschinen kennen lernen. Um späteren Verwechslungen vorzubeugen werden wir daher auch jetzt schon stets von deterministischen Turingmaschinen (DTMs) reden. Wir beschreiben nun die Berechnung einer DTM. Zunächst geschieht dieses informell, dann werden wir die Berechnung genauer definieren. In der äußersten linken Zelle des Bandes einer DTM steht immer das Startsymbol ⊲. In den Zellen links vom Startsymbol ⊲ steht zu Beginn der Berechnung einer DTM die Eingabe w = (w1 , w2 , . . . , wn ) ∈ Σ∗ . Die restlichen Zellen des Bandes sind mit dem Blanksymbol ⊔ gefüllt. Da ⊔ nicht zum Eingabealphabet Σ gehört, zeigt also das erste ⊔ das Ende der Eingabe an. Die Schritte der DTM erfolgen nun gemäß der Übergangsfunktion δ. Zu jedem Zeitpunkt befindet sich die Maschine in einem Zustand q ∈ Q und 6 der Lesekopf liest den Inhalt einer Zelle des Bandes. Ist der Inhalt der Zelle a ∈ Γ, so führt die Maschine die durch δ(q, a) beschriebenen Aktionen aus. Ist z.B. δ(q, a) = (q ′ , b, L), so wird in die Zelle, die gerade vom Lesekopf gelesen wird, der Inhalt a überschrieben und durch b ersetzt, der Lesekopf bewegt sich um eine Zelle nach links und der neue Zustand der Maschine ist q ′ . Ist hingegen δ(q, a) = (q ′ , b, R), so sind die Zustandsänderung und die Änderung des Inhalts der aktuell gelesenen Zelle wie bei δ(q, a) = (q ′ , b, L), allerdings bewegt sich der Kopf nun um eine Zelle nach rechts. Ist schließlich δ(q, a) = (q ′ , b, N ), so wird ändern sich Inhalt der aktuell gelesenen Zelle und der Zustand wie vorher, allerdings bleibt der Lesekopf auf der aktuellen Zelle stehen. Die Berechnung einer DTM geht so lange weiter bis der Zustand qaccept oder der Zustand qreject erreicht wird. Dann stoppt die Maschine. Wird keiner der Zustände qaccept , qreject erreicht, so hält die Maschine nie an, sie befindet sich dann in einer “Endlosschleife”. Da das Startsymbol ⊲ in der ersten Zelle des Bandes nicht überschrieben werden kann und ⊲ auch nie auf das Band geschrieben wird (siehe 5. in der Definition einer DTM), kann das linke Bandende einer DTM am Symbol ⊲ in der äußersten linken Bandzelle erkannt werden. Wird das Symbol ⊲ gelesen, und befindet sich der Kopf der DTM somit auf der äußersten linken Bandzelle, so muss der Kopf gemäß 5. in der Definition einer DTM im nächsten Schritt nach rechts bewegt werden. Der Kopf einer DTM kann also nie über das linke Bandende hinaus wandern. Um die Arbeitsweise einer DTM formal zu fassen, benötigen wir zunächst den Begriff der Konfiguration einer DTM. Eine Konfiguration ( Momentauf” nahme“) einer DTM M ist ein Element aus Γ∗ × Q × Γ∗ . DTM M ist in ” Konfiguration αqβ“ heißt: • In den äußersten linken Zellen des Bandes steht αβ ∈ Γ∗ . In den übrigen Zellen des Bandes stehen ausschließlich ⊔s. • der Kopf steht auf dem ersten Buchstaben von β, • der Zustand ist q. In Abbildung 2.2 haben wir die Konfiguration einer DTM schematisch dargestellt. Ein Berechnungsschritt der DTM führt von einer Konfiguration in eine Nachfolgekonfiguration. Sei β = bβ̄, α = ᾱa, wobei α, ᾱ, α′ , β, β̄, β ′ ∈ Γ∗ und a, b ∈ Γ. α′ q ′ β ′ ist (direkte) Nachfolgekonfiguration von αqβ, falls gilt: δ(q, b) = (q ′ , b′ , D), D ∈ {L, R, N }, 7 Abbildung 2.2: DTM in Konfiguration ⊲110q5 01110 wobei • α′ = αb′ , β ′ = β̄, falls D = R; • α′ = ᾱ, β ′ = ab′ β̄, falls D = L; • α′ = α, β ′ = b′ β̄, falls D = N . Ist α′ q ′ β ′ die direkte Nachfolgekonfiguration von αqβ, so schreiben wir α′ q ′ β ′ . αqβ α′ q ′ β ′ ist i-te Nachfolgekonfiguration von αqβ , falls gilt: • i = 0 und αqβ = α′ q ′ β ′ , oder • i > 0 und es gibt Konfigurationen K1 , . . . , Ki−1 mit K1 ... Ki−1 α′ q ′ β ′ . αqβ Ist α′ q ′ β ′ die i-te Nachfolgekonfiguration von αqβ, so schreiben wir αqβ i α′ q ′ β ′ . α′ q ′ β ′ ist (indirekte) Nachfolgekonfiguration von αqβ, falls es ein i ∈ N0 gibt mit αqβ i α′ q ′ β ′ . In diesem Fall schreiben wir αqβ ∗ α′ q ′ β ′ . Ist w ∈ Σ∗ die Eingabe einer DTM, so nennen wir die Konfiguration s⊲w in der sich die DTM zu Beginn der Berechnung mit Eingabe w befindet, die Startkonfiguration bei Eingabe w ∈ Σ∗ . Sei M eine DTM, w ∈ Σ∗ . M akzeptiert w, falls es α, β ∈ Γ∗ gibt mit s ⊲ w ∗ αqaccept β. Die DTM M akzeptiert also die Eingabe w, wenn die Berechnung von M bei Eingabe w aus der Startkonfiguration s ⊲ w in eine Konfiguration αqaccept β mit dem akzeptierende Zustand qaccept führt. Hierbei sind α, β ∈ Γ∗ beliebig. 8 Definition 2.1.2 Die Menge aller von M akzeptierten w ∈ Σ∗ ist die von M akzeptierte Sprache L. Wir schreiben dann auch L = L(M ). Wichtig ist es, an dieser Stelle zu erkennen, dass wir in dieser Definition erlauben, dass M für w 6∈ L nicht im ablehnenden Zustand qreject hält, sondern möglicherweise in eine “Endlosschleife” geht. Deshalb ein, wie Sie sich aus der Vorlesung Einführung in Berechenbarkeit, Komplexität und ” formale Sprachen“ erinnern werden, stärkerer Begriff. Definition 2.1.3 Die DTM M entscheidet die von ihr akzeptierte Sprache L(M ), wenn M alle Worte, die nicht in L(M ) liegen ablehnt. D.h., M entscheidet die Sprache L, falls M die Sprache L akzeptiert und es für alle w ∈ Σ∗ \L Worte α, β ∈ Γ∗ gibt mit s ⊲ w ∗ αqreject β. Definition 2.1.4 L ⊆ Σ∗ heisst rekursiv aufzählbar genau dann, wenn es eine DTM gibt, die L akzeptiert. L ⊆ Σ∗ heißt rekursiv oder entscheidbar genau dann, wenn es eine DTM gibt, die L entscheidet. In dieser Vorlesung werden wir uns ausschließlich mit DTMs beschäftigen, die bei jeder Eingabe halten, d.h., mit DTMs, die eine Sprache entscheiden. Turingmaschinen können auch Funktionen berechnen. Diese werden wir hauptsächlich benötigen, um fundamentale Konzepte wie Reduktionen und vollständige Sprachen exakt definieren zu können. Definition 2.1.5 Eine DTM M berechnet die partielle Funktion f : Σ∗ → (Γ\{⊔, ⊲})∗ mit • f (w) = y, falls M bei Eingabe w im akzeptierenden Zustand hält und dabei der Bandinhalt y ist. Hierbei werden das Startsymbol ⊲ und alle Blanks des Bandes ignoriert. • f (w) ist nicht definiert, falls M bei der Eingabe w nicht im akzeptierenden Zustand hält. Eine DTM M berechnet die totale Funktion f : Σ∗ → (Γ\{⊔, ⊲})∗ , falls • M bei jeder Eingabe w ∈ Σ∗ im akzeptierenden Zustand hält. • f (w) = y, wobei y der Bandinhalt am Ende der Berechnung der DTM M mit Eingabe w ist. Hierbei werden das Startsymbol ⊲ und alle Blanks des Bandes ignoriert. 9 M berechnet die totale Funktion f : Nr → N, falls Σ = {0, 1, #} und M für jedes a1 , . . . , ar ∈ N bei Eingabe bin(a1 )#bin(a2 )# . . . #bin(ar ) im akzeptierenden Zustand und mit Bandinhalt bin(f (a1 , . . . , ar )) hält. Wiederum werden das Startsymbol ⊲ und alle Blanks des Bandes ignoriert. Unter einem Rechenschritt oder einfach einem Schritt einer DTM verstehen wir nun die einmalige Anwendung der Übergangsfunktion δ. Gibt es also z.B. den Übergang δ(q, a) = (q ′ , b, L), befindet sich die DTM im Zustand q und ist das Zeichen in der aktuell gelesenen Speicherzelle a, so kann die DTM in einem Rechenschritt vom Zustand q in den Zustand q ′ wechseln, das Zeichen a in der aktuell gelesenen Zelle durch b ersetzen und schließlich den Lesekopf um eine Position nach links bewegen. Definition 2.1.6 Sei M = (Q, Σ, Γ, δ) eine DTM, die bei jeder Eingabe hält. 1. Für w ∈ Σ∗ ist TM (w) definiert als die Anzahl der Rechenschritte von M bei Eingabe w. 2. Für n ∈ N ist TM (n) := max{TM (w) | w ∈ Σ≤n }. 3. Die Funktion TM : N → N heißt die Zeitkomplexität oder Laufzeit der DTM M . 4. Sei t : N → N eine monoton wachsende Funktion. Die DTM M heißt t(n)-zeitbeschränkt, wenn für alle n ∈ N gilt: TM (n) ≤ t(n). Man beachte, dass wir die Zeitkomplexität nur für DTMs definiert haben, die immer halten. Eine DTM, die bei einigen Eingaben nicht hält, hat keine Zeitkomplexität oder Zeitkomplexität ∞. Zur Erinnerung: Σ≤n enthält alle Worte aus Σ∗ , die aus höchstens n Zeichen von Σ bestehen. TM (n) ist also definiert als die maximale Anzahl der Rechenschritte der DTM M bei einer Eingabe der Länge höchstens n. Damit ist sichergestellt, dass die Zeitkomplexität oder Laufzeit einer DTM stets eine monoton wachsende Funktion ist. In der Definition einer t(n)-zeitbeschränkten DTM haben wir uns auf Funktionen t : N → N eingeschränkt. Dieses hat rein technische Gründe (siehe unsere spätere Definition von zeitkonstruierbaren Funktionen auf Seite 63). Häufig werden wir auch t(n)-zeitbeschränkte Funktionen betrachten, wobei t : N → R>0 , z.B. t(n) = n log(n). Um dann der obigen Definition gerecht zu werden, sollten wir dann eigentlich immer t(n) durch ⌊t(n)⌋ 10 ersetzen. Da es jedoch kaum Missverständnisse geben kann, verzichten wir darauf. Dieselben Bemerkungen treffen auch auf die s(n)-platzbeschränkten DTMs zu, die wir als nächstes definieren. Zunächst definieren wir die Platzkomplexität einer DTM M . Informell ist dieses der Speicher, den die DTM M benötigt. Definition 2.1.7 Sei M = (Q, Σ, Γ, δ) eine DTM, die bei jeder Eingabe hält. 1. Für w ∈ Σ∗ ist SM (w) definiert als die Anzahl der Zellen, die M bei Eingabe w benutzt. D.h., sind K0 , K1 , . . . , Kl die Konfigurationen, die M bei Eingabe w durchläuft, so ist SM (x) = max{|Ki ||i = 0, . . . , l}, wobei |Ki | die Anzahl der Bandzellen bezeichnet, die in Konfiguration Ki mit Bandsymbolen 6= ⊔ beschriftet sind. 2. Für n ∈ N ist SM (n) := max{SM (w) | w ∈ Σ≤n }. 3. Die Funktion SM : N → N heißt die Platzkomplexität oder der Platzbedarf der DTM M . 4. Sei s : N → N eine monoton wachsende Funktion. Die DTM M heißt s(n)-platzbeschränkt, wenn für alle n ∈ N gilt: SM (n) ≤ s(n). Jetzt können wir bereits die ersten Komplexitätsklassen definieren. Eine Komplexitätsklasse ist dabei immer eine Menge von Sprachen, die durch Turingmaschinen mit ähnlichem Zeit- oder Platzbedarf entschieden werden können. Dabei ist die Bedeutung von ähnlich“ häufig sehr liberal. Zunächst ” definieren wir Zeitkomplexitätsklassen dann Platzkomplexitätsklassen. Definition 2.1.8 Sei t : N → N eine monoton wachsende Funktion. Die Klasse DT IME(t(n)) ist definiert als L ist eine Sprache, die von einer O(t(n))-zeitDT IME(t(n)) := L . beschränkten DTM entschieden wird Man beachte, dass wir in der Definition nur fordern, dass es eine O(t(n))zeitbeschränkte DTM geben muss. Wie in der theoretischen Informatik üblich, ignorieren wir also in dieser Definition konstante Faktoren. Um zu zeigen, dass eine Sprache L in DT IME(t(n)) liegt, muss also die Existenz einer L entscheidenden, O(t(n))-zeitbeschränkten DTM M gezeigt werden. Häufig aber nicht immer geschieht dies durch die explizite Beschreibung einer solchen DTM M . Analog können wir nun auch die Klassen DSPACE(s(n)) definieren. 11 Definition 2.1.9 Sei s : N → N eine monoton wachsende Funktion. Die Klasse DSPACE(s(n)) ist definiert als L ist eine Sprache, die von einer O(s(n))-platzDSPACE(s(n)) := L . beschränkten DTM entschieden wird 2.2 Mehrband Turingmaschinen Wir wollen jetzt das Modell der Turingmaschine etwas erweitern, indem wir mehr als ein Band zulassen. Wir werden sehen, dass diese Erweiterung die Klasse der entscheidbaren Sprachen nicht erweitert. Wir werden allerdings auch sehen, dass Mehrband-Turingmaschinen einige Sprachen mit geringerem Zeitbedarf entscheiden können als 1-Band-Turingmaschinen. Schließlich werden wir sehen, dass eine analoge Aussage für den Speicherbedarf nicht gilt. D.h. kann eine Sprache durch eine O(s(n))-platzbeschränkte MehrbandTuringmaschinen entschieden werden, so kann sie auch durch eine O(s(n))platzbeschränkte 1-Band-Turingmaschine entschieden werden. Definition 2.2.1 Eine k-Band Turingmaschine (k-DTM) hat nicht nur ein Band und einen Lesekopf, sondern k Bänder mit je einem Lesekopf. Die Übergangsfunktion ist dann von der Form δ : Q\{qaccept , qreject } × Γk → Q × Γk × {R, L, N }k . Zu Beginn steht die Eingabe auf Band 1, auf allen anderen Bändern steht links das Startsymbol ⊲ gefolgt von Blanks. Die Arbeitsweise einer k-DTM ist wie die Arbeitsweise einer 1-Band-DTM definiert. Ist etwa δ(qi , a1 , . . . , ak ) = (qj , b1 , . . . , bk , L, R, . . . , L), so bedeutet dieses, das die Maschine, falls sie sich im Zustand qi befindet und auf dem i-ten Band ein ai liest, im nächsten Schritt in den Zustand qj übergeht, auf dem i-ten Band ai durch bi ersetzt, auf dem ersten Band den Lesekopf eine Position nach links bewegt, auf dem zweiten Band den Lesekopf eine Position nach rechts bewegt, usw. Ein Beispiel ist in Abbildung 2.3 dargestellt. Den Begriff der Konfiguration einer Mehrband-Turingmaschine können wir vollkommen analog wie bei 1-Band-Turingmaschinen definieren. Genauso bereitet die Verallgemeinerung der Begriffe wie Zeitkomplexität einer (1-Band) DTM oder t(n)-zeitbeschränkte Turingmasche (siehe Definition 2.1.6) auf Mehrband-DTMs keinerlei Probleme. Um Definition 2.1.7 auf Mehrband-DTMs zu verallgemeinern müssen wir nur erklären, was wir unter der Größe |K| einer Konfiguration einer Mehrband-DTM verstehen. Wenig überraschend ist dieses die Anzahl aller Bandzellen (auf allen Bändern der 12 Abbildung 2.3: Band und Leseköpfe einer 3-Band TM Maschine) die mit einem Bandsymbol 6= ⊲ beschriftet sind. Die Übertragung von Definition 2.1.7 auf Mehrband-DTM ist dann offensichtlich. Wir verzichten wie auch bei der Verallgemeinerung von Zeitkomplexität auf eine genaue Definition. Nun können wir auch die Komplexitätsklassen DT IME(t(n)) und DSPACE(s(n)) für Mehrband- genauer k-Band DTM definieren. Definition 2.2.2 Sei t : N → R>0 eine monoton wachsende Funktion und sei k ∈ N. Die Klasse DT IME k (t(n)) ist definiert als L ist eine Sprache, die von einer O(t(n))-zeit. DT IME k (t(n)) := L beschränkten k-Band DTM entschieden wird Definition 2.2.3 Sei s : N → N eine monoton wachsende Funktion und sei k ∈ N. Die Klasse DSPACE k (s(n)) ist definiert als L ist eine Sprache, die von einer O(s(n))-platzDSPACE k (s(n)) := L . beschränkten k-Band DTM entschieden wird Der folgende Satz zeigt, dass bei fester Funktion s(n) die Klassen DSPACE k (s(n)) für k = 1, 2, . . . alle identisch sind. Satz 2.2.4 Wird die Sprache L ⊆ Σ∗ von einer O(s(n))-platzbeschränkten k-Band DTM M entschieden, so gibt es auch eine O(s(n))-platzbeschränkte 1-Band DTM, die L entscheidet. Wir werden den Beweis dieses Satzes an dieser Stelle nicht führen. Weisen aber daraufhin, dass der Beweis auf der für die Komplexitätstheorie ganz wesentlichen Technik der Simulation beruht. Unter einer Simulation einer Turingmaschie M durch eine Turingmaschine S verstehen wir dabei den 13 Entwurf einer Maschine S, die das Verhalten von M nachahmt. Insbesondere muss die simulierende Maschine S dieselbe Sprache entscheiden wie die zu simulierende Maschine M . Für Zeitkomplexität und die Klassen DT IME k (t(n)) ist die Situation leider nicht so schön wie für die Platzkomplexität. Insbesondere gelten die folgenden Sätze. Satz 2.2.5 Sei t : N → N eine monoton wachsende Funktion. Wird die Sprache L ⊆ Σ∗ von einer O(t(n))-zeitbeschränkten k-Band DTM M entschieden, so gibt es auch eine O(t(n)2 )-zeitbeschränkte 1-Band DTM, die L entscheidet. Es gilt also das folgende Korollar. Korollar 2.2.6 Sei t : N → N eine monoton wachsende Funktion. Für alle k ∈ N gilt DT IME k (t(n)) ⊂ DT IME(t(n)2 ). Der nächste Satz zeigt, dass dieses Korollar im Wesentlichen nicht verbessert werden kann. Satz 2.2.7 Es gibt eine Sprache L ⊂ {0, 1}∗ , die auf einer 2-Band DTM in Zeit O(n) entschieden werden kann, die jedoch nicht durch eine 1-Band DTM mit Laufzeit o(n2 ) entschieden werden kann. Eine Sprache L, die benutzt werden kann, um Satz 2.2.7 zu zeigen, sollten Ihnen wohl bekannt sein. Die Aussage des Satzes gilt z.B. für Palindrome. Wir erhalten aus Satz 2.2.7 folgendes Korollar. Korollar 2.2.8 Sei t : N → N eine monoton wachsende Funktion mit t(n) = o(n2 ). Dann gilt für alle k ∈ N, k ≥ 2 DT IME k (n) 6⊂ DT IME(t(n)), Reden wir also vom Zeitbedarf zur Lösung eines Problems und sind wir an recht feinen Unterscheidungen im Laufzeitbedarf interessiert (z.B. Zeitbedarf n oder Zeitbedarf n2 ) so müssen wir also anders als beim Platzbedarf zwischen Mehr- und 1-Band DTMs unterscheiden. Glücklicherweise ist dieses nicht der Fall, wenn wir uns um Komplexitätsklassen wie P oder N P kümmern, denen wir uns nun zuwenden. 14 2.3 Die Klassen P und PSPACE Satz 2.2.5 zeigt, dass die folgende Definition eines effizient lösbaren Problems von dem zugrunde gelegten Rechenmodell (1-Band DTM, Mehrband DTM) weitgehend unabhängig ist. Definition 2.3.1 Die Klasse P ist definiert als [ DT IME(nk ). P= k∈N In Worten: P ist die Klasse aller Sprachen L, für die es ein festes, aber beliebiges k und eine (1-Band-)DTM M mit Laufzeit O(nk ) gibt, die L entscheidet. P ist die Klasse der Sprachen, die in polynomieller Zeit entschieden werden können. Wie oben schon angedeutet, folgt aus Satz 2.2.5, dass sich die Klasse P nicht ändert, wenn wir in Definition 2.3.1 Mehrband Turingmaschinen als Berechnungsmodell zugrunde gelegt hätten. Man kann auch zeigen, dass sich die Definition nicht ändert, wenn wir nicht Turingmaschinen sondern RandomAccess- Machine (RAMs) als Berechnungsmodell zugrunde legen. Häufig wird sogar davon ausgegangen, dass jedes “vernünftige” Rechenmodell zur selben Klasse von Sprachen führt, die in polynomieller Zeit gelöst werden können. Diese Aussage (häufig die moderne Churchsche These genannt) ist wie die Churchsche These nicht beweisbar. Die Klasse P stellt für uns die Klasse der effizient entscheidbaren Sprachen dar. Allgemeiner, jedes Problem, das sich durch eine DTM mit Laufzeit O(nk ) lösen lässt, werden wir als effizient lösbar bezeichnen. Für unsere Wahl von P als der Klasse der effizient lösbaren Probleme gibt es im wesentlichen drei Gründe. 1. P ist eine mathematisch robuste Klasse. 2. Probleme, die nicht in P liegen, lassen sich in der Praxis nicht effizient lösen. Probleme, die in P liegen, lassen sich häufig auch in der Praxis effizient lösen. 3. Die Klasse P führt zu einer Theorie, die sowohl praktisch als auch theoretisch interessante und relevante Ergebnisse liefert. Zum ersten Grund: Die Klasse der effizient lösbaren Probleme sollte vom Rechnermodell weitgehend unabhängig sein. Wie wir gesehen haben, ist dieses bei unserer Definition der Fall. Weiter sollten wir DTMs, die effizient 15 sind, miteinander kombinieren können, um eine effiziente DTM zu erhalten. Bei unserer Definition einer effizienten DTM als einer DTM, deren Laufzeit durch ein Polynom beschränkt ist, ist diese Forderung erfüllt. Zum zweiten Grund: Für die meisten Probleme, die nicht in P liegen, oder von denen wir nicht wissen, ob sie in P liegen, haben die besten bekannten Algorithmen häufig eine Laufzeit der Form 2n . Nun sind aber mit wachsender Eingabegröße Probleme, deren Lösung Laufzeit 2n benötigt, sehr viel schneller praktisch nicht mehr lösbar als Probleme, deren Lösung Laufzeit n2 benötigt. Aber in P lassen wir auch Sprachen zu, die von einer DTM mit Laufzeit 10000 n entschieden werden. Ein Algorithmus dieser Laufzeit ist in der Praxis sicherlich nicht brauchbar. Die Behauptung, eine Sprache, die von einer DTM mit Laufzeit n10000 entschieden wird, sei effizient lösbar, scheint kaum gerechtfertigt zu sein. In der Praxis ist es aber häufig so, dass für Sprachen, von denen bekannt ist, dass sie in P liegen, bald auch DTMs oder Algorithmen bekannt sind, die diese Sprachen entscheiden und deren Laufzeit durch ein kleines Polynom wie n2 oder n3 beschränkt ist1 . Zusammenfassend kann man sagen, dass Probleme, die nicht in P liegen, auch in der Praxis nicht effizient gelöst werden können. Außerdem können Probleme, die in P liegen, meistens auch in der Praxis effizient gelöst werden. Den dritten oben angeführten Grund für die Definition von P auszuführen ist Ziel und Teil zumindest eines Teils dieser Vorlesung. Analog zur Klasse P können wir auch die Klasse PSPACE der mit polynomiellem Platz lösbaren Probleme definieren. Definition 2.3.2 Die Klasse PSPACE ist definiert als [ DSPACE(nk ). PSPACE = k∈N In Worten: PSPACE ist die Klasse aller Sprachen L, für die es ein festes, aber beliebiges k und eine O(nk )-platzbeschränkte (1-Band-)DTM M gibt, die L entscheidet. PSPACE ist die Klasse der Sprachen, die in polynomiellem Platz entschieden werden können. Wir werden sehen, dass vermutlich nicht alle Probleme in PSPACE auch zeiteffizient gelöst werden können. Die Klasse PSPACE ist vor allem aus theoretischer Sicht interessant. Im Vergleich zwischen P und PSPACE zeigt 1 Wie wir im Laufe der Vorlesung sehen werden, ist die Aussage nur aus praktischer Sicht vielleicht sinnvoll. Aus Sicht der Komplexitätstheorie ist sie falsch. 16 sich etwa, dass der im folgenden Abschnitt eingeführte Begriff des Nichtdeterminismus sich vermutlich in Bezug auf Zeit bzw. Platz völlig anders verhält. Wir wollen nun noch eine besonders wichtige Sprache aus der Klasse PSPACE vorstellen. Es handelt sich dabei um die Sprache QBF, der Menge aller wahren, vollständig quantifizierten Booleschen Formel. Diese Sprache spielt für PSPACE dieselbe Rolle wie SAT für N P. Eine vollständig quantifizierte Boolesche Formel ist ein Ausdruck der Form Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ), wobei Qi ∈ {∀, ∃} für i = 1, . . . , n und φ eine Boolesche Formel über Booleschen Variablen x1 , . . . , xn ist. Man nennt eine solche Formel vollständig quantifiziert, da jede Variable xi mit ∀ oder ∃ quantifiziert ist. Eine vollständig quantifizierte Boolesche Formel ist entweder wahr oder falsch. Nun erhalten wir Definition 2.3.3 Die Sprache QBF besteht aus allen vollständig quantifizierten wahren Booleschen Formeln. Sei φ(x1 , . . . , xn ) eine Boolesche Formel über n Variablen. Mit der Größe m dieser Formel bezeichnen wir die Beschreibungsgröße von φ in einer sinnvoll gewählten standardisierten Beschreibungsform für Boolesche Formeln. Wie diese Beschreibung genau aussieht, ist irrelevant. Die Formel φ ist nun erfüllbar genau dann, wenn die vollständig quantifizierte Boolesche Formel ∃x1 ∃x2 · · · ∃xn φ(x1 , . . . , xn ) wahr ist. Damit gilt also SAT ⊆ QBF. Wir wollen uns nun überlegen, dass QBF in PSPACE enthalten ist. Um die Notation zu vereinfachen identifizieren wir den Booleschen Wert wahr“ mit 1 und den Wert falsch“ mit ” ” 0. Betrachten wie eine vollständig quantifzierte Boolesche Formel Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ). Nehmen wir zunächst an, dass Q1 = ∃. Dann ist der Ausdruck Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ) genau dann wahr, wenn der Ausdruck Q2 x2 · · · Qn xn φ(1, x2 , . . . , xn ) ∨ Q2 x2 · · · Qn xn φ(0, x2 , . . . , xn ) 17 Abbildung 2.4: Rekursionsbaum für ∃x1 ∀x2 ∃x3 φ(x1 , x2 , x3 ) wahr ist. Analog können wir im Fall Q1 = ∀ vorgehen. Dann ist Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ) genau dann wahr, wenn der Ausdruck Q2 x2 · · · Qn xn φ(1, x2 , . . . , xn ) ∧ Q2 x2 · · · Qn xn φ(0, x2 , . . . , xn ) wahr ist. Genauso können wir dann die Quantoren Q2 durch ein ∨ oder ein ∧ von zwei Boolesche Formel ersetzen, in denen die zweite Variable x2 einmal mit 1 und einmal mit 0 belegt wird. Dieses Vorgehen können wir fortsetzen, bis wir den Ausdruck Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ) durch einen logisch äquivalenten Ausdruck ersetzt haben, in dem nur noch ∨, ∧ und Ausdrücke der Form φ(b1 , . . . , bn ) mit bi ∈ {0, 1} auftauchen. Wir können uns dieses Vorgehen auch anhand eines Baumes wie in Abbildung 2.4 veranschaulichen. Aus diesen Betrachtungen ergibt sich sich leicht die Konstruktion einer rekursiv arbeitenden DTM D, die QBF mit polynomiellen Platz löst. Um zu entscheiden, ob der Ausdruck A = Q1 x1 Q2 x2 · · · Qn xn φ(x1 , x2 , . . . , xn ) 18 wahr ist, entscheidet die DTM D rekursiv, welche der beiden Ausdrücke A1 = Q2 x2 · · · Qn xn φ(1, x2 , . . . , xn ) und A0 = Q2 x2 · · · Qn xn φ(0, x2 , . . . , xn ) wahr sind. Ist Q1 = ∀, so gibt D genau dann wahr aus, wenn A1 und A0 wahr sind. Ist hingegen Q1 = ∃, so gibt D genau dann wahr aus, wenn mindestens einer der beiden Ausdrücke A1 , A0 wahr ist. Bezeichne nun SD (A) den Platzbedarf von D bei Eingabe A. Wir nehmen nun an, dass die Ausdrücke A0 und A1 Beschreibungsgröße höchstens m haben, wenn der Ausdruck A Beschreibungsgröße m besitzt. Aus unseren obigen Überlegungen ergibt sich nun SD (A) ≤ max{SD (A1 ), SD (A0 )} + O(m), denn D kann den Platz, den sie benötigt, um den Wahrheitswert von A1 zu bestimmen, bei der Bestimmung des Wahrheitswertes von A0 wiederverwenden. Dabei benötigt D Platz O(m), um die rekursiven Aufrufe zu verwalten. Die Basisfälle der Rekursion sind erreicht, wenn alle Variablen mit Booleschen Konstanten belegt sind.2 In diesen Fällen kann D den Wahrheitswert sicherlich in Platz linear in der Beschreibungsgröße m des Ausdrucks A bestimmen. Zusammen mit der obigen Rekursionsformel für den Platzbedarf von D ergibt sich, dass D bei Eingabe A Platzbedarf O(n · m) besitzt, wobei n die Anzahl der Variablen und m die Beschreibungsgröße von A ist. Insgesamt erhaltenen wir also Satz 2.3.4 Die Sprache QBF ist in PSPACE enthalten. 2 Dieses sind die Blätter in einem Baum wie in Abbildung 2.4. 19 2.4 Nichtdeterministische Turingmaschinen und die Klasse N P Als nächstes betrachten wir nichtdeterministische Turingmaschinen (NTM). NTMs sind keine realistischen Rechnermodelle. Sie sind aber als mathematisches Modell von großem Nutzen. Definition 2.4.1 Eine nichtdeterministische Turingmaschine (NTM) wird durch ein 4-Tupel M = (Q, Σ, Γ, δ) beschrieben. Dabei sind Q, Σ, Γ endliche, nicht leere Mengen und 1. Q ist die Zustandsmenge. Diese enthält immer die ausgezeichneten Zustände s, qaccept , qreject , wobei qaccept 6= qreject gelten muss. s ist der Startzustand, qaccept ist der akzeptierende Zustand und qreject ist der ablehnende Zustand. 2. Σ ist das Eingabealphabet, wobei das Blank ⊔ und das Startsymbol ⊲ nicht in Σ liegen. 3. Γ ist das Bandalphabet, wobei Σ ⊂ Γ und ⊔, ⊲ ∈ Γ. Außerdem sind die Symbole L, R, N nicht in Γ enthalten. 4. δ : Q\{qaccept , qreject } × Γ → POT (Q × Γ × {R, L, N }) ist die Übergangsfunktion. Für qaccept × Γ, qreject × Γ ist δ also nicht definiert. 5. Für das Symbol ⊲ ∈ Γ und alle Zustände q ∈ Q gilt δ(q, ⊲) ⊆ POT (Q× {⊲} × {R}). Außerdem muss für alle q ∈ Q, a ∈ Γ, a 6= ⊲, gelten δ(q, a) ⊆ POT (Q × Γ\{⊲} × {L, R, N }). Mit anderen Worten: ⊲ kann nur dann als zweite Koordinate eines Elementes von δ(q, a) auftauchen, wenn auch a = ⊲. Für eine beliebige Menge S bezeichnet POT (S) hierbei die Menge aller Teilmengen von S, die sogenannte Potenzmenge von S. Ist z.B. δ(q, a) = {(q ′ , a′ , L), (q ′′ , a′′ , R)}, q, q ′ , q ′′ ∈ Q, a, a′ , a′′ ∈ Γ, so kann die NTM N , befindet sie sich im Zustand q und liest das Symbol a, im nächsten Schritt entweder das Symbol a durch a′ ersetzen, in den Zustand q ′ wechseln und den Kopf eine Zelle nach links bewegen oder die NTM N kann das Symbol a durch a′′ ersetzen, in den Zustand q ′′ wechseln und den Kopf eine Zelle nach rechts bewegen. Bei einer festen Eingabe w ∈ Σ∗ kann eine NTM N viele verschiedene Berechnungen ausführen, je nachdem welche Elemente aus δ(q, a) in den einzelnen Rechenschritten von der NTM jeweils ausgewählt werden. Diese 20 Abbildung 2.5: Berechnungsbaum einer NTM verschiedenen Berechnungen können gut in einem Baum, dem sogenannten Berechnungsbaum von N bei Eingabe w dargestellt werden. Ein Beispiel ist grob in Abbildung 2.5 skizziert. Jeder Knoten des Berechnungsbaums ist mit einer Konfiguration von N gelabelt. Der Wurzelknoten ist mit der Startkonfiguration q0 ⊲ w gelabelt. Ist ein Knoten mit der Konfiguration K gelabelt, so sind die Label seiner Kinderknoten die möglichen direkten Nachfolgekonfigurationen von K. Dies sind diejenigen Konfigurationen, die aus K durch eine einmalige Anwendung der Übergangsfunktion δ erreicht werden können. Man beachte, dass mehrere Knoten mit derselben Konfiguration K gelabelt sein können. Einen Pfad im Berechnungsbaum nennen wir Berechnungspfad. Jeder Berechnungspfad entspricht einer möglichen Berechnung von N bei Eingabe w. Da es Berechnungen gibt, die zu Endlosschleifen führen, kann der Berechnungsbaum unendlich gross sein und es kann unendlich lange Berechnungspfade geben. Berechnungspfade endlicher Länge entsprechen Berech21 nungen, die irgendwann im Zustand qaccept oder im Zustand qreject enden. Endet eine Berechnung im Zustand qaccept , so nennen wir die Berechnung und den entsprechenden Berechnungspfad akzeptierend. Endet die Berechnung im Zustand qreject , so heisst die Berechnung und der Berechnungspfad ablehnend. In Abbildung 2.5 ist der gestrichelte Pfad ablehnend, während der gepunktete Pfad akzeptierend ist. Eine NTM N akzeptiert eine Eingabe w ∈ Σ∗ , wenn es mindestens eine akzeptierende Berechnung von N bei Eingabe w gibt. Anders formuliert, wenn der Berechnungsbaum von N bei Eingabe w einen akzeptierenden Berechnungspfad enthält. Die von einer NTM N = (Q, Σ, Γ, δ) akzeptierte Sprache L(N ) ist dann definiert als L(N ) := {w ∈ Σ∗ | N akzeptiert w}. Wir sagen, die NTM akzeptiert die Sprache L, wenn L = L(N ). Die NTM N entscheidet die Sprache L, wenn N immer hält und N die Sprache L akzeptiert. Wir sagen dabei, dass die NTM N bei jeder Eingabe hält, wenn für alle Eingaben alle möglichen Berechnungen im Zustand qaccept oder im Zustand qreject enden. Mit anderen Worten, die NTM N hält bei jeder Eingabe, wenn die Berechnungsbäume für alle Eingaben w nur endliche Pfade besitzen. Das Verhältnis von Akzeptieren und Entscheiden bei einer NTM ist vollkommen analog zum Verhältnis von Akzeptieren und Entscheiden bei einer DTM. In Zukunft werden wir uns nur noch mit NTMs beschäftigen, die bei jeder Eingabe halten. Als nächstes wollen wir die Laufzeit und den Platzbedarf einer NTM definieren. Wie bei einer DTM besteht bei einer NTM ein Rechenschritt aus der einmaligen Anwendung der Übergangsfunktion. Befindet sich die NTM im Zustand q und liest das Zeichen a, so wählt die NTM in einem Rechenschritt ein Element aus δ(q, a) aus und führt die Aktionen entsprechend dem ausgewählten Element aus δ(q, a) aus. Definition 2.4.2 Sei N = (Q, Σ, Γ, δ) eine nichtdeterministische Turingmaschine, die bei jeder Eingabe hält. • Für w ∈ Σ∗ ist TN (w) definiert als die maximale Anzahl von Rechenschritten in einer möglichen Berechnung von N bei Eingabe w. • Für n ∈ N ist TN (n) := max{TN (w) | w ∈ Σ≤n }. • Die Funktion TN : N → N heißt die Zeitkomplexität oder Laufzeit der NTM N . 22 • Die NTM N heißt t(n)-zeitbeschränkt, wenn für alle n ∈ N gilt: TN (n) ≤ t(n). Nach dieser Definition ist TN (w) genau die Länge eines längsten Pfades im Berechnungsbaum von N bei Eingabe w. Bis auf den ersten Punkt entspricht diese Definition genau der Definition der Laufzeit einer DTM. Für die Anzahl der Rechenschritte einer NTM bei Eingabe w gibt es unterschiedliche Definitionen. Einige alternative Definitionen können auch in den Büchern, die wir empfohlen haben, gefunden werden. In manchen Büchern ist die Laufzeit einer NTM im wesentlichen definiert als die Länge eines kürzesten akzeptierenden Rechenwegs. Diese verschiedenen Definitionen der Laufzeit einer NTM sind jedoch, soweit es den Inhalt dieser Vorlesung betrifft, äquivalent. Als nächstes definieren wir die Platzkomplexität einer NTM N . Informell ist dieses der Speicher, den die NTM benötigt. Wie bei der Laufzeit betrachten wir dabei wiederum das Maximum über alle möglichen Berechnungspfade einer NTM. Definition 2.4.3 Sei N = (Q, Σ, Γ, δ) eine NTM, die bei jeder Eingabe hält. 1. Für w ∈ Σ∗ ist SN (w) definiert als die maximale Anzahl der Zellen, die N auf einem der Berchnungspfade bei Eingabe w benutzt. 2. Für n ∈ N ist SN (n) := max{SN (w) | w ∈ Σ≤n }. 3. Die Funktion SN : N → N heißt die Platzkomplexität oder der Platzbedarf der NTM N . 4. Die NTM N heißt s(n)-platzbeschränkt, wenn für alle n ∈ N gilt: SN (n) ≤ s(n). Jetzt können wir wie bei DTMs Zeit- und Platzkomplexitätsklassen definieren. Definition 2.4.4 Sei t : N → N eine monoton wachsende Funktion. Die Klasse N T IME(t(n)) ist definiert als L ist eine Sprache, die von einer O(t(n))-zeitN T IME(t(n)) := L . beschränkten NTM entschieden wird 23 Analog erhalten wir die Klassen N SPACE(s(n)). Definition 2.4.5 Sei s : N → N eine monoton wachsende Funktion. Die Klasse N SPACE(s(n)) ist definiert als L ist eine Sprache, die von einer O(s(n))-platzN SPACE(s(n)) := L . beschränkten NTM entschieden wird Schließlich erhalten wir die Komplexitätsklassen N P und N PSPACE wie die Klassen P und PSPACE, indem wir jetzt als Berechnungsmodell NTMs zugrunde legen. S Definition 2.4.6 N P = k∈N N T IME(nk ). Definition 2.4.7 N PSPACE = S k∈N N SPACE(n k ). In der Vorlesung Einführung in Berechenbarkeit, Komplexität und formale ” Sprachen“ werden Sie den folgenden Satz kennen gelernt haben. Satz 2.4.8 Sei t : N → N eine monoton wachsende Funktion mit t(n) ≥ n für alle n. Für jede NTM mit Laufzeit t(n) gibt es eine DTM mit Laufzeit 2O(t(n)) , die dieselbe Sprache entscheidet. Für die Platzkomplexität werden wir in Kürze ein deutlich besseres Resultat zeigen, nämlich Satz 2.4.9 (Satz von Savitch) Sei s : N → N eine monoton wachsende, platzkonstruierbare3 Funktion mit s(n) ≥ n für alle n. Für jede NTM mit Platzbedarf s(n) gibt es eine DTM mit Platzbedarf O(s(n)2 ), die dieselbe Sprache entscheidet. Insbesondere also gilt: Korollar 2.4.10 PSPACE = N PSPACE. ? Das zum P = N P-Problem äquivalente Problem für die Platzkomplexität ist also schon gelöst. Nichtdeterminismus bringt für die Platzkomplexität keine wirklich großen Vorteile. 3 Diesen Begriff werden wir in Kürze definieren. 24 2.5 Polynomielle Reduktionen Reduktionen sind eines der wichtigsten Konzepte der Komplexitätstheorie. Sie werden benutzt, um die Komplexität von Sprachen oder Problemen miteinander vergleichen zu können, und um die schwierigsten Probleme in Klassen wie N P oder PSPACE zu identifizieren. Es gibt verschiedene Typen von Reduktionen. Wir beschäftigen uns zunächst nur mit polynomiellen Reduktionen. Hierzu zunächst die folgende Definition. Definition 2.5.1 Sei Σ ein Alphabet. Eine Funktion f : Σ∗ → Σ∗ heißt polynomiell berechenbar, wenn es eine DTM M mit polynomieller Laufzeit gibt, die f berechnet. Dabei berechnet M die Funktion f , wenn für alle w ∈ Σ∗ die DTM M bei Eingabe w im Zustand qaccept hält, der Kopf auf der ersten Zelle steht und der Inhalt des Bandes f (w) ist (hierbei werden die ⊔s am Ende ignoriert). Definition 2.5.2 Seien A, B ⊆ Σ∗ zwei Sprachen. A heißt auf B polynomiell reduzierbar, wenn es eine polynomiell berechenbare Funktion f gibt mit w ∈ A ⇔ f (w) ∈ B. Die Funktion f wird in diesem Fall eine polynomielle Reduktion genannt. Ist A auf B polynomiell reduzierbar, so schreiben wir A ≤p B. Fundamental für uns ist der folgende Satz. Satz 2.5.3 A, B seien zwei Sprachen. Gilt A ≤p B und B ∈ P, dann gilt auch A ∈ P. Beweis: Da B ∈ P, gibt es eine DTM M mit polynomieller Laufzeit, die B entscheidet. Weiter sei f die polynomielle Reduktion von A auf B. Wir erhalten dann die folgende DTM D für A. D: Bei Eingabe w : 1. Berechne f (w). 2. Simuliere M mit Eingabe f (w). Akzeptiert M die Eingabe f (w), akzeptiere w. Sonst lehne ab. Da f eine polynomiell berechenbare Funktion ist und auch die DTM M polynomielle Laufzeit hat, ist D eine DTM mit polynomieller Laufzeit. Da w ∈ A ⇔ f (w) ∈ B entscheidet D die Sprache A. 25 Polynomielle Reduktion, wie wir sie definiert haben, werden gelegentlich auch Karp-Reduktionen (nach Richard Karp) oder many-one-Reduktionen genannt. Der letzte Name erklärt sich aus der Tatsache, dass bei einer Reduktion meist vielen Urbildern dasselbe Bild zugewiesen wird. Das folgende Lemma ist einfach zu beweisen, aber wird implizit in vielen Beweisen der folgenden Abschnitte immer wieder benutzt. Lemma 2.5.4 Ist A ≤p B und B ≤p C, so gilt A ≤p C. Beweis: Sei f die polynomielle Reduktion von A auf B und g die polynomielle Reduktion von B auf C. Aus 1. w ∈ A ⇔ f (w) ∈ B für alle w 2. v ∈ B ⇔ g(v) ∈ C für alle v folgt w ∈ A ⇔ g ◦ f (w) ∈ C. Damit ist g ◦ f eine Reduktion von A auf C. g ◦ f (w) kann in polynomieller Zeit berechnet werden, indem zunächst f (w) und dann g(f (w)) berechnet wird. Damit ist g ◦ f eine polynomielle Reduktion von A auf C. Jetzt werden wir ein erstes Beispiel für eine polynomielle Reduktion kennen lernen. Dazu zunächst die Definition zweier Sprachen, die in N P liegen. Eine Boolesche Formel φ ist in konjunktiver Normalform (KNF), wenn sie aus mehreren Klauseln verknüpft durch ∧ besteht. Die Formel heißt dann eine KNF-Formel. Eine 3-KNF Formel ist eine KNF-Formel in der jede Klausel genau drei Literale enthält. Dann ist 3SAT := {hφi | φ ist eine erfüllbare 3-KNF-Formel}. Sei G = (V, E) ein ungerichteter Graph. Eine Teilmenge C der Knoten von G heißt Clique, wenn für alle i, j ∈ C gilt {i, j} ∈ E. Die Knoten einer Clique sind also alle paarweise durch Kanten im Graphen G verbunden. Eine Clique C heißt k-Clique, wenn C genau k Knoten enthält. Dann definieren wir Clique := {hG, ki | G ist ein ungerichteter Graph mit einer k-Clique}. Man überzeugt sich leicht, dass sowohl 3SAT als auch Clique in der Klasse N P liegen. Weiter gilt aber auch Satz 2.5.5 3SAT ist auf Clique polynomiell reduzierbar. 26 Beweis: Zu jeder 3-KNF Formel φ konstruieren wir einen Graphen G und eine Zahl k, so dass φ genau dann erfüllbar ist, wenn G eine Clique der Grösse k enthält. Die Reduktion f wird dann die Formel φ auf das Paar (G, k) abbilden. Sei also φ eine 3-KNF Formel. Wir schreiben φ = (a1 ∨ b1 ∨ c1 ) ∧ (a2 ∨ b2 ∨ c2 ) ∧ · · · ∧ (ak ∨ bk ∨ ck ), wobei die ai , bi , ci nicht notwendigerweise verschiedene Literale sind. Diese Formel wird abgebildet auf (G, k), wobei k die Anzahl der Klauseln von φ ist und der Graph G folgendermaßen konstruiert wird. G besitzt 3k Knoten, für jedes Literal in φ einen Knoten. Jeden Knoten von G assoziieren wir mit einem Literal in φ. Der Knoten ist dann mit dem Literal, zu dem er assoziiert ist, gelabelt. Die Knoten sind organisiert in k Triplets. Diese assoziieren wir mit den Klauseln in φ. Jedes Triplet enthält drei Knoten. Ein Triplet assoziiert zu einer Klausel κ enthält genau die drei Knoten, die zu den Literalen der Klausel κ assoziiert sind. Kanten existieren zwischen je zwei Knoten i, j des Graphen G, es sei denn für die beiden Knoten i, j trifft eine der beiden folgenden Bedingungen zu. 1. i, j sind zu Literalen aus derselben Klausel assoziiert. 2. i ist mit der Variablen x und j mit x gelabelt oder umgekehrt. Damit ist die Konstruktion von G abgeschlossen. Ein Beispiel dieser Graphenkonstruktion ist in Abbildung 2.6 dargestellt. Die drei Knoten links sind den Literalen der zweiten Klausel assoziiert. Die oberen drei Knoten sind den Literalen der ersten Klausel assoziiert. Schließlich bilden die Knoten rechts das Triplet für die dritte Klausel. Wir wollen uns nun überlegen, dass eine 3-KNF-Formel genau dann erfüllbar ist, wenn der Graph G, den wir aus φ konstruieren, eine k-Clique besitzt. Hierzu müssen zwei Dinge gezeigt werden. 1. Ist φ erfüllbar, so besitzt G eine k-Clique. 2. Besitzt G eine k-Clique, so ist φ erfüllbar. Nehmen wir zunächst an, dass φ erfüllbar ist. Wir wählen eine beliebige erfüllende Belegung für φ aus. Aus dieser werden wir eine Clique in G der Grösse k konstruieren. Eine erfüllende Belegung für φ muss in jeder der k Klauseln mindestens ein Literal wahr machen. In jeder Klausel wählen wir nun eines der durch 27 Abbildung 2.6: Graph zu (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) die Belegung wahr gemachten Literale aus. Schließlich betrachten wir die Knoten in G, die zu den ausgewählten Literalen assoziiert sind. Dieses sind genau k Knoten. Wir behaupten, dass diese k Knoten eine Clique bilden. Seien i, j zwei beliebige der k Knoten. Diese Knoten sind nach unserer Auswahl zu Literalen aus unterschiedlichen Klauseln assoziiert. Außerdem können sie nicht mit x und x für eine Variable x gelabelt sein. Denn die Knoten sind zu Literalen assoziiert, die gleichzeitig von einer Belegung wahr gemacht werden. Literale x, x können natürlich nicht gleichzeitig von einer Belegung erfüllt werden. Damit sind je zwei der k ausgewählten Knoten durch eine Kante in G verbunden und die Knoten zusammen bilden eine k-Clique. Nehmen wir jetzt an, dass der Graph G eine k-Clique C enthält. Aus dieser konstruieren wir eine erfüllende Belegung für die Formel φ. Da Knoten innerhalb eines Triplets nicht durch eine Kante verbunden sind, muss die Clique C aus jedem Triplet genau einen Knoten enthalten. Außerdem gibt es unter den Knoten aus C keine zwei, die mit x und x gelabelt sind, denn solche Knoten sind nicht durch eine Kante miteinander verbunden. Damit können wir eine Belegung der Variablen in φ finden, die alle Literale erfüllt, mit denen die Knoten in C gelabelt sind. Diese Belegung macht pro Klausel mindestens ein Literal wahr. Die Belegung ist daher eine erfüllende Belegung für φ. 28 Zur Erinnerung: Die Reduktion f wird jede Formel φ auf das oben zur Formel φ konstruierte Paar (G, k) abbilden. Bislang haben wir gezeigt hφi ∈ 3SAT ⇔ hG, ki ∈ Clique. Um den Beweis des Satzes zu vervollständigen, müssen wir noch zeigen, dass wir (G, k) aus φ in polynomieller Zeit konstruieren können. Dieses ist aber leicht zu sehen. Die Knoten von G und ihre Labels können durch einmaliges Durchlaufen von φ konstruiert werden. Um die Kanten zu konstruieren, müssen wir uns für jedes Paar von Knoten nur ihre Labels anschauen und entscheiden, ob sie in unterschiedlichen Triplets liegen. Auch dieses kann in polynomieller Zeit durchgeführt werden. Damit ist f eine polynomielle Reduktion und der Satz ist bewiesen. Streng genommen haben wir im letzten Satz die Reduktion f nicht vollständig beschrieben. Wir haben nicht gesagt, worauf Worte w abgebildet werden, die keiner Codierung einer 3-KNF Formel entsprechen. Dieses ist auch ziemlich uninteressant und lenkt nur von der eigentlichen Konstruktion ab. Wir werden in Zukunft auf Fragen dieser Art nicht eingehen. Aber hier wollen wir kurz erläutern, was zu tun ist. Wir können in polynomieller Zeit feststellen, ob ein Wort einer Codierung einer 3-KNF Formel entspricht oder nicht. Entspricht ein Wort einer Codierung einer 3-KNF Formel, so wenden wir die Konstruktion aus dem Beweis von Satz 2.5.5 an. Ist das Wort hingegen keine Codierung einer 3-KNF Formel, so bilden wir das Wort auf ein Paar (G, k) ab, so dass G sicherlich keine k-Clique enthält. Eine mögliche Wahl ist es G bestehend aus einem Knoten zu wählen und k = 2 zu setzen. Die Beweise, die wir zur Äquivalenz w ∈ A ⇔ f (w) ∈ B im Beweis des letzten Satzes geführt haben, ist typisch für alle Beweise dieser Art. Diese Beweise gehen immer nach dem gleichen Schema vor. Betrachten wir die Richtung w ∈ A ⇒ f (w) ∈ B. Nehmen wir an, dass sowohl A als auch B in N P liegen. Für w ∈ A gibt es dann ein so genanntes Zertifikat c, das w ∈ A zeigt. Um die Implikation w ∈ A ⇒ f (w) ∈ B zu zeigen, wird dann aus c mit Hilfe der Funktion f ein Zertifikat für f (w) ∈ B konstruiert. So haben wir im Beweis von Satz 2.5.5 aus einem Zertifikat für φ ∈ 3SAT (eine erfüllende Belegung) mit Hilfe der Reduktion f ein Zertifikat für G = f (φ) ∈ Clique (eine Clique der Größe k) konstruiert. Dieses zeigte, φ ∈ 3SAT ⇒ f (φ) = G ∈ Clique. 29 2.6 N P- und PSPACE-Vollständigkeit In diesem Abschnitt werden wir die Begriffe der N P-Vollständigkeit und der PSPACE-Vollständigkeit einführen. Nicht alle Probleme, die in N P oder in PSPACE liegen, sind schwer zu lösen. Insbesondere gilt ja P ⊆ N P. Die N P-vollständigen Probleme sind die schwierigsten Probleme in N P und analog sind die PSPACE-vollständigen Probleme, die schwierigsten Probleme in PSPACE. Es wird nämlich aus der Definition vonVollständigkeit folgen, dass alle Sprachen in N P bzw. in PSPACE durch DTMs polynomieller Laufzeit entschieden werden können, wenn nur für irgendeine beliebige N P-vollständige bzw. PSPACE-vollständige Sprache eine polynomielle DTM existiert, die die Sprache entscheidet. Definition 2.6.1 Eine Sprache L heißt N P-vollständig, wenn sie die folgenden zwei Bedingungen erfüllt. 1. L ist in N P enthalten. 2. Für jede Sprache A ∈ N P gibt es eine polynomielle Reduktion von A auf L. Ist nur die zweite Bedingung erfüllt, so heißt L N P-schwer. Wir erhalten sofort die beiden folgenden wichtigen Sätze über N P-vollständige Probleme. Satz 2.6.2 Ist L N P-vollständig und ist L ∈ P, so gilt P = N P. Beweis: Nach Voraussetzung gibt es für jede Sprache A eine polynomielle Reduktion auf L. Weiter liegt L nach Voraussetzung in P. Dann aber sagt Satz 2.5.3, dass auch jede Sprache A ∈ N P in P liegen muss. Satz 2.6.3 Ist A ∈ N P und gilt L ≤p A für eine Sprache L, die N Pvollständig ist, so ist auch A N P-vollständig. Beweis: Da A nach Voraussetzung in N P liegt, müssen wir nur noch zeigen, dass sich jede Sprache B ∈ N P in polynomieller Zeit auf A reduzieren lässt. Sei B ∈ N P beliebig. Da L N P-vollständig ist, gibt es eine polynomielle Reduktion g von B auf L. Nach Voraussetzung gibt es auch eine polynomielle Reduktion f von L auf A. Dann aber ist die Hintereinanderschaltung f ◦ g eine polynomielle Reduktion von B auf A. 30 Wenn wir ein N P-vollständiges Problem kennen, können wir Satz 2.6.3 benutzen, um von anderen Sprachen zu zeigen, dass sie N P-vollständig sind. Vollkommen analog können wir nun PSPACE-Vollständigkeit definieren und die wichtigsten Tatsachen über PSPACE-vollständige Sprachen herleiten. Genauer erhalten wir folgende Definition und Sätze. Definition 2.6.4 Eine Sprache L heißt PSPACE-vollständig, wenn sie die folgenden zwei Bedingungen erfüllt. 1. L ist in PSPACE enthalten. 2. Für jede Sprache A ∈ PSPACE gibt es eine polynomielle Reduktion von A auf L. Erfüllt eine Sprache L nur die zweite Bedingung, so heißt L PSPACEschwer. Satz 2.6.5 Ist L PSPACE-vollständig und ist L ∈ P, so gilt P = PSPACE. Satz 2.6.6 Ist A ∈ PSPACE und gilt L ≤p A für eine Sprache L, die PSPACE-vollständig ist, so ist auch A PSPACE-vollständig. Um mit Hilfe der Sätze 2.6.3 und 2.6.6 von Sprachen zeigen zu können, dass sie N P- bzw. PSPACE-vollständig sind, müssen wir zunächst von mindestens einer Sprache direkt zeigen, dass sie N P- bzw. PSPACE-vollständig ist. Dieses geschieht im folgenden Satz. Satz 2.6.7 SAT ist N P-vollständig und QBF ist PSPACE-vollständig. Beweis: Wir beginnen mit einigen allgemeinen Überlegungen, die zeigen, wie wir eine Aussage der Form w liegt in der von der TM M entschiedenen ” Sprache“ durch eine quantifizierte Boolesche Formel ausdrücken können. Sei hierzu M = (Q, Σ, Γ, δ), L = L(M ) und w ∈ Σ∗ . Wir machen hierbei keinen Unterschied zwischen deterministischen und nichtdeterministischen Turingmaschinen. Die TM M sei s(n)-platzbeschränkt und t(n)-zeitbeschränkt. Ist nun w ∈ Σn können wir jede Konfiguration der TM M als eine Folge aus (Γ ∪ Q)≤s(n)+1 beschreiben. Um die Notation zu vereinfachen setzen wir A := Γ ∪ Q und beschreiben Konfigurationen von M bei Eingabe w durch Elemente aus As(n)+1 . Dabei ist natürlich zu beachten, dass nicht jedem 31 Element aus As(n)+1 eine Konfiguration der TM M entspricht. Um auszudrücken, dass ein Element aus As(n)+1 eine legale Konfiguration der TM M ist, führen wir ein Prädikat legal : As(n)+1 → {0, 1} ein, mit der Bedeutung ∀K ∈ As(n)+1 : legal(K) = 1 ⇔ K beschreibt legale Konfiguration von M . Hierbei steht also wie üblich 1 für den Booleschen Wert wahr“ und 0 steht ” für falsch“. Um das Verhalten von M zu beschreiben, benutzen wir noch ” drei weitere Prädikate: As(n)+1 → {0, 1} accept : As(n)+1 → {0, 1} start : As(n)+1 × As(n)+1 → {0, 1} succ : mit folgenden Bedeutungen: ∀K ∈ As(n)+1 mit ∀K ∈ As(n)+1 mit legal(K) = 1 : start(K) = 1 ⇔ K beschreibt Startkonfiguration von M bei Eingabe w. legal(K) = 1 : accept(K) = 1 ⇔ K beschreibt akzeptierende Konfiguration ∀(K1 , K2 ) ∈ As(n)+1 × As(n)+1 mit legal(K1 ) = legal(K2 ) = 1 : succ(K1 , K2 ) = 1 ⇔ K2 beschreibt eine legale Nachkonfiguration von K1 Mit Hilfe dieser Prädikate können wir für w ∈ Σn die Aussage w ∈ L(M ) wie folgt ausdrücken: ∃K1 , . . . , Kt(n) ∈ As(n)+1 t(n) ^ i=1 t(n)−1 legal(Ki ) ∧ start(K1 ) ∧ accept(Kt(n) ) ∧ ^ succ(Ki , Ki+1 ). i=1 Um zu Booleschen Ausdrücken zu gelangen, die w ∈ L beschreiben, führen wir nun Boolesche Variablen ein, mit deren Hilfe wir den obigen 32 Ausdruck über die Existenz von Konfigurationen in eine Boolsche Formel transformieren werden. Wir betrachten Boolesche Variablen xi,j,s , 1 ≤ i ≤ t(n), 1 ≤ j ≤ s(n) + 1, s ∈ A. Wir können Belegungen dieser Variablen mit Elementen K1 , . . . Kt(n) ∈ As(n)+1 identifizieren. Dabei soll eine Belegung der Variablen xi,j,s mit dem Wert 1 bedeuten, dass das j-te Symbol in Ki das Element s ∈ A ist. Natürlich entspricht nicht jeder Belegung der Variablen xi,j,s eine Folge von Elementen aus A oder gar eine Folge von legalen Konfigurationen von M . Aber wir können Boolesche Formeln benutzen, die genau dann von einer Belegung der Variablen xi,j,s erfüllt werden, wenn die Belegung zu legalen Konfigurationen führt. Um die Notation zu vereinfachen, werden wir die Variablenmenge {xi,j,s |1 ≤ j ≤ s(n) + 1, s ∈ A}, die einer Konfiguration entsprechen soll, mit Vi bezeichnen. Belegungen der Variablen in Vi bezeichnen wir ebenfalls mit Vi . Es geht dann jeweils aus dem Kontext hervor, was gemeint ist. Nun sei legal eine Boolesche Formel über m := (s(n) + 1)|A| Variablen, so dass ∀V ∈ {0, 1}m : legal(V ) = 1 ⇔ V beschreibt legale Konfiguration von M . Wir haben nicht versehentlich diese Boolesche Formel mit legal bezeichnet. Vielmehr wird die Boolesche Formel legal das für Elemente aus As(n)+1 definierte Prädikat legal ersetzen. Analog können wir Boolesche Formeln start, accept und succ definieren, die die entsprechenden Prädikate start, accept und succ ersetzen. Für diese Formel gilt: ∀(V, w) ∈ {0, 1}m × {0, 1}n mit legal(V ) = 1 : start(V ) = 1 ⇔ V beschreibt Startkonfiguration von M bei Eingabe w. ∀V ∈ {0, 1}m mit legal(V ) = 1 : accept(V ) = 1 ⇔ V beschreibt eine akzeptierende Konfiguration von M ∀(V1 , V2 ) ∈ {0, 1}m × {0, 1}m mit legal(V1 ) = legal(V2 ) = 1 : succ(V1 , V2 ) = 1 ⇔ V2 beschreibt eine legale Nachfolgekonfiguration der von V1 beschriebenen Konfiguration. 33 Wir werden nicht genau sagen, wie die Formeln legal, start, accept, succ aussehen. Dies kann etwa in dem Buch von Sipser nachgelesen werden. Wir müssen aber erwähnen, dass, gegeben die TM M , die Formeln in Zeit O(s(n)) konstruiert werden können und damit auch Größe O(s(n)) besitzen. Wir können nun w ∈ L(M ) mit Hilfe der Booleschen Formeln legal, start, accept, succ folgendermaßen ausdrücken: w ∈ L ⇔ ∃xi,j,s ∈ {0, 1}, 1 ≤ i ≤ t(n), 1 ≤ j ≤ s(n) + 1, s ∈ A : t(n)−1 t(n) ^ i=1 legal(Vi ) ∧ start(V1 , w) ∧ accept(Vt(n) ) ∧ ^ succ(Vi , Vi+1 ). i=1 Nach dem oben Gesagten, hat für w ∈ Σn die Formel auf der rechten Seite Größe O(s(n)t(n)). Sie kann auch in Zeit O(s(n)t(n)) konstruiert werden. Weiter ist die Formel der rechten Seite genau dann wahr, wenn t(n) ^ i=1 t(n)−1 legal(Vi ) ∧ start(V1 , w) ∧ accept(Vt(n) ) ∧ ^ succ(Vi , Vi+1 ) i=1 erfüllbar ist. Ist schließlich M noch eine NTM mit polynomieller Laufzeit, also t(n) = O(nk ), dann haben wir gezeigt, wie wir aus w ∈ Σ∗ in polynomieller Zeit eine Boolesche Formel konstruieren können, die genau dann erfüllbar ist, wenn w ∈ L = L(M ). Das heißt aber, dass wir für jede NTM N mit polynomieller Laufzeit, eine polynomielle Reduktion der von M entschiedenen Sprache auf SAT konstruiert haben. Damit ist SAT N P-vollständig. Unsere bisherigen Überlegungen zeigen noch nicht, dass QBF PSPACEvollständig ist. Wir haben zwar zu jedem w ∈ Σ∗ eine vollständig quantifizierte Boolesche Formel konstruiert, die genau dann wahr ist, wenn w ∈ L. Aber bei einer s(n)-platzbeschränkten TM wissen wir nur, dass t(n) = 2O(s(n)) (siehe Satz 2.4.8). Ist also s(n) = O(nk ), so können wir die quantifizierte Boolesche Formel weder in polynomieller Zeit konstruieren noch hat sie polynomielle Größe, wie es für die Aussage, dass QBF PSPACEvollständig ist, notwendig ist. Um dieses Problem zu lösen, gehen wir zunächst zurück zu unseren Prädikaten über As(n)+1 . Wir betrachten nun eine Verallgemeinerung von succ. Wir definieren Prädikate succl , l ∈ N, wie folgt: ∀(K1 , K2 ) ∈ As(n)+1 × As(n)+1 mit legal(K1 ) = legal(K2 ) = 1 : succl (K1 , K2 ) = 1 ⇔ K2 beschreibt eine Konfiguration von M , die aus K1 mit höchstens 2l Rechenschritten entsteht. 34 Insbesondere gilt also succ0 = succ und mit l := ⌈log(t(n))⌉ erhalten wir: w ∈ L ⇔ ∃K1 , K2 ∈ As(n)+1 legal(K1 ) ∧ legal(K2 ) ∧ start(K1 , w) ∧ accept(K2 ) ∧ succl (K1 , K2 ). Nun können wir sicherlich nicht die Prädikate succl ohne weiteres in Boolesche Formeln geringer Größe umschreiben. Wir beobachten aber, dass immer succl (K1 , K2 ) ⇔ ∃K3 : succl−1 (K1 , K3 ) ∧ succl−1 (K3 , K2 ) gilt. Würden wir allerdings succl−1 durch succl−2 , dann succl−2 durch succl−3 usw. ersetzen, um schließlich einen Ausdruck für succl zu erhalten, der nur noch Prädikate succ0 = succ enthält, so sieht man sofort, dass dieses auf 2l ≥ t(n) Auftreten von succ führt. Dies können wir uns nicht erlauben. Wir gehen deshalb anders vor. 5 Wir definieren das Hilfsprädikat H : As(n)+1 → {0, 1}, durch H(K1 , . . . , K5 ) = ¬ (K1 , K3 ) = (K4 , K5 ) ∨ (K3 , K2 ) = (K4 , K5 ) . Mit succl (K1 , K2 ) ⇔ ∃K3 : succl−1 (K1 , K3 ) ∧ succl−1 (K3 , K2 ) überprüft man nun, dass gilt succl (K1 , K2 ) ⇔ ∃K3 ∀K4 ∀K5 : H(K1 , . . . , K5 ) ∨ succl−1 (K4 , K5 ). Indem wir dieselbe Konstruktion sukzessive auf succl−1 , . . . , succ1 anwenden, erhalten wir einen zu succl logisch äquivalenten Ausdruck, in dem einmal das Prädikat succ und l-mal das Hilfsprädikat H auftaucht. Wenn wir jetzt noch Variablen Ki für Konfiguration durch Mengen von Booleschen Variablen ersetzen, das Hilfsprädikat H ersetzen durch eine Boolesche Formel und das Prädikat succ ersetzen durch unsere oben definierte Boolesche Formel gleichen Namens, können wir auch succl ersetzen durch eine Boolesche Formel succl der Größe O(s(n)l). Gegeben M , können wir diese Formel auch in Zeit O(s(n)l) berechnen. Kombinieren wir diese Formel mit unseren Booleschen Formeln start, accept, legal, so erhalten wir aus einer TM M = (Q, Σ, Γ, δ) und w ∈ Σ∗ eine quantifizierte Boolesche Formel Qw , die genau dann wahr ist, wenn w ∈ L. Dabei kann Qw bei einer s(n)-platzbeschränkten und t(n)-zeitbeschränkten TM in Zeit O(s(n) log(t(n)) konstruiert werden und hat auch Größe O(s(n) log(t(n)). Bei einer TM M , die nur polynomielle Platzbedarf hat, ist also Qw in polynomieller Zeit konstruierbar. Damit haben wir für jede TM M mit polynomiellem Platzbedarf eine polynomielle Reduktion von der von 35 M entschiedenen Sprache L(M ) auf die Sprache QBF konstruiert. QBF ist damit PSPACE-vollständig. 36 2.7 Der Satz von Savitch Wie schon häufiger erwähnt, ist das größte offene Problem der Komplexitäts? theorie die Frage P = N P. In diesem Abschnitt werden wir sehen, dass die ? entsprechende Frage für Platzkomplexität, also PSPACE = N PSPACE relativ leicht zu beantworten ist. Überraschenderweise ist die Antwort, dass die beiden Klassen PSPACE und N PSPACE identisch sind. Dieses Ergebnis wird unmittelbar aus dem so genannten Satz von Savitch folgen, der besagt, dass alles, was nichtdeterministisch in Platz s(n) entschieden werden kann, deterministisch in Platz O(s(n)2 ) entschieden werden kann. Bevor wir diesen Satz genau formulieren können, benötigen wir noch folgende Definition. Definition 2.7.1 Sei f : N → N mit f (n) ≥ n für alle n ∈ N. Die Funktion f heißt platzkonstruierbar, wenn es eine O(f (n))-platzbeschränkte DTM M gibt, die bei Eingabe 1n (also n Einsen) die Binärdarstellung von f (n) berechnet. Den Sinn dieser Definition wird im Beweis des Satzes von Savitch klar werden. Hier weisen wir nur darauf hin, dass alle uns in der Komplexitätstheorie oder im Algorithmenentwurf interessierenden Funktion wie n, 2n oder ⌈n log(n)⌉ platzkonstruierbar sind. Später in der Vorlesung werden wir Platz√ konstruierbarkeit so erweitern, dass auch Funktionen wie ⌈log(n)⌉ oder ⌈ n⌉ platzkonstruierbar sind. Satz 2.7.2 Sei s : N → N eine platzkonstruierbare Funktion mit s(n) ≥ n. Dann gilt N SPACE s(n) ⊆ DSPACE s(n)2 . Beweis: Sei L ∈ N SPACE(s(n)). Dann gibt es also eine O(s(n))-platzbeschränkte NTM N , die L entscheidet. Wie wir in den Übungen gesehen haben, können wir sogar annehmen, dass N s(n)-platzbeschränkt ist. Weiter können wir auch annehmen, dass N unabhängig von der Eingabe nur eine akzeptierende Konfiguration besitzt. Dieses kann man erreichen, indem die Arbeitsweise von N folgendermaßen geändert wird. Wann immer die alte NTM N in den akzeptierenden Zustand gehen will, wird die neue NTM zunächst den Inhalt sämtlicher Bandzellen auf ⊔ setzen, den Kopf auf die erste Zelle des Bandes bewegen und dann erst akzeptieren. Offensichtlich hat auch die neue NTM Platzbedarf s(n) und akzeptiert dieselbe Sprache wie N . Wir werden also annehmen, dass wir die Sprache L auf einer s(n)platzbeschränkten NTM N mit genau einer akzeptierenden Konfiguration 37 Ka entscheiden können. Wir müssen nun eine O(s(n)2 )-platzbeschränkte DTM M konstruieren, die ebenfalls L entscheidet. Sei Σ das Eingabealphabet von N . Mit Kw bezeichnen wir die Startkonfiguration von N bei Eingabe w ∈ Σ∗ . Wie im Beweis, dass QBF PSPACE-vollständig ist, werden wir mit succl das Prädikat bezeichnen, das für je zwei Konfigurationen K1 , K2 von N genau dann 1 ist, wenn wir von der Konfiguration K1 mit höchstens 2l Rechenschritten der NTM N zur Konfiguration K2 gelangen können. Wir werden dabei Konfigurationen von N bei Eingabe w ∈ Σn immer als Folge von genau s(n)+1 Symbolen darstellen. Da N s(n)-platzbeschränkt ist, gibt es außerdem eine nur von der NTM N abhängende Konstante c, so dass N 2c·s(n) -zeitbeschränkt ist. Damit gilt w ∈ L ⇔ succc·s(n) (Kw , Ka ). Die deterministische, L entscheidende DTM M wird nun succcs(n) (Kw , Ka ) mit Hilfe des folgenden rekursiven Algorithmus Erreichbar entscheiden. Als Eingabe erhält der Algorithmus Erreichbar zwei beliebige durch s(n)+ 1 Symbole beschriebene Konfigurationen K1 , K2 sowie eine natürliche Zahl l ≤ c · s(n). Erreichbar : Bei Eingabe K1 , K2 , l : 1. Falls l = 0, teste, ob K1 = K2 oder ob, K2 durch einen Rechenschritt von N aus K1 erreicht werden kann. Akzeptiere, falls einer dieser Tests erfolgreich ist. 2. Falls l ≥ 1, führe folgende Befehle für alle Konfigurationen K3 der NTM N der Länge s(n) + 1 aus: 3. Führe Erreichbar mit Eingabe K1 , K3 , l − 1 aus. 4. Führe Erreichbar mit Eingabe K3 , K2 , l − 1 aus. 5. Führen beide Aufrufe von Erreichbar zu Akzeptanz, akzeptiere. 6. Wurde noch nicht akzeptiert, lehne ab. Um den Algorithmus Erreichbar auf einer DTM umsetzen zu können, benötigen wir, dass die Funktion s : N → N paltzkonstruierbar ist. Denn ohne diese Forderung können wir im 3. Schritt des Algorithmus die Konfigurationen K3 der Länge s(n) + 1 nicht konstruieren. Bevor wir den Platzbedarf von Erreichbar analysieren, zunächst die Beschreibung der DTM M , die 38 die Sprache L entscheidet. Bei Eingabe w ∈ Σ∗ ruft die DTM M einfach den Algorithmus Erreichbar mit Eingabe Kw , Ka und l = c · s(n) auf. Mit Pl (n) bezeichnen wir nun den maximalen Platzbedarf von Erreichbar, wenn K1 , K2 Konfigurationen der Länge s(n) + 1 sind und die dritte Eingabe l ≤ c · s(n) ist. Wir zeigen durch vollständige Induktion über l, dass es eine Konstante a gibt, so dass Pl (n) ≤ a(l + 1)s(n). (2.1) Für l = 0 ist diese Aussage sicherlich korrekt, da dann nur ein Rechenschritt von N simuliert werden muss und dieses in Platz O(s(n)) möglich ist. Sei nun l ≤ c · s(n) beliebig und nehmen wir an, dass wir (2.1) für l − 1 bereits bewiesen haben. Nun gilt aber für eine Konstante a Pl (n) ≤ Pl−1 (n) + as(n). Platz Pl−1 (n) wird dabei für die beiden rekursiven Aufrufe von Erreichbar benötigt. Außerdem wird Platz a(s(n) für die Speicherung von l und der jeweils aktuelle Konfiguration K3 benötigt. Mit der Induktionsannahme für Pl−1 (n) folgt dann (2.1). Da wir in der DTM M nur den Algorithmus Erreichbar mit l = c·s(n) aufrufen, ist der Platzbedarf von M gegeben durch O(s(n)2 ). Wenn s(n) durch ein Polynom beschränkt ist, so gilt dieses auch für s(n)2 . Damit erhalten wir aus Satz 2.7.2 unmittelbar Korollar 2.7.3 PSPACE = N PSPACE. 39 Kapitel 3 Innerhalb von P und N P In diesem Kapitel werden wir uns mit Komplexitätsklassen innerhalb von P und N P beschäftigen. 3.1 Reduktionen, Co-Klassen und die Klasse co-N P Wir bezeichnen mit N PV die Klasse aller N P-vollständigen Sprachen. Für zwei beliebige Sprachen L1 , L2 schreiben wir L1 =p L2 , falls L1 ≤p L2 und L2 ≤p L1 gilt. Die Sprachen L1 , L2 sind dann etwa gleich schwierig. Nach Definition von N P-Vollständigkeit gilt für je zwei N P-vollständige Sprachen L1 , L2 , dass sie etwa gleich schwer sind, also L1 =p L2 . Ist hingegen P = 6 N P und ist L1 ∈ P und L2 ∈ N PV, so gilt zwar L1 ≤p L2 nicht jedoch L2 ≤p L1 , da L2 ≤p L1 und L1 ∈ P auch L2 ∈ P impliziert (Satz 2.6.2). Damit stellt sich die Frage, ob es unter der Annahme P = 6 N P Sprachen L ∈ N P gibt, die zwar nicht in P liegen, die aber auch nicht N P-vollständig sind. Ob also N P \ N PV = 6 P gilt. Diese Frage wurde 1975 von R. Ladner mit Ja“ ” beantwortet. Satz 3.1.1 Gilt P = 6 N P, so gibt es Sprachen L ∈ N P, die weder in P noch in N PV liegen. Später in diesem Abschnitt werden wir den Satz von Ladner beweisen. Zunächst wollen wir unter einer stärkeren Annahme als P = 6 N P ebenfalls zeigen, dass es Sprachen in N P gibt, die nicht N P-vollständig sind. 40 Um diese Annahme zu formulieren, benötigen wir die Klasse co-N P. Hierzu zunächst die folgende allgemeine Definition. Definition 3.1.2 Sei C eine beliebige Klasse von Sprachen. Mit co-C bezeichnen wir dann die folgende Klasse von Sprachen co-C := L Das Komplement L̄ von L liegt in C . Dabei ist L̄ = Σ∗ \L, wenn L über dem Alphabet Σ definiert ist. Insbesondere erhalten wir co-N P := L Das Komplement L̄ von L liegt in N P . Das Komplement SAT liegt also in co-N P, wobei φ ist keine korrekte Kodierung einer Booleschen Formel oder . SAT := φ φ ist Kodierung einer unerfüllbaren Booleschen Formel In der Regel bestehen Komplemente uns interessierender Sprachen aus zwei disjunkten Teilmengen. Eine Teilmenge besteht aus allen Elementen, die nicht einem bestimmten Format genügen (z.B. keine korrekte Boolesche Formel kodieren). Die andere Teilmenge besteht aus allen Elementen, die dieser Form zwar genügen, aber eine weitere Eigenschaft (z.B. eine erfüllbare Boolesche Formel zu sein) nicht erfüllen. In der Regel kann und wird man sich dann auf die zweite Teilmenge konzentrieren und diese als Komplement der ursprüngliche Sprache ansehen. Deshalb ist dann das Komplement von SAT einfach definiert als die Menge aller unerfüllbaren Booleschen Formeln. Wir werden dieser formal nicht ganz korrekten aber sehr nützlichen Konvention in Zukunft folgen. Man darf die Klasse co-C nicht mit dem mengentheoretischen Komplenement der Klasse C verwechseln. Die beiden Konzepte des mengentheoretischen Komplements von C und der Klasse co-C haben nichts miteinander zu tun. Neben co-N P können wir natürlich auch die Klassen co-P und co-PSPACE anschauen. Nun sieht man aber leicht, dass P = co-P und PSPACE = co-PSPACE. Das Verhältnis von N P und co-N P hingegen ist nicht geklärt. Neben der ? ? Frage P = N P ist die Frage N P = co-N P eines der wichtigsten offenen Probleme der Komplexitätstheorie. Es wird dabei vermutet, dass N P 6= co-N P. Diese Vermutung ist stärker als die Vermutung P = 6 N P, es gilt nämlich 41 Satz 3.1.3 Gilt N P 6= co-N P, so gilt auch P = 6 N P. Beweis: Wir beweisen die Kontraposition der Aussage, also P = N P ⇒ N P = co-N P. Ist nämlich P = N P, so folgt mit P = co-P auch N P = co-N P. Um die Klasse co-N P besser zu verstehen, wollen wir nun eine alternative Beschreibung von N P und damit auch co-N P herleiten. Diese alternativen Charakterisierungen werden auch noch später bei der Einführung der Polynomialzeithierarchie nützlich sein. Satz 3.1.4 Eine Sprache L ⊆ Σ∗ liegt genau dann in der Klasse N P, wenn es ein k ∈ N und eine Sprache A ∈ P gibt, so dass n o k L = x ∈ Σ∗ ∃z ∈ {0, 1}|x| : (x, z) ∈ A . (3.1) Der Beweis dieses Satzes folgt sofort aus der Charakterisierung von N P über so genannte Verifizierer, wie man sie etwa in dem Buch von Sipser findet. Wir verzichten auf einen genauen Beweis. Ist nun L wie in (3.1) gegeben, so können wir L̄ beschreiben als n o k L̄ = x ∈ Σ∗ ∀z ∈ {0, 1}|x| : (x, z) ∈ Ā . Nun liegt aber mit A auch Ā in der Klasse P. Somit erhalten wir Korollar 3.1.5 Eine Sprache L ⊆ Σ∗ liegt genau dann in der Klasse co-N P, wenn es ein k ∈ N und eine Sprache B ∈ P gibt, so dass n o k L = x ∈ Σ∗ ∀z ∈ {0, 1}|x| : (x, z) ∈ B . (3.2) Vergleichen wir (3.1) und (3.2), so sehen wir dass der einzige Unterschied im Übergang vom Existenz- zum Allquantor liegt. Dass dieser Übergang einen großen Unterschied machen sollte, und daher N P 6= co-N P gelten sollte, sieht man sehr gut an der Sprache SAT. Eine Formel φ liegt in SAT, wenn es eine erfüllende Belegung für φ gibt. Eine solche erfüllende Belegung für φ ist dann ein Beweis für φ ∈ SAT. Betrachten wir nun hingegen den Fall φ ∈ SAT. Dies ist genau dann der Fall, wenn alle möglichen Belegungen die Formel φ nicht erfüllen. Sollte nun SAT ∈ N P gelten, müsste es für φ ∈ SAT einen kurzen (polynomiell langen) Beweis geben, der uns davon überzeugt, dass keine Belegung φ erfüllt. Die Vermutung N P 6= co-N P ist äquivalent zur Vermutung, dass es einen solchen kurzen Beweis nicht geben kann. Schließlich definieren wir noch den Begriff der co-N P-Vollständigkeit, dieser ist analog zur N P-Vollständigkeit definiert. 42 Definition 3.1.6 Eine Sprache L heißt co-N P-vollständig, wenn sie die folgenden zwei Bedingungen erfüllt. 1. L ist in co-N P enthalten. 2. Für jede Sprache A ∈ co-N P gibt es eine polynomielle Reduktion von A auf L. Erfüllt eine Sprache L nur die zweite Bedingung, so heißt L co-N P-schwer. Die Klasse aller co-N P-vollständigen Sprachen bezeichnen wir mit co-N PV. Nach diesen Vorbereitungen können wir den folgenden Satz beweisen. Satz 3.1.7 Gibt es eine N P-vollständige Sprache L, die in co-N P enthalten ist, so gilt N P = co-N P. Beweis: Zunächst einige allgemeine Überlegungen. Aus der Definition von co-C für eine Komplexitätsklasse C folgt co-(co-C) = C. Weiter folgt für zwei beliebige Komplexitätsklassen C1 und C2 unmittelbar die Äquivalenz C1 ⊆ C2 ⇔ co-C1 ⊆ co-C2 . Damit gilt auch N P = co-N P ⇔ N P ⊆ co-N P und N P = co-N P ⇔ co-N P ⊆ N P. Um den Satz zu zeigen, genügt es also N P ⊆ co-N P zu zeigen. Sei die Sprache L N P-vollständig und L ∈ co-N P. Weiter sei A ∈ N P beliebig. Da die Sprache L N P-vollständig ist, gilt A ≤p L. Es gibt also eine polynomielle Reduktion f von A auf L. Sei A ⊆ Σ∗ . Dann gilt für alle w ∈ Σ∗ w ∈ A ⇔ f (w) ∈ L, oder, äquivalent, w ∈ A ⇔ f (w) ∈ L. (3.3) Da nach Voraussetzung L ∈ co-N P, gibt es eine NTM N mit polynomieller Laufzeit, die L entscheidet. Wir betrachten die folgende NTM NA . 43 NA : Bei Eingabe w ∈ Σ∗ : 1. Berechne f (w). 2. Simuliere N mit Eingabe f (w). Akzeptiert N die Eingabe f (w), akzeptiere w. Sonst lehne ab. Die so definierte NTM NA hat sicherlich polynomielle Laufzeit. Außerdem folgt aus L(N ) = L und (3.3), dass L(NA ) = A. Damit gilt A ∈ N P oder A ∈ co-N P. Insgesamt folgt N P ⊆ co-N P. Durch Negierung erhalten wir nun sofort folgendes Korollar. Korollar 3.1.8 Gilt N P 6= co-N P, so sind alle Sprachen in N P ∩ co-N P nicht N P-vollständig. Alle Sprachen in P liegen in N P ∩ co-N P. Allerdings wird vermutet, dass N P∪co-N P echt größer ist als P. Stimmt diese Vermutung, so sind Sprachen in (N P ∪ co-N P) \ P Beispiele für Sprachen, die weder in P liegen noch N P-vollständig sind. In Abbildung 3.1 sind die Vermutungen über das Verhältnis der Klassen P, N P, co-N P, N P ∩ co-N P, N PV und co-N PV zusammengefasst. Abbildung 3.1: Vermutetes Verhältnis der Klassen P, N P, co-N P Zum Abschluss dieses Abschnitts wollen wir noch eine Sprache vorstellen, von der vermutet wird, dass sie weder in P liegt noch N P-vollständig ist. Es 44 handelt sich dabei , um die Sprache GI (=Graphisomorphismus). Um GI zu definieren, benötigen wir den Begriff der Isomorphie zwischen zwei Graphen. Zwei Graphen G1 = (V1 , E1 ), G2 = (V2 , E2 ) heißen isomorph, wenn es eine bijektive Abbildung π : V1 → V2 gibt, so dass für alle u, v ∈ V1 gilt (u, v) ∈ E1 ⇔ (π(u), π(v)) ∈ E2 . Zwei Graphen sind isomorph, wenn der eine aus dem anderen durch Umbenennung der Knoten entsteht. Insbesondere können zwei Graphen nur dann isomorph sein, wenn sie dieselbe Anzahl Knoten besitzen. Nun ist GI := {(G1 , G2 ) |G1 , G2 sind isomorphe Graphen }. 45 3.2 Der Satz von Ladner In diesem Abschnitt zeigen wir den folgenden auf Ladner zurück gehenden Satz. Satz 3.2.1 Angenommen P = 6 N P, dann existiert eine Sprache L ∈ N P \ P, die nicht N P-vollständig ist. Beweis: Sei H : N → N eine beliebige berechenbare Funktion mit H(n) ≥ 1 für alle n ∈ N. Dann definieren wir die Sprache n o H(n) SATH := ψ01n : ψ ∈ SAT und |ψ| = n . Es handelt sich bei SATH um eine Version von SAT, bei der die Eingabe künstlich um einige Bits verlängert wird. Die letzte 0 der Eingabe zeigt dabei an, wo die Beschreibung der Booleschen Formeln ψ endet. Wir definieren nun eine spezielle Funktion H und zeigen dann, dass für die so definierte Funktion H die Sprache SATH in N P \ P liegt, jedoch nicht N P-vollständig ist. Zur Definition von H sei M1 , M2 , . . . eine Aufzählung aller deterministischen Turingmaschinen. Dann ist H(1) = 1 und für n ≥ 2 ist H(n) definiert durch i ≤ log log(n) und für alle x ∈ {0, 1}≤log(n) gilt, H(n) := min i : dass die DTM Mi Eingabe x genau dann in Zeit i|x|i akzeptiert, wenn x ∈ SATH . (3.4) Zunächst müssen wir uns überlegen, dass die Funktion H wohl-definiert ist, denn in der Definition von H(n) wird die Sprache SATH und damit die Funktion H(n) selber benutzt. Allerdings wird in der Definition von H(n) nur benötigt, dass für alle x ∈ {0, 1}≤log(n) die Funktion H und somit die Sprache SATH bereits definiert ist. Da log(n) < n für alle n, ist die Funktion damit wohl-definiert. Als nächstes zeigen wir, dass H(n) in Zeit polynomiell in n berechnet werden kann. Genauer, wir zeigen durch Induktion, dass H(n) in Zeit cn3 für eine Konstante c berechnet werden kann. Für n = 1 ist dieses sicherlich korrekt. Nehmen wir nun an, dass wir die Aussage für eine genügend große Konstante c und alle k < n bereits bewiesen haben. Um H(n) zu berechnen, sind drei Arten von Berechnungen notwendig. 1. Berechnung der Werte H(k) für alle k ≤ log(n). 2. Lösung von SAT auf allen Eingaben der Länge höchstens log(n). Zusammen mit dem ersten Punkt können dann alle x ∈ {0, 1}≤log(n) mit x ∈ SATH bestimmt werden. 46 3. Simulation der ersten log log(n) DTMs Mi auf allen Eingaben |x| der Länge ≤ log(n) für i|x|i ≤ log log(n) log(n)log log(n) Schritte. Dieser Teil wird benötigt, um zu bestimmen, ob Mi die Sprache SATH für alle x der Länge ≤ log(n) korrekt entscheidet. Für den ersten Punkt wird nach Induktionsvoraussetzung höchstens Zeit c log(n) log(n)3 benötigt. Man überlegt sich leicht, dass SAT bei Eingaben der Länge m in Zeit 22m entschieden werden kann. Damit benötigt der zweite Punkt höchstens Zeit 2log(n)+1 22 log(n) = 2n3 . Hierbei haben wir benutzt, dass |{0, 1}≤log(n) | ≤ 2log(n)+1 . Unter Ausnutzung dieser Tatsache sehen wir auch, dass der dritte Punkt Zeit 2log(n)+1 log log(n) log(n)log log(n) = 2n log log(n) log(n)log log(n) benötigt. Insgesamt wird somit zur Berechnung von H(n) Zeit c log(n)4 + 2n3 + 2n log log(n) log(n)log log(n) benötigt. Für c groß genug, kann dieses durch cn3 abgeschätzt werden. Nun zeigen wir für die so definierte Funktion H das folgende Lemma. Lemma 3.2.2 für alle n. 1. Falls SATH ∈ P, so existiert ein i ∈ N mit H(n) ≤ i 2. Falls SATH 6∈ P, so existieren für alle i ∈ N nur endliche viele n ∈ N mit H(n) = i. Insbesondere gilt lim H(n) = ∞. n→∞ Beweis: Zum Beweis der ersten Behauptung nehmen wir an, dass SATH ∈ P. Damit existiert eine DTM M mit Laufzeit cnc für eine Konstante c, die SATH entscheidet. Nun gibt es zu jeder DTM M beliebig große i, so dass L(M ) = L(Mi ). Solche Indizes i und die dazu gehörigen DTMs können z.B. durch Einführung unerreichbarer und damit nutzloser Zustände konstruiert werden. Sei nun i ≥ cso gewählt, dass L(M ) = L(Mi ). Dann gilt für alle n > i 22 , dass H(n) ≤ i, denn für diese n gilt log log(n) > i und Mi entscheidet für alle x ∈ {0, 1}≤log(n) in Zeit höchstens c|x|c ≤ i|x|i , ob x ∈ SATH . Zum Beweis der zweiten Behauptung, nehmen wir an SATH 6∈ P. Damit existiert für jedes i ∈ N ein xi ∈ {0, 1}∗ , so dass Mi bei Eingabe x nicht in Zeit i|xi |i korrekt entscheidet, ob xi ∈ SATH . Für alle n > 2|xi | gilt somit H(n) 6= i. 47 Nun können wir zeigen, dass SATH ∈ / P. Wir führen einen Widerspruchsbeweis und nehmen daher an, dass SATH ∈ P. Sei daher M eine DTM, die SATH in Zeit nc entscheidet. Nach unseren obigen Behauptungen existiert nun ein i mit H(n) ≤ i für alle n. Damit gilt für alle Booleschen Formeln ψ die folgende Abschätzung H(|ψ|) |ψ01|ψ| | ≤ |ψ|i+2 . Wir können nun SAT mit Hilfe der folgenden DTM entscheiden. 1. Bei Eingabe ψ berechne H(|ψ|) und bilde x = ψ01|ψ|H(|ψ|) . 2. Benutze die DTM M , um zu entscheiden, ob x ∈ SATH . Akzeptiere ψ, falls M das Wort x akzeptiert. Die Laufzeit dieser DTM ist polynomiell, da wir aus ψ in Zeit polynomiell in |ψ| den Wert H(|ψ|) und damit das Wort x berechnen können. Die Laufzeit von M bei Eingabe x ist nach Annahme |x|c = |ψ|c(i+2) . Damit ist die Laufzeit der DTM polynomiell und wir erhalten SAT ∈ P. Dieses steht jedoch im Widerspruch zu unseren allgemeinen Annahme P = 6 N P. Jetzt zeigen wir, dass SATH auch nicht N P-vollständig sein kann. Wiederum führen wir einen Widerspruchsbeweis und nehmen an, SATH sei N P-vollständig. Wir wollen zeigen, dass diese Annahme zur Existenz einer polynomialzeit DTM M , die SAT entscheidet, führt, im Widerspruch zur Annahme P = 6 N P des Satzes. Sei nun f eine polynomielle Reduktion von SAT auf SATH . Genauer, sei f in Zeit ni berechenbar. Aus den Annahmen, dass SATH N P-vollständig ist und dass P = 6 N P, folgt, dass SATH ∈ / P. Lemma 3.2.2 zeigt, dass dann limn→∞ H(n) = ∞. Somit existiert ein n0 ∈ N, so dass für alle n ≥ n0 gilt H(n) > 2i. Sei nun φ eine Boolesche Formel und f (φ) = x ∈ {0, 1}∗ . Da H(n) ist Zeit polynomiell in n berechnet werden kann, können wir in polynomieller Zeit entscheiden, ob x die Form ψ01|ψ|H(|ψ|) für eine Boolesche Formel ψ besitzt. Ist dieses nicht der Fall, gilt x ∈ / SATH und φ ∈ / SAT. Wir können uns daher im Folgenden auf solche Formeln φ beschränken, für die f (φ) = ψ01|ψ|H(|ψ|) 2 für eine Boolesche Formel p ψ. Sei nun weiter |φ| p> n0 . Wir zeigen zunächst, dass dann gilt |ψ| ≤ |φ|. Denn gilt |ψ| > |φ|, so folgt |ψ| > n0 und H(|ψ|) > 2i. Dieses führt auf 1 2i ≥ |φ|i , |f (φ)| > |ψ|H(|ψ|) | > |φ| 2 was im Widerspruch zur Annahme steht, dass die Funktion in Zeit ni berechnet werden kann. Wir erhalten nun folgende rekursiv definierte DTM D, die SAT entscheidet. 48 1. Gilt |φ| < n0 , entscheide brute-force, ob φ ∈ SAT. 2. Bei Eingabe φ, berechne f (φ). 3. Ist f (φ) nicht von der Form f (φ) = ψ01|ψ|H(|ψ|) für eine Boolesche Formel ψ, lehne ab. 4. Wende die DTM D rekursiv auf die Formel ψ an. Die Korrektheit der DTM D folgt unmittelbar aus dem bereits Gesagten. Wir müssen noch die Laufzeit der DTM analysieren. Der 1.Schritt benötigt nach Voraussetzung konstante Zeit, da n0 eine Konstante ist. Der 2.Schritt benötigt nach Annahme Zeit |φ|i . Auch beim 3.Schritt haben wir bereits oben argumentiert, dass dieser Schritt in polynomieller Zeit durchgeführt werden kann. Wir müssen jetzt noch analysieren, wie häufig die DTM D 1 in Schritt 4. aufgerufen wird. Wie wir oben gesehen haben, gilt |ψ| ≤ |φ| 2 . Damit wird in 4. die DTM D bei Eingabe φ höchstens log log(|φ|)-mal aufgerufen. denn nach k Aufrufen von D im 4.Schritt hat die resultierende Formel k ψ nur noch Größe 2log(|φ|/2 . Damit ist die Größe der Formel nach log log(|φ|) bereits auf 2 reduziert. Wir erhalten, dass D eine polynomielle DTM ist, die SAT entscheidet. Damit haben wir auch die Annahme, dass SATH J N Pvollständig ist zum Widerspruch zur Annahme P = 6 N P gebracht. Insgesamt ist damit unter der Annahme P = 6 N P die Sprache SATH in N P \ P, sie ist jedoch nicht N P-vollständig. 49 3.3 Die Klassen L, N L und L-Reduktionen Bislang haben wir nur Zeit- und Platzkomplexität mindestens linear betrachtet. Bei der Zeitkomplexität werden wir dieses auch nicht ändern. Denn hat eine TM weniger als lineare Zeit zur Verfügung, ist sie nicht in der Lage die gesamte Eingabe zu betrachten. Bei Platzkomplexität ist die Situation anders, wenn wir nur den Platz betrachten, den eine TM zusätzlich zum Platz zur Speicherung der Eingabe benötigt. Um diese Idee zu formalisieren, betrachten wir spezielle TMs. Definition 3.3.1 Eine TM M = (Q, Σ, Γ, δ) mit Eingabeband ist eine 2Band TM. Das erste Band einer TM mit Eingabeband heißt das Eingabeband, das zweite Band heißt das Arbeitsband. Zu Beginn der Berechnung steht die Eingabe w auf dem Eingabeband. Auf die Eingabe w folgt dann noch ein spezielles Symbol ♯. Für die Übergangsfunktion δ gelten zu den üblichen Bedingungen an die Übergangsfunktion einer TM noch die folgenden Einschränkungen: 1. Kein Symbol auf dem Eingabeband kann überschrieben werden. 2. Der Kopf des Eingabebandes geht nicht über die mit dem Symbol ♯ beschriftete Zelle hinaus. In dieser Definition lassen wir sowohl DTMs als auch NTMs zu. Die erste Einschränkung stellt sicher, dass der für die Eingabe reservierte Platz von der TM nicht für andere Zwecke verwendet werden darf. Die zweite Einschränkung stellt sicher, dass auf dem Eingabeband außerhalb des für die Eingabe vorgesehen Platzes nichts gespeichert werden kann. Den Platzbedarf einer TM mit Eingabeband werden wir definieren als den Platz, den die TM auf dem Arbeitsband benutzt. Dazu müssen wir aber zunächst den Begriff der Konfiguration für TMs mit Eingabeband genau definieren. Definition 3.3.2 Eine Konfiguration einer TM M = (Q, Σ, Γ, δ) mit Eingabeband bei Eingabe w ∈ Σ∗ wird beschrieben durch 1. den Zustand q ∈ Q, 2. die Positionen der Leseköpfe des Eingabe- und des Arbeitsbandes, 3. den Inhalt des Arbeitsbandes. Dabei werden wie üblich alle ⊔’s rechts des letzten Symbols, das kein ⊔ ist, ignoriert. 50 Beschrieben wird eine solche Konfiguration durch ein Paar (K, pos). Dabei ist pos die Binärdarstellung der Position des Lesekopfes auf dem Eingabeband. Weiter ist K von der Form αqβ mit α, β ∈ Γ∗ , q ∈ Q, wobei αβ der Inhalt des Arbeitsbandes ist, q ist der Zustand und der Lesekopf des Arbeitsbandes steht auf der Zelle, die das erste Symbol von β enthält. Die Größe einer Konfiguration (K, pos), K = αqβ, α, β ∈ Γ∗ , q ∈ Q ist die Länge der Folge αβpos über dem Alphabet Γ, wobei wir annehmen, dass {0, 1} ⊆ Γ. Wie bei normalen TMs legt die Konfiguration einer TM mit Eingabeband genau fest, welche Schritte eine TM als nächstes ausführen kann. Dabei ist bei einer DTM mit Eingabeband natürlich nur ein Schritt möglich. Da wir die Eingabe w fest lassen und die Einträge des Eingabebandes nicht geändert werden, müssen wir die Eingabe w selber nicht in die Beschreibung einer Konfiguration aufnehmen. Definition 3.3.3 Sei s : N → N monoton wachsend mit s(n) ≥ ⌈log(n+3)⌉ für alle n ∈ N. Eine TM M = (Q, Σ, Γ, δ) mit Eingabeband heißt s(n)platzbeschränkt, wenn für alle w ∈ Σ≤n die Konfigurationen von M bei Eingabe w Länge höchstens s(n) besitzen. In den Platzbedarf einer TM mit Eingabeband ist also die Größe der Eingabe nicht mit eingeschlossen. Die Bedingung s(n) ≥ ⌈log(n + 3)⌉ stellt sicher, dass der Index pos alle Werte in {1, . . . , n} annehmen kann. Hierbei beachten wir, dass für den Lesekopf des Eingabebandes n + 2 Positionen möglich sind, das Startsymbol ⊲, die Symbole von w sowie das Symbol ♯, das das Ende der Eingabe markiert. Die TM M kann somit alle Symbole des Eingabebandes lesen. Begriffe wie Platzbedarf einer TM mit Eingabeband können wir natürlich analog zu den Begriffen für normale TMs benutzen. Wir verzichten auf genaue Definitionen. Wir erhalten nun die folgenden Komplexitätsklassen. Definition 3.3.4 Sei s : N → N monoton wachsend. Dann sind die Klassen DSPACE(s(n)) und N SPACE(s(n)) folgendermaßen definiert L wird von einer O(s(n))-platzbeschränkten DSPACE(s(n)) := L . DTM entschieden L wird von einer O(s(n))-platzbeschränkten . N SPACE(s(n)) := L NTM entschieden Weiter definieren wir L := DSPACE(log(n)) und 51 N L := N SPACE(log(n)). Wir haben jetzt für s : N → N mit s(n) ≥ n für alle n ∈ N zwei Definitionen von DSPACE(s(n)) bzw. N SPACE(s(n)). Einmal die gerade formulierten Definitionen, dann aber auch die Definitionen auf Seite 12 und auf Seite 24. Man überzeugt sich aber leicht, dass für s(n) ≥ n, die Definitionen identisch sind, da für s(n) ≥ n eine s(n)-platzbeschränkte TM mit Eingabeband durch eine s(n)-platzbeschränkte TM ohne spezielles Eingabeband simuliert werden kann. Beispiel 3.3.5 Die Sprache {0k 1k |k ∈ N} liegt in L. Eine log(n)-platzbeschränkte DTM, die diese Sprache entscheidet, kann etwa wie die folgende DTM arbeiten. M: Bei Eingabe w ∈ {0, 1}∗ : 1. Durchlaufe die Eingabe, um zu testen, ob nach der ersten 1 noch eine 0 in w existiert. Wenn ja, lehne ab. 2. Zähle die Anzahl der 0 und 1 in w. Stimmen diese nicht überein, lehne ab, sonst akzeptiere. Der erst Schritt benötigt keinerlei Platz auf dem Arbeitsband, er kann ausschließlich über eine geeignet gewählte Zustandsmenge und Übergangsfunktion realisiert werden. Für den zweiten Schnitt werden zwei binäre Zähler benötigt. Beide müssen jedoch Zahlen der Länge höchsten |w| speichern. Damit wird für diese Zähler höchstens Platz O(log(|w|)) auf dem Arbeitsband benötigt. Als nächstes betrachten wir die Sprache G = (V, E) ist ein gerichteter Graph, s, t ∈ V , so Pfad := (G, s, t) . dass in G ein Pfad von s nach t existiert. Mit Hilfe der Tiefensuche oder der Breitensuche kann gezeigt werden, dass Pfad in P liegt. Es gilt aber auch Satz 3.3.6 Pfad ∈ N L. Beweis: Um diesen Satz zu beweisen, betrachten wir die folgende NTM. Erreichbar : Bei Eingabe G = (V, E), s, t ∈ V : 1. Berechne |V | − 1. 2. Setze i ← 0, v ← s. 3. Wiederhole bis i = |V | − 1 oder akzeptiert wurde: 4. Wähle nichtdeterministisch Kante (v, u) ∈ E. 5. Falls u = t, akzeptiere. 6. Setze i ← i + 1, v ← u. 52 In der Schleife beginnend in der 3. Zeile rät die NTM sukzessive die Kanten eines Pfades der Länge höchstens |V | − 1 in G. Die Initialisierung v ← s im 2. Schritt stellt dabei sicher, dass dieser Pfad in s beginnt. Die NTM akzeptiert genau dann, wenn der Pfad von s nach t führt. Damit ist G = (V, E) ist ein gerichteter Graph, s, t ∈ V , L := (G, s, t) so dass in G ein Pfad von s nach t der Länge ≤ |V | − 1 existiert. die von Erreichbar entschiedene Sprache. Nun existiert in G ein Pfad von s nach t genau dann, wenn es in G einen Pfad der Länge höchstens |V | − 1 von s nach t gibt. Ein Tupel (G, s, t) wird also von Erreichbar genau dann akzeptiert, wenn (G, s, t) ∈ Pfad. Damit gilt L = Pfad und wir haben eine NTM konstruiert, die Pfad akzeptiert. Der Platzbedarf von Erreichbar bei Eingabe (G, s, t) ist nun O(log(|V |), denn wir benötigen nur den Platz, um zwei Knoten u, v ∈ V , den Index i ≤ |V | und die Schranke |V |−1 zu speichern. Für spätere Zwecke betrachten wir jetzt die folgende Verallgemeinerung der oben betrachteten NTM Erreichbar. ErreichbarLänge : Bei Eingabe G = (V, E), s, t ∈ V, l ∈ N : 1. Setze i ← 0, v ← s. 2. Wiederhole bis i = l oder akzeptiert wurde: 3. Wähle nichtdeterministisch Kante (v, u) ∈ E. 4 Falls u = t, akzeptiere. 5. Setze i ← i + 1, v ← u. Die im Beweis von Satz 3.3.6 benutzten Argumente zeigen, dass die von dieser NTM entschiedene Sprache G = (V, E) ist ein gerichteter Graph, s, t ∈ V , PfadLänge := (G, s, t, l) so dass in G ein Pfad von s nach t der Länge ≤ l existiert. ist. Weiter hat die NTM ErreichbarLänge logarithmischen Platzbedarf. Es gilt natürlich L ⊆ N L. Es ist aber nicht bekannt, ob L = 6 N L gilt. In einer Übung werden Sie außerdem den folgenden Satz zeigen. Satz 3.3.7 N L ⊆ P. Es wird vermutet, dass die Inklusion in diesem Satz echt ist, also N L 6= P gilt. Bislang konnte diese Vermutung jedoch nicht bewiesen werden. 53 Wir wollen nun die schwierigsten Probleme in N L identifizieren, die so genannten N L-vollständigen Probleme. Diese spielen für N L dieselbe Rollen wie die N P-vollständigen Probleme für N P. Zur Definition der N L-vollständigen Probleme werden wir Reduktionen verwenden. Da aber N L ⊆ P gilt, macht es keinen Sinn zur Charakterisierung der Schwierigkeit von Problemen in N L polynomielle Reduktionen zu benutzen. Stattdessen verwenden wir Reduktionen, die mit logarithmischem Platz berechnet werden können. Um dabei Reduktionen f berechnen zu können, deren Funktionswerte f (w) nicht durch log(|w|) beschränkt sind, benötigen wir spezielle TMs mit Ausgabeband. Diese TMs, ihre Arbeitsweise sowie ihren Platzbedarf definieren wir in den folgenden vier Definitionen. Definition 3.3.8 Eine TM M = (Q, Σ, Γ, δ) mit Eingabe-/Ausgabeband ist eine 3-Band TM. Das erste Band einer TM mit Eingabeband heißt das Eingabeband, das zweite Band heißt das Arbeitsband und das dritte Band heißt das Ausgabeband. Zu Beginn der Berechnung steht die Eingabe w auf dem Eingabeband. Auf die Eingabe w folgt dann noch ein spezielles Symbol ♯. Arbeits- und Ausgabeband enthalten zu Beginn einer Berechnung jeweils eine Folge von ⊔. Für die Übergangsfunktion δ gelten zusätzlich zu den Bedingungen an die Übergangsfunktion einer TM mit Eingabeband aus Definition 3.3.1 noch die folgenden Einschränkungen: 1. Im ersten Schritt der TM M wird der Lesekopf des Ausgabebandes von der Zelle, die das Startsymbol ⊲ enthält, die erste Zelle, die ein ⊔ enthält, bewegt. 2. Der Lesekopf des Ausgabebandes kann nicht nach links bewegt werden. 3. Wird ein ⊔ auf dem Ausgabeband überschrieben, so muss der Lesekopf des Ausgabebandes nach rechts bewegt werden. Definition 3.3.9 Die TM M = (Q, Σ, Γ, δ) mit Eingabe-/Ausgabeband berechnet die Funktion f : Σ∗ → Γ∗ , wenn für alle w ∈ Σ∗ die folgende Bedingung erfüllt ist: Wird M mit Eingabe w gestartet und hält sie im akzeptierenden Zustand, so ist bei Ende der Berechnung der Bandinhalt des Ausgabebandes f (w). Definition 3.3.10 Eine Konfiguration einer TM M = (Q, Σ, Γ, δ) mit Eingabe-/Ausgabeband bei Eingabe w ∈ Σ∗ wird beschrieben durch 1. den Zustand q ∈ Q, 2. die Positionen der Leseköpfe des Eingabe- und des Arbeitsbandes, 54 3. den Inhalt des Arbeitsbandes. Dabei werden wie üblich alle ⊔’s rechts des letzten Symbols, das kein ⊔ ist, ignoriert. Beschrieben wird eine solche Konfiguration durch ein Paar (K, pos). Dabei ist pos die Binärdarstellung der Position des Lesekopfes auf dem Eingabeband. Weiter ist K von der Form αqβ mit α, β ∈ Γ∗ , q ∈ Q, wobei αβ der Inhalt des Arbeitsbandes ist, q ist der Zustand und der Lesekopf des Arbeitsbandes steht auf der Zelle, die das erste Symbol von β enthält. Die Größe einer Konfiguration (K, pos) ist wie bei TMs mit Eingabeband die Länge der Folge αβpos über dem Alphabet Γ, wobei wir annehmen, dass {0, 1} ⊆ Γ. Definition 3.3.11 Sei s : N → N monoton wachsend mit s(n) ≥ ⌈log(n + 3)⌉ für alle n ∈ N. Eine TM M = (Q, Σ, Γ, δ) mit Eingabe-/Ausgabeband heißt s(n)-platzbeschränkt, wenn für alle w ∈ Σ≤n die Konfigurationen von M bei Eingabe w Länge höchstens s(n) besitzen. In den Platzbedarf einer TM mit Eingabe-/Ausgabeband ist also weder die Größe der Eingabe noch die Größe der Ausgabe mit eingeschlossen. Die Bedingung s(n) ≥ ⌈log(n + 3)⌉ stellt sicher, dass der Index pos alle Werte in {1, . . . , n} annehmen kann. Hierbei beachten wir, dass für den Lesekopf des Eingabebandes n + 2 Positionen möglich sind, das Startsymbol ⊲, die Symbole von w, sowie das Symbol ♯, das das Ende der Eingabe markiert. Die TM M kann somit alle Symbole des Eingabebandes lesen. Definition 3.3.12 Eine Funktion f : Σ∗ → Γ∗ heißt s(n)-platzberechenbar, wenn es eine O(s(n))-platzbeschränkte DTM M mit Eingabe-/Ausgabeband gibt, die f berechnet. Wir kommen jetzt zum fundamentalen Begriff der L-Reduktionen. Definition 3.3.13 Seien A ⊆ Σ∗1 und B ⊆ Σ∗2 Sprachen. Dann heißt A auf B L-reduzierbar, wenn eine Funktion f mit den folgenden Eigenschaften existiert 1. Für alle w ∈ Σ∗1 gilt w ∈ A ⇔ f (w) ∈ B, 2. Die Funktion f ist log(n)-platzberechenbar. Die Funktion f heißt dann eine L-Reduktion von A auf B. Ist A auf B L-reduzierbar, so schreiben wir A ≤L B. 55 Man überlegt sich leicht, dass jede L-Reduktion auch eine polynomielle Reduktion ist. L-Reduktionen verhalten sich auch sehr ähnlich wie polynomielle Reduktionen. Insbesondere sind L-Reduktionen wie polynomielle Reduktionen transitiv (siehe Lemma 2.5.4). Lemma 3.3.14 Seien f : Σ∗ → Γ∗ und g : Γ∗ → Ω∗ jeweils log(n)-platzberechenbare Funktionen. Dann ist auch g◦f : Σ∗ → Ω∗ log(n)-platzberechenbar. Beweis: Seien Mf und Mg zwei log(n)-platzbeschränkte DTM mit Eingabe/Ausgabeband, die f bzw. g berechnen. Wir betrachten nun die folgende DTM Mg◦f , die g ◦ f berechnet. Mg◦f : Bei Eingabe w: Simuliere Mg mit Eingabe f (w). Wann immer Mg dabei ein Symbol von f (w) lesen möchte, simuliere Mf mit Eingabe w, um dieses Symbol zu berechnen. Die Bedingungen 2. und 3. in Definition 3.3.8 garantieren, dass die Berechnung der Symbole von f (w) durch Mf Platz O(log(n)) erfordert. Da auch Mg Platzbedarf O(log(n)) besitzt, folgt, dass die DTM Mg◦f Platzbedarf O(log(|f (w)|)) hat. Nun ist aber |f (w)| = |w|c = nc für eine Konstante §c, denn Mf hat Platzbedarf log(n) und ist damit polynomiell zeitbeschränkt. Daher ist die Länge von f (|w|) polynomiell in der Länge von n. Damit ist der Platzbedarf der DTM Mg◦f beschränkt durch O(log(|f (w)|)) = O(log(nc )) = O(log(n)). Bei polynomiellen Reduktionen kann die Transitivität gezeigt werden, indem zunächst f (w) mit Mf berechnet wird, um dann Mg auf f (w) zu simulieren. Bei diesem Ansatz muss f (w) auf einem Arbeitsband gespeichert werden, was unter Umständen Platz Ω(s(n)) benötigt. Daher kann diese einfache Idee nicht zum Beweis von Lemma 3.3.14 benutzt werden. Stattdessen muss Mf immer wieder aufgerufen werden, um die Symbole von f (w) zu berechnen. Aus dem Lemma erhalten wir unmittelbar Korollar 3.3.15 Seien A, B, C Sprachen mit A ≤L B und B ≤L C. Dann gilt A ≤L C. Beweis: Sei f die L-Reduktion von A auf B und g die L-Reduktion von B auf C. Dann ist g ◦ f eine Reduktion von A auf C. Lemma 3.3.14 zeigt, dass g ◦ f eine L-Reduktion ist. Jetzt können wir die N L-vollständigen Sprachen definieren. 56 Definition 3.3.16 Eine Sprache A heißt N L-vollständig, wenn 1. A ∈ N L. 2. Alle Sprachen B ∈ N L auf A L-reduzierbar sind. Die nächsten beiden Lemmata entsprechen Lemma 2.6.2 und Lemma 2.6.3 für polynomielle Reduktionen. Lemma 3.3.17 Ist A N L-vollständig und gilt A ∈ L, so gilt L = N L. Beweis: Da L ⊆ N L, genügt es zu zeigen, dass die Bedingungen des Satzes N L ⊆ L implizieren. Sei nun B ∈ N L beliebig und sei f eine L-Reduktion von B auf A. Die Funktion f werde durch die O(log(n))-platzbeschränkte DTM Mf berechnet. Weiter sei MA die O(log(n))-platzbeschränkte DTM, die A ∈ L zeigt. Kombinieren wir nun Mf und MA wie im Beweis von Lemma 3.3.14, so erhalten wir eine O(log(n))-platzbeschränkte DTM MB , die B entscheidet. Damit gilt dann auch B ∈ L. Lemma 3.3.18 Ist A ∈ N L und gilt B ≤L A für eine N L-vollständige Sprache B, so ist auch A N L-vollständig. Der Beweis dieses Lemmas folgt unmittelbar aus der Transitivität von LReduktionen. Wir werden nun zeigen, dass Pfad N L-vollständig ist. Der Beweis dieses Satzes ist insbesondere im Vergleich zum Beweis des Satzes von Cook-Levin (Satz 2.6.7) erstaunlich einfach. Satz 3.3.19 Pfad ist N L-vollständig. Beweis: Sei A ⊆ Σ∗ eine beliebige Sprache in N L und NA = (Q, Σ, Γ, δ) eine c · log(n))-platzbeschränkte NTM, die A entscheidet. Hierbei ist c eine Konstante. Gegeben w ∈ Σ werden wir einen Graphen G = (V, E) und s, t ∈ V konstruieren, so dass NA die Eingabe w genau dann akzeptiert, wenn es in G einen Pfad von s nach t gibt. Hierbei werden wir wie im Beweis des Satzes von Savitch (Satz 2.7.2, Seite 37) ohne Beschränkung der Allgemeinheit annehmen, dass NA unabhängig von der Eingabe nur eine akzeptierende Konfiguration Ka besitzt. Konfigurationen C von NA bei Eingabe w ∈ Σn werden beschrieben durch ein Tupel (K, pos), wobei K = αqβ aus Γ∗ × Q × Γ∗ und pos aus {0, 1}l für l = ⌈log(n+3)⌉ ist. Außerdem ist die Länge von αβ durch c log(n) beschränkt. Die Knotenmenge V des Graphen G besteht nun aus allen Elementen C = (K, pos), K = αqβ ∈ Γ∗ × Q × Γ∗ , wobei |αβ| ≤ c log(n) und 57 pos ∈ {0, 1}l . Diese Knotenmenge kann in logarithmischem Platz konstruiert werden, indem die Menge Γ≤c log(n) ×Q×Γ≤c log(n) ×{0, 1}l systematisch durchlaufen wird. Die Kantenmenge E des Graphen G besteht aus Paaren (C1 , C2 ) ∈ V ×V , so dass die NTM NA die Konfiguration C2 aus der Konfiguration C1 in einem Rechenschritt erreichen kann. Die Kantenmenge E kann dann konstruiert werden, indem alle Elemente (C1 , C2 ) ∈ V × V systematisch durchlaufen werden, um durch Simulation von NA zu entscheiden, ob das Paar (C1 , C2 ) diese Eigenschaft besitzt. Insgesamt haben wir damit den Graphen G in logarithmischem Platz berechnet. Wir müssen noch die Knoten s und t bestimmen. Der Knoten t entspricht der akzeptierenden Konfiguration KA von NA . Der Knoten s entspricht der Startkonfiguration Kw von NA bei Eingabe w. Beide können in logarithmischen Platz konstruiert werden. Um den Beweis zu vervollständigen, müssen wir noch zeigen, dass w ∈ A genau dann, wenn (G, s, t) ∈ Pfad. Nun gilt aber w ∈ A ⇔NA akzeptiert Eingabe w ⇔Aus der Startkonfiguration Kw kann NA die akzeptierende Konfiguration Ka erreichen ⇔(G, s, t) ∈ Pfad. Wie wir oben anmerkten, ist nicht bekannt, ob L = 6 N L oder N L 6= P. ? ? Aber das dem Problem N P = co-N P entsprechende Problem N L = co-N L ist gelöst. Dabei ist co-N L gemäß der Definition 3.1.2 (Seite 41) die Klasse aller Sprachen A, deren Komplement A in N L liegt. Satz 3.3.20 (Immerman/Szelepcsènyi) N L = co-N L. Beweis: Wir bezeichnen mit Pfad das Komplement von Pfad. Worte, die nicht von der Gestalt (G, s, t) sind, können wir ignorieren. Dann ist G = (V, E) ist ein gerichteter Graph, s, t ∈ V , so Pfad := (G, s, t) . dass in G kein Pfad von s nach t existiert. Es genügt dann zu zeigen, dass Pfad ∈ co-N L oder äquivalent Pfad ∈ N L. Dieses folgt wie im Beweis von Lemma 3.3.17 mit L ersetzt durch co-N L. Wir zeigen Pfad ∈ N L. 58 Sei G = (V, E) ein beliebiger gerichteter Graph und s, t ∈ V . Wir setzen m = |V | und definieren für i = 0, . . . , m − 1 die folgenden Mengen In G existiert ein Pfad der Länge höchstens i Ai := v ∈ V . von s nach v. Weiter setzen wir ci := |Ai |, i = 0, . . . , m − 1. Es gilt A0 = {s} und c0 = 1. Weiter ist Am−1 die Menge aller Knoten v in V , für die in G ein Pfad von s nach v existiert. Somit gilt (G, s, t) ∈ Pfad ⇔ t 6∈ Am−1 . Die NTM für Pfad wird nun folgendermaßen arbeiten. 1. Berechne sukzessive nichtdeterministisch die Werte c0 , c1 , . . . , cm−1 , dabei wird die Berechnung von ci nur von ci−1 abhängen. 2. Gegeben cm−1 , berechne nichtdeterministisch Am−1 , d.h., rate die einzelnen Elemente v von Am−1 und verifiziere v ∈ Am−1 . 3. Akzeptiere genau dann, wenn t 6∈ Am−1 . Zunächst konstruieren wir eine NTM #Erreichbar, die bei Eingabe G, s, i, ci−1 den Wert ci berechnet. Dieses ist folgendermaßen zu verstehen (siehe Definition 3.3.9). Hält die NTM #Erreichbar im akzeptierenden Zustand, so ist ihre Ausgabe immer ci . Außerdem gibt es mindestens eine Berechnung von #Erreichbar, die im akzeptierenden Zustand hält und somit dann die Ausgabe ci liefert. Die etwas allgemeiner formulierte NTM #Erreichbar ist in Abbildung 3.3 dargestellt und benutzt die nichtdeteministische TM ErreichbarLänge (siehe Seite 53). Nehmen wir an, dass l = ci−1 . Zunächst zeigen wir, dass c = ci gelten muss, wenn ein Wert c ausgegeben wird. Nun wird der Zähler c bei einer Wahl von u in 2. im 8. Schritt nur dann um 1 erhöht, wenn in 4. ein v gewählt wird, so dass v ∈ Ai−1 (ErreichbarLänge (G, s, v, i − 1) akzeptiert in 5.) und (v, u) ∈ E. Damit gilt immer c ≤ ci . Wird nun für ein u in 10. nicht abgelehnt, wurde für alle v ∈ Ai−1 überprüft, ob (v, u) ∈ E. Denn d zählt die beim in 2. startenden Schleifendurchlauf für u in 5. gefundenen v ∈ Ai−1 . Wenn ErreichbarLänge nicht ablehnt, wird daher für alle u ∈ V korrekt entschieden, ob u ∈ Ai . Lehnt #Erreichbar nicht ab, muss deshalb am Ende der Berechnungen von #Erreichbar gelten c = ci . Wir müssen auch noch zeigen, dass es eine Berechnung von #Erreichbar gibt, die zu einer Ausgabe führt. Dieses ist aber genau dann der Fall, wenn für alle Durchläufe der in 2. beginnenden Schleife für alle v ∈ Ai−1 in 5. durch 59 #Erreichbar Bei Eingabe (G, s, i, l) mit G = (V, E), s ∈ V, i, l ∈ N : 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Setze c ← 1. Für alle u ∈ V \ {s} d←0 Für alle v ∈ V Falls ErreichbarLänge (G, s, v, i − 1) d←d+1 Falls (v, u) ∈ E c←c+1 Weiter bei 2. mit nächstem u. Falls d 6= l, lehne ab. Ausgabe c. Abbildung 3.2: Die NTM #Erreichbar zur Berechnung der Werte ci ErreichbarLänge (G, s, v, i − 1) ein Pfad der Länge höchstens i − 1 von s nach v konstruiert wird. Damit berechnet #Erreichbar bei Eingabe G, s, i, ci−1 den Wert ci . Ist der Wert cm−1 für einen gerichteten Graphen G bekannt, so kann (G, s, t) ∈ Pfad bewiesen werden, indem cm−1 Knoten u 6= t konstruiert werden, die alle in Am−1 liegen. Dieses genau leistet die NTM Pfad-Komplement in Abbildung 3.3, die zunächst auch mit Hilfe von #Erreichbar sukzessive die Werte c0 , c1 , . . . , cm−1 berechnet. Nach dem über die NTM #Erreichbar Bewiesenen gilt, dass die NTM Pfad-Komplement entweder in den ersten drei Schritten bereits ablehnt oder aber den Wert cm−1 korrekt berechnet. Nehmen wir an, dass sie den Wert cm−1 berechnet hat. Akzeptiert die NTM Pfad-Komplement dann im letzten Schritt, so hat sie in der in 4. beginnenden Schleife cm−1 Knoten u 6= t bestimmt, die in Am−1 liegen. Somit wird nur dann akzeptiert, wenn (G, s, t) ∈ Pfad. Liegt andererseits (G, s, t) ∈ Pfad, so kann, wie wir oben gesehen haben, die NTM Pfad-Komplement in den ersten drei Schritten cm−1 berechnen. Wird dann außerdem für alle u ∈ Am−1 in 5. durch Erreichbar(G, s, u, m−1) ein Pfad von s nach u bestimmt, so wird Pfad-Komplement auch akzeptieren. Damit ist Pfad die von Pfad-Komplement akzeptierte Sprache. Wir müssen den Platzbedarf von #Erreichbar und Pfad-Komplement bestimmen. In #Erreichbar wird ein Zähler für c und d benötigt. Wei- 60 Pfad-Komplement Bei Eingabe (G, s, i, l) mit G = (V, E), s ∈ V, i, l ∈ N : 1. 2. 3. 4. 5. 6. 7. 8. Setze c0 ← 1. Für i ← 1 bis m − 1 ci ← #Erreichbar(G, s, i, ci−1 ) Für alle u ∈ V \ s Falls ErreichbarLänge (G, s, u, m − 1) und u 6= t d←d+1 Sonst lehne ab. Falls d 6= cm−1 , lehne ab, sonst akzeptiere. Abbildung 3.3: NTM für die Sprache Pfad ter benötigen wir noch den Platz um den jeweilig aktuellen Knoten in 2. und 4. zu speichern. Schließlich wird noch der Platz für die Aufrufe von ErreichbarLänge in 5. benötigt. Da aber c, d ≤ m − 1, es nur m Knoten in G gibt und außerdem Erreichbar logarithmischen Platzbedarf hat, folgt, dass auch #Erreichbar logarithmischen Platzbedarf besitzt. Ähnlich können wir jetzt den Platzbedarf von Pfad-Komplement analysieren. Neben dem logarithmischen Platz für die Aufrufe von ErreichbarLänge und #Erreichbar, benötigt Pfad-Komplement den Platz um jeweils zwei aufeinander folgende ci zu speichern, sowie den Platz für d und die Knoten u in 4. All dieses erfordert Platz O(log(m)). Damit hat Pfad-Komplement Platzbedarf O(log(m)). Es folgt Pfad ∈ N L. Wird wie im Beweis des Satzes von Savitch 2.7.2 oder im Beweis des Satzes 3.3.6 zu einer NTM der Konfigurationsgraph betrachtet, so kann man mit den gerade benutzten Techniken auch den folgenden allgemeinen Satz beweisen. Satz 3.3.21 (Immerman/Szelepcsènyi) Sei s : N → N mit s(n) ≥ log(n) für alle n ∈ N monoton wachsend. Dann gilt N SPACE(s(n)) = co-N SPACE(s(n)). 61 Kapitel 4 Hierarchiesätze und Diagonaliserung In diesem Kapitel werden wir die so genannten Hierarchiesätze formulieren. Diese zeigen, dass die Vergrößerung der Platz- bzw. Zeitressourcen von DTMs dazu führt, dass eine größere Klasse von Sprachen entschieden werden kann. Dabei sind die Aussagen für die Platzkomplexität (wie üblich) etwas schärfer als für die Zeitkomplexität. Beweisen werden wir nur den Platzhierarchiesatz. Der Beweis des Zeithierarchiesatzes ist sehr ähnlich, in den technischen Details aber etwas schwieriger. Zunächst einige vorbereitende Bemerkungen. 4.1 Vorbereitungen Für zwei Funktionen f, g : N → N schreiben wir g = o(f ) genau dann, wenn limn→∞ g(n)/f (n) = 0. Oder g = o(f ) ⇔ ∀c > 0 ∃n0 ∈ N ∀n ≥ n0 : f (n) ≥ cg(n). In diesem gesamten Kapitel,betrachten wir Turingmaschinen, deren Eingabealphabet Σ die Symbole 0, 1, # enthält. Dieses ist natürlich keine Einschränkung. Mit hM i bezeichnen wir die Gödelnummer einer TM M . Wir werden Gödelnummern nicht genau definieren, da die genaue Form von Gödelnummern für uns irrelevant ist. Möglichkeiten, Gödelnummern zu definieren, können in vielen Büchern nachgelesen werden. Für uns sind nur die beiden folgenden Sätze relevant, auf deren Beweis wir ebenfalls verzichten. 62 Satz 4.1.1 Es existiert eine DTM U die bei Eingabe hM i#x mit x ∈ {0, 1}∗ die Rechnung von M bei Eingabe x simuliert. Hat M bei Eingabe x Platzbedarf sM (x) und Zeitbedarf tM (x), so hat U bei Eingabe hM i#x Platzbedarf c|hM i|sM (x) und Zeitbedarf d|hM i|2 tM (x). Hierbei sind c, d Konstanten. Satz 4.1.2 Es existiert eine DTM G, die w ∈ {0, 1}∗ genau dann akzeptiert, wenn w die Gödelnummer einer TM M ist. Bei Eingabe w hat G Platzbedarf O(log(|w|)) und Zeitbedarf O(|w| log(|w|)). In den Aussagen der Hierarchiesätze wird auf platz- bzw. zeitkonstruierbare Funktionen Bezug genommen. Platzkonstruierbarkeit haben wir bereits im Zusammenhang mit dem Satz von Savitch kennen gelernt. Hier verfeinern wir die Definition etwas, indem wir DTMs mit Eingabe- und Ausgabeband zulassen. Definition 4.1.3 Sei f : N → N mit f (n) ≥ log(n) für alle n ∈ N. Die Funktion f heißt platzkonstruierbar, wenn es eine O(f (n))-platzbeschränkte DTM M mit Eingabe-/Ausgabeband gibt, die bei Eingabe 1n (also n Einsen) die Binärdarstellung von f (n) berechnet. Ähnlich können wir zeitkonstruierbare Funktionen definieren. Hierbei benutzen wir allerdings normale 1-Band DTMs. Definition 4.1.4 Sei f : N → N mit f (n) ≥ n log(n) für alle n ∈ N. Die Funktion f heißt zeitkonstruierbar, wenn es eine O(f (n))-zeitbeschränkte 1Band DTM M gibt, die bei Eingabe 1n (also n Einsen) die Binärdarstellung von f (n) berechnet. Die Bedingung f (n) ≥ n log(n) in dieser Definition lässt sich leider nicht umgehen, da selbst eine so einfache Funktion wie die Identität nicht zeitkonstruierbar ist. Fast jede uns interessierende Funktion f mit f (n) ≥ log(n) bzw, f (n) ≥ n log(n) ist platz- bzw. zeitkonstruierbar. Hierauf wird in den Übungen genauer eingegangen. Wir werden im übernächsten Abschnitt jedoch sehen, dass die Hierarchiesätze des folgenden Abschnitts falsch sind, wenn die Platz- bzw. Zeitkonstruierbarkeit fallen gelassen wird. 4.2 Die Hierarchiesätze Nun können wir die Hierarchiesätze formulieren und beweisen. Die Beweise benutzen die Methode der Diagonalisierung. Diese Methode haben Sie bereits bei der Konstruktion von unentscheidbaren Sprachen in der Vorlesung 63 Einführung in Berechenbarkeit, formale Sprachen und Komplexität“ ken” nen gelernt. Zur Vorbereitung auf die folgenden Beweise sollten Sie sich die entsprechenden Teile aus dieser Vorlesung noch einmal anschauen. Satz 4.2.1 Sei s : N → N mit s(n) ≥ log(n) für alle n ∈ N platzkonstruierbar. Dann existiert eine Sprache A, die auf einer deterministischen DTM mit Eingabeband in Platz O(s(n)) nicht jedoch in Platz o(s(n)) entschieden werden kann. Beweis: Wir betrachten die Sprache A, die definiert ist als die von der folgenden DTM MS entschiedene Sprache, d.h. A = L(MS ). MS : Bei Eingabe w ∈ {0, 1}∗ , |w| = n : 1. Falls w nicht von der Form hM i#0∗ für eine DTM M , lehne ab. Sonst sei M = (Q, Σ, Γ, δ). 2. Berechne s(n) = s(|w|). 3. Simuliere M mit Eingabe w. Müssen dabei mehr als 22s(n) Schritte von M simuliert werden oder benötigt die Simulation mehr Platz als s(n), lehne ab. 4. Falls M die Eingabe w akzeptiert, lehne ab. Falls M die Eingabe w ablehnt, akzeptiere. Um den Satz zu beweisen, zeigen wir zwei Dinge: 1. MS hat Platzkomplexität O(s(n)), d.h. A ∈ DSPACE(s(n)). 2. A wird von keiner DTM mit Platzkomplexität o(s(n)) entschieden, d.h. A 6∈ DSPACE(g(n)) für alle g mit g(n) = o(s(n)). Betrachten wir 1. Aufgrund der Bedingung an die Laufzeit in 3. der Beschreibung von MS ist zunächst einmal sicher gestellt, dass MS die Sprache A entscheidet und nicht nur akzeptiert. Betrachten wir nun den Platzbedarf der einzelnen Schritte. Nach Satz 4.1.2 benötigt der erste Schritt von MS Platz O(log(|w|)) = O(s(|w|)). Aufgrund der Platzkonstruierbarkeit der Funktion s wird auch für den zweiten Schritt Platz O(s(|w|) benötigt. Der Zähler, der im 3. Schritt für die Anzahl der Schritt eingesetzt werden muss, kann ebenfalls auf Platz O(s(|w|)) realisiert werden. Schließlich wird nach Definition von MS , die Simulation im 3. Schritt Platzbedarf O(s(|w|)) haben. Da der letzte Schritt von MS keinen Platz benötigt, haben wir gezeigt, dass MS Platzbedarf O(s(n)) hat. Nun zu 2. Angenommen, es gibt eine DTM M0 = (Q, Σ, Γ, δ) mit Platzbedarf g(n) = o(s(n)), die A entscheidet. Sei nun n0 so gewählt, dass für alle n ≥ n0 gilt 64 a) c|hM0 i|g(n) ≤ s(n) b) n|Q|g(n)|Γ|g(n) ≤ 22s(n) . Hier ist c die Konstante aus Satz 4.1.1. Beide Bedingungen können wegen g(n) = o(s(n)) erfüllt werden. Betrachten wir nun das Verhalten von MS bei Eingabe hM0 i#0n0 . Die Bedingung a) stellt sicher, dass die Simulation von M0 durch MS Platz höchstens s(n0 ) benötigt (Satz 4.1.1). Bedingung b) garantiert, dass M0 nur für 22s(n0 ) Schritte simuliert werden muss (siehe Aufgabe 3, Blatt 0). Damit wird MS die Eingabe hM0 i#0n0 nicht im 3. Schritt ablehnen, bevor fest steht, ob die DTM M0 die Eingabe hM0 i#0n0 ablehnt. Nach Definition des 4.Schritts gilt dann hM0 i#0n0 ∈ L(MS ) = A ⇔ M0 lehnt Eingabe hM0 i#0n0 ab. Dieses widerspricht der Annahme A = L(M0 ). Somit gibt es keine DTM mit Platzbedarf o(s(n)), die A entscheidet. Aus diesem Satz erhalten wir unmittelbar einige interessante Korollare. Das erste Korollar ist nur eine Umformulierung des Platzhierarchiesatzes. Korollar 4.2.2 Seien s1 , s2 : N → N platzkonstruierbar. Gilt s1 (n) = o(s2 (n)), so ist DSPACE(s1 (n)) DSPACE(s2 (n)), d.h. DSPACE(s1 (n)) ist echt in DSPACE(s2 (n)) enthalten. Korollar 4.2.3 Seien k, l ∈ N mit k < l. Dann gilt DSPACE(nk ) DSPACE(nl ), d.h. DSPACE(nk ) ist echt in DSPACE(nl ) enthalten. Beweis: k < l. Folgt aus dem vorangegangenen Korollar mit nk = o(nl ) für Korollar 4.2.4 N L ⊂ PSPACE, d.h. N L ist echt in PSPACE enthalten. Beweis: Nach dem Satz von Savitch gilt N L ⊆ DSPACE(log(n)2 ). Nun ist aber log(n)2 = o(n). Als nächstes formulieren wir (ohne Beweis) den Zeithierarchiesatz. 65 Satz 4.2.5 Sei t : N → N zeitkonstruierbar. Dann existiert eine Sprache A, die deterministisch in Zeit O(t(n)) nicht jedoch in Zeit o(t(n)/ log(t(n))) entschieden werden kann. Wiederum erhalten wir unmittelbar einige Korollare. Das erste Korollar ist eine Umformulierung des Zeithierarchiesatzes. Korollar 4.2.6 Seien t1 , t2 : N → N zeitkonstruierbar, wobei t1 (n) = o(t2 (n)/ log(t2 (n))). Dann gilt DT IME(t1 (n)) DT IME(t2 (n)), d.h. DT IME(t1 (n)) ist echt in DT IME(t2 (n)) enthalten. Korollar 4.2.7 Seien k, l ∈ N mit k < l. Dann gilt DT IME(nk ) ⊂ DT IME(nl ), d.h. DT IME(nk ) ist echt in DT IME(nl ) enthalten. Beweis: Folgt unmittelbar aus dem vorangegangenem Korollar mit nk = o(nl / log(nl ) für k < l. Wir können etliche unserer Vermutung über das Verhältnis der uns bisher bekannten Komplexitätsklassen in der folgende Vermutung zusammen fassen. Vermutung 4.2.8 In der folgenden Kette von Inklusionen sind alle Inklusionen echt. L N L P N P PSPACE. Zu dieser Vermutung eine wichtige Bemerkungen. Bemerkung 4.2.9 Da L ⊆ N L und N L echt in PSPACE enthalten ist, ist auch L echt in PSPACE enthalten. Damit wissen wir, dass eine der vier Inklusionen zwischen L und PSPACE in Vermutung 4.2.8 echt ist. Die Annahmen der Platz- und Zeitkonstruierbarkeit sind für die Hierarchiesätze ganz wesentlich wesentlich. Dieses zeigt der folgende Satz (wiederum ohne Beweis). Satz 4.2.10 Es existiert eine berechenbare Funktion f : N → N, so dass DT IME(f (n)) = DT IME 2f (n) . 66 Kapitel 5 Orakel-Turingmaschinen, Grenzen der Diagonalisierung und die Polynomialzeithierarchie Orakel-Turingmaschinen sind eine wichtige Konstruktion der Komplexitätstheorie. Mit ihnen können Unterprogramme in der Terminologie von Turingmaschinen formalisiert werden. Wir werden in diesem Kapitel OrakelTuringmaschinen formal definieren und mit ihrer Hilfe dann zeigen, dass die Methode der Diagonalisierung, wie wir sie im letzten Kapitel zum Beweis des Platzhierarchiesatzes benutzt haben, vermutlich nicht genutzt werden ? kann, um die P = N P-Frage zu klären. Weiter werden wir mit Hilfe von Orakel-Turingmaschinen die Polynomialzeithierarchie definieren. Diese liefert uns eine ganze Hierarchie von Sprachklassen zwischen P und PSPACE. Die Polynomialzeithierarchie wird uns erlauben, eine erste Einschätzung der Mächtigkeit probabilistischer Algorithmen zu liefern. Dieses ist das Thema des letzten Kapitels der Vorlesung. 5.1 Orakel-Turingmaschinen In diesem Abschnitt werden wir die wichtigsten Definitionen für OrakelTuringmaschinen kennen lernen. Wir beginnen mit der Definition von OrakelTuringmaschinen selbst. 67 Definition 5.1.1 Eine Orakle-TM (OTM) M ? ist eine Mehrband TM mit einem speziellen Band, dem Orakel- oder Anfrageband und drei ausgezeichneten Zuständen q? , qja , qnein . Eine Orakel TM M ? arbeitet wie eine normale TM mit zusätzlichen durch das Orakelband und die drei Zustände q? , qja , qnein gegebenen Fähigkeiten, die folgendermaßen definiert sind: Sei A ⊆ {0, 1}∗ eine beliebige Sprache. Mit M A bezeichnen wir dann die mit dem Orakel oder der Sprache A ausgestattete Orakel-TM M ? . Auch M A nennen wir eine Orakel TM. Befindet sich die OTM M A im Zustand q? , so geht sie im nächsten Schritt in den Zustand qja , wenn das aktuell auf dem Orakelband geschriebene Wort in der Sprache A enthalten ist. Ist das Wort auf dem Orakelband nicht in A, so geht die OTM M A im nächsten Schritt in den Zustand qnein . Die OTM M A kann also in einem Schritt entscheiden, ob ein Wort in A liegt oder nicht. Wir erlauben bei einer Orakel-TM auch Nichtdeterminismus, dann schreiben wir NOTM. Ist die OTM deterministisch, so schreiben wir DOTM. Zur Vereinfachung werden wir im Rest dieses Abschnitts annehmen, dass alle OTMs Eingabealphabet {0, 1} besitzen. Dieses vereinfacht einige Argumente. OTMs sind kein realistisches Rechenmodell, da wir annehmen, dass eine OTM M A in einem Schritt entscheiden kann, ob ein Element x in A enthalten ist oder nicht. Dabei kann es sich bei A aber auch um eine Sprache wie SAT oder auch eine unentscheidbare Sprache handeln. Allerdings sind OTMs wie NTMs ein wichtiges Hilfsmittel der Komplexitätstheorie. Wir können nun für OTMs (sowohl DOTMs als auch NOTMs) den Zeitund Platzbedarf definieren. Dieses geschieht wie bei normalem TMs, wobei nur zu beachten ist, dass Orakelanfragen in einem Schritt beantwortet werden und das Orakelband beim Platzbedarf mit berücksichtigt wird. Definition 5.1.2 Eine Orakel-TM M ? hat Laufzeit O(t(n)), wenn Konstanten c > 0, n0 ∈ N existieren, so dass für alle Sprachen A und alle w ∈ {0, 1}≥n0 , die TM M A Laufzeit höchstens c · t(|w|) besitzt. Analog hat eine Orakel-TM M ? hat Platzbedarf O(s(n)), wenn Konstanten c > 0, n0 existieren, so dass für alle Sprachen A und alle w ∈ {0, 1}≥n0 , die OTM M A Platzbedarf höchstens c · s(|w|) besitzt. Mit Hilfe dieser Definition können wir nun auch für jede Sprache A Komplexitätsklassen definieren, die auf OTMs M A ausgestattet jeweils mit Orakel A aufbauen. Dieses Komplexitätsklassen werden häufig auch relativierte Klassen oder relativierte Welten genannt. 68 Definition 5.1.3 L ist eine Sprache, die von einer polynomiell zeitbeschränkA P := L . ten Orakel DTM M ? mit Orakel A entschieden wird L ist eine Sprache, die von einer polynomiell . N P A := L zeitbeschränkten Orakel NTM M ? mit Orakel A entschieden wird L ist eine Sprache, die von einer polynomiell PSPACE A := L platzbeschränkten Orakel DTM M ? mit Orakel . A entschieden wird Betrachten wir einige Beispiele. Beispiel 5.1.4 Seinen A, B Sprachen mit B ≤p A. Dann gilt B ∈ P A . Es gilt dann auch B ∈ P Ā . Dieses folgt, da eine OTM M A mit Orakel A sowohl A als auch das Komplement Ā von A in einem Schritt entscheiden kann. Man beachte, dass B ≤p A im Allgemeinen nicht B ≤p Ā impliziert. Das folgende Beispiel werden wir im nächsten Kapitel noch weiter vertiefen. Beispiel 5.1.5 Es gilt N P ⊆ P SAT und co-N P ⊆ P SAT . Betrachten wir jetzt noch eine konkrete Sprache. Zwei Boolesche Formeln φ, ψ heißen äquivalent genau dann, wenn φ ⇔ ψ immer wahr ist. Nun definieren wir EQ := {(φ, ψ) φ, ψ sind äquivalente Boolesche Formeln}. Es gilt EQ ∈ co-N P oder, äquivalent, EQ ∈ N P. Um zu zeigen, dass (φ, ψ) ∈ EQ muss nur eine Belegung der Variablen in φ, ψ geraten werden, so dass φ, ψ bei dieser Belegung unterschiedliche Wahrheitswerte liefern. Einigen wir uns nun auf irgendeine standardisierte Art Boolesche Formeln zu kodieren, so können wir auch von der Größe oder Länge einer Booleschen Formel reden. Dann definieren wir MF := φ es existiert keine kürzere zu φ äquivalente Formel ψ , und somit MF := φ es existiert eine kürzere zu φ äquivalente Formel ψ 69 . Die folgende OTM zeigt nun MF ∈ N P SAT . ? : MMF Bei Eingabe φ 1. Rate nichtdeterministisch eine Boolesche Formel ψ. 2. Teste, ob ψ kürzer ist als φ. Wenn nicht, lehne ab. 3. Berechne ¬(φ ⇔ ψ), schreibe diese Formel auf das Orakelband und gehe in Zustand q? . 4. Aus Zustand qnein gehe in qaccept , aus Zustand qja gehe in Zustand qreject . SAT ) = MF, beobachtet man zunächst, dass Um zu sehen, dass L(MMF (φ, ψ) ∈ EQ genau dann, wenn ¬(φ ⇔ ψ) 6∈ SAT. Denn wenn φ und ψ äquivalent sind, gibt es keine Belegung, die ¬(φ ⇔ ψ) erfüllt. Damit ist φ ∈ MF genau dann, wenn es eine kürzere Formel ψ gibt, so dass ¬(φ ⇔ SAT überprüft. ψ) 6∈ SAT. Diese Eigenschaft wird nun genau in der NOTM MMF 5.2 Orakel-Turingmaschinen und die Grenzen der Diagonalisierung ? Nun wollen wir die Frage beantworten, ob mit Diagonalisierung die P = N PFrage beantwortet werden kann. Im nächsten Satz werden wir zeigen, dass es Orakel A, B gibt, so dass die relativierten Komplexitätsklassen P A und N P A identisch sind, die relativierten Komplexitätsklassen P B und N P B jedoch verschieden sind. Es kann daher P = 6 N P mit keiner Beweistechnik bewiesen werden, die sich unmittelbar auf relativierte Komplexitätsklassen übertragen lässt. Denn in diesem Fall müsste P B 6= N P B für alle Sprache B gelten. Analoges gilt für Beweistechniken, die P = N P zeigen sollen. Nun lässt sich aber die Diagonalisierung häufig leicht auf relativierte Komplexitätsklassen übertragen. Daher wird allgemein angenommen, dass mit ? Hilfe von Diagonalisierung die P = N P-Frage nicht beantwortet werden kann. Satz 5.2.1 Es existieren Orakel A, B, so dass 1. P A = N P A 2. P B 6= N P B Beweis: In einer Übung wird gezeigt, dass zum Beispiel für die Sprache QBF gilt P QBF = N P QBF . 70 Wir wollen nun eine Sprache B konstruieren, so dass P B 6= N P B . Hierzu zunächst folgende allgemeine Konstruktion. Sei B eine beliebige Sprache. Dann bezeichnen wir mit LB die Sprache LB := {1n |n ∈ N, ∃x ∈ B mit |x| = n}. Offensichtlich gilt für alle Sprachen B LB ∈ N P B . Wir konstruieren nun eine Sprache B mit LB 6∈ P B . Sei hierzu M1? , M2? , . . . eine Aufzählung aller Orakel DTMs mit polynomieller Laufzeit. Genauer sei die Laufzeit von Mi? bei Eingaben der Länge n beschränkt durch nei . Hierbei beachte man, dass wir die Laufzeit einer Orakel DTM M ? unabhängig vom verwendeten Orakel A definiert haben. Wir definieren nun induktiv endliche Mengen B0 , B̃0 , B1 , B̃1 , . . . , mit Bj ⊆ Bi und B̃j ⊆ B̃i für alle j < i, (5.1) und Bi ∩ B̃i = ∅ für alle i. (5.2) Zunächst setzen wir B0 = B̃0 = ∅. Seien Bj , B̃j , j = 0, . . . , i − 1 mit den beiden Eigenschaften in (5.1) und in (5.2) bereits definiert. Wir müssen nun Bi , B̃i definieren. Dazu setzen wir ni := min n 2n > nei , und n > |x| für alle x in Bi−1 ∪ B̃i−1 . Weiter setzen wir Xi := ∅. Zur Definition von Bi , B̃i simulieren wir die Maschine Mi? mit Eingabe 1ni . Da wir noch kein Orakel spezifiziert haben, müssen wir angeben, wie auf die Orakelanfragen von Mi? reagiert wird. Dazu legen wir fest: • Stellt Mi? Orakelanfrage x, wobei x ∈ Bi−1 , so geht die Simulation von Mi? in den Zustand qja . • Stellt Mi? Orakelanfrage x, wobei x ∈ B̃i−1 , so geht die Simulation von Mi? in den Zustand qnein . • Bei allen anderen Orakelanfragen x, geht die Simulation von Mi? in den Zustand qnein und wir setzen Xi := Xi ∪ {x}. 71 Am Ende dieser Simulation von Mi? mit Eingabe 1ni beobachten wir, ob Mi? mit den oben definierten Antworten auf die Orakelanfragen das Element 1ni akzeptiert. Akzeptiert Mi? das Element 1ni , so setzen wir Bi := Bi−1 und B̃i := Bi−1 ∪ {0, 1}ni . Wird hingegen am Ende der Simulation 1ni abgelehnt, so wählen wir ein wi ∈ {0, 1}ni \ Xi und setzen Bi := Bi−1 ∪ {wi } und B̃i := Bi−1 ∪ Xi . Solch ein wi existiert, da in der Simulation von Mi? höchstens nei i Orakelanfragen gestellt werden können und nach Definition von ni gilt 2ni > nei . Da ni größer ist als die Länge jedes Elements aus der Vereinigung der Bj , B̃j , j = 0, . . . , i − 1, sind unsere obigen Regeln für die Beantwortung der Orakelanfragen konsistent und auch die Mengen Bi und B̃i erfüllen die Eigenschaften in (5.1) und in (5.2). Wir definieren nun [ B := Bi . i≥1 Aus der Definition der Mengen Bi folgt nun 1ni ∈ L(MiB ) ⇔ 1ni 6∈ LB . Gilt nämlich 1ni 6∈ L(MiB ), so wird die oben beschriebene Simulation von Mi? im ablehnenden Zustand enden. Dann aber führt unsere Wahl von wi zu 1ni ∈ LB . Gilt andererseits 1ni ∈ L(MiB ), so wird auch die oben beschriebene Simulation von Mi? im akzeptierenden Zustand enden. Aber dann sorgt / LB . Damit kann LB durch die Setzung von B̃i = B̃i−1 ∪ {0, 1}ni für 1ni ∈ keine polynomiell zeitbeschränkte Orakel DTM mit Orakel B entschieden werden. Es gilt also LB 6∈ P B . 5.3 Die Polynomialzeithierarchie Um die Klassen der Polynomialzeithierarchie zu definieren, gehen wir zurück zu Orakelmaschinen. Sei C eine beliebige Klasse von Sprachen, wir setzen dann es existiert eine polynomiell zeitbeschränkte DOTM M ? P(C) := L . und eine Sprache A ∈ C mit L M A = L 72 Analog erhalten wir ? es existiert eine polynomiell zeitbeschränkte NOTM M N P(C) := L . und eine Sprache A ∈ C mit L M A = L Aus der Definition von Orakelmaschinen erhalten wir N P∪co-N P ⊆ P(N P). Auf Seite 70 haben wir außerdem gesehen, dass MF ∈ N P(N P), denn wir haben eine nichtdeterministische polynimiell zeitbeschränkte NOTM mit Orakel SAT konstruiert, die MF entscheidet. Jetzt können wir die Klassen der Polynomialzeithierarchie definieren. Definition 5.3.1 Wir setzen Σ0 = Π0 = ∆0 = P und definieren dann induktiv für k ∈ N 1. Σk = N P(Σk−1 ) 2. Πk = co−Σk 3. ∆k = P(Σk−1 ) Schließlich setzen wir PH := [ Σk . k∈N Es gilt also ∆1 = P, Σ1 = N P und Π1 = co-N P. Das folgende Lemma fasst ohne Beweis (Übung) einige wichtige Relationen zwischen den Klasse der Polynomialzeithierarche zusammen. Lemma 5.3.2 Für alle k ∈ N gilt 1. ∆k = co-∆k ⊆ Σk ∩ Πk ⊆ Σk ∪ Πk ⊆ Σk+1 2. Σk ∪ Πk ⊆ ∆k+1 Insgesamt erhält man für die Polynomialzeithierarchie ein Bild wie in Abbildung 5.1. Kanten zwischen zwei Klassen bedeuten dabei Inklusion. Der folgende Satz beschreibt eine alternative Charakterisierung der Klassen der Polynomialzeithierarchie. Dieser Satz verallgemeinert die Charakterisierung von N P aus Satz 3.1.4 und von co-N P aus Korollar 3.1.5. Satz 5.3.3 Eine Sprache L liegt in Σk genau dann, wenn es ein Polynom p : N → N und eine Sprache A ∈ Πk−1 gibt, so dass L = {x ∃w ∈ {0, 1}p(|x|) : (x, w) ∈ A}. 73 Abbildung 5.1: Die Polynomialzeithierarchie Beweis: Sei zunächst die Sprache L derart, dass ein Polynom p : N → N und eine Sprache A ∈ Πk−1 existieren mit L = {x ∃w ∈ {0, 1}p(|x|) : (x, w) ∈ A}. Wir betrachten nun die folgende ONTM ML? mit Orakel Ā. ML? : Bei Eingabe x 1. Wähle w nichtdeterminitisch.. 2. Schreibe (x, w) auf das Orakelband. 3. Aus qnein gehe in akzeptierenden Zustand, aus qja gehen in ablehnenden Zustand. 74 Aus der Definition von L folgt, L(MLĀ ) = L. Außerdem gilt Ā ∈ Σk−1 , da A ∈ Πk−1 . Insgesamt folgt L ∈ Σk . Sei nun umgekehrt L ∈ Σk . Wir müssen ein Polynom p und eine Sprache A ∈ Πk−1 konstruieren, so dass L = {x ∃w ∈ {0, 1}p(|x|) : (x, w) ∈ A}. Wir beweisen dieses mit vollständiger Induktion über k. Für k = 1 ist aber Σk = N P und die Aussage folgt unmittelbar aus Satz 3.1.4. Sei nun die Aussage bereits für k − 1 bewiesen. Wir wollen sie auch für k beweisen. Nach Voraussetzung liegt L ∈ Σk . Somit gibt es eine polynomiell zeitbeschränkte NOTM M ? und eine Sprache K ∈ Σk−1 mit L = L(M K ). Da K ∈ Σk−1 , existiert nach Induktionsvorausssetzung ein Polynom q : N → N sowie eine Sprache S ∈ Πk−2 mit K = {z | ∃w ∈ {0, 1}q(|z|) : (z, w) ∈ S}. (5.3) Seien x, y ∈ {0, 1}∗ beliebig. Wir fassen dabei y auf als die Beschreibung einer Berechnung von M K bei Eingabe x. Dabei beschreibt y nicht nur die nichtdeterministischen Wahlen von M K , sondern auch die Orakelanfragen die M K stellt. Außerdem werden auch Antworten auf die Orakelanfragen protokolliert. Diese in y protokollierten Antworten müssen allerdings nicht korrekt sein. Seien nun v1 , . . . , vs die Anfragen in y, für die in y die Antwort qja protokolliert ist und u1 , . . . , ut die Anfragen aus y, für die in y die Antwort qnein protokolliert ist. Wir sagen, dass y eine akzeptierende Simulation von M K bei Eingabe x ist, wenn der durch y beschriebenene Berechnungspfad von M K bei Eingabe x ein akzeptierender Berechnungspfad ist. Dabei werden bei auf dem Berechnungspfad die Orakelanfragen gemäß den in y protokollierten Antworten beantwortet. Wir setzen y beschreibt eine akzeptieren Simulation B := (x, y) . von M K bei Eingabe x Da die NOTM M ? polynomiell zeitbeschränkt ist, gilt B ∈ P. Außerdem gibt es ein Polynom h : N → N, so dass akzeptierende Simulationen von M K bei Eingabe x durch y ∈ {0, 1}h(|x|) beschrieben werden können. Nun gilt weiter x ∈ L ⇔ ∃y ∈ {0, 1}h(|x|) : y beschreibt eine akzeptierende Simulation von M K bei Eingabe x und die in y protokollierte Antworten sind korrekt. (5.4) 75 Nun sind die Antworten qja auf die Frage vi , i = 1, . . . , s genau dann korrekt, wenn vi ∈ K. Nach (5.3) ist dieses genau dann der Fall, wenn es ein wi gibt mit (vi , wi ) ∈ S. Die Antworten qnein auf die Fragen ui , i = 1, . . . , t, sind genau dann korrekt, wenn ui ∈ K̄. Wir definieren (x, y) ∈ B, für die in y protokollierten mit qnein beantworteten Orakelanfragen u1 , . . . , ut gilt A := (x, y, w1 , . . . , ws ) ui ∈ K̄, i = 1, . . . , t und für die in y protokol. lierten mit q beantworteten Orakelanfragen ja v1 , . . . , vs gilt (vi , wi ) ∈ S, i = 1, . . . , s Wir behaupten, A ∈ Πk−1 . Um dieses zu sehen, zeigen wir Ā ∈ Σk−1 . Nach Definition gilt aber (x, y, w1 , . . . , ws ) ∈ Ā genau dann, wenn eine der folgenden drei Bedingungen erfüllt ist 1. (x, y) ∈ B̄, 2. es existiert ein i ∈ {1, . . . , t mit ui ∈ K, 3. es existiert ein i ∈ {1, . . . , s} mit(vi , wi ) ∈ S̄. Weiter gilt • B̄ ∈ Σk−1 , da B ∈ P; • K ∈ Σk−1 nach Voraussetzung; • S̄ ∈ Σk−1 , da S ∈ Πk−2 ⊆ Πk−1 . Damit liegt auch Ā in Σk−1 und somit A ∈ Πk−1 . Mit (5.4) erhalten wir L := {x|∃y, w1 , . . . , ws : (x, y, w1 , . . . , ws ) ∈ A}. Da die Länge von y, w1 , . . . , ws außerdem polynomiell durch die Länge von x beschränkt ist, folgt der Satz. Aus Satz 5.3.3 und der Definition von Πk erhalten wir unmittelbar Korollar 5.3.4 Eine Sprache L liegt in Πk genau dann, wenn es ein Polynom p : N → N und eine Sprache A ∈ Σk−1 gibt, so dass L = {x ∀w ∈ {0, 1}p(|x|) : (x, w) ∈ A}. Aus Satz 5.3.3 und Korollar 5.3.4 erhalten wir durch vollständige Induktion über k die folgende Charakterisierung der Klassen innerhalb der Polynomialzeithierarchie. 76 Korollar 5.3.5 1. Eine Sprache L liegt in Σk genau dann, wenn es ein Polynom p : N → N und eine Sprache A ∈ P gibt, so dass ∃w1 ∈ {0, 1}p(|x|) ∀w2 ∈ {0, 1}p(|x|) · · · Qk wk ∈ {0, 1}p(|x|) : L= x , (x, w1 , w2 , . . . , wk ) ∈ A dabei ist Qk = ∃, wenn k ungerade ist, sonst gilt Qk = ∀. 2. Eine Sprache L liegt in Πk genau dann, wenn es ein Polynom p : N → N und eine Sprache A ∈ P gibt, so dass ∀w1 ∈ {0, 1}p(|x|) ∃w2 ∈ {0, 1}p(|x|) · · · Qk wk ∈ {0, 1}p(|x|) : , L= x (x, w1 , w2 , . . . , wk ) ∈ A dabei ist Qk = ∀, wenn k ungerade ist, sonst gilt Qk = ∃. Dieses Korollar hat weitere interessante Konsequenzen, die wir nun formulieren. Auf die Beweise wird in den Übungen genauer eingegangen. Korollar 5.3.6 PH ⊆ PSPACE. Korollar 5.3.7 Existiert ein k ∈ N mit Σk = Πk , so gilt Σl = Πl = Σk = Πk für alle l ≥ k. Korollar 5.3.8 Gilt P = N P, so folgt PH = P. Gilt N P = co-N P, so folgt PH = N P. 77 Kapitel 6 Probabilistische Komplexitätsklassen Im letzten Kapitel des Skripts werden wir uns mit probabilistischen Algorithmen und Rechenmodellen befassen. Bei Berechnungen mit Hilfe probabilistischer Algorithmen werden wir Fehler zulassen. Je nachdem, ob wir einseitige oder beidseitige Fehler erlauben, erhalten wir unterschiedliche Rechenmodelle. Die Laufzeit wird dabei immer (erwartet) polynomiell sein. Wir werden auch probabilistische Komplexitätsklassen einführen. Nichtdeterministische Rechenmodelle und Klassen werden als Extremfälle probabilistischer Berechnungen auftauchen. Der Versuch, probabilistische Klassen mit den Klassen P und N P zu vergleichen, wird uns zurück zur Polynomialzeithierarchie führen. 6.1 Einfache probabilistische Algorithmen In diesem Abschnitt werden wir zur Vorbereitung auf die Definition probabilistischer Komplexitätsklassen einen einfachen probabilistische Algorithmen kennen lernen. Dieser Algorithmus entscheidet, ob das Produkt zweier Matrizen A und B sich von eine dritten Matrix C unterscheidet. Um Probleme mit der Darstellung der Matrixeinträge zu vermeiden, arbeiten wir über dem Körper Z2 mit zwei Elementen. Der Algorithmus kann leicht auf andere Körper erweitert werden. Hier sind zunächst die Definitionen der für diesen Algorithmus relevanten Sprachen. Die Sprache MM besteht aus allen Tripeln (A, B, C) ∈ Z2n×n × Z2n×n × Z2n×n mit A · B = C, dabei ist n eine beliebige natürliche Zahl. MM := (A, B, C) ∈ Z2n×n × Z2n×n × Z2n×n n ∈ N, A · B = C 78 Wir sind allerdings hauptsächlich am Komplement MM von MM interessiert. Dieses Komplement ist definiert als MM := (A, B, C) ∈ Z2n×n × Z2n×n × Z2n×n n ∈ N, A · B 6= C Natürlich kann sowohl MM als auch MM in Zeit O(n3 ) entschieden, indem das Produkt A · B explizit berechnet und dann mit C verglichen wird. Die folgende TM wird in gewisser Weise ebenfalls die Sprache MM entscheiden. Die TM hat nur quadratische Laufzeit. MMM : Bei Eingabe A, B, C ∈ Z2n×n 1. Wähle x ∈ Zn2 zufällig gleichverteilt. 2. Berechne y := B · x, z := A · y und w := C · x. 3. Akzeptiere, falls z 6= w, sonst lehne ab. Die Laufzeit von MMM ist, wie man leicht sieht, O(n2 ). D.h., da jede der drei Matrizen selber bereits Größe n2 besitzt, ist die Laufzeit linear in der Eingabegröße. Im ersten Schritt der Beschreibung von MMM hätten wir auch schreiben können Wähle ein x nichtdeterministisch.“ Allerdings ist die ” Formulierung zufällig gleichverteilt für unsere Zwecke angemessener. MMM ist eine NTM, die die Sprache MM entscheidet. Allerdings haben wir im Fall (A, B, C) ∈ MM nicht nur mindestens eine akzeptierende Berechnung. Vielmehr ist mindestens die Hälfte aller Berechnungen akzeptierend. Dieses ist die Aussage des folgenden Lemmas Lemma 6.1.1 Für alle A, B, C ∈ Z2n×n gilt 1. Wenn (A, B, C) 6∈ MM, dann lehnt MMM das Tripel (A, B, C) ab. 2. Wenn (A, B, C) ∈ MM, dann akzeptiert MMM das Tripel (A, B, C) mit Wahrscheinlichkeit 1/2, wobei die Wahrscheinlichkeit über die zufällige Wahl von x genommen ist. Beweis: 1. Folgt unmittelbar aus der Arbeitsweise von MMM , da in diesem Fall A · B · x = C · x für alle x ∈ Zn2 . 2. Sei D := A · B − C ∈ Z2n×n . Es gilt D 6= 0. Damit ist der Kern von D nicht der ganze Raum Zn2 . Dann aber kann der Kern von D 79 höchstens (n − 1)-dimensional sein, insbesondere enthält der Kern von D höchstens 2n−1 Elemente. Schließlich gilt Prn MMM akzeptiert (A, B, C) = x∈Z2 1 2n−1 Prn x liegt nicht im Kern von D = A · B − C ≥ 1 − n = . x∈Z2 2 2 6.2 Probabilistische Komplexitätsklassen Wir werden probabilistische Berechnungen als Spezialfall nichtdeterministischer Berechnungen auffassen. Dazu benötigen wir zunächst eine (nicht wesentliche) Einschränkung bei NTMs. Definition 6.2.1 Sei N = (Q, Σ, Γ, δ) eine NTM. N heißt balanciert, wenn es eine Funktion f : N → N gibt, so dass für alle x ∈ Σ∗ die möglichen Berechnungen von N bei Eingabe x immer die Länge f (|x|) besitzen. Berechnungspfade von N bei Eingabe x werden dann mit Elementen aus {0, 1}f (|x|) identifiziert. Jede NTM kann ersetzt werden durch eine balancierte NTM, die die gleiche Sprache akzeptiert und etwa dieselbe Laufzeit besitzt. Insbesondere kann jede NTM mit polynomieller Laufzeit durch eine balancierte NTM mit polynomieller Laufzeit simuliert werden. Daher werden wir in diesem Abschnitt immer annehmen, dass NTMs balanciert sind. Ist die NTM N = (Q, Σ, Γ, δ) balanciert und ist p : N → N ein Polynom, so dass für alle x ∈ Σ∗ die NTM N Laufzeit p(|x|) hat, so nennen wir N p-balanciert. Definition 6.2.2 Die Klasse RP besteht aus allen Sprachen L, so dass es ein Polynom p : N → N und eine p-balancierte NTM N mit folgenden Eigenschaften gibt 1. Ist w 6∈ L, so lehnen alle Berechnungspfade von N bei Eingabe w ab. 2. Ist w ∈ L, so akzeptieren mindestens die Hälfte aller Berechnungspfade, es gibt dann also mindestens 2p(|w|)−1 akzeptierende Berechnungspfade. 80 Wir können die Bedingungen an die NTM N aus Definition 6.2.2 auch anders formulieren: 1. Ist w 6∈ L, so gilt Pr y∈{0,1}p(|x|) (N akzeptiert w auf Berechnungspfad y) = 0. 2. Ist w ∈ L, so gilt Pr y∈{0,1}p(|x|) 1 (N akzeptiert w auf Berechnungspfad y) ≥ . 2 Dabei sind die Wahrscheinlichkeiten jeweils über die zufällige gleichverteilte Wahl eines Berechnungspfades genommen. In der NTM MMM können wir nun die zufällige Wahl von x ∈ Zn2 als zufällige Wahl eines Berechnungspfades einer NTM auffassen. Wir haben damit also im vorangegangenen Abschnitt mit Hilfe der NTM MMM gezeigt, dass MM ∈ RP. Aus der Definition von RP ergibt sich unmittelbar P ⊆ RP. Außerdem gilt auch RP ⊆ N P, denn wenn mindestens die Hälfte aller Berechnungspfade akzeptierend sind, gibt es auch mindestens einen. Das genau Verhältnis von P, RP und N P ist (natürlich) nicht bekannt. In der Definition von RP gibt es ähnlich wie bei N P eine Asymmetrie zwischen Akzeptieren und Ablehnen bzw. zwischen Worten in einer Sprache L ∈ RP und den Worten, die nicht in L liegen. So kann man bei einer NTM, die eine Sprache L in RP definiert, der Antwort akzeptiere“ immer ” trauen. Der Antwort lehne ab“ kann hingegen nicht getraut werden. Dieses ” ist analog wie bei N P. Aus diesem Grunde ist auch nicht klar, ob mit einer Sprache auch ihr Komplement in RP liegt. Damit ist das Verhältnis zwischen RP und co-RP nicht klar. Dabei liegt eine Sprache L liegt genau dann im Komplement co-RP der Klasse RP, wenn es eine p-balancierte NTM N mit folgenden Eigenschaften gibt 1. Ist w ∈ L, so akzeptieren alle Berechnungspfade von N bei Eingabe w. 2. Ist w 6∈ L, so lehnen mindestens die Hälfte aller Berechnungspfade ab, es gibt dann also mindestens 2p(|w|)−1 ablehnende Berechnungspfade. Bei einer NTM N , die eine Sprache in co-RP entscheidet, kann also den ablehnenden Antworten nicht jedoch den akzeptierenden Antworten getraut werden. Interessant sind die Sprachen im Durchschnitt von RP und co-RP. 81 Definition 6.2.3 Die Klasse ZPP besteht aus allen Sprachen im Durchschnitt RP ∩ co-RP. Man kann sich leicht überlegen, dass eine Sprache genau dann in ZPP liegt, wenn es eine NTM N mit erwartet polynomieller Laufzeit gibt, die L entscheidet. Dabei sind die Antworten von N immer korrekt. Genaueres hierzu kann in den Büchern von Papadimitriou und Sipser nachgelesen werden. Sowohl bei RP als auch bei co-RP haben wir nur einen einseitigen Fehler zugelassen. Damit war entweder nur akzeptierenden oder nur ablehnenden Antworten zu trauen. In der folgenden Klasse lassen wir nun einen beidseitigen Fehler zu. Definition 6.2.4 Die Klasse BPP besteht aus allen Sprachen L, so dass es ein Polynom p : N → N und eine p-balancierte NTM N mit folgenden Eigenschaften gibt 1. Ist w 6∈ L, so akzeptieren höchstens 1/4 aller Berechnungspfade ab, es gibt dann also höchstens 41 2p(|w|) ablehnende Berechnungspfade. 2. Ist w ∈ L, so akzeptieren mindestens 3/4 aller Berechnungspfade, es gibt dann also mindestens 43 2p(|w|) akzeptierende Berechnungspfade. Wie bei RP können wir die Bedingungen an die NTM N aus Definition 6.2.4 auch durch Wahrscheinlichkeiten ausdrücken: 1. Ist w 6∈ L, so gilt Pr y∈{0,1}p(|x|) 1 (N akzeptiert w auf Berechnungspfad y) ≤ . 4 2. Ist w ∈ L, so gilt Pr y∈{0,1}p(|x|) 3 (N akzeptiert w auf Berechnungspfad y) ≥ . 4 BPP wird häufig als die Klassen aller effizient lösbaren Problemen angesehen. Dies mag zunächst angesichts der ober angeführten Wahrscheinlichkeiten etwas überraschend sein. Jedoch kann mit den so genannten ChernoffSchranken der Wahrscheinlichkeitstheorie folgendes Lemma gezeigt werden. Satz 6.2.5 Eine Sprache L liegt genau dann in BPP, wenn es ein Polynom p : N → N und eine p-balancierte NTM N mit folgenden Eigenschaften gibt 82 1. Ist w ∈ L, so besitzt N bei Eingabe w mindestens 1 − 2−|w| 2p(|w|) akzeptierende Berechnungspfade. 2. Ist w 6∈ L, so besitzt N bei Eingabe w höchstens 2−|w| 2p(|w|) akzeptierende Berechnungspfade. Wir können also die Fehlerwahrscheinlichkeiten für Sprachen in BPP sehr klein machen. Damit spielen dann die Fehler fast keine Rolle mehr. Wir entscheiden dann also Sprachen in polynimieller Zeit und machen dabei nur vernachlässigbar kleine Fehler. Aus der Definition von BPP folgt P ⊆ BPP. Ob BPP in N P enthalten ist, ist unbekannt. Wollen wir BPP mit deterministischen und nichtdeterministischen Klassen vergleichen, müssen wir zur so genannten Polynomialzeithierarchie übergehen. 6.3 BPP und die Polynomialzeithierarchie Ziel dieses Abschnitts ist der Beweis des folgenden Satzes. Satz 6.3.1 BPP ⊆ Σ2 . Beweis: Sei L ∈ BPP. Nach Definition von BPP und Satz 6.2.5 existiert dann ein Polynom p : N → N und eine p-balancierte NTM N mit 1. Ist w ∈ L, so besitzt N bei Eingabe w mindestens 1 − 2−|w| 2p(|w|) akzeptierende Berechnungspfade. 2. Ist w 6∈ L, so besitzt N bei Eingabe w höchstens 2−|w| 2p(|w|) akzeptierende Berechnungspfade. Sei x mit |x| = n. Wir können dann Berechnungspfade von N bei Eingabe x mit Elementen aus {0, 1}p(n) identifizieren. Wir bezeichnen weiter mit p(n) w ist akzeptierender Berechnungspfad von N A(x) := (w ∈ {0, 1} . bei Eingabe x Damit gilt also und x ∈ L ⇒ |A(x)| ≥ 1 − 2−n 2p(n) x 6∈ L ⇒ |A(x)| ≤ 2−n 2p(n) . 83 Sind y, z ∈ {0, 1}p(n) , so bezeichnen wir mit y ⊕z das komponentenweise Xor von y und z. Außerdem setzen wir für ein beliebiges Element t ∈ {0, 1}p(n) t ⊕ A(x) := {t ⊕ z v ∈ A(x)}. Sind nun t1 , . . . , tp(n) ∈ {0, 1}p(n) und ist x 6∈ L, so gilt p(n) [ i=1 ti ⊕ A(x) ≤ p(n)2−n 2p(n) . Wir nehmen nun an, dass für alle n gilt p(n) < 2n . Für n groß genug ist dieses sicherlich der Fall. Die Annahme, dass die Ungleichung für alle n gilt, vereinfacht die Notation etwas. Damit gilt p(n) [ x 6∈ L ⇒ ¬ ∃t1 . . . , tp(n) ∈ {0, 1}p(n) : ti ⊕ A(x) = {0, 1}p(n) . (6.1) i=1 Wir wollen nun zeigen, dass im Fall x ∈ L Elemente t1 , . . . , tp(n) existieren mit p(n) [ i=1 ti ⊕ A(x) = {0, 1}p(n) . (6.2) Wir zeigen dieses, indem wir zeigen, dass für eine zufällige Wahl von t1 , . . . , tp(n) mit Wahrscheinlichkeit echt größer 0 die Gleichung (6.2) erfüllt ist. Seien also t1 , . . . , tp(n) ∈ {0, 1}p(n) unabhängig gleichverteilt gewählt. Weiter sei y ∈ {0, 1}p(n) fest. Dann gilt y 6∈ ti ⊕ A(x) ⇔ ti 6∈ y ⊕ A(x). Da aber das Komplement von y ⊕ A(x) für x ∈ L höchstens 2−n 2p(n) Element enthält, gilt über die zufällige Wahl von ti für alle i = 1, . . . , p(n) Pr y 6∈ ti ⊕ A(x) = P r ti 6∈ y ⊕ A(x) le2−n . Da die ti unabhängig gewählt werden, folgt weiter p(n) Pr y 6∈ [ i=1 ti ⊕ A(x) ≤ 2−np(n) . Damit können wir für x ∈ L schließen p(n) p(n) Pr ∃y ∈ {0, 1} : y 6∈ [ i=1 ti ⊕ A(x) ≤ 2n · 2−np(n) = 2−n(p(n)−1) < 1 84 oder p(n) Pr [ i=1 ti ⊕ A(x) = {0, 1}p(n) > 0. Damit erhalten wir p(n) p(n) x ∈ L ⇒ ∃t1 . . . , tp(n) ∈ {0, 1} : [ i=1 ti ⊕ A(x) = {0, 1}p(n) . (6.3) Wir können nun (6.1) und (6.3) zusammenfassen durch 2 x ∈ L ⇔ ∃t = (t1 , . . . , tp(n) ) ∈ {0, 1}p(n) ∀y ∈ {0, 1}p(n) : p(n) y∈ [ i=1 ti ⊕ A(x). (6.4) Betrachten nun die Sprache p(n) [ 2 A := (x, y, t) ∈ {0, 1}n×p(n)×p(n) t = (t1 , . . . , tp(n) ), y ∈ ti ⊕ A(x) . i=1 Die Sprache A liegt in P, denn um zu entscheiden, ob ein Tripel (x, y, t) mit t = (t1 , . . . , tp(n) ) in A liegt, muss die NTM N nur mit Eingabe x und den durch y ⊕ ti , i = 1, . . . , p(n), gegebenen Berechnungspfaden simuliert werden. Dieses sind aber insgesamt nur polynomiell viele Berechnungen der polynomiell zeitbeschränkten NTM N . Wir können (6.4) umschreiben zu 2 x ∈ L ⇔ ∃t = (t1 , . . . , tp(n) ) ∈ {0, 1}p(n) ∀y ∈ {0, 1}p(n) : (x, y, t) ∈ A. Da A ∈ P, folgt mit Korollar 5.3.5, dass L in Σ2 liegt. Korollar 6.3.2 BPP ⊆ Σ2 ∩ Π2 . Beweis: Da BPP unter Komplementbildung abgeschlossen ist, d.h. BPP = co-BPP, folgt aus BPP ⊆ Σ2 auch BPP ⊆ Π2 und somit BPP ⊆ Σ2 ∩Π2 . Korollar 6.3.2 ist etwas enttäuschend. Vermutet werden auch viel stärkere Resultate. Allgemein angenommen wird BPP ⊆ N P. Außerdem gibt es Indizien, die sogar auf BPP = P hindeuten. 85