Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
---- formale Sprachen (http://www.informatikerboard.de/board/board.php?boardid=12)
----- Kontextfreie Grammatik entwerfen (http://www.informatikerboard.de/board/thread.php?threadid=2201)


Geschrieben von Jannes am 31.03.2015 um 00:09:

  Kontextfreie Grammatik entwerfen

Hallo,
ich brauche bei folgender Aufgabe Hilfe, weil ich einfach nicht weiß, wie ich vorgehen soll.


Ich hab auch überhaupt keinen Ansatz, wie ich da an die Lösung komme.


Bin über jede Hilfe dankbar.


Gruß,
Jannes



Geschrieben von Karlito am 31.03.2015 um 13:34:

 

Hallo Jannes,

ich habe auch eine Weile nachdenken müssen. Rein intuitiv ist ja schon einmal klar, dass es eine kontextfreie Grammatik geben muss, da man relativ leicht einen Kellerautomaten konstruieren kann, welcher die Sprache akzeptiert. D.h. es muss eine kontextfreie Grammatik geben. Nur wie man diese erstellt ist ein wenig kniffelig.

Tragen wir unser wissen zusammen:


Man kann die Sprache also auch folgendermaßen auffassen:
[latex]<br />
L = \{ a^{(m+n)}b^na^{m} \} <br />
[/latex]

Das macht uns die Erstellung der Grammatik ein wenig einfacher.
[latex]<br />
\begin{array}{rcll}<br />
S & \rightarrow & \varepsilon & \text{   Das leere Wort ist in der Sprache und Terminierung für } n = 0 \text{ und } m > 0<br />
S & \rightarrow & aSa & \text{   für } n = 0<br />
S & \rightarrow & aBb & \text{   für } n = 1<br />
B & \rightarrow & aBb & \text{   für } n > 1<br />
B & \rightarrow & \varepsilon & \text{ Terminierung für } n \neq 0<br />
\end{array}<br />
[/latex]

Bis man selbst auf solche Lösungen kommt, braucht es etwas Übung und Kreativität. Es gibt sicher noch andere korrekte Lösungen. Die Begründung, warumdiese Grammatik korrekt ist, sollte dir jetzt nicht allzu schwer fallen.

Falls noch etwas unklar ist, bitte nachfragen.

Gruß,

Karlito


Forensoftware: Burning Board, entwickelt von WoltLab GmbH