Informatik · Klasse 12–13 · aktualisiert
Chomsky-Hierarchie: Grammatiktypen verstehen
Du lernst die vier Chomsky-Typen, ihre Sprachklassen und Automaten kennen und siehst, warum Grammatiktyp und Sprachtyp nicht dasselbe sind.
0 von 11 Aufgaben gelöst
Kurz gesagt
Die Chomsky-Hierarchie ordnet Grammatiken in vier Typen (0 bis 3) nach der Strenge ihrer Regeln. Typ 3 gehört zu regulären, Typ 2 zu kontextfreien, Typ 1 zu kontextsensitiven und Typ 0 zu rekursiv aufzählbaren Sprachen. Eine Sprache ist vom Typ i, wenn es irgendeine Typ-i-Grammatik für sie gibt.
Mit Regeln kann man Wörter einer Sprache erzeugen, auch die einer Programmiersprache. Je strenger die Regeln sind, desto einfacher lässt sich eine Sprache üblicherweise verarbeiten, aber desto weniger kann sie ausdrücken. Die Chomsky-Hierarchie sortiert die Regelarten in vier Stufen. Du lernst, was jede Stufe kann und warum Grammatik und Sprache jeweils einen eigenen Typ haben.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
3 Abschnitte
Eine formale Grammatik hat Regeln, mit denen man Wörter erzeugt. Man startet beim Startsymbol und ersetzt Symbole nach den Regeln. Ein Ergebnis gilt nur dann als Wort der Sprache, wenn es keine Nichtterminalsymbole mehr enthält.
Die Chomsky-Hierarchie umfasst vier Typen von Grammatiken, gezählt von 0 bis 3. Die Typen unterscheiden sich darin, wie streng die Regeln eingeschränkt sind. Typ 0 hat keine Einschränkung an die Gestalt der Regeln. Es muss nur links in jeder Regel wenigstens ein Nichtterminalsymbol stehen. Typ 1 bis Typ 3 sind dann zunehmend stärker eingeschränkt.
Typ 1 heißt kontextsensitiv. Nach der Definition αAβ → αγβ haben die Regeln diese Form (oder S → ε). Dabei ist A ein Nichtterminal. α, β und γ sind Wörter aus Terminalen und Nichtterminalen. α und β können leer sein, γ muss aber mindestens ein Symbol enthalten. Die Regel S → ε erlaubt man nur als Ausnahme, wenn das Startsymbol S nirgends auf einer rechten Seite vorkommt.
Typ 2 heißt kontextfrei. In Chomskys ursprünglicher Definition steht links in jeder Regel genau ein Nichtterminalsymbol und rechts eine beliebige nichtleere Folge von Symbolen.
Typ 3 heißt regulär. In Chomskys ursprünglicher Definition (ohne ε auf rechten Seiten) steht rechts genau ein Terminalsymbol und höchstens ein weiteres Nichtterminalsymbol. Dieses Nichtterminal steht in allen Regeln entweder immer vor oder immer hinter dem Terminal. Kommen beide Stellungen in einer Grammatik vor, ist sie nicht regulär.
Nach der Definition ist eine Grammatik vom Typ 3 auch vom Typ 2, eine vom Typ 2 auch vom Typ 1 und eine vom Typ 1 auch vom Typ 0. Die Umkehrungen gelten nicht. Chomsky verlangte für Typ 1, 2 und 3, dass die rechte Seite nicht kürzer als die linke ist. Heute lässt man oft das leere Wort auf rechten Seiten zu. Hier bleiben wir bei der strengen Form.
Definition
Terminal und Nichtterminal
Terminalsymbole sind alle Zeichen des Alphabets. Nichtterminalsymbole gehören nicht dazu. Ein Ergebnis gilt nur dann als Wort der Sprache, wenn es keine Nichtterminalsymbole enthält.
| Typ | Name | Form der Regeln |
|---|---|---|
| 0 | unbeschränkt | Links wenigstens ein Nichtterminal, sonst keine Einschränkung |
| 1 | kontextsensitiv | Nach der Definition αAβ → αγβ: γ nicht leer (Ausnahme S → ε) |
| 2 | kontextfrei | Links genau ein Nichtterminal, rechts eine nichtleere Folge |
| 3 | regulär | Rechts genau ein Terminal und höchstens ein Nichtterminal, immer auf derselben Seite |
Beispiel: Eine Grammatik für Summen der Ziffern 1, 2 und 3
- 1Startsymbol: Summe. Terminale: +, 1, 2, 3.
- 2Regeln: Summe → Ziffer · Summe → Summe + Ziffer · Ziffer → 1 · Ziffer → 2 · Ziffer → 3
- 3In jeder Regel steht links genau ein Nichtterminal, rechts eine nichtleere Folge. Die Grammatik ist also vom Typ 2.
- 4Summe → Ziffer hat rechts kein Terminal. Das ist keine Typ-3-Regel in der strengen Form.
- 5Ableitung von 1+2: Summe ⇒ Summe + Ziffer ⇒ Ziffer + Ziffer ⇒ 1 + Ziffer ⇒ 1+2
Teste dich
Jeder Grammatiktyp erzeugt genau eine Sprachklasse. Zu jeder Klasse gehört ein Automatenmodell, das genau diese Sprachen erkennt. Wie die Automaten arbeiten, lernst du hier nicht. Du ordnest sie nur zu.
Typ 0 erzeugt genau die Sprachen, die eine Turingmaschine akzeptieren kann. Diese Sprachen heißen rekursiv aufzählbar. Typ 1 erzeugt die kontextsensitiven Sprachen. Sie erkennt genau eine nichtdeterministische, linear beschränkte Turingmaschine. Ihr Band hat höchstens a · x Felder, für eine feste Zahl a und die Länge x der Eingabe.
Typ 2 erzeugt die kontextfreien Sprachen. Sie erkennt genau ein nichtdeterministischer Kellerautomat. Eine Teilmenge der kontextfreien Sprachen bildet die theoretische Basis für die Syntax der meisten Programmiersprachen. Typ 3 erzeugt die regulären Sprachen. Sie erkennt genau ein endlicher Automat. Man kann sie auch durch reguläre Ausdrücke beschreiben.
Als Kurzschreibweise für die Klassen gilt REG ⊂ CF ⊂ CS ⊂ RE. Das sind die regulären, kontextfreien, kontextsensitiven und rekursiv aufzählbaren Sprachen. Sprachen eines eingeschränkteren Grammatiktyps sind üblicherweise einfacher algorithmisch zu verarbeiten, aber weniger ausdrucksmächtig.
| Typ | Sprachklasse | Automatenmodell |
|---|---|---|
| 0 | rekursiv aufzählbar | Turingmaschine |
| 1 | kontextsensitiv | nichtdeterministische, linear beschränkte Turingmaschine |
| 2 | kontextfrei | nichtdeterministischer Kellerautomat |
| 3 | regulär | endlicher Automat |
Beispiel: Wo begegnen dir die Klassen?
- 1Suchmuster in Texten beschreibt man häufig mit regulären Sprachen (Typ 3).
- 2Die lexikalische Struktur von Programmiersprachen definiert man ebenfalls häufig mit regulären Sprachen.
- 3Für die Syntax von Programmiersprachen benutzt man meist Typ-2-Grammatiken. Typ 3 taugt wegen seiner Einfachheit nicht dafür.
- 4Je eingeschränkter der Typ, desto einfacher ist die Verarbeitung üblicherweise, aber desto weniger kann man ausdrücken.
Merke: Rekursiv aufzählbar ist nicht dasselbe wie rekursiv (entscheidbar). Bei einem Wort, das nicht in der Typ-0-Sprache liegt, kann die Turingmaschine endlos weiterlaufen und gibt dann keine Auskunft.
Teste dich
Eine Grammatik besteht aus Regeln. Eine Sprache ist eine Menge von Wörtern. Der Typ einer Grammatik hängt von der Form ihrer Regeln ab. Der Typ einer Sprache hängt davon ab, ob es eine passende Grammatik gibt: Eine Sprache ist vom Typ i, wenn es eine Typ-i-Grammatik gibt, die sie erzeugt. Eine solche Grammatik genügt. Es gibt also zwei Hierarchien nebeneinander, eine der Grammatiken und eine der Sprachen.
Deshalb kann eine Grammatik nicht vom Typ i sein, während ihre Sprache trotzdem vom Typ i ist. Dafür muss nur eine andere Grammatik vom Typ i dieselbe Sprache erzeugen. Aus „die Grammatik ist nicht vom Typ i“ folgt also nicht „die Sprache ist nicht vom Typ i“.
Ein Fall: Einige Autoren nennen eine Grammatik schon kontextsensitiv, wenn bis auf S → ε alle Regeln w1 → w2 die Bedingung |w1| ≤ |w2| erfüllen. Häufiger heißt sie monoton oder nichtverkürzend. Monotone Grammatiken erzeugen genau die kontextsensitiven Sprachen. Nicht jede monotone Grammatik ist aber nach der Definition αAβ → αγβ vom Typ 1. Ihre Sprache ist trotzdem vom Typ 1.
Zwischen den Sprachklassen benachbarter Ebenen besteht eine echte Teilmengenbeziehung. Jede reguläre Sprache ist kontextfrei, aber nicht jede kontextfreie Sprache ist regulär. Die Sprache {aⁿbⁿ | n ≥ 1} ist vom Typ 2, aber nicht vom Typ 3. Die Sprache {aⁿbⁿcⁿ | n ≥ 1} ist vom Typ 1, aber nicht vom Typ 2. Solche Beweise führt man oft mit dem Schleifensatz (Pumping-Lemma). Hier nennen wir nur die Ergebnisse.
Linksreguläre und rechtsreguläre Grammatiken erzeugen genau dieselbe Sprachklasse. Grammatiken, die beide Arten mischen, sind nicht regulär. Als Klasse erzeugen sie eine echt größere Sprachklasse.
Definition
Sprache vom Typ i
Eine formale Sprache ist vom Typ i, wenn es eine Typ-i-Grammatik gibt, die sie erzeugt.
Beispiel: Zwei Grammatiken, eine Sprache (ausgedachtes Beispiel)
- 1Alphabet {a}. Grammatik G1: S → aS und S → a. Grammatik G2: S → aS, S → Sa und S → a.
- 2Beide erzeugen jedes Wort a, aa, aaa, … , also die Sprache {aⁿ | n ≥ 1}.
- 3G1: Jede Regel hat rechts genau ein Terminal und höchstens ein Nichtterminal, immer hinter dem Terminal. G1 ist vom Typ 3.
- 4G2: S → aS ist rechtsregulär, S → Sa ist linksregulär. Sie mischt beides und ist deshalb nicht regulär.
- 5Die Grammatik G2 ist nicht vom Typ 3. Die Sprache {aⁿ | n ≥ 1} ist trotzdem vom Typ 3, weil G1 sie erzeugt.
Merke: Vom Typ der Grammatik darfst du nicht auf den Typ der Sprache schließen. Es zählt, ob es irgendeine Typ-i-Grammatik für die Sprache gibt.
Teste dich
Alles auf einen Blick
Chomsky-Hierarchie
Vier Typen
Die Chomsky-Hierarchie zählt die Grammatiktypen von 0 bis 3. Die Regeln werden von Typ 0 bis Typ 3 zunehmend strenger.
Typ 1 nach der Definition
Regeln der Form αAβ → αγβ, γ nicht leer, Ausnahme S → ε nur, wenn S nirgends rechts steht.
Typ 3 streng
Rechts steht genau ein Terminal und höchstens ein Nichtterminal, immer auf derselben Seite.
Zuordnung
Typ 0 rekursiv aufzählbar (Turingmaschine), Typ 1 kontextsensitiv, Typ 2 kontextfrei (Kellerautomat), Typ 3 regulär (endlicher Automat).
Sprachtyp
Eine Sprache ist vom Typ i, wenn es eine Typ-i-Grammatik für sie gibt. Der Typ der Grammatik legt das nicht fest.
Musteraufgabe · Schritt für Schritt
Eine Grammatik einordnen (ausgedachtes Beispiel)
- 1Gegeben: Startsymbol S, Terminale a und b, Regeln S → aSb und S → ab.
- 2Linke Seiten: In beiden Regeln steht links genau ein Nichtterminal, nämlich S.
- 3Rechte Seiten: aSb und ab sind nichtleer. Die Grammatik ist also vom Typ 2.
- 4Typ 3? Beide rechten Seiten enthalten zwei Terminale, Typ 3 erlaubt genau ein Terminal. Die Grammatik ist nicht vom Typ 3.
- 5Ableitung: S ⇒ aSb ⇒ aabb. Allgemein entstehen so die Wörter aⁿbⁿ mit n ≥ 1.
- 6Die Sprache {aⁿbⁿ | n ≥ 1} ist vom Typ 2, aber nicht vom Typ 3. Passender Automat: ein nichtdeterministischer Kellerautomat.
Fehler finden
Prüfe die Aussagen zu monotonen Grammatiken In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Hier wird von der Grammatik auf die Sprache geschlossen. Richtig: Die Sprache einer monotonen Grammatik ist vom Typ 1, weil monotone Grammatiken genau die kontextsensitiven Sprachen erzeugen.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Bei Typ gibt es keine Einschränkung der Regelgestalt, außer dass links wenigstens ein Nichtterminal steht. Genau die regulären Sprachen erkennt ein . Eine Sprache ist vom Typ i, wenn es Typ-i-Grammatik gibt, die sie erzeugt.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback