Kontextfreie Sprache

(Weitergeleitet von Kontextfrei)

In der Theoretischen Informatik ist eine kontextfreie Sprache (englisch context-free language, CFL) eine formale Sprache, die durch eine kontextfreie Grammatik beschrieben werden kann. Eine kontextfreie Grammatik erlaubt einen definierten Leseprozess (Interpretation) von Ausdrücken einer formalen Sprache. Dabei kann zum einen entschieden werden, ob ein Ausdruck den Regeln der Grammatik entspricht, und zum anderen im Verlauf der Analyse ein Syntaxbaum erstellt werden. Ein Programm, das dies leistet, heißt Parser. Parser werden insbesondere zur Verarbeitung von Programmiersprachen verwendet. Auch in der Computerlinguistik versucht man, natürliche Sprachen durch Regeln kontextfreier Grammatiken zu beschreiben.

Kontextfreie Sprachen werden auch als Typ-2-Sprachen der Chomsky-Hierarchie bezeichnet. Die Klasse aller kontextfreien Sprachen beinhaltet die regulären Sprachen (Typ-3-Sprachen) und wird von der Klasse der kontextsensitiven Sprachen (Typ-1-Sprachen) umfasst.

Charakterisierung

Bearbeiten

Die Klasse der kontextfreien Sprachen ist gleich der Klasse der von nichtdeterministischen Kellerautomaten akzeptierten Sprachen. Die von deterministischen Kellerautomaten akzeptierten Sprachen werden als deterministisch kontextfreie Sprachen bezeichnet und sind identisch mit der Klasse der LR(k)-Sprachen (vgl. LR(k)-Grammatik).

Man spricht deshalb von kontextfreien Sprachen, weil die Regeln der kontextfreien Grammatiken immer vom Kontext unabhängig angewendet werden, da jeweils auf den linken Seiten der Produktionsregeln nur ein Nichtterminal stehen darf. Das unterscheidet sie von kontextsensitiven Grammatiken, deren Regeln auch vom syntaktischen Kontext abhängen, also auf den linken Seiten der Produktionsregeln auch Kombinationen von Nichtterminalen und Terminalen stehen dürfen.

Beispiele

Bearbeiten

Besteht ein Alphabet aus den Symbolen   und  , sind folgende Sprachen Beispiele für kontextfreie Sprachen:

  •  
  •  

Die Sprache   enthält die Wörter:  ,  ,   usw., also immer so viele  s wie  s. Wählt man statt   und   die Symbole   und  , entspricht das der korrekt verschachtelten Klammerung: etwa   oder  .

Die Sprache   enthält die Wörter  ,  ,  ,   usw., also alle symmetrischen Wörter. Da sie von vorne und hinten gelesen das gleiche Wort ergeben, sind es Palindrome.

Die Sprache   ist kontextsensitiv, aber nicht kontextfrei.

Kontextfreie Sprachen finden in der Definition der Syntax von Programmiersprachen Anwendung, es lassen sich zum Beispiel arithmetische Ausdrücke und allgemein korrekte Klammerstrukturen festlegen. Grenzen der kontextfreien Sprachen liegen bei kontextrelevanten Eigenschaften, wie z. B. der Typüberprüfung in Programmiersprachen, die sich nur durch kontextsensitive Grammatiken darstellen lassen. In der Praxis verwendet man aber kontextfreie Parser mit zusätzlichen Funktionen und Datenstrukturen.

In der Computerlinguistik werden mit kontextfreien Grammatiken natürliche Sprachen nachgebildet. Besteht ein Alphabet aus Wörtern einer Sprache, zum Beispiel  , kann man mit wenigen Regeln einfache Nominalphrasen konstruieren: Durch die Regeln   und   sind   und   korrekte Ausdrücke in der Grammatik.

Eigenschaften

Bearbeiten

Die Klasse der kontextfreien Sprachen ist abgeschlossen unter der

Sie ist nicht abgeschlossen unter

  • Durchschnitt
    • Gegenbeispiel: Die Sprachen   und   sind kontextfrei. Aber   ist nicht kontextfrei.
  • Komplement
    • Widerspruchsbeweis: Es wurde bereits gezeigt, dass es kontextfreie Sprachen   gibt, deren Schnitt   nicht kontextfrei ist. Seien kontextfreie Sprachen unter Komplementbildung abgeschlossen. Dann sind auch   kontextfrei. Wegen der Abgeschlossenheit unter Vereinigung und De Morgan folgt, dass   und damit   kontextfrei ist. Widerspruch: der Durchschnitt   wurde als nicht kontextfrei vorausgesetzt.
  • Anwendung von logarithmisch platzbeschränkter Reduktion
  • Symmetrischer Differenz

Der Abschluss unter Vereinigung lässt sich durch Konstruktion einer neuen, wiederum kontextfreien Grammatik nachweisen: Seien   und   kontextfrei. Neues Startsymbol   und neue Produktion  .   mit  

Genauso kann man für zwei kontextfreie Sprachen die Abgeschlossenheit unter Konkatenation zeigen: Seien   und   kontextfrei. Neues Startsymbol   und neue Produktion  .   mit  

Auch die Anwendung von Kleene-* entspricht einer neuen, kontextfreien Grammatik: Sei   kontextfrei. Neues Startsymbol   und neue Produktion  .   mit  

Jede reguläre Sprache ist auch kontextfrei, da jede reguläre Grammatik auch eine kontextfreie Grammatik ist. Es existieren kontextsensitive Sprachen, die nicht kontextfrei sind. Ein solches Beispiel ist  . Pumping-Lemmas existieren jeweils in verschiedenen Varianten für reguläre und kontextfreie Sprachen. Für kontextfreie Sprachen beschreiben sie notwendige, aber nicht hinreichende Eigenschaften. Der Nachweis, dass eine formale Sprachen nicht kontextfrei ist, wird in der Regel über die Verletzung dieser notwendigen Eigenschaften geführt. Oft wird die untersuchte Sprache zunächst durch den Schnitt mit einer regulären Sprache geeignet ausgedünnt. Dieses Vorgehen ist durch den oben genannten Abschluss unter Schnitt mit regulären Sprachen gerechtfertigt.

Ein offenes Problem ist die Frage, ob die Menge der primitiven Wörter kontextfrei ist.[1] Dabei ist ein Wort über einem beliebigen Alphabet primitiv, wenn es keine Wiederholung eines anderen Wortes ist, also nicht die Form   für ein beliebiges anderes, nicht-leeres Wort   desselben Alphabetes und ein ganzzahliges   hat.[2]

Typische Entscheidungsprobleme

Bearbeiten

Seien  ,   und   gegebene kontextfreie Sprachen über dem Alphabet  . Dann ergeben sich folgende typische Problemstellungen:

  • Wortproblem: Gehört ein Wort   zu  ?
  • Leerheitsproblem: Ist   die leere Menge?
  • Endlichkeitsproblem: Ist   eine endliche Menge von Wörtern ( )?

Die oben aufgezählten Probleme sind bei kontextfreien Sprachen entscheidbar (das Wortproblem durch den Cocke-Younger-Kasami-Algorithmus). Das Äquivalenzproblem ( ) ist ab einschließlich dieser Stufe der Chomsky-Hierarchie nicht mehr entscheidbar.

Weitergehende Eigenschaften

Bearbeiten
  • DLIN   DCFL   CFL   GCSL   CSL
  • REG   DLIN   LIN   CFL
  • Für jedes   gibt es Sprachen, die sich als Schnitt von   kontextfreien Sprachen darstellen lassen, aber nicht als Schnitt von   kontextfreien Sprachen.

Natürliche Sprache

Bearbeiten

In der Linguistik werden kontextfreie Grammatiken auch zur Beschreibung der Syntax natürlicher Sprachen eingesetzt. Es wurde aber zum Beispiel für das Schweizerdeutsch nachgewiesen, dass die Sprache sich nicht vollständig mit einer solchen Grammatik beschreiben lässt.[3] Vielfach werden aber in der Computerlinguistik kontextfreie Grammatiken (oder äquivalente Formalismen) mit zusätzlichen Datenstrukturen auch für Sprachen wie Schweizerdeutsch verwendet.

Siehe auch

Bearbeiten
  • Backus-Naur-Form, eine kompakte formale Metasprache zur Darstellung kontextfreier Grammatiken

Literatur

Bearbeiten
  • Uwe Schöning: Theoretische Informatik – kurzgefasst. 4. Auflage. Berlin 2003, Spektrum, ISBN 3-8274-1099-1.
  • Stuart M. Shieber: Evidence against the context-freeness of natural language. In: Linguistics and Philosophy. 8, 1985, 3, ISSN 0924-4662, S. 333–343.
  • John E. Hopcroft, Rajeev Motwani, Jeffrey Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie. 2., überarbeitete Auflage. Pearson Studium, München 2002, ISBN 3-8273-7020-5.
  • Leonard Y. Liu, Peter Weiner: An Infinite Hierarchy of Intersections of Context-Free Languages. In: Mathematical Systems Theory. 7, 1973, ISSN 0025-5661, S. 185–192.
Bearbeiten
  • CFL. In: Complexity Zoo. (englisch)

Einzelnachweise

Bearbeiten
  1. Pál Dömösi, Masami Ito: Context-Free Languages and Primitive Words. World Scientific Publishing Co Pte Ltd, Singapur 2014, ISBN 978-981-4271-66-0, S. 447 (Vorschau auf Google Books [abgerufen am 30. November 2015]).
  2. Context-Free Languages and Primitive Words (siehe oben), S. 11 (Vorschau auf Google Books, abgerufen am 30. November 2015)
  3. Stuart M. Shieber; Evidence against the context-freeness of natural language; In Linguistics and Philosophy 8; 1985 (pdf; 6,3 MB)