Referatsausarbeitung Thema: Das zweite LBA-Problem Vorlesung: Sequentielle und parallele Komplexitätstheorie Übung Dozent Datum Referenten Dr. Renate Winter 08.01.1998 Marcus Hörning Michael Muth Ronny Böhm Inhalt 1 GRUNDLAGEN... 1 1.1 WAS SIND LBA S?... 1 1.2 KONTEXTSENSITIVE SPRACHEN... 1 2 DIE LBA-PROBLEME... 2 2.1 DIE GESCHICHTE DES ZWEITEN LBA-PROBLEMS... 2 2.2 WAS SIND LBA-PROBLEME... 2 3 BEWEIS... 3 3.1 ALGORITHMUS FÜR DAS KOMPLEMENT VON A... 3 3.1.1 Konstruktion... 3 3.2 DIE FUNKTION F(N)... 4 3.2.1 Voraussetzungen... 4 3.2.2 A als kontextsensitive Sprache... 4 3.2.3 Berechnung von g(n) mit linearem Platzverbrauch... 5 3.2.4 Analyse... 6
1 1 Grundlagen 1.1 Was sind LBA s? LBA steht für Linear Beschränkte Automaten. Sie dienen zur Charakterisierung von kontextsensitiven Sprachen. Ein LBA ist definiert als ein Tupel M = (Σ, Q, δ, q 0, F, 0) mit: Σ ist eine endliche Menge von erlaubten Eingabesymbolen, Q ist eine endliche Menge von Zuständen, δist eine Überführungsrelation bzw. im deterministischen Fall eine Überführungsfunktion: Q {0} Q {0} {-1, 0, 1}, q 0 ist der Anfangszustand, F Q ist die Menge der End- oder Finalzustände und, 0 ist ein Symbol aus Σ und dient als Beschränkungsmarkierung. Eine Menge (oder Sprache) U Σ* heißt lt. Def. von einem LBA akzeptiert, wenn gilt: U = {p p (Σ\{0})* q (q F [q 0, p] a [q, 0])}. Ein LBA ist also eine Turingmaschine, die anstatt eines möglicherweise unendlichen Bandes, auf dem sie rechnen kann, auf den Teil des Bandes beschränkt ist, der die Eingabe und die Beschränkungssymbole enthält. Der Begriff linear beschränkt rührt daher, daß die Bandgröße der TM nun eine lineare Funktion der Eingabelänge ist. Wichtig hierbei ist, daß das 0-Symbol anfangs auf dem Band ist, wo es als beidseitige Begrenzungsmarkierung fungiert, aber nicht zum Wort selbst gehört. Zeichenerklärung: Großbuchstaben A, B, C und S stehen für Nichtterminale Kleinbuchstaben a, b und c stehen für Terminale oft stehen dabei x, y, z, u, v und w für Zeichenketten aus diesen griechische Kleinbuchstaben stehen hier für Zeichenketten aus Terminalen und Nichtterminalen 1.2 Kontextsensitive Sprachen Kontextsensitive Sprachen sind solche Sprachen, die von einer kontextsensitiven Grammatik erzeugt werden können. Im Allgemeinen bedeutet eine Produktion α β, daß in Ableitungen die Zeichenkette α durch die Zeichenkette β ersetzt werden kann. Eine kontextsensitive Grammatik ist ein System von Produktionen der Form α β mit β α. So sind zum Beispiel ABA ACA und ABA AbacCbA zulässige Produktionen, nicht aber ABA AA. Zusätzlich ist die Produktion S ε erlaubt, wenn S Startsymbol ist und nie auf der rechten Seite einer Produktion auftritt. Der Name kontextsensitiv entspringt einer Normalform, in der alle Produktionen die Form αbγ α βγ mit nichtleerem β haben. Die von kontextsensitiven Grammatiken erzeugten Sprachen heißen kontextsensitive Sprachen. Und dies sind genau die Sprachen, die von einer beidseitig beschränkten NTM, dem LBA, erkannt werden. 1
2 2 Die LBA-Probleme 2.1 Die Geschichte des zweiten LBA-Problems Die Lösung des sogenannten zweiten LBA-Problems kam 1987 völlig überraschend und unabhängig von einem Amerikaner und einem Slowaken gleichzeitig. Das Resultat besagt unter anderem, daß die Klasse der kontextsensitiven Sprachen unter Komplementbildung abgeschlossen ist. Das Problem wurde im Jahre 1964 von S.Y. Kuroda (Classes of languages and linearbounded automata, Inform. Contr. 7 (1964), 207-233) gestellt. Die Bedeutung der beiden LBA-Probleme wurde immer wieder hervorgehoben und diskutiert. Im Jahre 1987 schien dann die Zeit irgendwie reif geworden zu sein. Völlig unabhängig voneinander wurde das zweite LBA-Problem von einem amerikanischen Wissenschaftler, N. Immerman (NSPACE is closed under complement, SIAM Journal on Computing 17 (1988), 935-938) und einem slowakischen Studenten, R. Szelepcsényi (The method of forced enumeration for nondeterministic automata, Acta Informatica 26 (1988), 279-284)) gelöst. Interessant: Der Beweis ist wesentlich einfacher, als man dies bei einem 23 Jahre lang ungelösten Problem erwartet hätte. Außerdem ist die Lösung gerade komplementär zu der Vermutung, die zuvor bestand. 2.2 Was sind LBA-Probleme Kuroda zeigte in seiner Arbeit von 1964, daß die Klasse der Sprachen, die durch nichtdeterministische linear band-beschränkte TM (LBA) erkannt werden, mit der Klasse der kontextsensitiven Sprachen übereinstimmt. Das Resultat in heutiger Terminologie ausgedrückt besagt: NSPACE(n) = kss Das erste LBA-Problem ist die Frage, ob deterministische und nichtdeterministische LBA s äquivalent sind, also: NSPACE(n) = DSPACE(n)? Der Lösung dieses Problems am nächsten kommt der Satz von Savitch (J. Savitch: Relationships between nondeterministic and deterministic tape complexities. Journal of Computer and Systems Sciences 4 (1970), 177-192), der besagt, daß folgendes gilt: für alle s(n) log n, also: NSPACE(s(n)) DSPACE(s 2 (n)) NSPACE(n) DSPACE(n 2 ). Das zweite LBA-Problem ist die Frage, ob die Klasse der durch nichtdeterministische LBA s akzeptierbaren Sprachen komplementabgeschlossen ist: NSPACE(n) = co-nspace(n)? Aus der negativen Lösung des zweiten LBA-Problems ergibt sich natürlich sofort die negative Lösung des ersten LBA-Problems, denn DSPACE(n) ist komplementabgeschlossen. Das zweite LBA-Problem ist nun gelöst (das erste aber nach wie vor ungelöst). Das Resultat ist also, daß die Klasse NSPACE(n) unter Komplement abgeschlossen ist, im Gegensatz zur vorherigen allgemeinen Vermutung! (Daraus ergibt sich jedoch noch keine unmittelbare Folgerung auf das erste LBA-Problem). 2
3 Aus dem folgenden Beweis ergibt sich sofort: für alle s(n) log n. NSPACE(s(n)) = co-nspace(s(n)) 3 Beweis Ziel dieses Beweises ist es, ausgehend von einem nichtdeterministischen Algorithmus zur Erkennung einer Sprache, einen ebenfalls nichtdeterministischen Algorithmus zu konstruieren, welcher unter linearer Platzbeschränkung das Komplement eben dieser Sprache erkennt. Gelingt dieses, wäre damit gezeigt, daß gilt: NSPACE(n) = co-nspace(n). 3.1 Algorithmus für das Komplement von A 3.1.1 Konstruktion Wir gehen nun also davon aus, daß sich die Mitgliedschaft in einer Sprache A mittels eines (bezüglich gewisser Resourcenbeschränkungen im Moment nicht näher spezifizierten) nichtdeteterministischen Algorithmus M entscheiden läßt. Desweiteren solle die Anzahl der Wörter in A zu einer gegebenen Länge durch eine einfach 1 zu berechnende Funktion f : N N berechnet werden können. Unter Berücksichtigung dieser Voraussetzungen läßt sich der folgende Algorithmus M zur Entscheidung von A konstruieren: (1) INPUT x; (2) k := f( x ); (3) p := 0; (4) FOR y Σ *, y = x DO (5) Starte M auf y; (6) IF M akzeptiert THEN (7) IF y = x THEN REJECT; (8) p := p + 1; (9) END; (10) END; (11) IF p = k THEN ACCEPT ELSE REJECT. Dieser Algorithmus entscheidet also, ob das als Eingabe bereitgestellte Wort x im Komplement von A enthalten ist (x A?). Nach dem Einlesen der Eingabe x in Zeile (1) wird in Zeile (2) mittels der o.g. Funktion f die Anzahl der Wörter in A berechnet, deren Länge gleich der von x ist. In der Schleife (4) - (10) werden alle über dem Alphabet Σ * möglichen Wörter y, deren Länge der von x entspricht, durchlaufen. Hierbei wird M auf jedes y angesetzt, und die von M akzeptierten Wörter werden gezählt. Falls ein solches von M akzeptiertes Wort identisch mit x ist, verwirft der Algorithmus die Eingabe, da x dann nicht im Komplement von A liegen kann. Dieses Zählen ist notwendig, um nach Beendigung der Schleife sicherstellen zu können, daß alle y A betrachtet und von M akzeptiert wurden. Die Korrektheit dieses Algorithmus läßt sich recht einfach überlegen. Gilt x A, so muß die nichtdeterministische Rechnung, welche M auf y durchführt, in jeder Iteration akzeptieren, falls y A. Somit gilt nach Beendigung der Schleife: p = k, d.h., es wurden alle y A innerhalb der Schleife von M korrekt als solche erkannt. Da keines dieser y identisch mit x war, gilt folglich, daß x im Komplement von A liegt (x A ). 1 Einfach bedeutet hier, daß der Aufwand zum Berechnen von f nicht den Gesamtaufwand für die Bearbeitung der zugrundeliegenden Problematik übersteigt. 3
4 Wir haben nun also einen Algorithmus M konstruiert, der zur Entscheidung von A herangezogen werden kann. Betrachten wir nun die Zeit- und Platzkomplexität unseres neuen Algorithmus, wobei uns für die Beweisführung insbesondere letztere interessiert. Hierfür setzen wir für M die Zeitkomplexität t M (n) und die Platzkomplexität s M (n) voraus. Die Funktion f möge in Zeit t f (n) und mit Platz s f (n) berechnet werden können. Für den neuen Algorithmus ergibt sich somit: Zeitkomplexität: t f (n) + 2 O(n) t M (n) Platzkomplexität: s f (n) + O(n) + s M (n) Die erste Komponente der Zeitkomplexität ist die für die Berechnung von f erforderliche Zeit. In der Schleife werden alle Wörter y über dem Alphabet Σ *, für die y = x gilt, betrachtet, und M wird auf jedes y angesetzt. Für ein Alphabet Σ mit zwei Zeichen (z.b. Σ = {0,1}) wird die Schleife höchstens 2 n -mal durchlaufen, wobei in jeder Iteration M ausgeführt wird. Da die Schleife in Zeile (7) vorzeitig verlassen werden kann, ergibt sich die Laufzeit für die Schleife zu 2 O(n) t M (n). Die Platzkomplexität setzt sich zunächst aus dem von f und M benötigten Platz zusammen. Hinzu kommt der vom eigentlichen neuen Algorithmus benötigte Platz. Dieser setzt sich hauptsächlich aus den beiden Wörtern x und y zusammen. Da beide linearen Platz beanspruchen ( x = y = n), ergibt sich diese dritte Komponente der Platzkomplexität zu O(n). Wir verfügen nun über Informationen zur Zeit- und Platzkomplexität unseres Algorithmus zur Entscheidung von A. Sei nun A eine kontextsensitive Sprache, dann gilt: A CSL = NSPACE(n). Falls es nun gelingt, f(n) mit linearer Platzkomplexität zu berechnen, gilt somit nach unseren Erkenntnissen über die Platzkomplexität: A NSPACE(O(n)) = NSPACE(n). Um den Beweis nun zum Ziel zu führen, ist noch zu zeigen, wie f mit linearer Platzbeschränkung berechnet werden kann. 3.2 Die Funktion f(n) 3.2.1 Voraussetzungen Die Berechnung der Funktion f(n) erfolgt ebenfalls auf nichtdeterministischem Wege. Wir wollen nun also eine nichtdeterministische, linear platzbeschränkte Maschine zur Berechnung von f konstruieren. Zuvor sollte jedoch überlegt werden, über welche Eigenschaften der Algorithmus verfügen muß, um f innerhalb des Algorithmus für A korrekt berechnen zu können. Es sind hauptsächlich folgende Eigenschaften von der nichtdeterministischen Maschine, welche f berechnet, zu erwarten: 1. Jede nichtdeterministische Rechnung ist entweder erfolgreich, wobei ein berechneter Zahlenwert ausgegeben wird, oder sie endet mit nicht erfolgreich. 2. Mindestens eine Rechnung ist erfolgreich, liefert also einen Ausgabewert. 3. Alle erfolgreichen Rechnungen liefern denselben Wert, nämlich f(n). Diese Forderungen an die f(n) berechnende Maschine stellen sicher, daß wir stets ein Ergebnis erhalten, welches eindeutig ist, d.h., es können bei verschiedenen (erfolgreichen) nichtdeterministischen Rechnungen nicht verschiedene Werte geliefert werden. 3.2.2 A als kontextsensitive Sprache Es besteht nun die Aufgabe, die Funktion f entsprechend den obigen Bedingungen zu realisieren. Dazu geht man von der Kontextsensitivität der Sprache A aus. Zu dieser Sprache existiert eine entsprechende kontextsensitive Grammatik G mit Variablenmenge V und Terminalalphabet Σ, welche die Sprache A erzeugt. Man definiere für alle n,i N Teilmengen T n i von ( V Σ ) * wie folgt: T n i = { x x n, S i G x }. 4
5 Diese Teilmengen beinhalten alle Wörter x, die in höchstens i Schritten vom Startsymbol S aus durch die Grammatik G ableitbar sind. Dabei bedeutet S i G x, daß die Satzform x in höchstens i Schritten aus dem Startsymbol S ableitbar ist. Für alle n gilt T n 0 = {S}. Dies ist unmittelbar ersichtlich, da T n 0 aller Wörter enthält, welche mit höchstens 0 Schritten aus dem Startsymbol S ableitbar sind nur das Startsymbol selbst. Für die kontextsensitive Grammatik G ist klar, daß es für jedes n ein m gibt mit T n m = T n m+1. Einen Beweis für diese Aussage möchten wir hier nicht angeben; falls daran Interesse bestehen sollte, sei hier auf das Buch von Uwe Schöning: Theoretische Informatik kurz gefaßt, Bibl. Inst, 1992 verwiesen, in welchem diese Thematik ausführlich behandelt wird. Wir führen hier statt dessen nur eine anschauliche Begründung des Sachverhaltes an: Die Teilmengen T n i bilden nach Definition die Menge aller Wörter x, welche in höchstens i Schritten vom Startsymbol S durch die Grammatik G ableitbar sind. Man beginnt mit 0 Schritten und erhöht die Anzahl der möglichen Schritte zur Bildung von Wörter über dem Alphabet (V Σ) * sukzessive um eins. Durch diese fortschreitende Erhöhung konstruiert man die entsprechenden Teilmengen T n i, bis man eine Schrittanzahl m+1 erreicht. Vergleicht man nun die Teilmengen T n m und T n m+1 miteinander, so stellt man fest, daß trotz der Vergrößerung der Anzahl der möglichen Schritte, kein neues Wort zur Menge T n m hinzugekommen ist, d.h. es konnten keine neuen Wörter mehr gebildet werden, also enthält die Menge T n m schon alle Wörter der Sprache A, welche durch die Grammatik G gebildet werden können. Sei g(n) = T n m nun eine Funktion, welche die Kardinalzahl der Teilmenge T n m berechnet, d.h. die Anzahl der Wörter der Sprache A, wobei m die eben beschriebene Zahl sei. Die Funktion g(n) soll hier als Realisierung der Funktion f unter den genannten Komplexitätsbedingungen aufgefaßt werden. Man kann den Algorithmus M soweit modifizieren, daß statt der Funktion f die Funktion g benutzt werden kann. Modifizierung des Algorithmus M : 1. Die FOR Schleife in M läuft jetzt über alle Satzformen y, anstatt über Terminalstrings in folgender Form: FOR y ( V Σ ) *, y n DO. 2. Anstelle Starte M auf x steht Verifiziere, daß S * y. Werden diese Veränderungen an M vorgenommen, kann f durch g ersetzt werden,. 3.2.3 Berechnung von g(n) mit linearem Platzverbrauch Um den Beweis zu vervollständigen, muß gezeigt werden, daß sich g nichtdeterministisch mit linearem Platzverbrauch berechnen läßt. Dahinter verbirgt sich die sogenannte induktive Zählmethode. Und zwar berechnen wir einfach (nichtdeterministisch) rekursiv der Reihe nach 1 = T n 0, T n 1, T n 2,... bis für ein m gilt T n m = T n m+1. Diese Zahl geben wir dann als g(n) aus. Was jetzt noch gebraucht wird, ist ein Verfahren, welches (nichtdeterministisch) die Teilmenge T n i+1 bzw. T n i+1 korrekt berechnet, unter der Voraussetzung, daß aus der vorhergehenden Runde T n i korrekt vorliegt. Zunächst das Verfahren: (1) {Es gelte k = T n i } (2) p : = 0; (3) FOR y (V Σ) *, y n DO (4) f : = FALSE; (5) m : = 0; (6) FOR z (V Σ) *, z n DO (7) IF S i G z THEN (8) m : = m + 1; (9) IF (z G y) OR (z == y) THEN f : = TRUE END; (10) END; (11) END; (12) IF m < k THEN REJECT END; (13) IF f THEN p : = p + 1 END; (14) END; 5
6 Wie oben bereits erwähnt arbeitet das Verfahren rekursiv, d.h., in diesem Fall bezieht sich rekursiv auf die Übernahme des Wertes T n i aus der vorhergehenden Runde, wie dies in Zeile (1) angedeutet wird. Dieser Wert wird als Vergleichskriterium gebraucht (Zeile (12)), um festzustellen, ob bei der nichtdeterministischen Auswahl eingerahmter Teil der Zeile (7) alle Wörter gebildet wurden, welche in höchstens i Schritten aus dem Startsymbol S ableitbar sind. Diese Wörter bilden die Menge T n i. Auf diese Weise wird gewährleistet, daß die Anzahl p, die sich am Ende ergibt, korrekt ist. Die Bildung der Menge T n i Zeilen (6) bis (10) ist notwendig, da nur so die Menge T n i+1 konstruiert werden kann. Die FOR Schleife in Zeile (6) läuft über alle Wörter z ( V Σ ) * mit einer Länge z n. In Zeile (7) wird dann überprüft, ob z aus S in i Schritten ableitbar ist. Wenn ja wird der Zähler m um eins inkrementiert und in der darauffolgenden IF Anweisung geprüft, ob z durch einen zusätzlichen Schritt zu y erweitert werden kann, oder ob z schon y ist. Falls dieser Fall eintritt, wurde ein Wort der Menge T n i+1 gefunden und das Flag f auf TRUE gesetzt. Wenn alle Wörter z in der inneren FOR Schleife benutzt wurden sind, wird in Zeile (12) der schon beschriebene Vergleich m < k durchgeführt. Es ist notwendig diesen Test durchzuführen, da sichergestellt werden muß, daß wirklich alle Wörter der Menge T n i erreicht wurden. Zeile (13) schließlich testet Flag f auf TRUE und im Falle der Korrektheit des Testes wird der Zähler p um eins erhöht. Zu dem Zeitpunkt, an dem alle Wörter y der äußeren FOR Schleife gebildet wurden sind und durch Zeile (12) kein Abbruch des Verfahrens zu irgendeinem vorherigen Zeitpunkt veranlaßt wurde, steht mit p die Anzahl der Wörter die in höchstens i Schritten aus dem Startsymbol S ableitbar sind, korrekt zur Verfügung und kann in der nächsten Rekursion als Vergleichswert benutzt werden. Das Verfahren läuft dann bis zum Erreichen des Wertes m+1, d.h., bis alle Wörter aus A gebildet worden sind. 3.2.4 Analyse Zur Analyse des Verfahrens ist zu sagen, daß es in der Tat mit linearem Platzbedarf auskommt. Begründung: Das Verfahren braucht O(n) Platz für die Satzform y und O(n) Platz für die Satzform z, da beide Wörter höchstens die Länge n haben können Bedingungen der FOR Schleife. Dies ergibt insgesamt eine Platzkomplexität von O(n). Durch Anwendung dieser Berechnungsart von g im Algorithmus M, kann A durch M so berechnet werden, daß die geforderten Komplexitätsbedingungen erfüllt werden und Ā NSPACE(O(n)) = NSPACE(n) gilt. Damit ist der Beweis zur Lösung des zweiten LBA Problems abgeschlossen und hat die Korrektheit der Lösung bestätigt. Literatur [1] U. Schöning: Perlen der Theoretischen Informatik 6