Bestimme für den regulären Ausdruck ´(((a + b)^(**) * (b * b)) + a^(**))´ eine reguläre Grammatik ´G´ mit ´L(G) = M(R)´.

Approach

Die Grammatiken mit den Regeln ´S_1 -> a´ und ´S_1 -> b´ bzw. ´S_2 -> b´ erzeugen die Sprachen ´{a, b}´ und ´{b}´. Ferner erzeugt die Grammatik mit

´S_1^' -> lambda´, ´S_1^' -> S_1´, ´S_1 -> aS_1´, ´S_1 -> bS_1´, ´S_1 -> a´, ´S_1 -> b´

und Startsymbol ´S_1^'´ die Sprache ´{a, b}^(**)´. Für ´{a, b}^(**) {b}´ ergibt sich

´S_1^' -> lambda´, ´S_1^' -> S_1´, ´S_1 -> aS_1´, ´S_1 -> bS_1´, ´S_1 -> aS_2´, ´S_1 -> bS_2´, ´S_2 -> b´

Für ´{a, b}^(**){b}{b}´ ergibt sich (mit ´S_3 -> b´ für die Erzeugung des zweiten ´{b}´)

´S_1^' -> lambda´, ´S_1^' -> S_1´, ´S_1 -> aS_1´, ´S_1 -> bS_1´, ´S_1 -> aS_2´, ´S_1 -> bS_2´, ´S_2 -> bS_3´, ´S_3 -> b´.

Da ´{a}^(**)´ durch die Regeln ´S_4^' -> S_4´, ´S_4^' -> lambda´, ´S_4 -> aS_4´, ´S_4 -> a´ aus dem Startsymbol ´S_4^'´ erzeugt wird, erhält man insgesamt folgendes als Regelmenge: (Benutzung von S als Startsymbol)

´S -> S_1^'´, ´S -> S_4^'´, ´S_1^' -> lambda´, ´S_1^' -> S_1´, ´S_1 -> aS_1´, ´S_1 -> bS_1´, ´S_1 -> aS_2´, ´S_1 -> bS_2´, ´S_2 -> bS_3´, ´S_3 -> b´, ´S_4^' -> S_4´, ´S_4^' -> lambda´, ´S_4 -> aS_4´, ´S_4 -> a´

(Es ist klar, dass man zu den Regeln der gegebenen Grammatik ´(N, T, P, S)´ im regulären Fall nur ´A -> wS´ für ´A -> w´ in ´P´ und ´S -> lambda´ hinzunehmen muss. Dadurch vereinfacht sich obige Konstruktion etwas.)


Solution
  • ´S -> S_1^'´, ´S -> S_4^'´, ´S_1^' -> lambda´, ´S_1^' -> S_1´, ´S_1 -> aS_1´, ´S_1 -> bS_1´, ´S_1 -> aS_2´, ´S_1 -> bS_2´, ´S_2 -> bS_3´, ´S_3 -> b´, ´S_4^' -> S_4´, ´S_4^' -> lambda´, ´S_4 -> aS_4´, ´S_4 -> a´

  • URL:
  • Language:
  • Subjects: theoretical computer science
  • Type: Name
  • Duration: 30min
  • Credits: 4
  • Difficulty: 0.6
  • Tags: hpi regular expression regular grammar
  • Note:
    HPI, 2014-05-13, Theoretische Informatik 2, Blatt 6, Aufgabe 3
  • Created By: adius
  • Created At:
    2014-07-22 16:49:42 UTC
  • Last Modified:
    2014-07-22 16:49:42 UTC