<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Greibach-Normalform</id>
	<title>Greibach-Normalform - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Greibach-Normalform"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Greibach-Normalform&amp;action=history"/>
	<updated>2026-05-22T23:44:28Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Greibach-Normalform&amp;diff=64735&amp;oldid=prev</id>
		<title>imported&gt;Ulanwp: 2 fehlende Sprachparameter eingefügt; 1 Datumsparameter konvertiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Greibach-Normalform&amp;diff=64735&amp;oldid=prev"/>
		<updated>2026-03-12T14:16:49Z</updated>

		<summary type="html">&lt;p&gt;2 fehlende Sprachparameter eingefügt; 1 Datumsparameter konvertiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Greibach-Normalform&amp;#039;&amp;#039;&amp;#039; ist ein Begriff der [[Theoretische Informatik|theoretischen Informatik]], der im Zusammenhang mit [[Kontextfreie Sprache|kontextfreien Sprachen]] von Interesse ist. Sie ist nach der [[Vereinigte Staaten|US]]-Informatikerin [[Sheila A. Greibach]] benannt und beschreibt eine [[Kanonische Form|Normalform]] der [[Kontextfreie Grammatik|kontextfreien Grammatiken]]. Jede kontextfreie Grammatik, nach der nicht das leere Wort abgeleitet werden kann, kann in eine Greibach-Normalform transformiert werden. Die herausragende Eigenschaft der Greibach-Normalform ist, dass bei jedem [[Ableitung (Informatik)|Ableitungsschritt]] jeweils genau ein Terminalzeichen entsteht. Damit ist sie der natürliche Zwischenschritt bei der Umformung einer kontextfreien Grammatik in einen äquivalenten nichtdeterministischen [[Kellerautomat]]en ohne &amp;lt;math&amp;gt;\varepsilon&amp;lt;/math&amp;gt;-Übergänge.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Normalform für kontextfreie Grammatiken ist die [[Chomsky-Normalform]].&lt;br /&gt;
&lt;br /&gt;
== Formale Definition ==&lt;br /&gt;
Sei &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; eine [[Kontextfreie Sprache|kontextfreie]] [[Formale Grammatik|Grammatik]] (vgl. [[Chomsky-Hierarchie]]), also &amp;lt;math&amp;gt;G \in \mbox{Typ}_2&amp;lt;/math&amp;gt;, mit &amp;lt;math&amp;gt;G = \left( N, \Sigma, P, S \right)&amp;lt;/math&amp;gt;. Dabei sei &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; die Menge der [[Nichtterminalsymbol]]e, &amp;lt;math&amp;gt;\Sigma&amp;lt;/math&amp;gt; die Menge der [[Terminalsymbol]]e, &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; die Menge von [[Produktionsregel]]n und &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; das [[Startsymbol]]. Sei das [[Leeres Wort|leere Element]] &amp;lt;math&amp;gt;\varepsilon \notin L \left( G \right)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; ist in &amp;#039;&amp;#039;&amp;#039;Greibach-Normalform&amp;#039;&amp;#039;&amp;#039; (kurz &amp;#039;&amp;#039;&amp;#039;GNF&amp;#039;&amp;#039;&amp;#039;), wenn alle [[Produktionsregel|Produktionen]] aus &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; die Form &amp;lt;math&amp;gt;A \rightarrow bB_1\ldots B_k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;k \ge 0&amp;lt;/math&amp;gt; haben, wobei &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; ein Terminalsymbol ist und &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B_i&amp;lt;/math&amp;gt; für &amp;lt;math&amp;gt;i\in\{1,\ldots,k\}&amp;lt;/math&amp;gt; Nichtterminale sind. Das Besondere an dieser Form ist also, dass auf der rechten Seite jeder Produktion genau ein Terminalsymbol gefolgt von beliebig vielen Nichtterminalen steht. Es ist aber insbesondere möglich, dass auf der rechten Seite der Produktion nur ein Terminalsymbol steht.&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;math&amp;gt;k \in \{0,1\}&amp;lt;/math&amp;gt; erhält man eine [[Reguläre Sprache|reguläre]] Grammatik als Spezialfall einer kontextfreien Grammatik in Greibach-Normalform.&lt;br /&gt;
&lt;br /&gt;
Für alle &amp;lt;math&amp;gt;G&amp;#039; \in \mbox{Typ}_2&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;\varepsilon \notin L \left( G&amp;#039; \right)&amp;lt;/math&amp;gt; gibt es ein &amp;lt;math&amp;gt;G \in \mbox{Typ}_2&amp;lt;/math&amp;gt;, mit &amp;lt;math&amp;gt;L \left( G \right) = L \left( G&amp;#039; \right)&amp;lt;/math&amp;gt;, in Greibach-Normalform.&lt;br /&gt;
&lt;br /&gt;
Ist allerdings &amp;lt;math&amp;gt;\left( S, \varepsilon \right) \in P&amp;lt;/math&amp;gt;, dann darf &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; nie auf der rechten Seite einer Produktion vorkommen. Somit ist gewährleistet, dass auch Sprachen, die das leere Wort enthalten, von einer Grammatik in Greibach-Normalform erzeugt werden können.&lt;br /&gt;
&lt;br /&gt;
== Konstruktion der GNF ==&lt;br /&gt;
Der folgende Algorithmus überführt eine Grammatik &amp;lt;math&amp;gt;G = \left( N, \Sigma, P, S \right)&amp;lt;/math&amp;gt; von der [[Chomsky-Normalform]] in die Greibach-Normalform.&lt;br /&gt;
Der Algorithmus ist von theoretischer Bedeutung, da er zeigt, dass jede kontextfreie Grammatik, nach der nicht das leere Wort abgeleitet werden kann, in eine Greibach-Normalform transformiert werden kann. Die erzeugte Greibach-Normalform ist aber nicht minimal und es existieren Algorithmen mit besserer Laufzeit, die kleine Greibach-Normalformen&lt;br /&gt;
berechnen.&amp;lt;ref&amp;gt;{{cite journal |first1=Norbert |last1=Blum |first2=Robert |last2=Koch |date=1999 |title=Greibach Normal Form Transformation Revisited |journal=Information and Computation |volume=150 |issue=1 |pages=112–118 |doi=10.1006/inco.1998.2772 |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notation ===&lt;br /&gt;
&lt;br /&gt;
Hierbei sind im Folgenden:&lt;br /&gt;
* &amp;lt;math&amp;gt;A_i, B_i \in N, i \in \mathbb{N}&amp;lt;/math&amp;gt; Nichtterminale (hier repräsentiert &amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt; bereits vorhandene und &amp;lt;math&amp;gt;B_i&amp;lt;/math&amp;gt; im Schema neu eingeführte Nichtterminalsymbole)&lt;br /&gt;
* &amp;lt;math&amp;gt;a \in \Sigma&amp;lt;/math&amp;gt; Terminale und&lt;br /&gt;
* &amp;lt;math&amp;gt;V=\Sigma \cup N&amp;lt;/math&amp;gt; das Vokabular der Grammatik&lt;br /&gt;
* &amp;lt;math&amp;gt;x, y \in N^*&amp;lt;/math&amp;gt; Folgen von Nichtterminalen (z.&amp;amp;nbsp;B. &amp;lt;math&amp;gt;x = A_1 A_2 A_3&amp;lt;/math&amp;gt;)&lt;br /&gt;
* &amp;lt;math&amp;gt;\alpha, \beta \in V^*&amp;lt;/math&amp;gt; Folgen von Terminalen und Nichtterminalen (z.&amp;amp;nbsp;B. &amp;lt;math&amp;gt;x = a A_1 A_2&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Zunächst bringt man die Grammatik in Chomsky-Normalform.&lt;br /&gt;
Für das unten angegebene Schema braucht man eine beliebige [[Ordnungsrelation|totale Ordnung]] auf den Nichtterminalen.&lt;br /&gt;
Dazu kann man die vorkommenden Nichtterminale in &amp;lt;math&amp;gt;A_1, \ldots, A_n&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;n = |N|&amp;lt;/math&amp;gt; umbenennen.&lt;br /&gt;
Hierzu geht man wie folgt vor:&lt;br /&gt;
* Das erste vorkommende Nichtterminal wird in &amp;lt;math&amp;gt;A_1&amp;lt;/math&amp;gt; umbenannt.&lt;br /&gt;
* Das zweite vorkommende Nichtterminal wird in &amp;lt;math&amp;gt;A_2&amp;lt;/math&amp;gt; umbenannt.&lt;br /&gt;
* Dieses Schema wird fortgesetzt, bis man alle vorkommenden Nichtterminale ersetzt hat.&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;math&amp;gt;P = \{S \rightarrow ADE {, } A \rightarrow aDG {, } G \rightarrow b \}&amp;lt;/math&amp;gt;&lt;br /&gt;
* Die erste vorkommende Variable ist &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;, und wird deswegen in &amp;lt;math&amp;gt;A_1&amp;lt;/math&amp;gt; umbenannt.&lt;br /&gt;
* Die zweite vorkommende Variable ist &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;, und wird deswegen in &amp;lt;math&amp;gt;A_2&amp;lt;/math&amp;gt; umbenannt.&lt;br /&gt;
* führt man diese Schema weiter, kommt man zu &amp;lt;math&amp;gt;P = \{A_1 \rightarrow A_2 A_3 A_4 {, } A_2 \rightarrow a A_3 A_5 {, } A_5 \rightarrow b \}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
In dieser Phase verwendet der Algorithmus die folgenden zwei Formen von Ersetzungen von Regeln.&lt;br /&gt;
Nach diesem Schritt gilt für alle Regeln &amp;lt;math&amp;gt;A_i \rightarrow A_j\,x&amp;lt;/math&amp;gt; der Grammatik, dass &amp;lt;math&amp;gt;i &amp;lt; j&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Einsetzen der Produktionen ====&lt;br /&gt;
Mit dieser Ersetzungsregel entfernt der Algorithmus alle Regeln der &amp;lt;math&amp;gt;A_i \rightarrow A_j x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Die Voraussetzung ist, dass es keine rekursiven Regeln für das Nichtterminal &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; gibt.&lt;br /&gt;
Die Regeln der Form &amp;lt;math&amp;gt;A_i \rightarrow A_j x&amp;lt;/math&amp;gt; werden dann ersetzt, indem das Nichtterminal &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; durch seine Produktionen ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
 Regel1(&amp;lt;math&amp;gt;A_i, A_j&amp;lt;/math&amp;gt;)&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;A_i \rightarrow A_j\,x&amp;lt;/math&amp;gt;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;A_j \rightarrow \beta&amp;lt;/math&amp;gt;&lt;br /&gt;
        Füge &amp;lt;math&amp;gt;A_i \rightarrow \beta \, x&amp;lt;/math&amp;gt; hinzu&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     Entferne &amp;lt;math&amp;gt;A_i \rightarrow A_j\,x&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Beispiel: &amp;lt;math&amp;gt;A_2 \rightarrow A_1x&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;A_1 \rightarrow A_3 {|} A_4&amp;lt;/math&amp;gt; wird zu &amp;lt;math&amp;gt;A_2 \rightarrow A_3x {|}A_4x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Ersetzen von linksrekursiven Regeln ====&lt;br /&gt;
Linksrekursive Regeln haben die Form &amp;lt;math&amp;gt;A_i \rightarrow A_i\, x_1 | A_i\, x_2 | \ldots | A_i\, x_n | \beta_1 | \beta_2 | \ldots | \beta_n&amp;lt;/math&amp;gt;, d.&amp;amp;nbsp;h. eine Variable kann wieder auf sich selbst ableiten.&lt;br /&gt;
Durch wiederholtes Einsetzen sieht man leicht, dass durch linksrekursive Regeln genau der reguläre Ausdruck&lt;br /&gt;
&lt;br /&gt;
{{Center|&amp;lt;math&amp;gt;(\beta_1 | \beta_2 | \ldots | \beta_n)(x_1 | x_2 | \ldots | x_n) ^* &amp;lt;/math&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
erzeugt werden kann. Dies kann leicht anders erreicht werden:&lt;br /&gt;
&lt;br /&gt;
Man ersetzt die Regeln für linksrekursive &amp;lt;math&amp;gt; A_i &amp;lt;/math&amp;gt; durch:&lt;br /&gt;
&lt;br /&gt;
{{Center|&amp;lt;math&amp;gt; A_i \rightarrow \beta_1 | \beta_2 | \ldots | \beta_n | \beta_1\, B_i | \beta_2\, B_i | \ldots | \beta_n\, B_i &amp;lt;/math&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
und fügt neue Regeln für &amp;lt;math&amp;gt; B_i &amp;lt;/math&amp;gt; ein:&lt;br /&gt;
&lt;br /&gt;
{{Center|&amp;lt;math&amp;gt; B_i \rightarrow x_1 | x_2 | \ldots | x_n | x_1\, B_i | x_2\, B_i | \ldots | x_n\, B_i &amp;lt;/math&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
 Regel2(&amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt;)&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;A_i \rightarrow \beta&amp;lt;/math&amp;gt;&lt;br /&gt;
     Füge &amp;lt;math&amp;gt;A_i \rightarrow \beta \, B_i &amp;lt;/math&amp;gt; hinzu&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;A_i \rightarrow A_i\,x&amp;lt;/math&amp;gt;&lt;br /&gt;
     Füge &amp;lt;math&amp;gt;B_i \rightarrow x &amp;lt;/math&amp;gt; hinzu&lt;br /&gt;
     Füge &amp;lt;math&amp;gt;B_i \rightarrow x\, B_i &amp;lt;/math&amp;gt; hinzu&lt;br /&gt;
     Entferne &amp;lt;math&amp;gt;A_i \rightarrow A_i\, x&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== Algorithmus ====&lt;br /&gt;
Der Algorithmus wendet die obigen zwei Ersetzungsregeln für &amp;lt;math&amp;gt;A_1&amp;lt;/math&amp;gt; bis &amp;lt;math&amp;gt;A_m&amp;lt;/math&amp;gt; an,&lt;br /&gt;
sodass zunächst immer Regeln der Form &amp;lt;math&amp;gt;A_i \rightarrow A_j\,x, ~i &amp;gt; j &amp;lt;/math&amp;gt; ersetzt werden und dann&lt;br /&gt;
linksrekursive Regeln mit &amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt; eliminiert werden.&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; i:=1 bis m&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; j:=1 bis i-1&lt;br /&gt;
        Regel1(&amp;lt;math&amp;gt;A_i, A_j&amp;lt;/math&amp;gt;)&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     Regel2(&amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt;)&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ab jetzt gibt es nur noch Regeln der Form &amp;lt;math&amp;gt;A_i \rightarrow A_j \, x, ~i &amp;lt; j &amp;lt;/math&amp;gt; oder der Form &amp;lt;math&amp;gt;A_i \rightarrow x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Insbesondere gilt, dass alle &amp;lt;math&amp;gt;A_m&amp;lt;/math&amp;gt; Regeln auf der rechten Seite mit einem Terminalsymbol beginnen.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
In diese Phase werden alle Regeln über die Nichtterminale &amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt; in die Form &amp;lt;math&amp;gt;A_i \rightarrow a\,N^*&amp;lt;/math&amp;gt; transformiert.&lt;br /&gt;
Der Algorithmus beginnt bei den &amp;lt;math&amp;gt;A_{m-1}&amp;lt;/math&amp;gt; Regeln und ersetzt Regeln, die mit einem Nichtterminal beginnen werden, indem die Produktionen des Nichtterminals eingesetzt werden.&lt;br /&gt;
Hier wird ausgenutzt, dass wenn &amp;lt;math&amp;gt;A_{i}&amp;lt;/math&amp;gt; Regeln betrachtet werden, die &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; Regeln für &amp;lt;math&amp;gt;j &amp;gt; i&amp;lt;/math&amp;gt; schon in der gewünschten Form sind.&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; i:=m-1 bis 1&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; j:=i+1 bis m&lt;br /&gt;
          Regel1(&amp;lt;math&amp;gt;A_i, A_j&amp;lt;/math&amp;gt;)&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Phase 3 ===&lt;br /&gt;
Im letzten Schritt werden alle Regeln über die neuen Nichtterminale &amp;lt;math&amp;gt;B_i&amp;lt;/math&amp;gt; in die Greibach-Normalform transformiert.&lt;br /&gt;
Regeln, die mit einem Nichtterminal beginnen, werden ersetzt, indem die Produktionen dieses Nichtterminals eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;B_i \rightarrow A_j\,x&amp;lt;/math&amp;gt;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für&amp;#039;&amp;#039;&amp;#039; alle &amp;lt;math&amp;gt;A_j \rightarrow \beta&amp;lt;/math&amp;gt;&lt;br /&gt;
        Füge &amp;lt;math&amp;gt;B_i \rightarrow \beta \, x&amp;lt;/math&amp;gt; hinzu&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     Entferne &amp;lt;math&amp;gt;B_i \rightarrow A_j\,x&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgenutzt, dass die &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; Regeln alle schon in Greibach-Normalform sind und die &amp;lt;math&amp;gt;B_i&amp;lt;/math&amp;gt; nie als erstes Symbol der rechten Seite einer Regel auftreten.&lt;br /&gt;
&lt;br /&gt;
== Eine strengere Variante der Greibach-Normalform ==&lt;br /&gt;
Es ist auch möglich, die Produktionen einer kontextfreien Grammatik so in Greibach-Normalform umzuformen, dass auf jeder rechten Seite maximal 2&amp;amp;nbsp;Variablen vorkommen. Die resultierenden Produktionen haben dann also die Form &amp;lt;math&amp;gt;A_i\rightarrow a&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;A_i\rightarrow aV&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;A_i\rightarrow aV_1V_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Konstruktion eines Kellerautomaten aus der GNF ==&lt;br /&gt;
Um aus einer Grammatik &amp;lt;math&amp;gt;G = (N, T, P, S)&amp;lt;/math&amp;gt; in GNF einen Kellerautomaten &amp;lt;math&amp;gt;M=(Z,\Sigma,\Gamma,\delta,q_0,Z_0,F)&amp;lt;/math&amp;gt; zu konstruieren, wähle die Zustandsmenge von &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; als &amp;lt;math&amp;gt;Z=\{ q_0 \}&amp;lt;/math&amp;gt;, das Kelleralphabet &amp;lt;math&amp;gt;\Gamma = N&amp;lt;/math&amp;gt;, das Bandalphabet &amp;lt;math&amp;gt;\Sigma = T&amp;lt;/math&amp;gt;, das Kellerstartsymbol &amp;lt;math&amp;gt;Z_0 = S&amp;lt;/math&amp;gt; und die Menge der Endzustände &amp;lt;math&amp;gt;F = \emptyset&amp;lt;/math&amp;gt;. Als Übergangsrelation wähle &amp;lt;math&amp;gt;\delta (q_0,a,A) = \{(q_0,x):(A \rightarrow ax) \in P\}&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; akzeptiert über leeren Keller. Beweis per Induktion&amp;lt;ref&amp;gt;[http://www.zaik.uni-koeln.de/AFS/teachings/ws0102/TheoInf/Kapitel10.ps Beweis der Konstruktion des Kellerautomaten aus der GNF]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=[[Uwe Schöning]] |Titel=Theoretische Informatik – kurz gefasst |Auflage=5 |Verlag=Spektrum Akademischer Verlag |Ort=Heidelberg |ISBN=978-3-8274-1824-1 |Kapitel=1.3 Kontextfreie Sprachen}}&lt;br /&gt;
* {{Literatur |Autor=[[Ingo Wegener]] |Titel=Theoretische Informatik |TitelErg=Eine algorithmenorientierte Einführung |Verlag=B.G. Teubner |Ort=Stuttgart |ISBN=3-519-02123-4 |Kapitel=7.1 Die Greibach-Normalform für kontextfreie Grammatiken |Sprache=de}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Automatentheorie]]&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Normalform]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ulanwp</name></author>
	</entry>
</feed>