From 412daadd6ab6ca1abe0b06b2facf66ecb008fe93 Mon Sep 17 00:00:00 2001 From: Chris <Christopher.Happe@uni-duesseldorf.de> Date: Mon, 2 Nov 2020 08:02:09 +0100 Subject: [PATCH] Text zur Anwendung von Abschlusseigenschaften --- info4/kapitel-2/Abschlusseigenschaften.ipynb | 45 +++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/info4/kapitel-2/Abschlusseigenschaften.ipynb b/info4/kapitel-2/Abschlusseigenschaften.ipynb index 85fa82c..ec52f0e 100644 --- a/info4/kapitel-2/Abschlusseigenschaften.ipynb +++ b/info4/kapitel-2/Abschlusseigenschaften.ipynb @@ -1157,7 +1157,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -1174,6 +1176,13 @@ ":constants" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bei dieser Konstruktion können hier viele Zustände nicht erreicht werden. Dennoch akzeptiert der Automat die gewünsche Sprache." + ] + }, { "cell_type": "code", "execution_count": 15, @@ -1933,11 +1942,37 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun haben wir bewiesen, dass die regulären Sprachen abgeschlossen über \n", + "* Vereinigung A ∪ B\n", + "* Komplement A̅\n", + "* Schnitt A ∩ B\n", + "* Differenz A/B\n", + "* Konkatenation AB\n", + "* Iteration A*\n", + "* Spiegelung sp(A)\n", + "\n", + "sind. Aber was kann man eigentlich damit machen?" + ] + }, + { + "cell_type": "markdown", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "Mit Hilfe der Abschlusseigenschaften für reguläre Sprachen kann man zeigen, dass eine Sprache\n", + "1. regulär ist\n", + "2. nicht regulär ist\n", + "\n", + "Um zu zeigen, dass eine Sprache regulär ist, findet man zwei (oder eine) reguläre Sprachen, die mit Hilfe einer oder mehrerer der oben angegebenen Operationen die gewünschte Sprache ergeben.\n", + "\n", + "Will man zum Beispiel zeigen, dass die Sprache $L=\\{0^m1^n\\}$ regulär ist, dann wählt man die Sprachen $L_1=\\{0^m\\}$ und $L_2=\\{1^n\\}$. Diese sind aus der Vorlesung als regulär bekannt. Damit gilt dann, dass $L=L_1L_2$ und somit ist L regulär.\n", + "\n", + "Dabei muss man allerdings beachten, dass $L_1$ und $L_2$ unabhängig voneinander sind. Man kann nicht $L_1=\\{0^n\\}$ und $L_2=\\{1^n\\}$ wählen und damit zeigen, dass $L_3=L_1L_2=\\{0^n1^n\\}$ regulär ist. Dabei wurde die Konkatenation falsch verwendet. In diesem Fall wäre $L_3=L_1L_2=\\{0^m1^n\\}=L$, was wie oben beschrieben regulär ist.\n", + "\n", + "Um zu zeigen, dass eine Sprache $L$ nicht regulär ist, wählt man eine nicht reguläre Sprache $L_1$ und ggf. eine reguläre Sprache $L_2$ und führt diese mit Hilfe der Operationen auf $L$ zurück. Man zeigt also z.B. dass $L_2∩L=L_1$ gilt. Da $L_2$ regulär ist und die regulären Sprachen abgeschlossen bezüglich des Schnittes zweier Sprachen sind, müsste $L_1$ auch reulär sein, wenn $L$ regulär wäre. Da $L_1$ aber nach Voraussetzung nicht regulär ist, kann $L$ ebenfalls nicht regulär sein. Ein konkretes Beispiel hierfür ist $L=\\{x∈\\{0,1\\}^*|\\text{x hat gleich viele 0en und 1en}\\}$, $L_1=\\{0^n1^n\\}$ und $L_2=L(0^*1^*)$. Aus der Vorlesung ist bekannt, dass $L_1$ nicht regulär und $L_2$ regulär ist. Außerdem gilt $L_2∩L=L_1$. Daher kann L nicht regulär sein." + ] } ], "metadata": { -- GitLab