Wolfgang Merkle, Universität Heidelberg, Institut für Informatik Begleitmaterial zur Vorlesung Berechenbarkeit und Komplexität I im Sommersemester 2016, Teil 1 : Komplexitätstheorie Nichtdeterministische Zeit- und Platzkomplexität Nicht notwendigerweise deterministische Turingmaschinen Bisher haben wir Zeit- und Platzschranken nur für deterministische Turingmaschinen eingeführt. In diesem Abschnitt lassen wir diese Einschränkung fallen und betrachten auch beliebige, also nicht notwendigerweise deterministische Turingmaschinen. Um den Unterschied zwischen diesem allgemeinen Fall und dem Spezialfall deterministischer Turingmaschinen hervorzuheben, werden wir Formulierungen verwenden wie nichtdeterministische Turingmaschine oder nichtdeterministische Zeitkomplexität. Damit ist immer gemeint, das wir Turingmaschinen betrachten, die nicht notwendigerweise deterministisch sind, also beliebige Turingmaschinen. Insbesondere bedeuten die Begriffe nichtdeterministische Turingmaschine und Turingmaschine dasselbe. Rechnungsbäume Im Gegensatz zu den in den letzten Abschnitten betrachteten deterministischen Turingmaschinen, kann das Programm einer nichtdeterministischen Turingmaschinen mehrere Anweisungen mit gleichen Bedingungsteil enthalten. Zum Beispiel kann das Programm δ einer k-Band-Turingmaschine M drei Anweisungen der folgenden Form enthalten: (q, a1 , . . . , ak , p , b1 , . . . , bk , B1 , . . . , Bk ), (q, a1 , . . . , ak , p0 , b01 , . . . , b0k , B10 , . . . , Bk ), (q, a1 , . . . , ak , p00 , b001 , . . . , b00k , B100 , . . . , Bk00 ). Erreicht die Rechnung von M eine Konfiguration K mit Zustand q und gelesenen Symbolen a1 bis ak , so kann jede der drei Anweisungen ausgeführt werden und es gibt entsprechend drei, im Allg. paarweise verschiedene Nachfolgekonfigurationen, die von K aus jeweils in einem Schritt erreicht werden können. Anstelle einer eindeutig bestimmten Rechnung in Form einer Folge von Konfigurationen wie im deterministischen Fall ergeben sich mehrere mögliche Rechnungen, die sich, ausgehend von der Startkonfiguration, immer weiter verzweigen und als Pfade der im Folgenden eingeführten Rechnungsbäume beschrieben werden können. 2 W. Merkle Komplexitätstheorie SS 2016 Wir betrachtete Graphen der Form G = (V, E) deren Knotenmenge V endlich oder abzählbar unendlich ist, die Kantemenge E ist eine Teilmenge von V × V . Die Graphen sind einfach und ungerichtet, die Kantemenge E enthält also keine Schleifen, das sind Kanten der Form (u, u), und mit jedem Paar (u, v) enthält E auch das Paar (v, u). Definition 36. Ein Weg (auch: Pfad) in einem Graphen ist eine endliche oder unendliche Folge von paarweise verschiedenen Knoten des Graphen, so dass zwischen je zwei direkt aufeinander folgenden Knoten der Folge eine Kante verläuft. Ein endlicher Pfad der Form v0 , . . . , v` hat Länge `. Ein Baum ist ein ungerichteter Graph T = (V, E) mit endlicher oder abzählbar unendlicher Knotenmenge V , so dass es zwischen je zwei Knoten in V genau einen Pfad in T gibt (die letzte Bedingung ist äquivalent dazu, dass T zusammenhängend ist und keine Kreise enthält). Ein Baum mit Wurzel ist ein Baum mit einem ausgezeichneten Knoten, der Wurzel. In einem Baum mit Wurzel ist die Tiefe eines Knotens gleich der Länge des (eindeutig bestimmten) Pfades von der Wurzel zu diesem Knoten. In einem Baum mit Wurzel unterscheidet sich die Tiefe von benachbarten Knoten u und v genau um 1, und hat für ein solches Paar der Knoten u die kleinere Tiefe, dann heißt u Elternknoten von v und der Knoten v heißt Kind von u. Ein Knoten ohne Kinder heißt Blatt. Eine Beschriftung eines Graphen ist eine Abbildung κ von der Menge der Knoten des Graphen in eine Menge L; man sagt, die Knoten des Graphen sind mit Elementen von L beschriftet und κ(v) heißt die Inschrift des Knotens v. Ein beschrifteter Graph ist ein Graph zusammen mit einer Beschriftung des Graphen. Definition 37. Es sei M = (Q, Σ, Γ, δ, q0 , F ) eine Turingmaschine. Der Rechnungsbaum T(M, x) von M bei Eingabe x ist ein beschrifteter Baum mit Wurzel, dessen Knoten mit Konfigurationen von M beschriftet sind und der induktiv wie folgt definiert ist. (i) Die Wurzel ist mit der Startkonfiguraton startM (x) beschriftet. (ii) Ist ein Knoten mit einer Stoppkonfiguration beschriftet, so ist dieser Knoten ein Blatt, hat also keine Kinder. (iii) Ist ein Knoten mit einer Konfiguration K beschriftet, auf die genau t > 0 Anweisungen aus δ anwendbar sind und erreicht man für i = 1, . . . , t durch Anwendung der i-ten dieser Anweisungen die Konfiguration Ki , so hat dieser Knoten genau t Kinder und das i-te Kind wird mit Konfiguration Ki beschriftet (für geeignete Ordnungen auf δ und auf der Menge der Kinder eines gegebenen Knotens). W. Merkle Komplexitätstheorie SS 2016 3 Bemerkung 38. Die Rechnungen eine Turingmaschine M bei Eingabe x können mit den in der Wurzel w beginnenden maximalen Pfaden des Rechenbaums T(M, x) identifiziert werden. Ein Pfad ist dabei maximal, falls er nicht verlängert werden kann. Die in der Wurzel beginnenden maximalen Pfade sind gerade die Pfade von der Wurzel zu einem Blatt und die in der Wurzel beginnenden unendlichen Pfade. Nach Konstruktion des Rechenbaums T(M, x) entsprechen für solche endlichen oder unendlichen Pfade der Form w = v0 , v1 , . . . die zugehörigen Folgen κ(v0 ), κ(v1 ), . . . der Inschriften gerade den endlichen beziehungsweise unendlichen Rechnungen von M bei Eingabe x. Definition 39. In einem Baum mit Wurzel ist der Verzweigungsgrad eines Knoten gleich der Anzahl seiner Kinder. Ein Baum mit Wurzel hat konstanten Verzweigungsgrad, falls für eine Konstante k jeder seiner Knoten Verzweigungsgrad höchstens k hat. Ein Baum mit Wurzel ist endlich verzweigend, falls jeder seiner Knoten endlichen Verzweigungsgrad hat. Bemerkung 40. Rechenbäume vonTuringmaschinen haben immer konstanten Verzweigungsgrad. Genauer gibt es zu jeder Turingmaschine M eine Konstante k, so dass alle Knoten in allen Rechenbäumen von M Verzweigungsgrad höchstens k haben. Für eine gegebene Turingmaschine M betrachte die maximale Anzahl k von Anweisungen im Programm von M , die alle den gleichen Anweisungsteil haben. Nach Definition kann jeder Knoten eines Rechenbaums der Turingmaschine M höchstens k Kinder haben. Königs Lemma. Sei T ein endlich verzweigender Baum mit Wurzel. Dann enthält T genau dann einen unendlichen Pfad, wenn T unendlich ist. Beweisskizze. Die Vorwärtsrichtung der behaupteten Äquivalenz ist offensichtlich: wenn T einen unendlichen Pfad enthält, muss T auch unendlich viele Knoten enthalten. Sei nun umgekehrt T unendlich. Dann erhalten wir induktiv einen unendlichen Pfad v0 , v1 , . . . wie folgt. Am Beginn der Konstuktion setzen wir v0 gleich der Wurzel von T . Im Induktionsschritt nehmen wir an, dass vi schon bestimmt und der Teilbaum von T unter vi unendlich sei. Dann setzen wir vi+1 gleich dem kleinsten Kind von vi , so dass der Teilbaum von T unterhalb dieses Kindes unendlich ist. Letztere Bedingung ist nach Annahme über vi für mindestens eines der endlich vielen Kinder von vi erfüllt. Es folgt nun induktiv, dass die Teilbäume unter allen vi unendlich sind, dass deswegen jeweils vi+1 wie gefordert bestimmt werden kann und somit T einen unendlichen Pfad hat. 4 W. Merkle Komplexitätstheorie SS 2016 Aus Bemerkung 40 und Königs Lemma folgt unmittelbar, dass Rechenbäume von totalen Turingmaschinen immer endlich sind. Der folgende Satz erweitert diese Aussage insofern, als man für jede totale Turingmaschine die Tiefen ihrer Rechnungsbäume berechnen kann. Satz 41. Es sei M eine totale Turingmaschine. Dann sind alle Rechenbäume von M endlich. Weiter gibt es eine berechenbare Funktion t, so dass für alle x die Tiefe des Rechenbaums von M bei Eingabe x gleich t(|x|) ist. Beweis. Im Absatz vor Satz 41 wurde bereits gezeigt, dass die Rechenbäume einer totalen Turingmaschine immer endlich sind. Dann kann man aber auch zu gegebenem x den Rechenbaum T(M, x) und damit auch dessen Tiefe berechnen, indem man die Rechnungen von M bei Eingabe x solange simuliert, bis diese alle terminiert haben. Nichtdeterministische Zeit- und Platzkomplexität Erinnerung: eine Turingmaschine M akzeptiert eine Eingabe w, falls bei Eingabe w mindestens eine Rechnung von M eine akzeptierende Stoppkonfiguration erreicht. Die von einer Turingmaschine M erkannte Sprache L(M ) ist die Menge aller Wörter über dem Eingabealphabet von M , welche M akzeptiert. Definition 42 (nichtdeterministische Zeitklassen). Es sei t eine Zeitschranke. Eine Turingmaschine M ist t(n)-zeitbeschränkt, falls M total ist und für fast alle Eingaben w alle Rechnungen von M Länge höchstens t(|w|) haben. Die Klasse der in nichtdeterministischer Zeit t(n) entscheidbaren Sprachen ist NTIME(t(n)) ={L ⊆ {0, 1}∗ : L = L(M ) für eine t(n)-zeitbeschränkte Turingmaschine M.} Definition 43 (nichtdeterministische Platzklassen). Es sei s eine Platzschranke. Eine Turingmaschine M ist s(n)-platzbeschränkt, falls M total ist und für fast alle Eingaben w alle Rechnungen von M auf jedem Band höchstens s(|w|) Felder besuchen. Die Klasse der in nichtdeterministischem Platz s(n) entscheidbaren Sprachen ist NSPACE(s(n)) ={L ⊆ {0, 1}∗ : L = L(M ) für eine s(n)-platzbeschränkte Turingmaschine M.} W. Merkle Komplexitätstheorie SS 2016 5 Definition 44 (Beispiele nichtdeterministischer Zeit- und Platzklassen). Unter Verwendung der Funktionsklassen log = {n 7→ c · log n + c : c ∈ N} und poly = {n 7→ nc + c : c ∈ N} definieren wir die Komplexitätsklassen N P = NTIME(poly), N EX P = NTIME(2poly ) = [ N LOG = NSPACE(log), c∈N N PSPACE c +c NTIME(2n ), = NSPACE(poly). und sprechen zum Beispiel im Fall von N P von der Klasse der in nichtdeterministischer polynomieller Zeit entscheidbaren Problemen. Für eine t(n)-zeitbeschränkte Turingmaschinen ist die Tiefe des Rechnungsbaums bei fast allen Eingabe w durch t(|w|) beschränkt, da keine Rechnung länger sein kann als die zulässige Anzahl von Rechenschritten. Das folgende Lemma enthält eine entsprechend Schranke für platzbeschränkte Turingmaschinen. Erinnerung: Konfiguratione von Turingmaschinen enthalten den aktuellen Zustand sowie für jedes Arbeitsband den endlichen relevanten Teil der Bandinschrift und die Kopfposition. Bei den im Zusammenhang mit platzbeschränkten Berechnungen betrachteten Offline-Turingmaschinen kommt noch die Position auf dem Eingabeband hinzu, die Inhalte des Ein- und Ausgabebandes dagegen sind nicht Teil der Konfiguration. Lemma 45 (Konfigurationen von platzbeschränkten Turingmaschinen). Es sei s eine Platzschranke und M = (Q, Σ, Γ, δ, q0 , F ) sei eine s(n)-platzbeschränkte Turingmaschine. Dann gibt es eine Konstante d, die nur von M abhängt, so dass für alle n die beiden folgenden Aussagen gelten. (i) Die Anzahl der möglichen Konfiguration von M bei einer Eingabe der Länge n ist höchstens 2d·n . (ii) Die Tiefe des Rechnungsbaum von M bei einer Eingabe der Länge n ist höchstens 2d·n . Beweis. Aussage (i) ergibt sich durch Nachrechnen und wird in den Übungen bewiesen. Für den Beweis von (ii) wählen wir eine Konstante d wie in (i) und nehmen an, dass der Rechnungsbaum von M bei einer Eingabe w der Länge n die Tiefe ` ≥ 2d·n hat. Dann gibt es eine Rechnung von M bei 6 W. Merkle Komplexitätstheorie SS 2016 Eingabe w der Länge `, d.h., die in dieser Rechnung durchlaufene Folge von Konfigurationen hat Länge `+1. Nach Wahl von ` und Aussage (i) muss eine der Konfigurationen in der Folge doppelt vorkommen, etwa nach Schritt i und Schritt j > i. Dann hat M bei Eingabe w aber auch beliebig lange terminierende und sogar unendlich Rechnungen, bei denen der Teil der Rechnung zwischen den Schritten i und j mehrfach oder unendlich oft wiederholt wird. Dies ist ein Widerspruch, da die s(n)-platzbeschränkte Turingmaschine M insbesondere total ist. Bemerkung 46. In der Literatur findet sich auch eine Variante des Begriffs t(n)-zeitbeschränkte Turingmaschine, bei der die Längenschranke t(|w|) für akzeptierende Rechnungen gefordert wird, nichtakzeptierende Berechnungen dagegen beliebig lang oder sogar unendlich sein dürfen. Für zeitkonstruierbare Zeitschranken t mit t(n) ≥ 2n ist die alternative Definition im Wesentlichen äquivalent zur Definition hier. Für solche t ist es möglich, eine Turingmaschine, die gemäß der Variante t(n)-zeitbeschränkt ist, um einem Zeitnahmemechanismus zu erweitern, der für alle Rechnungen nach t(n)Schritten Terminierung erzwingt, so dass sich die erkannte Sprache nicht ändert und die neue Turingmaschine t(n)-zeitbeschränkt ist, siehe die Übungen für Details. Die Äquivalenzaussage und die Konstruktion oben übertragen sich für platzkonstruierbare Platzschranken auf eine ähnliche Variante platzbeschränkter Turingmaschinen. Satz 47. Für jede Zeitschranke t gilt DTIME(t(n)) ⊆ DSPACE(t(n)) ⊆ DTIME 2O(t(n)) ⊆ ⊆ ⊆ ⊆ ⊆ NTIME(t(n)) ⊆ NSPACE(t(n)) | ⊆ NTIME 2O(t(n)) {z } dieser Teil gilt auch für beliebige Platzschranken s anstelle von t Die Einschränkung von Satz 47 auf Zeit- beziehungsweise Platzschranken ist nötig, weil die dort betrachteten Klassen sonst gar nicht definiert wären. Ansonsten sind diese Einschränkungen für den Beweis des Satzes nicht relevant. Korollar 48. Es gelten die folgenden Inklusionen LOG ⊆ N LOG ⊆ P ⊆ N P ⊆ PSPACE ⊆ N PSPACE ⊆ EX P ⊆ N EX P. W. Merkle Komplexitätstheorie SS 2016 7 Das Inklusionsbeziehungen des Korollars folgen unmittelbar aus Satz 47 indem man zum Beispiel die Klasse LOG als Vereinigung über Klassen der Form DTIME(c · log n + c) schreibt. Nach dem weiter unten gezeigten Satz von Savitch gilt PSPACE = N PSPACE. Weiter folgt aus den bereits gezeigten Hierarchiesätzen für deterministische Turingmaschinen und den noch zu beweisenden für nichtdeterministische Turingmaschinen LOG = 6 PSPACE, N LOG 6= N PSPACE, P= 6 EX P, N P 6= N EX P. Über die gerade genannten Fakten hinaus ist — ausgenommen triviale rein mengentheoretische Folgerung aus diesen Fakten wie N P = 6 EX P – nicht bekannt, welche der Inklusionsbeziehungen im Lemma echt sind. Beweis von Satz 47. Sei t eine Zeitschranke. Dann gelten die Inlusionsbeziehungen von oben nach unten nach Definition, weil jede deterministische Turingmaschine auch nichtdeterministische Turingmaschine mit den gleichen Zeit- und Platzschranken ist. Die horizontalen Inklusionsbeziehungen zwischen der ersten und zweiten Spalte gelten weil eine Turingmaschine in t(n) Schritten auf jedem Band höchstens t(n) Felder besuchen kann. Die horizontalen Inklusionsbeziehungen zwischen der zweiten und dritten Spalte gelten nach Lemma 45. Die bisher gezeigten Inklusionen gelten mit den gleichen Argumenten auch für eine Platzschranke s anstelle von t, sofern die jeweiligen Klassen für Platzschranken definiert sind, was gerade im angezeigten rechten Teil des Diagramms der Fall ist. Die beiden noch fehlenden diagonalen Inklusionen sind gerade den Aussagen der beiden folgenden Lemmas. Lemma 49. Für jede Zeitschranke t gilt NTIME(t(n)) ⊆ DSPACE(t(n)). Beweis. Sei L eine Sprache in NTIME(t(n) die von der t(n)-zeitbeschränkten k-Band-Turingmaschine M erkannt wird. Wir konstruieren eine deterministische t(n)-platzbeschränkte (k+1)-Band-Turingmaschine D vom OfflineTyp, welche die Sprache L erkennt indem sie bei Eingabe w den zugehörigen Rechnungsbaum von M vollständig durchsucht und w genau dann akzeptiert, wenn dabei eine akzeptierende Rechnung von M gefunden wird. Wähle eine Konstante r, so dass in den Berechnungsbäumen von M alle Knoten Verzweigungsgrad höchstens 2r − 1 haben. Betrachte für eine Eingabe w der Länge n im zugehörigen Rechnungsbaums von M Pfade von der Wurzel zu einem Blatt. Diese Pfade entsprechen gerade den Rechnungen von M bei Eingabe w und jeder solche Pfad lässt sich durch ein Binärwort der Länge r · t(n) darstellen. Dabei gibt der i-te Block von r Buchstaben einer solchen Darstellung an, ob der i-te Knoten des Pfads ein Blatt ist und falls nicht, welches der höchstens 2r − 1 Kinder dieses Knotens den Pfad 8 W. Merkle Komplexitätstheorie SS 2016 fortsetzt. Falls dabei für einen solchen Knoten das angegebene Kind nicht existiert, nennen wir die Darstellung nichtkodierend. Wir beschreiben die Arbeitsweise von D bei einer Eingabe w der Länge n. Wir nehmen dabei zunächst vereinfachend an, dass t platzkonstruierbar ist. Dann berechnet D zunächst den Wert t(n) und initialisiert auf einem separaten Band einen Binärzähler der Länge r · t(n) mit dem Wert 0. Die Konstante r wird dabei in D fest verdrahtet, d. h., das Programm von D enthält ein Unterprogramm das zum Beispiel r auf ein Band schreibt. Dann zählt D den Zähler hoch, so dass dabei alle möglichen Zählerwerte angenommen werden. Jeden dieser 2r·t(n) Zählerwerte identifiziert D wie oben beschrieben mit der Darstellung einer Rechnung von M bei Eingabe w und simuliert die mutmaßlich dargestellte Rechnung bis diese entweder terminiert oder erkannt wird, dass der Zählerwert eine nichtkodierende Darstellung ist. Schließlich akzeptiert D die Eingabe w genau dann, wenn eine akzeptierende Rechnung gefunden wurde. Anstatt den Wert t(n) zu berechnen, kann D auch für i = 1, 2, . . . jeweils eine Suche wie oben mit Zählerlänge r · i anstelle von r · t(n) durchführen. Falls während einer solchen Suche erkannt wird, dass einer der Rechnungen von M bei Eingabe w länger als der aktuelle Wert von i ist und deswegen mit der aktuellen Zählerlänge nicht vollständig dargestellt werden kann, wird diese Suche abgebrochen und die nächste Suche mit einer um r größeren Zählerlänge gestartet. Spätestens für i = t(n) und die zugehörige Zählerlänge r · t(n), möglicherweise aber auch schon für einen kleineren Wert von i, können alle Rechnungen vollständig dargestellt werden, d. h., der Rechnungsbaum von M wird vollständig durchsucht. Für das kleinste solche i wird w von D akzeptiert, falls eine akzeptierende Rechnung gefunden wurde und wird sonst verworfen, es wird also korrekt erkannt, ob es eine akzeptierende Rechnung gibt. Die angegebene Turingmaschine D ist deterministisch und O(t(n))-platzbeschränkt, mit linearer Kompression folgt das Lemma. Lemma 50. Für jede Platzschranke s gilt NSPACE(s(n)) ⊆ DTIME(2O(s(n)) ). Beweis. Der Rechnungsbaum einer s(n)-platzbeschränkten Turingmaschine M hat für eine geeignete Konstante d eine Tiefe bis zu 2d·s(n) und bis zu exponentielle Größe in dieser Tiefe. Anders als im Beweis von Lemma 50 ist es damit nicht möglich, einen solche Berechnungsbaum in der hier zuässigen deterministischen Zeit 2O(s(n)) vollständig zu durchsuchen. Stattdessen wird im Konfigurationsgraphen nach einem Pfad von der jeweiligen Startkonfiguration zu einer akzeptierenden Stoppkonfiguration gesucht: ein solcher W. Merkle Komplexitätstheorie SS 2016 9 Pfad existiert genau dann, wenn die Eingabe akzeptiert wird. Die Standardverfahren für eine solche Suche in einem Graphen haben ein Laufzeit die polynomiell in der Anzahl der Knoten ist und damit wieder in 2O(s(n)) liegt. Sei L eine Sprache in NSPACE(s(n)), die von der s(n)-platzbeschränkten k-Band-Turingmaschine M erkannt wird. Es genügt eine deterministische Turingmaschine D anzugeben, welche die Sprache L erkennt und 2c·s(n) zeitbeschränkt für eine Konstante c ist. Wähle gemäß Lemma 45 eine Konstante d, so dass M bei Eingaben der Länge n höchstens 2d·s(n) verschiedene Konfigurationen hat. In den Rechnungen von D kann mittels der Spurentechnik, also unter Verwendung eines geeigneten Bandalphabets, jede solche Konfiguration durch ein Wort der Länge s(n) dargestellt werden, wobei von insgesamt 2k + 2 Spuren jeweils zwei Spuren die Inschrift und Kopfposition eines Arbeitsbands darstellen und die beiden restlichen Spuren den aktuellen Zustand und die Kopfposition auf dem Eingabeband. Um festzustellen, ob eine Eingabe w der Länge n von M akzeptiert würde, schreibt D zunächst die Startkonfiguration von M bei Eingabe w auf ein spezielles Band und markiert diese (als noch nicht expandiert). Dann arbeitet D wie folgt. Solange das spezielle Band nicht markierte Konfiguration enthält (i) bestimme die erste nicht markierte Konfiguration K auf diesem Band, (ii) füge die von K aus in einem Schritt von M erreichbaren Konfigurationen zu diesem Band hinzu, (iii) entferne alle unter (ii) hinzugekommenen Kopien von Konfigurationen, die bereits auf dem Band stehen und schließe die dabei entstehenden Lücken. Nachdem das spezielle Band schließlich nur noch markierte Konfigurationen enthält, akzeptiert D die Eingabe w, falls das Band eine akzeptierende Stoppkonfiguraton enthält, sonst verwirft D die Eingabe. Nach Konstruktion erkennt D die gleiche Sprache wie M . Da in jedem Expansionsschritt eine Konfiguration markiert wird, gibt es höchstens 2d·s(n) Expansionsschritte, in denen jeweils höchstens konstant viele Nachfolgekonstruktionen generiert werden. Die Schritte (i) bis (iii) können unter Verwendung von Hilfsbändern jeweils in Zeit poly(s(n))2d·s(n) und damit zusammen in Zeit 2(d+1)·s(n) bearbeitet werden. Insgesamt liegt die Laufzeit von D somit wie gefordert in 2(2d+1)·s(n) .