David Schirrmeister aa406fa684 update
2025-06-10 08:43:48 +02:00

6.1 KiB
Raw Blame History

Übungsblatt 7

Wenzel Schwan (1125033), Paul Kneidl (1125219), David Schirrmeister (1125746), Michelle Klein (1126422)

Übung 1

Betrachten Sie folgende Grammatik:


G : \quad S \Rightarrow abSc \mid bT \\
T \Rightarrow bT \mid bU \\
U \Rightarrow b \mid c

1(a)

Geben Sie Ableitungen (Folge von 1-Schritt-Ableitungen) für jedes der folgenden Wörter an:

  • (i) w_1 = bbbc
    • S → bT → bbT → bbbU → bbbc
  • (ii) w_2 = ababbbbcc
    • S → abSc → ababScc → ababbTcc → ababbbUcc → ababbbbcc
  • (iii) w_3 = abbbcc
    • S → abSc → abbTc → abbbUc → abbbcc

1(b)

Welche Sprache wird von Grammatik G erzeugt?

Wörter, die mit beliebig vielen ab beginnen, gefolgt von einer beliebigen Anzahl von b und enden mit einer beliebigen Anzahl von c, mindestens aber so viele, wie a, maximal eins mehr.

Übung 2

2(a)

Geben Sie für jede der folgenden Sprachen eine Grammatik mit höchstens 7 Regeln an, welche die jeweilige Sprache erzeugt, und begründen Sie die Korrektheit Ihrer Grammatik.

  • (i) L_1 = \{ w \in \{0,1\}^* \mid w \text{ ist ein Palindrom mit durch 4 teilbarer Länge} \}
    • S → 00S00 | 01S10 | 10S01 | 11S11 | ε
  • (ii) L_2 = \{ w \in \{0,1\}^* \mid \#1(w) \geq \#0(w) \}
    • S → 1A | 0B | ε
    • A → 1A | 0S | ε
    • B → 1A
  • (iii) L_3 = \{ w \in \{0,1\}^* \mid \#0(w) \leq 2 \}
    • S → 1S | 0A | ε
    • A → 1A | 0B | ε
    • B → 1B | ε

Übung 3

In den Vorlesungsfolien zu „Kapitel 5: Grundlagen formaler Grammatiken“ finden Sie die kontextfreie Grammatik G_{\text{Tags}}.
Diese benutzt mehrere $\varepsilon$-Regeln der Form V \Rightarrow \varepsilon für Variablen V.

Passen Sie die Grammatik G_{\text{Tags}} so an (ohne die erzeugte Sprache zu ändern), dass G_{\text{Tags}} weiterhin kontextfrei ist und S \Rightarrow \varepsilon die einzige $\varepsilon$-Regel ist.
Hinweis: Es reicht, das Vorgehen zu beschreiben. Eine vollständige Neudefinition der Grammatik ist nicht notwendig (aber erlaubt).

S zu S → S' | ε ändern, wobei S' eine neue Variable ist, die alle Regeln von S außer der Regel S \Rightarrow \varepsilon enthält.
In den restlichen Regeln das ε durch ein S' ersetzen, sodass die Regeln nur noch auf S' enden. Dadurch können beliebig viele Elemente hinzugefügt werden, ohne dass die Grammatik ihre kontextfreie Eigenschaft verliert und S → ε ist die einzige ε-Regel.

Übung 4

Vergleichen Sie die Definition von regulären Grammatiken aus den Vorlesungsfolien (Definition 5.5) mit der Definition von rechtslinearen Grammatiken aus dem Skript (Definitionen 3.6 und 3.7), indem Sie folgende Fragen beantworten:

4(a)

Beschreiben Sie in eigenen Worten, worin sich beide Definitionen unterscheiden.

Eine reguläre Grammatik erlaubt Produktionen der Form:

  • rechtslinear: A→aB oder A→a
  • linkslinear: A→Ba oder A→a
  • Oder eine Kombination aus beiden also: entweder links- oder rechtslinear, gemischt erlaubt.

Eine rechtslineare Grammatik erlaubt nur Produktionen der Form:

  • A→aB oder A→aA
  • d.h. Nichtterminale dürfen nur ganz rechts stehen, es ist keine Mischung oder Linkslinearität erlaubt.

4(b)

Geben Sie eine Grammatik an, die nach diesen Definitionen regulär, aber nicht rechtslinear ist.

S → aS | Sb | ε

4(c) (Diskussionsaufgabe für die Präsenzübung)

Bereiten Sie diese Aufgabe vor, indem Sie in Ihrer Abgabegruppe darüber diskutieren.
Sie müssen für diese Teilaufgabe keine schriftliche Lösung abgeben (machen Sie sich aber ruhig Notizen für die Diskussion in der Präsenzübung).

Betrachten Sie die Definition einer regulären Sprache (Definition 5.10) und die Definition einer rechtslinearen Sprache (Definition 3.8):

  • (i) Erklären Sie, warum jede rechtslineare Sprache auch regulär ist.
    • Struktur entspricht Übergangsfunktion eines endlichen Automaten, daher ist jede rechtslineare Sprache auch regulär.
    • Man kann einen äquivalenten DEA konstruieren, der die gleiche Sprache akzeptiert.
  • (ii) Erklären Sie, warum jede reguläre Sprache auch rechtslinear ist.
    • Jede reguläre Sprache wird von einem DEA akzeptiert
    • Zu jedem DEA kann man eine rechtslineare Grammatik konstruieren
      • Zustände = Nichtterminale
      • Übergänge = Produktionen der Form A → aB
      • Akzeptierende Zustände = Produktionen der Form A → a oder A → ε

Übung 5

Betrachten Sie folgende Grammatik:


G: \quad S \Rightarrow ABS \mid ACS \mid \varepsilon \\
AB \Rightarrow BA,\quad AC \Rightarrow CA,\quad BC \Rightarrow CB \\
A \Rightarrow a,\quad B \Rightarrow b,\quad C \Rightarrow c

5(a)

Leiten Sie nachvollziehbar die Wörter

w_1 = abac,\quad w_2 = cbaa,\quad w_3 = baba,\quad w_4 = bbbaaaac

ab.

  • abac
    • S → ABS → ABACS → ABAC → aBAC → abAC → abaC → abac
  • cbaa
    • S → ACS → ACABS → ACAB → CAAB → CABA → CBAA → cBAA → cbAA → cbaA → cbaa
  • baba
    • S → ABS → ABABS → ABAB → BAAB → BABA → bABA → baBA → babA → baba
  • bbbaaaac
    • S → ABS → ABABS → ABABABS → ABABABACS → ABABABAC → ABABBAAC → ABBABAAC → ABBBAAAC → BABBAAAC → BBABAAAC → BBBAAAAC → ... → bbbaaaac
      • ... = A → a, B → b, C → c

5(b)

Wie lautet die von G erzeugte Sprache L(G)?

Die von G erzeugte Sprache L(G) besteht aus Wörtern, die aus den Buchstaben a, b und c bestehen und in denen die Buchstaben in beliebiger Reihenfolge angeordnet sind, solange die Anzahl der Buchstaben a = b + c ist.

5(c)

Die gezeigte Grammatik ist nach der Definition aus der Vorlesung (siehe Folien) nicht kontextsensitiv. Erklären Sie weshalb.

Da auf der rechten Seite ebenfalls die Startvariable S vorkommt, ist die Grammatik nicht kontextsensitiv.

5(d) (Bonusaufgabe)

Wandeln Sie die Grammatik G in eine kontextsensitive Grammatik G' um, so dass L(G') = L(G) gilt.

Hinweis:
Überlegen Sie sich zunächst, welche Regeln die Kontextsensitivität verletzen.
Ersetzen Sie diese Regeln dann jeweils durch eine oder mehrere neue Regeln (ggf. mit neuen Variablen), die kontextsensitiv sind und denselben Effekt erzielen.