In diesem Artikel erfährst du, wie sich Sprachen in der Informatik mithilfe der Chomsky-Hierarchie klassifizieren lassen und somit angeordnet werden können.
Der amerikanische Linguist N. Chomsky hat die Sprachklassen in eine Hierarchie eingereiht:
Hierbei bedeuten
die Klasse der regulären Sprachen
die Klasse der kontextfreien Sprachen
die Klasse der kontextsensitiven Sprachen
die Klasse der rekursiv aufzählbaren Sprachen
Die Chomsky-Hierarchie besagt, dass die Sprachklassen von bis echt ineinander enthalten sind.
Das bedeutet beispielsweise, dass jede reguläre Sprache gleichzeitig auch eine kontextfreie Sprache ist. Eine kontextfreie Sprache muss jedoch keine reguläre Sprache sein.
Die Sprachklassen lassen sich charakterisieren durch bestimmte
Grammatiktypen
Automatentypen
So wird beispielsweise die Klasse der kontextfreien Sprachen durch kontextfreie Grammatiken erzeugt und durch nichtdeterministische Stackautomaten erkannt.
In derselben Weise sind die anderen Sprachklassen durch bestimmte Grammatiktypen und durch bestimmte Automatentypen charakterisiert.
Mithilfe von entsprechenden Konstruktionsverfahren kannst du die Grammatiktypen in zugehörige Automatentypen überführen und umgekehrt.
Übersicht
Anhand der folgenden Tabelle ersiehst du, welche Grammatiktypen die jeweiligen Sprachen erzeugen und welche Automatentypen (in der nichtdeterministischen Version) die jeweiligen Sprachen erkennen.
Sprachklasse | Bezeichnung | Grammatiktyp | Automatentyp |
---|---|---|---|
0 | rekursiv aufzählbar | ohne Beschränkungen | Turingmaschine |
1 | kontextsensitiv | expandierend | linear beschränkte Turingmaschine |
2 | kontextfrei | kontextfrei | Stackautomat |
3 | regulär | rechtslinear | endlicher Automat |
Sowohl die Grammatiktypen als auch die Automatentypen, die den Sprachklassen entsprechen, sind von bis jeweils Spezialfälle voneinander. Somit ergibt sich zunächst die Inklusion .
Grammatiktypen
Noch einmal zur Erinnerung: Eine Grammatik ist ein Tupel ; hierbei sind
das Alphabet der Nichtterminalzeichen
das Alphabet der Terminalzeichen, ist das Gesamtalphabet
die Menge der Produktionen
das Startsymbol
Allgemeine Grammatik
Der allgemeinste Grammatiktyp enthält keine Beschränkungen für die Art der Produktionen. Jede Produktion hat die Form
mit .
Eine Sprache gehört zur Sprachklasse , wenn sie von einer Grammatik dieser Form erzeugt wird.
Expansive Grammatik
Ein speziellerer Grammatiktyp ist die expansive Grammatik; hier hat jede Produktion die Form
mit und
Die erzeugten Wörter in jeder Ableitungsfolge, beginnend beim Startsymbol , werden also immer länger oder bleiben gleich lang, sie werden jedenfalls nie kürzer – daher die Bezeichnung expansive Grammatik.
Eine Sprache gehört zur Sprachklasse , wenn sie von einer Grammatik dieser Form erzeugt wird.
Kontextfreie Grammatik
Ein noch speziellerer Grammatiktyp ist die kontextfreie Grammatik; hier hat jede Produktion die Form
mit .
Auf der linken Seite jeder Produktion steht also immer nur ein einziges Nichtterminalzeichen, auf der rechten Seite steht ein beliebiges nichtleeres Wort.
Offenbar ist eine kontextfreie Grammatik ein Spezialfall einer expansiven Grammatik.
Eine Sprache gehört zur Sprachklasse , wenn sie von einer Grammatik dieser Form erzeugt wird.
Rechtslineare Grammatik
Der speziellste Grammatiktyp ist die rechtslineare Grammatik; hier hat jede Produktion die Form
mit
.
Offenbar ist eine rechtslineare Grammatik ein Spezialfall einer kontextfreien Grammatik.
Eine Sprache gehört zur Sprachklasse , wenn sie von einer Grammatik dieser Form erzeugt wird.
Erzeugung des leeren Worts
Mit den Grammatiken vom Typ 1, 2 und 3 ist es nicht möglich, das leere Wort zu erzeugen – eine eigentlich unnötige Einschränkung. Deshalb wird bei diesen Grammatiken als einzige Ausnahme ist die Produktion
erlaubt, um gegebenenfalls das leere Wort zu erzeugen. Dann aber darf nicht auf der rechten Seite einer Produktion vorkommen. Durch Einführung eines neuen Nichtterminalzeichens und durch geeignete Umbenennungen lässt sich jede Grammatik so umformen.
Meistens wird bei der Definition einer kontextfreien Grammatik in allen Produktionen das leere Wort auf der rechten Seite erlaubt. Es ist aber dann möglich, eine solche Grammatik in die oben erwähnte strengere Form umzuformen
Automatentypen
Auch die entsprechenden Automatentypen der Chomsky-Hierarchie sind jeweils Spezialfälle voneinander.
Du erkennst dies an folgender Überlegung: Ein Automat kann einen spezielleren Automaten simulieren. Er kann alles, was der speziellere Automat kann.
Ein Stackautomat kann einen endlichen Automaten simulieren, indem er seinen Stack nicht benutzt.
Eine linear beschränkte Turingmaschine kann einen Stackautomaten simulieren. Sie liest das Eingabewort von links nach rechts und benutzt den Teil des Arbeitsbandes, dessen Eingabezeichen sie schon gelesen hat, als Stack. Allerdings ist hierfür der Stackautomat etwas strenger zu definieren, in der Weise, dass er nur dann ein Zeichen in den Stack schreibt, wenn er ein Eingabezeichen gelesen hat. Dies stellt aber keine wesentliche Einschränkung dar.
Und eine Turingmaschine kann natürlich eine linear beschränkte Turingmaschine simulieren, indem sie nur den Teil des Arbeitsbandes benutzt, auf dem das Eingabewort steht.
Echte Inklusion
Die bisherigen Überlegungen besagen nur, dass die Sprachklassen der Chomsky-Hierarchie ineinander enthalten sind oder auch gleich sind.
Um die echte Inklusion zu zeigen, gibst du Sprachen an, die in der einen Sprachklasse enthalten sind, aber nicht in der vorhergehenden.
Die Sprache ist kontextfrei, aber nicht regulär. Damit gilt .
Die Sprache ist expansiv, aber nicht kontextfrei. Damit gilt .
Etwas schwieriger zu zeigen ist die echte Inklusion von in . So gibt es beispielsweise Sprachen, die rekursiv aufzählbar sind, aber deren Komplement nicht rekursiv aufzählbar ist. Eine solche Sprache wird als nicht entscheidbar bezeichnet. Jede expansive Sprache ist aber entscheidbar. Damit gilt .