Einleitung

Beispiel 1

Inhalt von Beispiel 1

Beispiel 2

Inhalt von Beispiel 2

Beispiel 3

Inhalt Beispiel 3

Überblick über Anwendungen AFS

Historische Einordnung und Warnung

Systematische Einordnung

Literatur

Organisation

Wiederholung: Wörter

W.: Operationen und Relationen auf Wörtern

W.: Sprachen, Sprach-Operationen

Aufgaben

Für KW 15: Aufgaben 2, 3, 4

  1. Hasse-Diagramme für: \(\operatorname{\le_P},\operatorname{\le_I},\operatorname{\le_S}\) auf \(\{a,b\}^{\le 3}\).

  2. für die Sprachen: \(A=\{a\}^*, B=\{b\}^*,C=\{a,b\}^*\):

    und die Sprachen: \(A\cdot B, B\cdot A,A\cdot C, C\cdot A,\)

    \(A\cup B, A\cap B, C\setminus A, A\setminus C\), Zusatz: \((C\setminus A)\cdot(C\setminus B)\)

    das Hasse-Diagramm für die Teilmengen-Relation.

    Bsp: \(\forall u\in A: u\in C\), also \(A\subseteq C\).

    Bsp: \(ab\in C, ab\notin A,\) also \(C\not\subseteq A\).

  3. \(R\) bezeichnet die Relation \((\operatorname{\le_P})\cup(\operatorname{\le_S})\) auf \(\{a,b\}^*\)

    Bsp: \((ba,aba)\in R\), denn \(ba\operatorname{\le_S}aba\).  Bsp: \((ab,aba)\in R\).

    Ist \(R\) reflexiv? symmetrisch? antisymmetrisch? transitiv?

  4. Hasse-Diagramm für die Teilmengen-Relation auf den Relationen

    \(\operatorname{\le_P},\, \operatorname{\le_I},\, \operatorname{\le_S},\, \operatorname{\le_P}\circ \operatorname{\le_I},\, \operatorname{\le_I}\circ\operatorname{\le_P},\, \operatorname{\le_P}\circ\operatorname{\le_S},\, \operatorname{\le_S}\circ \operatorname{\le_P},\, =\)

    Bsp: \(\forall u, v: u\operatorname{\le_P}v\Rightarrow u\operatorname{\le_I}v\), also \((\operatorname{\le_P})\subseteq (\operatorname{\le_I})\).

    Bsp: \(b\operatorname{\le_I}aba, \neg(b\operatorname{\le_P}aba)\), also \((\operatorname{\le_I})\not\subseteq(\operatorname{\le_P})\).

Reguläre Ausdrücke

W: Operationen auf Sprachen

Monotonie-Eigenschaften der Verkettung

Eigenschaften der Stern-Operation

Abschluß-Eigensch. der Stern-Operation

Reguläre Ausdrücke (Syntax)

Reguläre Ausdrücke (Semantik)

Semantik reg. Ausdrücke (Erläuterung)

Semantik reg. Ausdrücke: Beweisbäume

Eindeutige reguläre Ausdrücke

Repräsentation von Mengen von Wörtern

Naive Realisierung der Semantik reg. Ausdr.

Semantik der Verkettung

Semantik der iterierten Verkettung (Ansatz)

Semantik der iterierten Verkettung (Lösung)

Zusatz: Sternhöhe

Z: Erweiterte reg. Ausdrücke u. Sternhöhe

Beispiel-Lösung einer Aufgabe

Aufgaben

SS 23: Aufgaben 1, 2, 3, 4, 5

  1. geben Sie einen regulären Ausdruck an für die Menge der Binärdarstellungen aller natürlichen Zahlen, die durch vier teilbar sind.

    das gleiche für: …durch drei teilbar sind.

    Darstellung ohne führende Nullen, Darstellung der 0 ist \(\epsilon\).

  2. Implementieren und testen Sie die Funktionen

    1. f :: RX sigma -> Bool

      mit \(f(X) \iff \epsilon\in\operatorname{\textsf{Lang}}(X)\).

      Direkte rekursive Implementierung! Eine indirekte Implementierung ist f x = lang x []. Eine direkte Implementierung kann durch Spezialisierung der Implementierung von lang erhalten werden.

    2. g :: RX sigma -> Bool

      mit \(g(X) \iff \operatorname{\textsf{Lang}}(X)\) ist leer.

    3. h :: RX sigma -> Bool

      mit \(h(X) \iff \operatorname{\textsf{Lang}}(X)\) ist unendlich.

  3. welche Ausdrücke sind mehrdeutig?

    \(ab^*+a^*bba^*\), \((a b^*)^*\), \((a b^*)^*(a^* b)^*\)

    einen äquivalenten eindeutigen Ausdruck für \((a+b)^*aa(a+b)^*\)

  4. Zu Folie Semantik der iterierten Verkettung (Lösung)

    1. Beweise Sie \(A^*=\{\epsilon\}\cup (A\setminus\{\epsilon\})\cdot A^*\)

    2. vervollständigen Sie und bestätigen Sie damit Termination der Rechnung star eps [0] => ...

    3. wie teuer ist die Auswertung von \(ba^k\in\operatorname{\textsf{Lang}}((a + b)^* b (a+b)^k)\) in der angegebenen Implementierung?

      Das heißt: eine Repräsentation x des regulären Ausdrucks für (z.B.) \(k=4\) in ghci schreiben, dann die Funktion lang x [1,0,0,0,0] auswerten. Für Zeit- und Platz-Messung vorher :set +s ausführen. Dann \(k\) ändern und diskutieren.

  5. für alle Sprachen \(A,B\) gilt: \((AB)^* = \{\epsilon\} \cup A(BA)^*B\)

  6. Die Sprache \((ab)^*\) hat erweiterte Sternhöhe 0.

Deterministische endliche Automaten

Motivation, Beispiel

Definition (Syntax)

Definition (Semantik)

Funktionale Modellierung

Beispiele (1)

Beispiele (2)

Ein Nicht-Beispiel

Algor. f. Eigenschaften von DFA-Sprachen

Korrektheit des Algor. für \(\operatorname{\textsf{Lang}}(A)=\emptyset\)

Komplement einer DFA-Sprache

Synchrone DFAs (Kreuzprodukt-Konstruktion)

Implementierung d. Kreuzprodukt-K.

Ausblick: Verkettung und Stern für DFA

Anwendung des Booleschen Abschlusses

Zusatz: synchronisierende Wörter

Hausaufgaben

Schwerpunkte: 1–3 (Präsentation der anderen Aufgaben nur, soweit Zeit ist, evtl. auch in folgenden Wochen)

  1. geben Sie einen DFA \(A\) an für die Menge der Binärdarstellungen aller natürlichen Zahlen, die durch drei teilbar sind.

    MSB (most significant bit) links, führende Nullen sind erlaubt.

    Für den Automaten \(A=(\{0,1\},Q,i,F,\delta)\) soll gelten:

    • \(Q\) repräsentiert die Restklassen nach dem Modul 3,

    • \(\forall w\in \{0,1\}^*:\delta^*(i,w)\) ist die Restklasse von \(w\) (dem Zahlenwert der Binärzahl) nach dem Modul 3.

    Dadurch sind \(Q, i, F, \delta\) eindeutig bestimmt.

  2. Geben Sie einen möglichst kleinen DFA an für:

    1. \(\{001, 0101, 10101\}\)

    2. \(\{w: w\in\{0,1\}^5 \wedge |w|_1=3\}\).

    Beweisen Sie, daß jede endliche Sprache durch einen DFA dargestellt werden kann. (Bauen Sie hierfür nicht einen kleinsten DFA, sondern einen kurzen Beweis.)

  3. Wie muß die Menge \(F\) in der Kreuzprodukt-Konstruktion gewählt werden, um die symmetrische Differenz der Sprachen \(\operatorname{\textsf{Lang}}(A_1), \operatorname{\textsf{Lang}}(A_2)\) zu erhalten?

    Wenden Sie die Konstruktion an für die Automaten (mit jeweils zwei Zuständen) über \(\Sigma=\{a,b\}\)

    für \(\operatorname{\textsf{Lang}}(A_1)=\{w : |w|_a\equiv 0\pmod 2\}\)

    und \(\operatorname{\textsf{Lang}}(A_2)=\{w : |w|_b\equiv 0\pmod 2\}\).

    Überprüfen Sie mit der funktionalen Implementierung.

  4. Geben Sie (kleine) DFAs \(A_1,A_2\) für jeweils unendliche Sprachen an, für die \(\operatorname{\textsf{Lang}}(A_1)\cap\operatorname{\textsf{Lang}}(A_2)=\emptyset\) gilt.

    Diskutieren Sie Erreichbarkeit und Produktivität im Kreuzprodukt-Automaten.

  5. Beweisen Sie: für \(A=(\Sigma,Q,i,F,\delta)\) gilt:

    \(\operatorname{\textsf{Lang}}(A)\) ist unendlich \(\iff \exists w\in\operatorname{\textsf{Lang}}(A):|Q| \le |w|\).

    Geben Sie ein (nur von \(|Q|\) abhängige) Zahl \(B\) an mit:

    \(\operatorname{\textsf{Lang}}(A)\) ist unendlich \(\iff \exists w\in\operatorname{\textsf{Lang}}(A):|Q| \le |w|\le B\).

  6. Zeigen Sie, daß die Sprache aller Dezimaldarstellungen von Quadratzahlen keine DFA-Sprache ist.

    Hinweis: indirekter Beweis. Bilden Sie den Durchschnitt mit einer geeigneten (sehr einfachen) DFA-Sprache. Es genügt, Ziffern \(0,1,2\) zu verwenden (aber davon viele)

  7. Synchronisierende Wörter, Cerny-Vermutung: Rechnen Sie Beispiele aus angegebener Quelle (J. E. Pin 2012) nach, auch H. Zantema (LATA 2017)

Nichtdeterministische Automaten

Motivation, Beispiel

Definition NFA (Syntax)

Diskussion NFA (Syntax)

Definition NFA (Semantik)

Beispiele, Ausblick

Anwendung: disjunkte Vereinigung für NFA

Eigensch. von NFA-Sprachen, Reduzierte NFA

Das Wortproblem für NFA (Motivation)

Menge \(=\) Vektor, Relation \(=\) Matrix

Das Wortproblem für NFA (Algorithmus)

NFA zu äquivalentem DFA (Algorithmus)

NFA zu äquivalentem DFA (Beispiel)

Vergleich von DFA und NFA

Sprach-Äquivalenz von DFA und NFA

Ausblick: Vergleich von (DFA,) NFA und REG

Zusatz: Die Shuffle-Operation

Aufgaben

  1. Für NFA \(A=(\Sigma,Q,Q,Q,\delta)\) mit \(\Sigma=\{a,b\}\), \(Q=\{1,2,3\},\) \(\delta(a)=\{(1,2),(2,3),(3,1)\}, \delta(b)=\{(1,1),(1,3),(3,3)\}\):

    geben Sie ein Wort \(w\in\Sigma^*\setminus\operatorname{\textsf{Lang}}(A)\) an.

    Berechnen Sie \(\delta^*(w)\) als Boolesche Matrix. Rechnen Sie effizient! Nicht von links nach rechts multiplizieren, sondern wiederholte Teilwörter ausnutzen.

  2. Für \(A\) aus der vorigen Aufgabe: führen Sie die Potenzmengenkonstruktion vor.

    Wenden Sie die Potenzmengenkonstruktion auf einen DFA an (konkretes Beispiel, allgemeine Aussage)

  3. Für gegebene NFAs \(A_1=(\Sigma,Q_1,I_1,F_1,\delta_1)\), \(A_2=(\Sigma,Q_2,I_2,F_2,\delta_2)\): Konstruieren Sie den Kreuzprodukt-NFA \(A=(\Sigma,Q_1\times Q_2,I_1\times I_2,F,\delta)\), der synchrone Rechnungen in \(A_1\) und \(A_2\) realisiert.

    Geben Sie \(\delta\) allgemein an, illustrieren Sie durch

    \(A_1=\begin{tikzpicture} [node distance=2cm ,baseline=-4mm , thick % ,auto ,initial/.style={initial by arrow, initial text=,initial where=left,initial distance=1cm} ,accepting/.style={accepting by arrow,accepting where=right,accepting distance =1cm} , >={Stealth[length=7mm]} ,state/.style={circle,draw} ] % \node[state,initial] (q_0) {$q_0$}; \node[state,accepting,right=of q_0] (q_1) {$q_1$}; \path[->] (q_0) edge [loop above] node {$a$} (q_0) edge [] node {$a,b$} (q_1) ; \end{tikzpicture}\), \(A_2\begin{tikzpicture} [node distance=2cm ,baseline=-4mm , thick % ,auto ,initial/.style={initial by arrow, initial text=,initial where=left,initial distance=1cm} ,accepting/.style={accepting by arrow,accepting where=right,accepting distance =1cm} , >={Stealth[length=7mm]} ,state/.style={circle,draw} ] % \node[state,initial] (q_2) {$q_2$}; \node[state,accepting,right=of q_2] (q_3) {$q_3$}; \path[->] (q_2) edge [loop above] node {$a,b$} (q_2) edge [] node {$b$} (q_3) (q_3) edge [loop above] node {$a,b$} (q_3) ; \end{tikzpicture}\),

    Kann man damit durch geeignete Wahl von \(F\) ausrechnen: Vereinigung? Durchschnitt? Differenz?

    Überprüfen Sie im Beispiel. Diskutieren Sie Allgemeingültigkeit.

  4. Gegeben sind NFAs \(A_1=(\Sigma,Q_1,I_1,F_1,\delta_1)\), \(A_2=(\Sigma,Q_2,I_2,F_2,\delta_2)\).

    Konstruieren Sie NFA \(A=(\Sigma,Q_1\times Q_2,?,?,?)\) mit \(\operatorname{\textsf{Lang}}(A)=\operatorname{\textsf{Lang}}(A_1)\sha\operatorname{\textsf{Lang}}(A_2)\).

    Begründen Sie die Korrektheit mit Bezug auf die Definition (die rot/blau-Färbung der Wörter: wie sieht man die im Automaten?)

    Wenden Sie am Beispiel \((aa)^*\sha (bb)^*\) an. Überprüfen Sie mit Autotool-Aufgabe 17-2.

    Wieviele Elemente sind in \(a^i \sha b^k\)?

NFA und Reguläre Ausdrücke

NFA mit spontanen Übergängen (Motiv.)

NFA mit spontanen Übergängen (Def. ENFA)

Vereinigung und Verkettung für ENFA

Stern für ENFA? Ansatz

Stern für ENFA: Lösung

Von ENFA zu NFA (Epsilons entfernen)

Vergleich von DFA, NFA, ENFA

Vergleich von NFA und REG (Ansatz)

REG zu NFA (Beispiel)

NFA zu REG: Motivation

NFA zu REG: Algorithmus

NFA zu REG: Beispiel

Vergleich von NFA und REG (Resultat)

Aufgaben

  1. drei Algorithmen zur Bestimmung von \(\sigma^*\).

    Führen Sie jeweils vor für diesen Graphen und diskutieren Sie Korrektheit und Kosten (abhängig von \(|Q|\)) im allgemeinen.

    1. Berechne \(S_0=\textsf{Id}_Q\), \(S_{k+1}=S_k\cup S_k\circ\sigma\), bis \(S_{k+1}=S_k\). Wieviele Schritte höchstens bis dahin?

    2. Berechne \(T_0=\textsf{Id}_Q\), \(T_{k+1}=T_k^2\cup \sigma\). Wieviele Schritte höchstens? (Beziehung zw. \(T_i\) und passendem \(S_k\)?)

    3. Für jedes \(q\in Q\) eine Tiefensuche im Graphen \(\sigma\), um \(\sigma^*(q)\) zu bestimmen.

  2. Konstruieren Sie einen äquivalenten regulären Ausdruck für nach angegebenem Verfahren

    • mit Zustands-Reihenfolge \(1<2\),

    • mit Zustands-Reihenfolge \(2<1\).

    Durch welche Umformungsregeln kann die Sprach-Äquivalenz der Ausdrücke bewiesen werden?

  3. Zusatz: Auf Folie NFA zu REG: Beispiel wurden Vereinfachungen benutzt, z.B. \(L_2(1,2)=L_1(1,2)\cup L_1(1,2) L_1(2,2)^* L_1(2,2) =L_1(1,2)\cdot (\epsilon+ L_1(2,2)^+) = L_1(1,2) L_1(2,2)^*\), welche noch? verallgemeinern Sie das zu einer (in einigen Fällen) verbesserten Vorschrift zur Berechnung von \(L_{h+1}(p,q)\).

    Ergänzen Sie die Implementierung (im Quelltext-Repo zur Vorlesung), testen Sie Korrekheit, bewerten Sie die erzielte Einsparung.

Minimale DFA

Motivation

Die Nerode-Kongruenz einer Sprache

Eigenschaften der Nerode-Kongruenz

Der Äquivalenzklassen-Automat

Nerode-Kongruenz und DFA

Konstruktion des minimalen DFA

Konstruktion des minimalen DFA: Beispiel

Aufgaben

  1. (die einfache erste Aufgabe: Selbst-Test, ohne Punkt) Kann ein DFA eine leere Zustandsmenge haben? (Nein.) Ein NFA? (Ja.) Was ist die Sprache des leeren NFA? Geben Sie die Nerode-Kongruenz dieser Sprache an. Wenden Sie die Potenzmengenkonstruktion auf einen leeren NFA an. Überprüfen Sie die Sprach-Äquivalenz. Minimieren Sie den erhaltenen DFA nach dem Verfahren aus der Vorlesung.

  2. Für diesen NFA (\(0\) ist initial und final) den erreichbaren Teil des Potenzmengenautomaten bestimmen und dann minimieren:

  3. Beschreiben Sie die Nerode-Äquivalenzklassen der Sprachen

    1. \(L=\{a^{2\cdot k}\mid k\in\mathbb{N}\}\) über \(\Sigma=\{a\}\)

    2. \(L=\{a^{k^2}\mid k\in\mathbb{N}\}\) über \(\Sigma=\{a\}\)

    3. \(L=\{a^i b^j\mid i\neq j\}\) über \(\Sigma=\{a,b\}\)

    Geben Sie Beispiele (falls existieren) für

    • \(u\sim_L v\), \(u\not\sim_L v\);

    • für eine endliche \(\sim_L\)-Klasse, für eine unendliche;

    • Gibt es unendlich viele \(\sim_L\)-Klassen?

    Zusatz: eine Sprache \(L\) über Alphabet \(\{a,b\}\) angeben, für die jede \(\sim_L\)-Klasse endlich ist.

  4. Zusatz: Führen Sie die folgende Konstruktion für einen kleinen NFA \(A\) (eines der Beispiele von den Folien oder eine Instanz Ihrer autotool-Aufgabe) vor:

    \(A=A_0 \stackrel{\textsf{Spiegelbild}}{\longrightarrow} A_1 \stackrel{\textsf{Err. Pot.}}{\longrightarrow} A_2 \stackrel{\textsf{Spiegelbild}}{\longrightarrow} A_3 \stackrel{\textsf{Err. Pot.}}{\longrightarrow} A_4\)

    (Err.Pot.: der erreichbare Teil d. Potenzmengenaut.)

    Das Spiegelbild \(A^R\) eines NFA \(A\) erhält man durch Umkehren aller Pfeile und Vertauschen von \(I\) mit \(F\). Damit gilt \(\operatorname{\textsf{Lang}}(A^R)=\operatorname{\textsf{Lang}}(A)^R\), wobei das Spiegelbild einer Sprache \(L^R=\{w^R\mid w\in L\}\) und das Spiegelbild eines Wortes \([w_1,w_2,\ldots,w_n]^R= [w_n,\ldots,w_2,w_1]\).

    Begründen Sie \(\operatorname{\textsf{Lang}}(A_0)=\operatorname{\textsf{Lang}}(A_4)\).

    Nach Konstruktion ist \(A_4\) ein DFA. Ein Satz von Brzozowski besagt: \(A_4\) ist sogar minimal. Überprüfen Sie an Ihrem Beispiel.

Schleifensatz zum Nachweis der Nicht-Regularität

Motivation

Schleifensatz: Idee

Der Schleifensatz: Aussage und Beweis

Der Schleifensatz: Beispiele

Pumpen im Weltraum: die Shadoks

Kontraposition des Schleifensatzes

Schleifensatz ist keine Äquivalenz

Aufgaben

  1. Geben Sie ein Beispiel an für reduzierte NFA \(A_1,A_2\) mit 3 Zuständen und \(\operatorname{\textsf{Lang}}(A_1)\) endlich, \(\operatorname{\textsf{Lang}}(A_2)\) unendlich.

    Beweisen Sie: wenn ein NFA \(A=(\Sigma,Q,I,F,\delta)\) mit \(n\) Zuständen ein Wort der Länge \(\ge n\) akzeptiert, dann ist \(\operatorname{\textsf{Lang}}(A)\) unendlich. (Hinweis: Schleifensatz, aufpumpen)

    Geben Sie ein Verfahren an, mit dem diese Eigenschaft effizient überprüft werden kann. Nehmen Sie dazu an, daß \(A\) reduziert ist. Auf welche Eigenschaft der Vereinigung der Übergangsrelationen \(R=\bigcup_{a\in\Sigma}\delta(a)\) kommt es an? Wo wird die Reduziertheit benutzt?

  2. Zeigen Sie, daß folgende Sprachen \(L\) die Eigenschaft \(\exists n:\operatorname{\mathsf{Pump}}(L,n)\) nicht erfüllen:

    1. \(\{a^kb^{2k}\mid k\in\mathbb{N}\}\)

    2. \(\{a^kba^{k}\mid k\in\mathbb{N}\}\)

    3. \(\{a^xb^yc^{x+y}\mid x,y\in\mathbb{N}\}\)

  3. Für die Sprache \(L=\{a^xb^yc^{x+y}\mid x,y\in\mathbb{N}\}\): sind die folgenden Sprachen regulär?

    1. \(L\cap a^*b^*\)

    2. \(L\cap b^*c^*\)

Abschluß von REG unter Morphismen

Wdhlg/Motivation Abschluß-Eigenschaften

Morphismen von Sprachen

Abschluß von REG unter Morphismem

Zus.: Abschluß unter inversen Morphismem

Aufgaben

SS23: Aufgaben 2, 3, 4

  1. Für die Sprache \(L=\{a^xb^yc^{x+y}\mid x,y\in\mathbb{N}\}\): sind die folgenden Sprachen regulär?

    1. \(\phi(L)\) für \(\phi=\{(a,0),(b,\epsilon),(c,0)\}\)

    2. \(\phi(L)\) für \(\phi=\{(a,0),(b,1),(c,\epsilon)\}\)

  2. gilt für alle Morphismen \(h\) und Sprachen \(L_1,L_2\):

    1. \(h(L_1\cup L_2)=h(L_1)\cup h(L_2)\)?

    2. \(h(L_1\cap L_2)=h(L_1)\cap h(L_2)\)?

    3. \(h(L_1\setminus L_2)=h(L_1)\setminus h(L_2)\)?

    4. \(h(L_1\cdot L_2)=h(L_1)\cdot h(L_2)\)?

    Wenn ja, Beweis; wenn nein, Gegenbeisp. mit \(L_i\in \mathsf{REG}\).

  3. Beweisen Sie: wenn ein DFA \(A\) mit \(n\) Zuständen alle Wörter der Länge \(<n\) akzeptiert, dann ist \(\operatorname{\textsf{Lang}}(A)=\Sigma^*\).

    Hinweis: führen Sie einen indirekten Beweis: wenn ein längeres Wort \(w\notin\operatorname{\textsf{Lang}}(A)\), dann konstruieren Sie daraus einen Widerspruch zur Annahme.

    Warum funktioniert dieser Beweis nicht für NFA?

    Gibt es NFA, für welche die Aussage nicht gilt?

    Mit welcher (von \(n\) abhängigen) Schranke gilt eine entsprechende Aussage für NFA?

    Läßt sich diese Schranke realisieren?

  4. Welche der folgenden Aussagen gelten für alle Sprachen \(L\subseteq \Sigma^*\) und alle Morphismen \(\phi:\Sigma^*\to\Gamma^*\)?

    1. \(\phi^{-1}(\phi(L))= L\)

    2. \(\phi^{-1}(\phi(L))\subseteq L\)

    3. \(\phi^{-1}(\phi(L))\supseteq L\)

    Welche der folgenden Aussagen gelten für alle Sprachen \(L\subseteq \Gamma^*\) und alle Morphismen \(\phi:\Sigma^*\to\Gamma^*\)?

    1. \(\phi(\phi^{-1}(L))= L\)

    2. \(\phi(\phi^{-1}(L))\supseteq L\)

    3. \(\phi(\phi^{-1}(L))\subseteq L\)

    Wenn ja, Beweis; wenn nein, Gegenbeispiel mit \(L\in \mathsf{REG}\).

  5. Geben Sie eine Abbildung \(\phi:\Sigma^*\to\Gamma^*\) an mit \(\phi(\epsilon)=\epsilon\wedge\neg\forall u,v\in\Sigma^*:\phi(u\cdot v)=\phi(u)\cdot\phi(v)\).

    Gibt es eine Abb. \(\phi:\Sigma^*\to\Gamma^*\) mit \(\phi(\epsilon)\neq \epsilon\wedge\forall u,v\in\Sigma^*:\phi(u\cdot v)=\phi(u)\cdot\phi(v)\)?

Hinweise zur Notation

Anwendung NFA: Spursprachen

Motivation

Beispiel

Syntax und Semantik imperativer Programme

Endliche Abstraktion der Zustandsmenge

Abstraktion der Programm-Ausführung

Spursprachen—Details

Kontextfreie Grammatiken

Motivation, Beispiel

Definition kontextfreie Grammatik

Ableitungsbäume

Eine Charakterisierung der Dyck-Sprache

\(\operatorname{\textsf{Lang}}(G)\subseteq D\)

\(D\subseteq \operatorname{\textsf{Lang}}(G)\)

\(\mathsf{REG}\subseteq\mathsf{CFL}\)

Reguläre Grammatiken

\(\mathsf{CFL}\not\subseteq\mathsf{REG}\)

Eindeutige GFG

Eine nicht offensichtliche CFL

Zusatz: Potenzen und primitive Wörter

Aufgaben

SS 23: 1 bis 4, Zusatz: 5

  1. Geben Sie eine CFG an für \(\{a^x b^y c^{x+y}\mid x,y\in\mathbb{N}\}\)

  2. Geben Sie eine CFG an für \(\{a^x b^y\mid x\neq y\}\).

    Geben Sie eine CFG an für \(\{a,b\}^*\setminus \{a^x b^x\mid x\in\mathbb{N}\}\).

  3. Für \(\Sigma=\{a,b\}\), \(E=\{w\mid w\in\Sigma^*\wedge h(w)=0\}\),

    \(G=(\Sigma,\{S\},S,\{(S,\epsilon),(S,aSbS),(S,bSaS)\})\)

    • zeigen Sie \(\operatorname{\textsf{Lang}}(G)\subseteq E\)

    • gilt \(E\subseteq\operatorname{\textsf{Lang}}(G)\)?

    • ist \(G\) eindeutig?

  4. Wenn die Konstruktion für \(\mathsf{REG}\subseteq\mathsf{CFL}\) auf einen DFA angewendet wird: ensteht dadurch eine eindeutige Grammatik?

    Wenn bei dieser Konstruktion eine eindeutige Grammatik ensteht: war die Eingabe ein DFA?

    jeweils Beispiel angeben, Verallgemeinerung diskutieren.

  5. Potenzen und primitive Wörter:

    1. zeigen Sie \(L_2\notin\mathsf{REG}\) (Schnitt mit geeigneter regulärer Sprache, dann Schleifensatz)

    2. geben Sie eine CFG für \(\Sigma^*\setminus L_3\) an.

    3. beweisen Sie \(P\notin \mathsf{REG}\). (Beweis durch Autorität: wenn \(P\in\mathsf{REG}\), dann wegen \(\mathsf{REG}\subseteq\mathsf{CFL}\) auch \(P\in\mathsf{CFL}\), und dann wäre diese Frage nicht offen)

Normalformen CFG, Wortproblem

Erreichbar, produktiv, reduziert, leer

Reduktion

Epsilon-Freiheit

Kettenregeln

Chomsky-Normalform

Das Wortproblem für CFG

Der CYK-Algorithmus für CFG-Wortproblem

Beispiel Chomsky-Nf, CYK-Algorithmus

Aufgaben

SS 23: 1, 2, 4, 6 (wenigstens a, b) , 8 (a, b), Zusatz: 7

  1. Geben Sie ein Verfahren an zur Berechnung der produktiven Variablen einer CFG. Führen Sie an einem Beispiel aus dem Skript oder einem selbst gewählten vor. Diskutieren sie seine Laufzeit.

    Geben Sie ein Beispiel an, für das durch dieses Verfahren:

    1. alle nicht erreichbaren Variablen löschen

    2. all (dann) nicht produktiven Variablen löschen

    keine reduzierte Grammatik entsteht.

  2. Für die Grammatik \(G=(\{a,b\},\{S\},S,\{(S,b),(S,aSS)\})\):

    geben Sie eine Chomsky-Normalform an.

    Entscheiden Sie \(ababb\stackrel{?}{\in} \operatorname{\textsf{Lang}}(G)\) und \(abbab \stackrel{?}{\in} \operatorname{\textsf{Lang}}(G)\) nach dem CYK-Algorithmus

  3. Wie hängen die Kosten für den CYK-Algorithmus von \(|\Sigma|,|V|,|R|\) ab? Geben Sie effiziente Datenstrukturen für die Berechnung der \(M_{i,j}\) an. Vergleichen Sie mit der Implementierung in autotool.

    Das angegebene CYK-Verfahren liefert den Wahrheitswert von \(w\in\operatorname{\textsf{Lang}}(G)\). Wie ist es zu erweitern, so daß ohne Mehrkosten auch ein Ableitungsbaum für \(w\) berechnet wird?

  4. Für die vorige Grammatik \(G=(\{a,b\},\{S\},S,\{(S,b),(S,aSS)\})\) und die Grammatik \(H=(\{a,b\},\{S\},S,\{(S,\epsilon),(S,aSbS)\})\) (für die Dyck-Sprache \(D\)): Überprüfen Sie \(\operatorname{\textsf{Lang}}(G)=\operatorname{\textsf{Lang}}(H)\cdot b\) an Beispielen. Beweisen Sie diese Beziehung, indem Sie ein Verfahren angeben, das aus jedem \(G\)-Ableitungsbaum \(k\) einen \(H\)-Ableitungsbaum \(k'\) konstruiert mit \(\mathsf{rand}(k)=\mathsf{rand}(k')\cdot b\), und umgekehrt.

  5. Für die Dyck-Sprache \(D\) gilt \(D=\phi(D)^R\), wenn \(\cdot^R\) das Spiegeln bezeichnet und \(\phi\) den Morphismus \(a\leftrightarrow b\). Wendet man \(\phi(\cdot)^R\) auf die Regeln der Grammatik \(H\) an, entsteht \(H'\) \(=\) \((\{a,b\},\{S\},S,\{(S,\epsilon),(S,SaSb)\})\).

    Zeigen Sie \(\operatorname{\textsf{Lang}}(H)=\operatorname{\textsf{Lang}}(H')\) durch Umformung von Ableitungsbäumen.

  6. Für eine endliche Menge \(V\): Wir betrachen die Sprache \(A(V)\) der vollständig geklammerten allgemeingültigen aussagenlogischen Formeln mit Operatoren: Negation (einstellig), Disjunktion (zweistellig), Konjunktion (zweist.) über den aussagenlogischen Variablen \(V\). Bsp: \(((p\vee q)\vee ((\neg p)\wedge(\neg q))) \in A(\{p,q\})\), \((p\vee q)\notin A(\{p,q\})\).

    Zeigen Sie: jedes \(A(V)\) ist kontextfrei. Hinweis: die Grammatik hat \(2^{2^{|V|}}\) Variablen, jede Variable bezeichnet einen Werteverlauf einer \(|V|\)-stelligen Booleschen Fkt.

    Beschreiben Sie die Regelmenge für die Fälle:

    (a) \(V=\emptyset\), (b) \(V=\{p\}\), (c) allgemein

  7. Geben Sie eine kontextfreie Grammatik an für das Komplement der Sprache \(\{(a^nb)^n\mid n\in \mathbb{N}\}\)

  8. Geben Sie einen Algorithmus an, der bei Eingabe einer Grammatik \(G=(\Sigma,V,S,R)\in\mathsf{CFG}\) für jede Variable \(v\in V\) entscheidet, ob die Sprache der aus \(v\) ableitbaren Wörter \(L_v=\operatorname{\textsf{Lang}}(G_v)\) mit \(G_v=(\Sigma,V,\{v\},R)\) die folgende Eigenschaft hat:

    1. \(L_v\neq\emptyset\) (das ist tatsächlich der Inhalt einer anderen Übungsaufgabe—welcher?)

    2. \(\epsilon\in L_v\)

    3. \((L_v\setminus\{\epsilon\})\neq\emptyset\)

    4. \(L_v\) ist endlich

    Welche Vereinfachungen sind möglich, wenn für die Eingabe vorausgesetzt wird:

    • \(G\) ist reduziert

    • \(G\) ist reduziert und in Chomsky-Normalform

(Nicht)Abschlußeigenschaft. von CFL

Einfache Fälle, Motivation

Einfache Fälle (Beispiel)

Schleifensatz für CFL (Plan)

Schleifensatz für CFL (Formulierung)

Schleifensatz für CFL (Hilfssatz)

Schleifensatz für CFL (Beweis)

Schleifensatz für CFL (Anwendung)

Schleifensatz für CFL (Testfragen)

Schleifensatz für CFL (Anwendung 2)

Abschluß von CFL unter Schnitt mit REG

Abschluß CFL unter Schnitt mit REG, Bsp

Zusammenfassung REG/CFG, Ausblick

Aufgaben

SS 23: 2, 3, 5, evtl: 4, 6

  1. beweisen Sie den Abschluß von CFL unter Vereinigung und Stern (konstruieren Sie die Grammatiken, jeweils Beispiel und allgemein)

  2. für \(L=\{a^xb^ya^xb^y\mid x,y\in\mathbb{N}\}\) gilt \(\neg\operatorname{\mathsf{Pump}}_\mathsf{CFL}(L\)).

  3. Für die Sprach-Operation \(L_1\odot L_2:=\{w_1\odot w_2\mid w_1\in L_1\wedge w_2\in L_2 \wedge |w_1|=|w_2|\}\) Geben Sie jeweils ein Beispiel an für

    1. \(L_1\in\mathsf{REG},L_2\in\mathsf{REG},L_1\odot L_2\in\mathsf{REG}\)

    2. \(L_1\in\mathsf{REG},L_2\in\mathsf{REG},L_1\odot L_2\notin\mathsf{REG}\)

    3. \(L_1\in\mathsf{CFL},L_2\in\mathsf{CFL},L_1\odot L_2\notin\mathsf{CFL}\)

    Zeigen Sie \(L_1\in\mathsf{REG}\wedge L_2\in\mathsf{REG}\Rightarrow L_1\odot L_2\in\mathsf{CFL}\).

  4. Die Syntax der Sprache Java ist durch eine kontextfreie Grammatik definiert (Java Language Specification, Chapter 19, https://docs.oracle.com/javase/specs/jls/se20/html/jls-19.html)

    • wie lautet das Startsymbol (aus dem man das übliche Hello-World-Programme ableiten kann)?

    • enthält diese Grammatik: Epsilon-Regeln, Ketten-R.?

    • Wie kann man das Hello-World-Programm pumpen? Geben Sie ein möglichst großes Programm an, das man nicht pumpen kann.

    Beachten Sie: hier geht es um die Menge der syntaktisch korrekten Programme. Die Menge der semantisch korrekten (d.h., syntaktisch korrekten und richtig typisierten) Programme ist nicht kontextfrei.

  5. Konstruieren Sie eine CFG für den Durchschnitt von

    • \(L_1=\) Dyck-Sprache, repräsentiert durch CFG \(G=(\{a,b\},\{S\},S,\{(S,\epsilon),(S,aSbS)\})\),

    • mit \(L_2=a^+b^*\), repräsentiert durch NFA

    nach dem angegebenen Algorithmus. — Hinweise:

    • zuerst das erwartete Resultat voraussagen: beschreiben Sie \(L_1\cap L_2\).

    • Bestimmen Sie allgemein \(|V'|\) und \(|R'|\) in Abhängigkeit von \(|\Sigma|,|V|, |R|, |Q|, \sum_a |\delta_a|\) (\(=\) Anzahl d. Kanten von \(A\))

  6. Zeigen Sie für \(L=\{a^ib^jc^kd^l\mid i=0\vee(j=k=l)\}\)

    • \(\operatorname{\mathsf{Pump}}_\mathsf{CFL}(L,1)\)

    • \(L\notin \mathsf{CFL}\), denn es gibt \(K\in\mathsf{REG}\) mit \(\neg\operatorname{\mathsf{Pump}}_\mathsf{CFL}(L\cap K)\).

Kellerautomaten

Motivation, Plan

Definition

Beispiel: PDA für Palindrome

CFG zu PDA

PDA zu CFG

Ausblick, Anwendung von PDA

Ausblick: Kombinator-Parser

Zusatz: Anwendung: Singleton CFGs

Singleton CFG: Beispiele

Singleton CFG: Konstruktion

Aufgaben

  1. einen PDA für \(\{a^x b^y c^{x+y}\mid x,y\in\mathbb{N}\}\) angeben

  2. die Konstruktion aus PDA zu CFG auf den PDA (mit 2 Zust.) für gerade Palindrome anwenden

  3. Kombinator-Parser für die Lukasiewicz-Sprache mit der Grammatik \(G=(\{a,b\},\{S\},S,\{(S,b),(S,aSS)\})\).

  4. die Palindrom-Eigenschaft der Wörter \(F_i\) beweisen

  5. beweise \(F_{i+1}=\phi(F_i)\) mit \(\phi:0\mapsto 1, 1\mapsto 01\)

  6. für das greedy-Verfahren für Singleton CFG:

    ein \(w\) angeben, für das keine optimale SCFG entsteht

    wie groß kann der Approximationsfehler werden?

Ausblick: Berechenbarkeit

Automaten mit RAM

Def. und Varianten der Berechenbarkeit

Invarianten der Berechenbarkeit (Interpreter)

Grenzen der Berechenbarkeit (Halteproblem)

Ein realistisches Maschinenmodell

TM, Konfigurationen, CFL

Historische und didaktische Einordnung

Zusammenfassung

REG und CFL

Die schönsten Aufgaben

Plan