TIB: Separations- und Hierarchiesätze (Lernziele KE2, Update 2)
Update 4: MathJax wollte nicht so, wie ich oder einige Leser des Blogs. Nun sollten alle Symbole wieder angezeigt werden.
Update 3: Ein kleiner Exkurs zum Thema wurde hinzugefügt.
Update 2: Zwei Fehler in der Berechnung im Lernziel 3 sind nun gefixt.
Update: Antworten zu Lernzielen hinzugefügt. Soweit möglich.
Lernziel 1
Verstehen des Verfahrens von Separations- und Hierarchiesätzen
(Großer Dank an Barbara, Oliver, Björn und Lothar aus der NG für die Tipps zu diesem Thema).
Zunächst: was sind Hierarchiesätze und wofür werden sie gebraucht? Der Satz aus der Wikipedia ist hier durchaus hilfreich:
Für die gebildeten Klassen möchte man möglichst beweisen, dass durch zusätzlich bereitgestellte Ressourcen tatsächlich mehr Probleme gelöst werden können. Diese Beweise bezeichnet man als Hierarchiesätze (auch Separationssätze genannt), da sie auf den Klassen der jeweiligen Ressource eine Hierarchie induzieren. Es gibt also Klassen, die in eine echte Teilmengenbeziehung gesetzt werden können. Wenn man solche echten Teilmengenbeziehungen ermittelt hat, lassen sich auch Aussagen darüber treffen, wie groß die Erhöhung einer Ressource sein muss, um damit eine größere Zahl von Problemen berechnen zu können.
...
Die Hierarchiesätze bilden letztlich das Fundament für die Separierung von Komplexitätsklassen. Sie bilden einige der frühesten Ergebnisse der Komplexitätstheorie.
...
D.h. wir haben hier die Möglichkeit Komplixitätsklassen von einander trennen zu können (wenn bestimmte Vorbedingungen erfüllt sind), so dass eine echte Inklusion erfüllt ist.
Bevor wir hier weitermachen, wiederholen wir noch einmal ein paar Kleinigkeiten aus den vorhergehenden Beiträgen zum Thema Sprache:
Eine Sprache ist entscheidbar wenn die charakteristische Funktion
berechenbar ist. Es gibt noch die Definition mit "...hält für jede Eingabe.", was natürlich auch korrekt ist.
Wir können diese Maschine so modifizieren, dass sie eine $ ausgibt bevor sie im akzeptierenden Zustand hält oder in einem nicht-akzeptierenden Zustand hält und eine vorher ausgibt. Wie wir bald erfahren werden, ist das Wortproblem für -Sprachen entscheidbar.
Beispiel: . Wir können für jede Eingabe entscheiden ob den Einschränkungen genügt oder nicht.
Eine Sprache ist aufzählbar wenn die charakteristische Funktion
berechenbar ist. Auch hier greife ich etwas vor: das Wortproblem für -Sprachen ist nur semi-entscheidbar.
Beispiel: Halteproblem ist rekursiv aufzählbar. Hier besteht das Wort unserer Sprache aus , wobei die Codierung einer ist und die Eingabe dazu. Da wir nicht entscheiden können, ob die Maschine bei der Eingabe von nicht hält, ist auch unsere daraus erstellte Sprache nur rekursiv aufzählbar.
Nun haben wir uns noch einmal klar gemacht, was eine Sprache ist und wann man sie als entscheidbar/rekursiv aufzählbar klassifizieren kann. Jetzt können wir über Komplexitätsklassen reden.
Beweis: Unterschiedlichkeit der Komplexitätsklassen
(Danke an Lothar für die geduldige Erklärung der Vorbedingungen)
Wie beweisen wir die Unterschiedlichkeit von Komplexitätsklassen? Dass z.B. ist? Mittels Diagonalisierung und universellen Maschinen. Bei dem Diagonalisierungsbeweis wird ein ähnliches Verfahren verwendet wie beim Selbstanwendbarkeitsproblem (spezielles Halteproblem, wir erinnern uns?): die Diagonalisierung erfolgt nicht über alle rekursiven Mengen, sondern über die Mengen in . Benötigt wird hierzu:
1. eine universelle, -zeitbeschränkte Maschine (diese wird verwendet um zu prüfen, ob sich eine Menge in einer bestimmten Zeitschranke befindet)
2. ein Komplexitätsklasse mit Zeitschranke
Der Beweis beim Zeitseparationssatz () besteht im Grunde darin eine Menge zu konstruieren, die zwar in liegt, aber nicht in . Das erfolgt als Diagonalbeweis indem man durch einen Widerspruch zunächst zeigt, dass die Menge ist, was durch unsere universelle Maschine mit Laufzeit entschieden wird.
Fazit: wir simulieren also eine Maschine, die die Sprache aus der Menge (also eine Sprache, die in Laufzeit entschieden wird) auf einer universellen Maschine entscheidet, die durch beschränkt ist. Wenn wir über die Beschränkung, die uns auferlegt laufen, so ist die Sprache nicht in .
Die schnellste Simulation einer -Band Maschine durch eine universelle -Band Maschine hat die Laufzeit , was klar ist: wir müssen zunächst die Maschine selbst simulieren (Faktor ) und dann die Bänder auf 2 Bänder verkleinern (Faktor ). Würden wir nur ein Arbeitsband verwenden, so wäre der Aufwand nicht mehr , sondern (siehe KE1).
Aus diesem Grund fordern wir auch, dass ist damit wir die Sprache mit der Schranke auf unserer Maschine entscheiden können. Wäre , so könnten wir nicht prüfen ob die Sprache akzeptiert wird, da unsere universelle Maschine für die Prüfung zu langsam ist, denn die hat genau die Laufzeit, wo auch drin wäre. Die universelle Maschine hätte also nicht genug Zeit die zu simulierende Maschine zu simulieren um die Akzeptanz der Sprache zu prüfen. Uah, was für ein Satz!
Anschließend erfolgt der Nachweis, dass indem wir eine Maschine angeben, die durch beschränkt ist und dennoch entscheiden kann und die Unterschiedlichkeit der zwei Komplexitätsklassen ist bewiesen.
Der Beweis für den Zerhierarchiesatz () erfolgt genauso, nur wird vorausgesetzt, dass mindestens das gleiche Wachstum, wie hat: .
Antwort zum Lernziel: Zeithierarchie- und separationssätze dienen dazu Komplexitätsklassen von einander zu trennen. Im Endeffekt geht es um Separierung und der Bildung von Hierarchien bei den Ressourcen Band und Zeit.
Was ist also unser Zeithierarchie- oder separationssatz? Schreiben wir sie uns zunächst einmal auf (ich empfehle euch, dass Ihr das auf dem Papier auch macht):
Lernziel 2
Voraussetzung für Separations- und Hierarchiesätze benennen und begründen
Zeitseparationssatz:
Sei , zeitkonstruierbar, , .
Dann ist
Damit keine Teilmenge von ist, müssen einige Voraussetzungen erfüllt sein. Diese sind:
1. Wir haben ein , dass zeitkonstruierbar ist (die maximale Schrittzahlfunktion der von hat als obere Schranke das Wachstum von für alle Eingaben, siehe unten),
2. ein , bedeutet hier, dass mindestens linear wächst (könnten wir weglassen, da es bereits beim Lesen der Eingabe auf der universellen Maschine erreicht wird)
3. ein , dass sich nicht in befindet. D.h. hat als obere Schranke nicht (der Grund ist, dass sich die durch beschränkte, zu simulierende Maschine mindestens in simulieren lässt. Wäre noch in der oben angegebenen Schranke, könnten wir nicht entscheiden ob die Sprache aus sich in befindet).
Wir separieren also die Komplexitätsklassen der beiden Funktionen von einander wenn die oben genannten Voraussetzungen erfüllt sind.
Zeithierarchiesatz:
Sei zeitkonstruierbar, , .
Dann ist
Damit eine echte Teilmenge von ist, müssen auch hier einige Voraussetzungen gelten. Nehmen wir sie auch hier auseinander:
1. Wir haben auch hier ein , dass zeitkonstruierbar ist,
2. ein , bedeutet hier, dass mindestens linear wächst
3. ein , dass ist ( wächst damit mindestens so schnell wie ), während sich das
4. nicht in befindet ( wächst schneller als ).
Wir wir sehen können, sind das fast die selben Vorbedingungen wie für den Separationssatz. Damit jedoch eine Teilmenge sein kann, muss sich zusätzlich in befinden. Erst dann gilt: . Was haben wir hier am Ende getan? Wir haben eine Hierarchie zwischen den beiden Komplexitätsklassen geschaffen, so dass eine echte Teilmenge von darstellt.
Weil es wo schön war: noch einmal den ganzen Spaß mit dem Bandhierarchie- und dem Bandseparationssatz:
Bandseparationssatz:
Sei , bandkonstruierbar, , .
Dann gilt
Damit eine Teilmenge (im Gegensatz zu "keine Teilmenge" beim Zeitseparationssatz) von ist und als obere Schranke für das bandbedarfswachstum gilt, müssen folgende Voraussetzungen erfüllt sein:
1. ein bandkonstruierbares (, d.h. der maximale Speicher- bzw. Bandbedarf der Maschine muss in der Komplexitätsklasse von liegen),
2. , wächst also mindestens logarithmisch und wir haben ein
3. ein mit Definitions- und Bildmenge aus .
4. Dazu ist eine obere Schranke für
Auch hier haben wir eine Separation des Bandbedarfs, genauer der Komplexitätsklassen des Bandbedarfs von Funktionen und und können zudem auch sagen, dass die obere Schranke für das Bandbedarfswachstum von eben ist. Ist ja auch klar, denn es gilt (wenn die Voraussetzungen erfüllt sind) .
Kommen wir nun zum Bandhierarchiesatz:
Bandhierarchiesatz:
Sei , bandkonstruierbar, , .
Dann gilt
Damit also eine echte Teilmenge von darstellt, kämpfen wir mit den folgenden Voraussetzungen: notwendig sind
1. ein bandkonstruierbares (siehe oben),
2. , wächst also mindestens logarithmisch, wir haben ein
3. ein , d.h. hast als obere Schranke und
4. ein , also ist keine obere Schranke für
Mit dem Hierarchiesatz haben wir es auch hier geschafft eine Hierarchie auf den Komplexitätsklassen des Bandbedarfs herzustellen. Während wir beim Separationssatz durchaus gleiche Mengen haben könnten (z.B. ist eine Teilmenge von ) , haben wir das beim Hierarchiesatz nicht ( eine echte Teilmenge von ). Bitte macht euch nochmal den Unterschied klar.
Antwort zum Lernziel: Die Voraussetzungen für Separation und Hierarchie begründen sich in der , auf denen die Funktion simuliert wird.
Für die Separation von und muss zeitkonstruierbar sein (Schrittzahlfunktion der muss noch innerhalb der Schranke der Funktion liegen), min. lineares Wachstum haben (da die Eingabe von der gelesen werden muss und wir z.B. beim Lesen von durch die Unärnotation schon Schritte verbrauchen) und sich nicht in (da wir die -beschränkte Maschine simulieren müssen und die Simulation bereits in erfolgt) befinden.
Bei der Hierarchie haben wir ähnliche Vorbedingungen, müssen aber zusätzlich sicherstellen, dass die zu untersuchende Funktion innerhalb der Schranke für liegt.
Die Selbsttestaufgabe aus dem Skript ist hier anschaulich, ich möchte mich daher auch in dem Beitrag daran halten.
Lernziel 3
Anwendung der Sätze zum Beweis von Separationen und echten Inklusionen
Beispiel
Beide Funktionen sind zeitkonstruierbar. Behauptung:
(1)
Wir benötigen hier also unseren Zeitseparationssatz:
Sei , zeitkonstruierbar, , . Dann ist
Fangen wir mit Behauptung (1) an:
Wir setzen oder je nach Fall. Und
(im Satz wird ja nicht , sondern geprüft).
Vorbedingungen, die wir erfüllen müssen für den Zeitseparationssatz sind also:
1. muss zeitkonstruierbar sein: check!
2. muss mindestens lineares Wachstum haben: check!
3. die obere Schranke für ist nicht : auch wenn man das sieht, prüfen wir das doch mal:
Fall 1
Wenn gerade, muss gelten: . Gilt es? Nein!
Fall 2
Ist ungerade, muss gelten: . Gilt dies? Ja! Die Voraussetzung ist hier also erfüllt.
Da bei einem ungeraden die Voraussetzungen für die Separation gegeben sind, ist . Hätten wir nur ein statt , so wäre die Voraussetzung nicht gegeben. Aber so gilt der Separationssatz für ungerade und damit ist Behauptung (1) falsch.
Antwort zum Lernziel: Siehe oben. Auf zwei gegebene Funktionen und kann man die Zeit- und Bandhierarchiesätze anwenden (wenn die Voraussetzungen zutreffen) und so eine Hierarchie oder eine Separierung der Komplexitätsklassen vornehmen.
Lernziel 4
Definition von band- und zeitkonstruierbaren Funktionen
Was ist eine band- bzw. zeitkonstruierbare Funktion? Das Wachstum so einer Funktion entspricht dem Bandbedarf, bzw. der Schrittzahlfunktion eine real existierenden Turingmaschine. Was man sich merken sollte ist, dass zwar alle zeitkonstruierbaren Funktionen bandkonstruierbar sind. Andersherum geht es aber nicht. Das folgt aufgrund des Zusammenhangs zwischen Band und Zeit. Hangeln wir uns an der Definition entlang:
heißt bandkonstruierbar, falls es eine TM gibt, so dass
Was muss vorliegen damit die Funktion bandkonstruierbar ist? , d.h. der maximale Speicher- bzw. Bandbedarf der Maschine muss in der Komplexitätsklasse von liegen.
heißt zeitkonstruierbar, falls es eine TM gibt, so dass
Hier ist es ähnlich. Nochmal zur Erinnerung: ist die maximale Anzahl der Schritte, die die TM benötigt um bei der Eingabe eines Wertes die Endkonfiguration zu erreichen und ist die Unärnotation von (z.B. ).
Nicht vergessen: . Ersteres bezeichnet nämlich nur die Anzahl der Schritte bis zur Endkonfiguration bei einer bestimmten Angabe, letzteres die maximale Anzahl der Schritte bei allen Eingaben ().
Was müssen wir also tun um zu zeigen, dass eine Funktion zeitkonstruierbar ist? Die Aufgabe im Skript zeigt es relativ anschaulich, dem will ich mich also auch nicht verschließen.
Beispiel: zeigen, dass zeitkonstruierbar ist.
Wir schauen in die Definition und merken, dass wir eine TM angeben müssen, deren Schrittzahlfunktion für alle Eingaben von innerhalb der Schranke liegt. In dem Beispiel wird auch mit Dualzahlen gerechnet anstatt mit der unären Notation von . Also nicht davon abschrecken lassen, d.h. ist die Dualnotation von (z.B. ). Lange Rede, kurzer Sinn: es müssen also folgende Voraussetzungen für die Zeitkonstruierbarkeit erfüllt sein:
1. , z.B. (die TM berechnet also die Funktion und gibt sie in unärer Notation aus) und
2. , die Schrittzahlfunktion der TM liegt innerhalb der Schranke , d.h.
Nochmal zum selber nachrechnen: mit , . Die Schritte, die zu der korrekten Berechnung im Skript gemacht werden sind:
1. Berechnung von
2. Berechnung von
3. Berechnung von
4. Ausgabe von
Probieren wir das mal am Beispiel
1.
2.
3.
4. Ausgabe von
Sieht also gut aus. Damit haben wir eine funktionierende TM für die Funktion und müssen nur noch schauen ob die Schritte bis zur Endkonfiguration, d.h. bis zu unseren Ausgabe auch in der Schranke , d.h. liegen:
1. hier brauchen wir Schritte
2. für die Multiplikation reicht die Schulmethode, welche uns zu bringt.
3. mit der Intervallschachtelung kommen wir hier mit Schritten aus.
4. für den letzten Schritt, die unäre Ausgabe werden mehr Schritte benötigt als bei den drei Schritten davor: .
Damit dominiert dieser Schritt die Rechenzeit und wir haben gezeigt, dass und damit zeitkonstruierbar ist.
Wenn wir das Beispiel nachvollziehen konnten, so ist auch klar geworden, dass z.B. die Funktionen und nicht zeitkonstruierbar sind, denn sie benötigen mehr Schritte zur Berechnung als und und passen daher nicht in die oberen Schranken, die wir für die Zeitkonstruierbarkeit benötigen.
Antwort zum Lernziel: Für eine Zeit- und Bandkonstruktion bei einer Funktion müssen wir zeigen, dass die maximale Schrittzahlfunktion und der maximale Speicherplatzbedarf innerhalb der Schranke liegt. Ist uns das gelungen ist die Funktion zeit- bzw. bandkonstruierbar.
Lernziel 5
Beschreibung des Beweises von
Antwort zum Lernziel: Hier muss ich erstmal passen. Wer eine schöne Beschreibung der Beweisidee hat, bitte melden.
Lernziel 6
Beweis der Beziehungen zwischen den Klassen P, LOGSPACE, PSPACE
Um die Beziehungen zwischen P, LOGSPACE und PSPACE zu verstehen, müssen wir zunächst einmal wissen, was P, LOGSPACE und PSPACE ist. Fangen wir mit der Klasse P an:
Was das? Die Klasse ist die unendliche Vereinigung der Zeitkomplexitätsklassen . In der Literatur wird sie auch Polynomialzeit genannt. Es bezeichnet die Klasse der effizient lösbaren Probleme. ist eine Teilmenge von , d.h. (hier kommt auch das berühmte P-NP-Problem her), aber dazu später mehr. Dann haben wir noch:
Und das ist eine unendliche Vereinigung der Bandkomplexitätsklassen . Letztendlich haben wir auch noch:
gilt als die kleinste Bandkomplexitätsklasse.
Die Beziehung zwischen diesen ist wie folgt:
und
.
Warum das so ist, wird klar wenn man sich die Definition der 4 Komplexitätsklassen anschaut und sich die Beziehungen vor Augen führt:
In sind alle Bandkomplexitätsklassen drin, die maximal einen polynomialen Bandbedarf haben. Dass eine echte Teilmenge davon ist (Unterschied zwischen Teilmenge und echte Teilmenge klar?), sollte einleuchten (logarithmischer Platzbedarf ist zwar ein Teil, aber sicher kleiner als polynomialer Platzbedarf. Daher auch echte Teilmenge und nicht nur Teilmenge). Damit haben wir schon einmal erklärt.
Durch den Satz aus Kurseinheit 1:
Sei . Dann gilt:
Sei . Dann ist
haben wir auch unsere Beziehung zwischen , und hergestellt.
Um und nachzuvollziehen müssen wir uns nur noch einmal daran erinnern, dass der Platzbedarf nie größer sein kann als die die Anzahl der maximalen Schritte, die eine Maschine tun kann. Denn in jedem Schritt können wir nur ein Feld beschreiben. Wir beschränken so nicht nur die Maschine, sondern auch ihren Bandverbrauch.
Damit ist .
Wo ist ? Diese Klasse ist nicht sonderlich spannend, wenn auch vorhanden. In liegt z.B. das Nachschauen in einer sortierten Liste. Wir schauen uns die nicht komplett an, sondern gucken nach einem Element, welches sich irgendwo befinden kann. Die binäre Suche ist ein prominenter Vertreter eines Algorithmus in der Komplexitätsklasse .
Der Vollständigkeit halber: die vollständige Beziehung zwischen den einzelnen Komplexitätsklassen ist (nichtdeterministische Problemklassen ausgelassen): .
Quelle: Wikipedia
Antwort zum Lernziel: die Beziehungen zwischen den Klassen erfolgen mittels den Hierarchieseätzen für Band und die folgende Teilmengen-Beziehung zwischen Zeit und Band gilt: . Damit bilden wir eine Hierarchie zwischen , und hergestellt.
Wer noch ein paar Details zum Thema haben möchte, der kann sich den folgenden Beitrag anschauen und sich schon ein klein wenig auf die nun folgenden Kurseinheiten zu diesem Thema einstimmen.
Wieder gilt: wer Fehler findet, bitte ASAP in die Kommentare oder per Mail damit falsches Zeug nicht zu lange online steht.
Buchempfehlung
September 2nd, 2013 20:23
Tolle Zusammenfassung, danke!
Muss es bei der ersten Voraussetzung für den Bandseparationssat nicht heißen, dass s Tilde M in O(g) liegen muss?
Scheint mir einleuchtender zu sein.
Gruß
Till
September 3rd, 2013 13:59
Einleuchtender? Das was da stand, war schlicht falsch 😉 Blödes Copy/Paste. Ist korrigiert. Danke, Till.
September 3rd, 2013 21:12
Beweisidee für ZEIT(n) echte Teilmenge von ZEIT(n log n)
Sei f(n)=log n und g(n)=n log n
Dann gilt f Element von ZEIT(n) und g Element von ZEIT(n log n)
Voraussetzungen für Zeithierarchie:
- g zeitkonstruierbar. Ist nach dem Skript gegeben. Der Beweis wäre sinnvollerweise über die Dualnotation zu führen.
-n Element von O(g) Ist erfüllt da n Element von O(n log n)
-f Element von O(g) Ist erfüllt da n Element von O(n log n)
- g nicht Element von O(f(n)log f(n)). Es muss also gelten:
n log n nicht Element von O(log n log log n). Und das stimmt.
Damit wären alle Voraussetzungen erfüllt und es folgt ZEIT(n) ist eine echte Teilmenge von ZEIT(n log n), was zu zeigen war.
Hoffe, das passt so, kam mir heute in der Mittagspause...
Gruß
Till