Formale Sprache
Die Theorie der Formalen Sprachen ist ein eigenständiges Wissensgebiet in der Theoretischen Informatik. Im Gegensatz zur Mathematik liegen die Objekte in den formalen Sprachen immer in einer codierten Form vor. So sind die natürlichen Zahlen in der Mathematik ein rein gedankliches Gebilde; in der Theoretischen Informatik wird aus ihnen durch die Codierung in das Dezimalsystem eine formale Sprache.
Wenn wir die Wörter einer natürlichen Sprache als Alphabetszeichen ansehen, dann bilden die Sätze der natürlichen Sprache eine Formale Sprache über dem Alphabet der natürlichsprachlichen Wörter. Allerdings entzieht sich die natürliche Sprache einer vollständigen Definition, die schließlich festlegt, welche Sätze zu der natürlichen Sprache hinzugehören und welche nicht. Grundsätzlich können Gesetze und Mechanismen der formalen Sprachen daher nur auf Teilbereiche der natürlichen Sprachen angewandt werden. Siehe dazu Linguistik.
Definitionen
Eine formale Sprache ist eine Menge von Wörtern. Ein Wort einer formalen Sprache ist eine Folge von Zeichen aus einem Alphabet . Das Hintereinanderschreiben von Zeichen oder Wörtern heißt Konkatenation. Wenn man diese anzeigen will, wird meist , gelegentlich auch benutzt. Für die Konkatenation gilt das Assoziativgesetz, d.h. es ist belanglos, in welcher Reihenfolge konkateniert wird. Lediglich die Position der Zeichen in der Folge ist von Bedeutung: Somit gilt:
Die Konkatenation führt somit zu der algebraischen Struktur eines freien Monoids über dem gegebenen Alphabet.
Dabei bezeichnet man das leere Wort - also die leere Folge von Zeichen - meist durch . Weiterhin wird mit Betragsstrichen in der Regel die Längenfunktion beschrieben: Wenn ein Wort ist, dann ist mit die Länge bezeichnet, das ist die Anzahl der Folgenglieder in : und für alle Alphabetszeichen und | |=| |+1 für alle Wörter und Alphabetszeichen .
Beispiele
Wir listen hier häufig verwendete formale Sprachen auf:
- Die Programmiersprache C ist eine Formale Sprache. Die Wörter von C sind die jeweiligen Programme. Das Alphabet von C sind die Schlüsselwörter und Zeichen, die in der Definition von C festgelegt sind.
- Die natürlichen Zahlen in unärer Darstellung:
- Die Palindrome:
wobei das Wort bezeichnet, das von hinten nach vorne aufgeschrieben gleicht. - Die Primzahlen in Dezimalcodierung: .
Hierbei bezeichnet die Codierung der natürlichen Zahlen im Dezimalsystem und PRIM steht für die Menge der Primzahlen. - Die Morse- oder Thue-Folge: .
Wobei ein Homomorphismus ist, der folgendermaßen definiert ist: und , .
Somit sind die ersten Elemente der Thue-Folge: 0, 01, 0110, 01101001, 0110100110010110, ...
Operationen auf formalen Sprachen
Die Konkatenation zweier Sprachen und ist . Also alle Wörter, die man bilden kann, indem ein Wort aus und ein Wort aus aneinandergereiht werden.
Man kann durch induktiv die Potenz einer Sprache für mit definieren, dabei wird und definiert (beachte: die Menge, die nur das leere Wort enthält, ist selbst nicht leer!)
Jetzt können wir die Menge aller endlichen Wörter über dem Alphabet hinschreiben: , wobei und wir hier die Symbole aus mit den Wörtern der Länge 1 identifizieren.
Die Operation wird auch als endlicher (oder kleenescher) Abschluss bezeichnet, der Operator selbst als Kleene-Stern (siehe Kleenesche Hülle).
Die Menge dieser Wörter kann endlich oder unendlich sein. Man spricht dann auch von einer endlichen bzw. unendlichen Sprache.
Wichtige formale Sprachklassen
- Noam Chomsky hat eine Hierarchie von formalen Grammatiken aufgestellt, die verschiedene Typen von formalen Sprachen erzeugen. Diese ist heute unter dem Namen Chomsky-Hierarchie bekannt. Hier wird unterschieden zwischen Typ 0, Typ 1, Typ 2 und Typ 3: Rekursiv aufzählbare, kontextsensitive, kontextfreie bzw. reguläre Sprachen.
- Aristid Lindenmayer hat ein Regelsystem vorgeschlagen, in dem Ersetzungsschritte in jedem Schritt an jeder Stelle parallel durchgeführt werden. Diese Systeme heißen L-Systeme.
- Mit Semi-Thue-Systeme lassen sich Sprachen festlegen, die aus Startwörtern abgeleitet werden.
- Mit Church-Rosser-Systemen werden Sprachen erklärt, deren Wörter sich auf ein Terminalwort reduzieren lassen.
- Termersetzungssysteme erzeugen die Menge von Termen, die zu einem Ausgangsterm äqivalent sind.
- Verallgemeinerungen von formalen Sprachen erhalten wir mit Graphgrammatiken mit denen wir Graphsprachen erzeugen können.
- Hypergraphgrammatiken erzeugen Hypergraphen, eine Verallgemeinerung von Graphen.
Siehe auch
Anwendungen siehe in:
Literatur
- Egon Börger: Berechenbarkeit, Komplexität, Logik. Vieweg, Braunschweig Wiesbaden,
- Eine dritte Auflage erschien 1995.
- Englische Ausgabe: Computability, Complexity, Logic. Erschienen in der Reihe: Studies in logic and the foundations of mathematics. North Holland, Amsterdam 1985.
- Eine Darstellung der Formalen Sprachen im Kontext der Berechenbarkeitstheorie, Logik und Komplexitätstheorie. Stellt hohe Anforderungen an den Leser, liefert dafür tiefe Einblicke.
- Michael A. Harrison: Introduction to Formal Language Theory. Erschienen in der Reihe: Series in Computer Science, Addison-Wesley, 1978.
- Eine sehr ausführliche und viel gelobte Einführung.
- John E. Hopcroft and Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie. Addison-Wesley, 1988.
- Englisches Original: Introduction to Automata Theory, Languages and Computation. Addison-Wesley, 1979.
- Eine überarbeitete dritte Auflage auf deutsch erschien 1994.
- Das englische Original ist das in der Theoretischen Informatik am häufigsten zitierte Buch. Die Beweise sind in der deutschen Übersetzung gelegentlich falsch wiedergegeben. Dieses Buch ist in zahlreiche Sprachen übersetzt worden.
- Grzegorz Rozenberg und Arto Salomaa: The Mathematical Theory of L-Systems. Academic Press, New York, 1980.
- Das ausführlichste Buch über L-Systeme.
- Grzegorz Rozenberg und Arto Salomaa (Herausgeber): Handbook of Formal Languages. Volume I-III, Springer, 1997, ISBN 3-540-61486-9.
- Eine ausführliche Übersicht über die wichtigsten Gebiete der Formalen Sprachen dargestellt jeweils von aktiv in diesem Gebiet arbeitenden Wissenschaftlern.
- Arto Salomaa: Formale Sprachen. Springer, 1978.
- Englisches Original: Formal Languages. Academic Press, 1973.
- Ingo Wegener: Theoretische Informatik. Teubner Stuttgart, 1993. ISBN 3-519-02123-4.
- In der Darstellung der Formalen Sprachen wird stets die Komplexität der formal-sprachlichen Konstruktionen mitbehandelt. Diese ist sonst nur in der Originalliteratur zu finden.