Formale Sprache
aus Wikipedia, der freien Enzyklopädie
Die Artikel formales System, Formale Sprache und Formales System (Logik) überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Die Diskussion über diese Überschneidungen findet hier statt. Bitte äußere dich dort, bevor du den Baustein entfernst. Gratisaktie 14:02, 17. Sep 2006 (CEST) |
Als eine formale Sprache bezeichnet man eine Teilmenge der Wörter über einem Alphabet. Häufig werden formale Sprachen mit Hilfe einer formalen Grammatik beschrieben. Die Theorie der Formalen Sprachen ist ein eigenständiges Wissensgebiet in der Theoretischen Informatik.
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.
Inhaltsverzeichnis |
[Bearbeiten] 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 wR das Wort bezeichnet, das w von hinten nach vorne aufgeschrieben gleicht. - Die Dezimalkodierung der Primzahlen:
.
Hierbei bezeichnetdie Kodierung der natürlichen Zahlen im Dezimalsystem und PRIM steht für die Menge der Primzahlen.
- Die Morse- oder Thue-Folge:
.
Wobei ht ein Homomorphismus ist, der folgendermaßen definiert ist:und ht(w0): = ht(w)01, ht(w1): = ht(w)10.
Somit sind die ersten Elemente der Thue-Folge: 0, 01, 0110, 01101001, 0110100110010110, ...
[Bearbeiten] 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
definiert (beachte: die Menge, die nur das leere Wort enthält, ist selbst nicht leer!).
ergibt sich aus den beiden Definitionen.
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.
[Bearbeiten] 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-Systemen 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 äquivalent sind.
- Verallgemeinerungen von formalen Sprachen erhalten wir mit Graphgrammatiken mit denen wir Graphsprachen erzeugen können.
- Hypergraphgrammatiken erzeugen Hypergraphen, eine Verallgemeinerung von Graphen.
[Bearbeiten] Siehe auch
Anwendungen siehe in:
- Berechenbarkeitstheorie
- Komplexitätstheorie
- Kryptographie
- Kryptanalyse
- Compilerbau
- Programmiersprache
[Bearbeiten] Literatur
- Lars Peter Georgie: 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.