Commit 6516cc10 authored by Niklas Rieken's avatar Niklas Rieken

nicified some files for fosap.de launch

parent 33e4ac73
No preview for this file type
......@@ -473,9 +473,9 @@ Wir bezeichnen die Inversen zu Einheiten \( a \) in der Regel mit \( a^{-1} \) o
\begin{lemma}
Ist \( (A, \bullet, e) \) Monoid, so ist \( (A^\times, \bullet, e) \) Gruppe (Einheitengruppe).
\begin{proof}
Per Definition ist jedes Element in \( A^\times \) eine Einheit. Außerdem ist \( e \) stets eine Einheit, da es invers zu sich selbst ist. Es bleibt zu zeigen, dass \( A^\times \) auch abgeschlossen ist unter der Operation \( \bullet \). Sei dazu \( a, b \in A^\times \) und \( a^\prime, b^\prime \) die jeweiligen Inversen. Wir zeigen das \( a \bullet b \) Einheit ist mit Inversem \( b^\prime \bullet a^\prime \):
Per Definition ist jedes Element in \( A^\times \) eine Einheit. Außerdem ist \( e \) stets eine Einheit, da es invers zu sich selbst ist. Es bleibt zu zeigen, dass \( A^\times \) auch abgeschlossen ist unter der Operation \( \bullet \). Sei dazu \( a, b \in A^\times \) und \( a^{-1}, b^{-1} \) die jeweiligen Inversen \( (\ast) \). Wir zeigen das \( a \bullet b \) Einheit ist mit Inversem \( b^{-1} \bullet a^{-1} \):
\[
(a \bullet b) \bullet (b^{-1} \bullet a^{-1}) = a \bullet (b \bullet b^{-1}) \bullet a^{-1} = a \bullet e \bullet a^{-1} = a \bullet a^{-1} = e. \qedhere
(a \bullet b) \bullet (b^{-1} \bullet a^{-1}) \overset{\text{(i)}}{=} a \bullet (b \bullet b^{-1}) \bullet a^{-1} \overset{(\ast)}{=} a \bullet e \bullet a^{-1} \overset{\text{(ii)}}{=} a \bullet a^{-1} \overset{(\ast)}{=} e. \qedhere
\]
\end{proof}
\end{lemma}
......@@ -1317,7 +1317,7 @@ Bisher haben wir Sprachen betrachtet, die sich von endlichen Automaten erkennen
\item Für jedes \( a \in \Sigma \) ist \( \bm{a} \) ein regulärer Ausdruck.
\item Falls \( r, r^\prime \) reguläre Ausdrücke sind, dann ist auch \( (r \bm{+} r^\prime) \) ein regulärer Ausdruck.
\item Falls \( r, r^\prime \) reguläre Ausdrücke sind, dann ist auch \( (r \bm{\cdot} r^\prime) \) ein regulärer Ausdruck.
\item Falls \( r \) reguläre Ausdrücke sind, dann ist auch \( (r) \overset{\bm{\ast}}{} \) ein regulärer Ausdruck.
\item Falls \( r \) reguläre Ausdrücke sind, dann ist auch \( r \overset{\bm{\ast}}{} \) ein regulärer Ausdruck.
\end{itemize}
Die \textit{Menge aller regulären Ausdrücke} über \( \Sigma \) bezeichnen mit \( \mathsf{RE}_\Sigma \).
\end{definition}
......@@ -1333,11 +1333,11 @@ Das ist bisher lediglich die Syntax der regulären Ausdrücke gewesen. Nun defin
\item \( \llbracket \bm{a} \rrbracket = \{ a \} \) für jedes \( \bm{a} \in \mathsf{RE}_\Sigma \),
\item \( \llbracket (r \bm{+} r^\prime) \rrbracket = \llbracket r \rrbracket \cup \llbracket r^\prime \rrbracket \),
\item \( \llbracket (r \bm{\cdot} r^\prime) \rrbracket = \llbracket r \rrbracket \cdot \llbracket r^\prime \rrbracket \),
\item \( \llbracket (r) \overset{\bm{\ast}}{} \rrbracket = \llbracket r \rrbracket^\ast \).
\item \( \llbracket r \overset{\bm{\ast}}{} \rrbracket = \llbracket r \rrbracket^\ast \).
\end{itemize}
Eine Sprache \( L \subseteq \Sigma^\ast \) heißt \textit{regulär}, wenn ein regulärer Ausdruck \( r \in \mathsf{RE}_\Sigma \) existiert mit \( \llbracket r \rrbracket = L \).
\end{definition}
Wir erlauben in der Regel auch als Abkürzung die Ausdrücke \( \bm{\varepsilon} \) für \( (\bm{\emptyset}) \overset{\bm{\ast}}{} \) und \( (r) \overset{\bm{+}}{} \) für \( r \bm{\cdot} (r) \overset{\bm{\ast}}{} \). Außerdem lassen wir den Punkt (\( \bm{\cdot} \)) weg, es sei denn er dient der Lesbarkeit. Die Klammern können wir auch weglassen unter der Konvention, dass \( \overset{\bm{\ast}}{} \) stärker bindet als \( \bm{\cdot} \), was wiederum stärker bindet als \( \bm{+} \). Statt \( \llbracket r \rrbracket \) ist auch die Schreibweise \( L(r) \) gebräuchlich.\par
Wir erlauben in der Regel auch als Abkürzung die Ausdrücke \( \bm{\varepsilon} \) für \( \bm{\emptyset}\overset{\bm{\ast}}{} \) und \( r \overset{\bm{+}}{} \) für \( r \bm{\cdot} r \overset{\bm{\ast}}{} \). Außerdem lassen wir den Punkt (\( \bm{\cdot} \)) weg, es sei denn er dient der Lesbarkeit. Die Klammern können wir auch weglassen unter der Konvention, dass \( \overset{\bm{\ast}}{} \) stärker bindet als \( \bm{\cdot} \), was wiederum stärker bindet als \( \bm{+} \). Statt \( \llbracket r \rrbracket \) ist auch die Schreibweise \( L(r) \) gebräuchlich.\par
Reguläre Ausdrücke kennt man auch für Computerprogramme wie \texttt{grep}, \texttt{awk} oder \texttt{sed}. Diese sind syntaktisch etwas anders aufgebaut, jedoch lässt sich jeder POSIX-Ausdruck (das sind die regulären Ausdrücke für oben genannte Programme) auch als regulärer Ausdruck wie in Definition~\ref{def:regexsyntax} umschreiben.
\begin{example}
Die POSIX-Syntax für reguläre Ausdrücke geht wie folgt.
......@@ -1579,7 +1579,6 @@ Wir werden nun anstelle von FA-erkennbaren Sprachen auch nur noch von regulären
\subsection{Weitere Abschlusseigenschaften}\label{sec:regular_closure2}
Wir haben bis hier hin reguläre Sprachen eine umfangreiche Charakterisierung gegeben, nämlich als Sprachen, die sich durch reguläre Ausdrücke oder Sprachen von endliche Automaten beschreiben lassen -- auf die Äquivalenz dieser Charakterisierungen haben wir lange hingearbeitet und mit dem Ä\-qui\-va\-lenz\-satz von Kleene einen schweren Brocken der theoretischen Informatik bewiesen. Dieser Abschnitt wird nun wieder deutlich einfacher. Wir haben bereits einige Abschlusseigenschaften regulärer Sprachen bewiesen: Schnitt, Vereinigung, Komplement, Konkatenation, Iteration usw., aber auch unter ''erfundenen`` Operatoren wie \textit{Perfect Shuffle}. Diese Abschlüsse allein zusammen mit dem Äquivalenzsatz von Kleene ergeben bereits genug Gründe um reguläre Sprachen als eine in wissenschaftlicher Hinsicht \textit{sinnvolle} Sprachklasse zu sehen. Wir werden in diesem Abschnitt nun ein paar weitere sinnvolle Abschlusseigenschaften beweisen.\par
%TODO Freies Monoid
\begin{definition}\label{def:stringhomomorphism}
Seien \( \Sigma, \Gamma \) Alphabete. Die Abbildung \( h\colon \Sigma^\ast \to \Gamma^\ast \) heißt \textit{(Wort-)Homomorphismus}, wenn für alle \( a_0 \ldots a_{n-1} \in \Sigma^\ast \) gilt, dass
\[
......@@ -1627,7 +1626,7 @@ Beachte, dass \( w^\mathcal{R} \) wohldefiniert ist für jedes \( w \in \Sigma
\begin{theorem}
Sei \( L \subseteq \Sigma^\ast \) regulär. Dann ist auch \( L^\mathcal{R} \) regulär.
\begin{proof}
folgt. %TODO
Übung.
\end{proof}
\end{theorem}
......@@ -1637,9 +1636,9 @@ Bisher haben wir nur sehr einfache Sprachen betrachtet, die alle regulär waren.
\[
L_\mathbb{P} \coloneqq \{ a^p : p \in \mathbb{P} \}.
\]
\( L_\mathbb{P} \) ist die Sprache aller (mit \( a \)) unär codierten Primzahlen, d.h. \( L_\mathbb{P} = \{ aa, aaa, a^5, a^7, a^{11}, \ldots \} \). Dass \( L_\mathbb{P} \) nicht regulär ist, ist auch nicht so schwer einzusehen: Intuitiv, wie würde ein regulärer Ausdruck aussehen? Natürlich könnten wir eine unendliche Vereinigung bilden (dies wäre jedoch nicht regulär, da reguläre Ausdrücke endlich sind):
\( L_\mathbb{P} \) ist die Sprache aller (mit \( a \)) unär codierten Primzahlen, d.h. \( L_\mathbb{P} = \{ a^2, a^3, a^5, a^7, a^{11}, \ldots \} \). Dass \( L_\mathbb{P} \) nicht regulär ist, ist auch nicht so schwer einzusehen: Intuitiv, wie würde ein regulärer Ausdruck aussehen? Natürlich könnten wir eine unendliche Vereinigung bilden (dies wäre jedoch nicht regulär, da reguläre Ausdrücke endlich sind):
\[
r_\mathbb{P} = \sum_{p \in \mathbb{P}} a^p = aa + aaa + a^5 + a^7 + a^{11} + \ldots
r_\mathbb{P} = \sum_{p \in \mathbb{P}} a^p = a^2 + a^3 + a^5 + a^7 + a^{11} + \ldots
\]
Es erscheint klar, dass es jedoch keine Möglichkeit gibt diesen Ausdruck zu vereinfachen. In einem Automaten wird es noch deutlicher. Wenn wir mit endlich vielen Zuständen auskämen um genau alle unendlich vielen Primzahlcodierungen zu erkennen würden wir Kreise im Transitionsgraphen und somit eine gewisse Regelmäßigkeit in der Wiederholung von Primzahlen bekommen. Dies würde bedeuten, dass die Generierung neuer Primzahlen viel einfacher wäre als bisher angenommen, da wir ab einer bestimmten Primzahl einfach immer eine Konstante addieren könnten um die nächste zu bekommen. Das ist natürlich nicht der Fall. Eine schematische Erklärung dieses Arguments ist in Abbildung~\ref{fig:dfa_primes}. Egal an welcher und an wie vielen Stellen wir eine Zustandwiederholung zulassen (durch gestrichtelte Kante angedeutet), wir würden stets Codierungen akzeptieren, die nicht zu Primzahlen gehören können. In diesem Abschnitt werden wir uns ansehen, wie wir dieses Argument formalisieren und auf weitere nicht-reguläre Sprachen anwenden können.
\begin{figure}
......@@ -1709,6 +1708,8 @@ Dieses Beispiel ist sehr ausführlich jetzt besprochen worden. Sobald man diese
Angenommen \( L \) wäre regulär. Dann gilt das Pumping-Lemma. Sei also \( n \in \mathbb{N}_+ \) beliebig und wir betrachten das Wort \( w = a^n bb a^n \in L \). Es hat die Länge \( \left| w \right| = 2n+2 \geq n \). Wir betrachten nun Zerlegungen, die die Eigenschaften (i) und (ii) erfüllen und zeigen, dass (iii) dann nicht gelten kann. Wegen (i) ist \( y = a^k \) für ein \( k \leq n \) (\( k = \left| y \right| \leq \left| xy \right| \leq n \), da die ersten \( n \) Zeichen alle \( a \) sind, kommt also auch kein \( b \) in \( y \) vor). Wegen (ii) gilt außerdem, dass \( k > 0 \). Betrachte nun das Wort \( w^\prime \coloneqq xyyz = a^{n+k}bba^n \). Es liegt nicht in \( L \), da \( w^\prime \) kein Palindrom ist. Damit gilt die Eigenschaft (iii) für \( i = 2 \) nicht (gilt sogar für gar kein \( i \neq 1 \)). Dies ist ein Widerspruch zum Pumping-Lemma, also kann \( L \) nicht regulär sein.
\end{proof}
\end{example}
%TODO Pumping-Lemma-Spiel
%TODO Nicht-Regularität durch Abschlusseigenschaften zeigen.
\subsection{Minimierung von DFAs}\label{sec:regular_minimization}
......
No preview for this file type
\documentclass[11pt, a4paper]{article}
\usepackage[left=3cm, right=3cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
......@@ -13,6 +14,8 @@
\usepackage{listings}
\usepackage[justification=centering]{caption}
\usetikzlibrary{arrows, automata, graphs, shapes, petri, decorations.pathmorphing}
\let\emptyset\varnothing
\parindent = 0pt
% define environments
\theoremstyle{definition}
......@@ -37,7 +40,7 @@ In diesem Dokument verwenden wir die Variablen \( h, i, j, k, \ell \) stets als
\subsection*{Problemstellung: Extended Matching Problem}
Das \textit{erweiterte (extended) Matching-Problem} kommt direkt aus der Anwendung des Compilerbaus. Gegeben ist ein Wort \( w \in \Sigma^\ast \) und eine Reihe von regulären Ausdrücken \( r_1, \ldots, r_n \in \mathsf{RE}_\Sigma \). (\textit{Bemerkung:} In der Praxis ist die Annahme \( \varepsilon \notin L(r_i) \neq \emptyset \) für alle \( i \) sinnvoll). Gesucht ist nun eine Zerlegung des Wortes \( w = u_1 \ldots u_k \), wobei für jedes \( u_j \) ein \( r_{i_j} \) existieren muss, sodass \( u_j \in L(r_{i_j}) \). Man nennt die Zerlegung in \( (u_1, \ldots, u_k) \) auch \textit{Dekomposition} und die zugehörigen Indizes der regulären Ausdrücke \( (i_1, \ldots, i_k) \) \textit{Analyse} von \( w \) bezüglich \( r_1, \ldots, r_n \).
Das \textit{erweiterte (extended) Matching-Problem} kommt direkt aus der Anwendung des Compilerbaus. Gegeben ist ein Wort \( w \in \Sigma^\ast \) und eine Reihe von regulären Ausdrücken über $\Sigma$ \( r_1, \ldots, r_n \in \mathsf{RE}_\Sigma \). (\textit{Bemerkung:} In der Praxis ist die Annahme \( \varepsilon \notin L(r_i) \neq \emptyset \) für alle \( i \) sinnvoll). Gesucht ist nun eine Zerlegung des Wortes \( w = u_1 \ldots u_k \), wobei für jedes \( u_j \) ein \( r_{i_j} \) existieren muss, sodass \( u_j \in L(r_{i_j}) \). Man nennt die Zerlegung in \( (u_1, \ldots, u_k) \) auch \textit{Dekomposition} und die zugehörigen Indizes der regulären Ausdrücke \( (i_1, \ldots, i_k) \) \textit{Analyse} von \( w \) bezüglich \( r_1, \ldots, r_n \).
Wir sehen schnell, dass weder Dekomposition, noch Analyse eindeutig sein müssen (insbesondere dann, wenn wir \( \varepsilon \in L(r_i) \) zulassen).
\begin{example}
......
This diff is collapsed.
No preview for this file type
\documentclass[11pt, a4paper]{article}
\usepackage[left=3cm, right=3cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{array}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{listings}
\usepackage[justification=centering]{caption}
\usetikzlibrary{arrows, automata, graphs, shapes, petri, decorations.pathmorphing}
\parindent = 0pt
\let\emptyset\varnothing
% define environments
\theoremstyle{definition}
......@@ -28,7 +33,7 @@
\begin{document}
\maketitle
Bisher sind reguläre Sprachen durch Formalismen wie reguläre Ausdrücke und endliche Automaten charakterisiert worden. Nun soll eine Eigenschaft gefunden werden, die reguläre Sprachen auf einer stark mathematisch-strukturellen Ebene charakterisiert, d.h. mit Aussagen, die sich auf die Struktur
Bisher sind reguläre Sprachen durch Formalismen wie reguläre Ausdrücke und endliche Automaten charakterisiert worden. Nun soll eine Eigenschaft gefunden werden, die reguläre Sprachen auf einer stark mathematisch-struk\-tur\-ellen Ebene charakterisiert, d.h. mit Aussagen, die sich auf die Struktur
\[
(\Sigma^\ast, \cdot, \varepsilon)
\]
......@@ -83,7 +88,7 @@ Man benennt Äquivalenzklassen auch durch einzelne Repräsentanten, z.B. mit \(
Die Vereinigung aller Äquivalenzklassen zu einer Äquivalenz über einer Menge \( A \) bildet stets eine Partition von \( A \).
\subsection*{Finden der Äquivalenzklassen}
Lemma~\ref{kongruenzlemma} kann dafür verwendet werden um Äquivalenzklassen (der Myhill-Nerode-Äquivalenz \( \equiv_L \)) zu finden. Wir gehen dabei wie folgt vor:\\
Lemma~\ref{kongruenzlemma} kann dafür verwendet werden um Äquivalenzklassen (der Myhill-Nerode-Ä\-qui\-va\-lenz \( \equiv_L \)) zu finden. Wir gehen dabei wie folgt vor:\\
Wir starten mit dem leeren Wort \( \varepsilon \) und der zugehörigen Äquivalenzklasse \( [\varepsilon]_L \). Danach wiederholen wir folgende Schritte bis keine neue Äquivalenzklassen mehr gefunden werden:\\
Für jedes Symbol \( a \in \Sigma \) und jede bisher gefundene Äquivalenzklasse \( [u]_L \) betrachte die Äquivalenzklasse \( [ua]_L \). Ist \( [ua]_L = [v]_L \) für eine bereits gefundene Äquivalenzklasse, passiert nichts. Ist dies nicht der Fall, fügen wir \( [ua]_L \) als neue Äquivalenzklasse hinzu.\par
Beachte, dass dieses Verfahren nur für reguläre Sprachen terminiert. Nicht-reguläre Sprachen haben unendlich viele Äquivalenzklassen (s. Satz~\ref{nerode}).\par
......
No preview for this file type
This diff is collapsed.
\documentclass[11pt, a4paper]{article}
\usepackage[left=3cm, right=3cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{array}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{listings}
\usepackage{enumitem}
\usepackage[justification=centering]{caption}
\usetikzlibrary{arrows, automata, graphs, shapes, petri, decorations.pathmorphing}
\parindent = 0pt
\let\emptyset\varnothing
% define environments
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem*{remark*}{Bemerkung}
\theoremstyle{plain}
\newtheorem*{lemma*}{Lemma}
\renewcommand{\labelenumi}{(\roman{enumi})}
\renewcommand{\labelenumi}{(\roman{enumi})}
\author{Niklas Rieken}
\title{Pumping-Lemma und Varianten}
\begin{document}
\maketitle
Der in der Vorlesung (zu Unrecht, meiner Meinung nach) am meisten beworbene Weg um zu zeigen, dass eine Sprache nicht regulär ist, ist die Anwendung des Pumping-Lemmas, was für viele FoSAP-Hörer der Endgegner der Vorlesung ist, obwohl das dahinter stehende Argument recht einfach ist. Dieses Dokument soll beim Verständnis etwas helfen, indem wir das selbe Argument auf drei verschiedene Arten anwenden.
Wir betrachten jetzt die Sprache
$$
L = \{ uav \,\vert\, u, v \in \{ a, b \}^\ast \text{ mit } \left| u \right| = \left| v \right| \}
$$
und zeigen, dass diese nicht regulär ist auf drei verschiedene Arten: 1. Direktes Argument am Automaten, 2. Einfache Anwendung des Pumping-Lemmas, 3. Pumping-Lemma-Spiel.
\section*{Direkte Argumentation über Automaten}
Angenommen $L$ ist regulär, dann gibt es einen NFA $\mathcal{A} = (Q, \Sigma, \Delta, q_0, F)$, der $L$ erkennt. Angenommen $\mathcal{A}$ habe $n$ Zustände (d.h. $\left| Q \right| = n$). Wir betrachten das Wort $w = b^n a b^n$. Das Wort ist in der Sprache, also gibt es einen akzeptierenden Lauf $\varrho = (r_0, \ldots, r_{2n+1})$ mit $r_0 = q_0$ und $r_{2n+1} \eqqcolon q^\prime \in F$. In dem Lauf gibt es insgesamt also $2n+2$ Zustände, der Automat hat jedoch nur $n$ viele verschiedenen Zustände. Daraus folgt, dass spätestens nach dem Zustand $r_n$ ein Zustand doppelt in $\varrho$ vorgekommen sein muss. Sei also $r_i = r_j \eqqcolon q$ ($i < j \leq n$) ein Zustand, der zwei mal im Lauf vorkam. Wir wissen außerdem, dass die Zeichen, die zwischen der Zustandswiederholung gelesen wurden, alle aus dem Präfix $b^n$ waren. Betrachten wir nun den Lauf
$$
\varrho^\prime = (r_0, \ldots, r_i, r_{j+1}, \ldots, r_{2n+1}).
$$
Dieser ist entsteht, wenn wir die $j-i \eqqcolon k > 0$ vielen $b$s, die zwischen der Wiederholung gelesen werden, weglassen, also $w^\prime = b^i b^{n-j} a b^n = b^{n-k} a b^n$ lesen. Dieser Lauf existiert, denn $r_i = r_j$ und somit ist auch die Transition $(r_j, b, r_{j+1}) = (r_i, b, r_{j+1}) \in \Delta$. Alle anderen Transitionen sind ohnehin die gleichen wie in $\varrho$. Auch der Lauf $\varrho^\prime$ endet in $r_{2n+1} \in F$. Somit wird auch das Wort $w^\prime$ von $\mathcal{A}$ akzeptiert, aber $w^\prime \notin L$, da vor dem $a$ weniger $b$s gelesen werden als nach dem $a$. D.h. $\mathcal{A}$ erkennt eine andere Sprache als $L$. Da $\mathcal{A}$ beliebig gewählt war, kann also kein solcher NFA für $L$ existieren. Somit ist $L$ nicht regulär. In Abbildung~\ref{fig:pl} ist eine Skizze zu diesem Argument.
\begin{figure}
\centering
\begin{tikzpicture}[->, >=stealth', shorten >=1pt, auto, semithick]
\node[state, initial, initial text=] (0) at (0, 0) {$q_0$};
\node[state] (i) at (3, 0) {$q$};
\node[state, accepting] (p) at (6, 0) {$q^\prime$};
\path (0) edge[decorate, decoration={snake, amplitude=.6mm, segment length=4mm, post length=1mm}] node {$b^i$} (i)
(i) edge[decorate, decoration={snake, amplitude=.6mm, segment length=4mm, post length=1mm}] node {$b^{n-k-i}ab^n$} (p);
\draw[decorate, decoration={snake, amplitude=.6mm, segment length=4mm, post length=1mm}] (i) .. controls (5, 2) and (1, 2) .. node[above] {$b^k$} (i);
\end{tikzpicture}
\caption{Zustandswiederholung in $q$. Es gibt also einen Lauf von $q_0$ nach $q$ und einen Lauf von $q$ nach $p$. Den Zwischenlauf von $q$ nach $q$ kann man also weglassen (oder auch beliebig oft wiederholen).}
\label{fig:pl}
\end{figure}
\section*{Anwendung des Pumping-Lemmas}
Zunächst wiederholen wir das Lemma einmal im Wortlaut:
\begin{lemma*}
Sei $L$ eine reguläre Sprache. Dann existiert ein $n \in \mathbb{N}_+$, sodass für alle $w \in L$ mit $\left| w \right| \geq n$ eine Zerlegung $w = xyz$ existiert für die gilt:
\begin{enumerate}
\item $\left| xy \right| \leq n$,
\item $y \neq \varepsilon$,
\item $xy^i z \in L$ für alle $i \in \mathbb{N}$.
\end{enumerate}
\end{lemma*}
Um nun zu zeigen, dass $L$ nicht regulär ist zeigen wir die Kontraposition des Lemmas, d.h.
\begin{center}
\textit{Wenn für alle $n \in \mathbb{N}_+$ ein $w \in L$ mit $\left| w \right| \geq n$ existiert, sodass für mindestens eine Zerlegung $xyz = w$ mindestens eine der drei Bedingungen (i-iii) nicht erfüllt ist, dann ist $L$ nicht-regulär}.
\end{center}
Beachte: Das Pumping-Lemma kann nur dafür eingesetzt werden, um zu zeigen, dass eine Sprache nicht reguär ist! Es gibt auch nicht-reguläre Sprachen, die dem Pumping-Lemma genügen! Nun zum Beweis:\par
Angenommen $L$ wäre regulär. Sei dann $n \in \mathbb{N}_+$ beliebig aber fest gewählt gemäß Pumping-Lemma. Betrachte das Wort $w = b^n a b^n \in L$. Es gilt $\left| w \right| = 2n+1 \geq n$. Sei nun $xyz = w$ eine beliebige Zerlegung, sodass \textit{(i+ii)} erfüllt sind. Wir zeigen, dass dan \textit{(iii)} nicht erfüllt sein kann. Es gilt, dass $y = b^k$ mit $k \leq n$ (wegen \textit{(i)}: $\left| y \right| \leq \left| xy \right| \leq n$, die ersten $n$ Zeichen sind auch alles $b$s, sodass $xy$ nur aus $b$s bestehen kann und somit auch $y$). Außerdem ist $k > 0$ (wegen \textit{(ii)}: $y \neq \varepsilon = b^0$). Wähle nun $i = 0$ und betrachte das Wort $w^\prime = xy^0z = xz = b^{n-k} a b^n$. Nach Pumping-Lemma müsste dies zu $L$ gehören, was jedoch offenbar nicht der Fall ist. Damit haben wir einen Widerspruch zum Pumping-Lemma und es folgt, dass $L$ nicht regulär ist.
\begin{remark*}
Man sieht leicht wie analog die Argumentation über das Pumping-Lemma und über das direkte Argument am NFA verlaufen.
\end{remark*}
\begin{remark*}
Eine Wahl von $i \geq 2$ und das daraus resultierende ''aufgepumpte`` Wort $b^{n+(i-1)k} a b^n \notin L$ wäre natürlich ebenfalls möglich gewesen.
\end{remark*}
\section*{Das Pumping-Lemma-Spiel}
Es ist auch möglich, das Pumping-Lemma als Spiel aufzufassen. Das Vorgehen ist dabei identisch zu Model-Checking-Spielen für First Order Logic (\textit{Prädikatenlogik}), die man in der Vorlesung Mathematische Logik (normalerweise im 4. Semester) sieht. Wir beginnen mit den Spielern:
\begin{description}
\item[Alice] versucht die Beweisführung der Nicht-Regualarität zu sabotieren,\\
\textit{(Verifiziererin, Defender)}
\item[Bob] möchte zeigen, dass eine Sprache nicht regulär ist.\\
\textit{(Falsifizierer, Attacker)}
\end{description}
Die Spielregeln gehen wie folgt: Das "Spielfeld" ist die Sprache $L$.
\begin{enumerate}[label=\arabic*)]
\item Alice wählt eine Zahl $n \in \mathbb{N}_+$.
\item Bob wählt ein Wort $w \in L$ mit $\left| w \right| \geq n$.
\item Alice wählt eine Zerlegung $xyz = w$, mit $\left| xy \right| \leq n$ und $y \neq \varepsilon$.
\item Bob wählt eine Zahl $i \in \mathbb{N}$.
\end{enumerate}
Alice gewinnt, wenn $xy^iz \in L$ oder Bob in Schritt 2 nicht ziehen kann (das wäre der Fall wenn jedes Wort aus $L$ kürzer ist als das $n$, welches Alice vorgegeben hat -- die Sprache wäre dann endlich und somit regulär).\\
Bob gewinnt, wenn $xy^iz \notin L$.
\begin{remark*}
Falls $L$ regulär ist, so hat Alice eine Gewinnstrategie, d.h. sie kann ein $n$ wählen, sodass sie für jedes Wort, mit dem Bob in Schritt 2 antworten könnte eine Zerlegung findet, die Bob in Schritt 4 nicht aus der Sprache rauspumpen kann.\\
Äquivalent dazu: Falls Bob eine Gewinnstrategie hat, so ist $L$ nicht regulär.
\end{remark*}
\begin{remark*}
Beachtet, dass in Schritt 3 Alice(!) diejenige ist, die eine Zerlegung wählt. Wenn wir zeigen wollen, dass Bob eine Gewinnstrategie hat, heißt das, dass wir für alles(!) was Alice wählen könnte im 4. Schritt noch aus der Sprache herausgepumpt werden kann. Es wäre keine Gewinnstrategie, wenn Bob nur auf manche Züge von Alice eine passende Antwort findet.
\end{remark*}
Wir geben nun eine Gewinnstrategie für Bob auf der Sprache $L$ von oben an.\par
\begin{enumerate}[label=\arabic*)]
\item Alice wählt eine Zahl $n$.
\item Bob wählt das Wort $w = b^n a b^n$ ($\left| w \right| \geq n$ \checkmark).
\item Alice wählt eine Zerlegung $xyz = w$ mit $\left| xy \right| \leq n, y \neq \varepsilon$ (d.h. $y = b^k$ für ein $0 < k \leq n$ mit der selben Begründung wie oben).
\item Bob wählt $i = 0$, unabhängig von Alice' Zerlegung.
\end{enumerate}
Das Wort $xz = b^{n-k} a b^n$ gehört nicht zur Sprache $L$ für egal welches $k > 0$ welches wir aus Alice' Zerlegung erhalten. Damit hat Bob eine Gewinnstrategie und somit ist $L$ nicht regulär.
\end{document}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment