Theoretische Grundlagen der Informatik – 10. Tutorium

Anmerkungen zum 4. Übungsblatt

Tagesthemen

Grammatiken

Eine Grammatik G ist ein 4-Tupel G = (T, V, S, P) bestehend aus

  1. einem Terminalalphabet T,
  2. einem dazu disjunkten Nichtterminalalphabet V,
  3. einem Startsymbol S \in V und
  4. einer endlichen Menge an Produktionen P \subset (V \cup T)^+ \times (V \cup T)^* (Diese Definition ist „mangelhaft“).

Reguläre Grammatiken

Sei G = (T, V, S, P) eine Grammatik. G heißt regulär genau dann wenn für alle (\alpha, \beta) \in P gilt, dass

Reguläre Grammatiken heißen auch Chomsky Typ-3 Grammatiken.

Reguläre Grammatiken

Reguläre Grammatiken erzeugen genau die …

… Sprachen.

Kontextfreie Grammatiken

Sei G=(T, V, S, P) eine Grammatik. G heißt kontextfrei genau dann wenn für alle (\alpha, \beta) \in P gilt, dass

Kontextfreie Grammatiken heißen auch Chomsky Typ-2 Grammatiken.

Kontextfreie Grammatiken

Kontextfreie Grammatiken erzeugen genau die …

… Sprachen.

Chomsky-Normalform

Sei G = (T, V, S, P) eine kontextfreie Grammatik. G ist in Chomsky-Normalform (CNF) genau dann wenn für alle (\alpha, \beta) \in P gilt, dass

Für jede kontextfreie Grammatik G_1 = (T, V_1, S_1, P_1) existiert eine kontextfreie Grammatik G_2 = (T, V_2, S_2, P_2) in Chomsky-Normalform, sodass L(G_1) = L(G_2).

Kontextfreie Grammatik in CNF überführen

  1. Falls (S, \epsilon) \in P: Neues Startsymbol S' einführen und neue Produktion S' \to S | \epsilon hinzunehmen.

  2. Terminale a in nicht-terminierenden rechten Seiten durch neue Nichtterminale X_a ersetzen und neue Produktionen X_a \to a hinzunehmen.

  3. Wiederholen bis nicht mehr anwendbar: A \to BCD ersetzen durch A \to Y_{BC}D und neue Produktion Y_{BC} \to BC hinzunehmen.

  4. \epsilon-Produktionen A \to \epsilon (für A \neq S) streichen und für L \to AR neue Produktion L\to{}R hinzunehmen.

  5. Kettenregeln A \to B streichen und für B \to w neue Produktion A \to w hinzunehmen.

Cocke-Younger-Kasami-Algorithmus

;; Eingabe:  Grammatik G = (T, V, S, P) in CNF und Wort w \in T^* mit |w| = n
;; Ausgabe:  Aussage ob w \in L(G)

FOR i := 1, ..., n DO
    table[i][1] := \emptyset
    FOREACH (l, r) \in P DO  ;; terminierende Produktion
        IF r = w[i] THEN
            table[i][1] := table[i][1] \cup { l }
        FI
    DONE
DONE
FOR j := 2, ..., n DO
    FOR i := 1, ..., n - j DO
        table[i][j] := \emptyset
        FOR k := 1, ..., j DO
            FOREACH (l, (r_1, r_2)) \in P DO  ;; nicht-terminierende Produktionen
                IF r_1 \in table[i][k] \land r_2 \in table[i + k][j - k] THEN
                    table[i][j] := table[i][j] \cup { l }
                FI
            DONE
        DONE
    DONE
DONE
RETURN S \in table[1][n]

Pumping-Lemma für kontextfreie Sprachen

Sei \Sigma ein Alphabet und L \subset \Sigma^* eine kontextfreie Sprache.

Dann existiert ein p \in \mathbb{N} sodass für alle w \in L mit |w| \geq p gilt: es existieren u, v, x, y, z \in \Sigma^*, sodass

  1. w = x uyvz,
  2. |uv| \geq 1,
  3. |uyv| \leq p und
  4. \forall i \in \mathbb{N}_0 : xu^iyv^iz \in L.

Kontsensitive Grammatiken

Sei G=(T,V,S,P) eine Grammatik. G heißt kontextsensitiv genau dann wenn für alle (\alpha, \beta) \in P gilt, dass

Kontextsensitive Grammatiken heißen auch Chomsky Typ-1 Grammatiken.

Kontextsensitive Grammatiken

Kontextsensitive Grammatiken erzeugen genau die …

… Sprachen.

Kontextsensitive Normalform

Sei G = (T, V, S, P) eine kontextsensitive Grammatik. G ist in Normalform genau dann wenn für alle (\alpha, \beta) \in P gilt, dass

Für jede kontextsensitive Grammatik G_1 = (T, V_1, S_1, P_1) existiert eine kontextsensitive Grammatik G_2 = (T, V_2, S_2, P_2) in Normalform, sodass L(G_1) = L(G_2).

Allgemeine Grammatiken

Sei G = (T, V, S, P) eine Grammatik. G heißt ohne weitere Einschränkungen allgemein.

Allgemeine Grammatiken heißen auch Chomsky Typ-0 Grammatiken.

Allgemeine Grammatiken

Allgemeine Grammatiken erzeugen genau die …

… Sprachen.

Chomsky-Hirachie

Typ-3
Reguläre Sprachen
Typ-2
Kontextfreie Sprachen
Typ-1
Kontextsensitive Sprachen
Typ-0
Rekursiv-aufzählbare Sprachen

Valid XHTML 1.0 Strict