Mercurial > 14ss.theoinf
annotate notes/tex/automatons.tex @ 12:11723d02ee58
use newer definitions
author | Markus Kaiser <markus.kaiser@in.tum.de> |
---|---|
date | Mon, 28 Apr 2014 12:27:03 +0200 |
parents | de844d67518b |
children | 834da46b1edb |
rev | line source |
---|---|
1 | 1 \defineUnit{alphabet}{% |
2 \begin{frame} | |
6
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
3 \frametitle{Alphabete} |
1 | 4 |
5 \begin{definition} | |
6 \begin{itemize} | |
6
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
7 \item Ein \structure{Alphabet} $\Sigma$ ist eine endliche Menge. |
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
8 \item Ein \structure{Wort} über $\Sigma$ ist eine endliche Folge von Zeichen. |
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
9 \item Eine Teilmenge $L \subseteq \Sigma^*$ ist eine \structure{formale Sprache} |
1 | 10 \end{itemize} |
11 \end{definition} | |
12 | |
13 \vfill | |
14 | |
15 \begin{definition}[Operationen auf Sprachen] | |
16 \begin{itemize} | |
6
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
17 \item $\structure{AB} \defeq \left\{ uv \mid u \in A \wedge v \in B \right\}$ |
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
18 \item $\structure{A^{n+1}} \defeq A^nA $,\qquad\qquad $\structure{A^0} \defeq \{\epsilon\}$ |
efd13093bd47
use structures instead of alerts
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
3
diff
changeset
|
19 \item $\structure{A^*} \defeq \bigcup_{n \in \N_0} A^n$ |
1 | 20 \end{itemize} |
21 \end{definition} | |
22 \end{frame} | |
23 } | |
24 | |
25 \defineUnit{dfa}{% | |
26 \begin{frame} | |
27 \frametitle{DFA} | |
28 | |
29 \begin{definition}[Deterministischer endlicher Automat] | |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
30 Ein \structure{DFA} ist ein Tupel $M = (Q, \Sigma, \delta, q_0, F)$ aus einer/einem |
1 | 31 \begin{itemize} |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
32 \item endlichen Menge von \structure{Zuständen} $Q$ |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
33 \item endlichen \structure{Eingabealphabet} $\Sigma$ |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
34 \item totalen \structure{Übergangsfunktion} $\delta : Q \times \Sigma \to Q$ |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
35 \item \structure{Startzustand} $q_0 \in Q$ |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
36 \item Menge von \structure{Endzuständen} $F \subseteq Q$ |
1 | 37 \end{itemize} |
38 \end{definition} | |
39 | |
40 \vfill | |
41 | |
42 \begin{center} | |
43 \begin{tikzpicture}[shorten >=1pt, node distance = 3cm, auto, bend angle=20, initial text=] | |
44 \node[state, initial] (q0) {$q_0$}; | |
45 \node[state, accepting] (q1) [right of = q0] {$q_1$}; | |
46 \node[state] (q2) [right of = q1] {$q_2$}; | |
47 | |
48 \draw[->] (q0) edge [loop above] node {0} (q0); | |
49 \draw[->] (q2) edge [loop above] node {1} (q2); | |
50 \draw[->] (q0) edge [bend left] node {1} (q1); | |
51 \draw[->] (q1) edge [bend left] node {1} (q0); | |
52 \draw[->] (q1) edge [bend left] node {0} (q2); | |
53 \draw[->] (q2) edge [bend left] node {0} (q1); | |
54 \end{tikzpicture} | |
55 \end{center} | |
56 \end{frame} | |
57 } | |
58 | |
59 \defineUnit{nfa}{% | |
60 \begin{frame} | |
61 \frametitle{NFA} | |
62 \begin{definition}[Nicht-Deterministischer endlicher Automat] | |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
63 Ein \structure{NFA} ist ein Tupel $N = (Q, \Sigma, \delta, S, F)$ mit |
1 | 64 \begin{itemize} |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
65 \item $Q, \Sigma, F$ wie ein DFA |
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
66 \item Menge von \structure{Startzuständen} $S \subseteq F$ |
11
de844d67518b
fix powersets; wording
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
10
diff
changeset
|
67 \item \structure{Übergangsfunktion} $\delta : Q \times \Sigma \to \powerset{Q}$ |
1 | 68 \end{itemize} |
69 \end{definition} | |
70 | |
71 \vfill | |
72 | |
73 \begin{center} | |
74 \begin{tikzpicture}[shorten >=1pt, node distance = 3cm, auto, bend angle=20, initial text=] | |
75 \node[state, initial] (q0) {$q_0$}; | |
76 \node[state, accepting] (q1) [right of = q0] {$q_1$}; | |
77 \draw[->] (q0) edge [loop above] node {0,1} (q0); \draw[->] (q0) edge node {1} (q1); \end{tikzpicture} \end{center} \end{frame} | |
78 } | |
79 | |
80 \defineUnit{enfa}{% | |
81 \begin{frame} | |
82 \frametitle{$\epsilon$-NFA} | |
83 \begin{definition}[NFA mit $\epsilon$-Übergängen] | |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
84 Ein \structure{$\epsilon$-NFA} ist ein Tupel $N = (Q, \Sigma, \delta, S, F)$ mit |
1 | 85 \begin{itemize} |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
86 \item $Q, \Sigma, F$ wie ein DFA |
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
87 \item Menge von \structure{Startzuständen} $S \subseteq F$ |
11
de844d67518b
fix powersets; wording
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
10
diff
changeset
|
88 \item \structure{Übergangsfunktion} $\delta : Q \times \left( \Sigma \cup \{\epsilon\} \right) \to \powerset{Q}$ |
1 | 89 \end{itemize} |
90 \end{definition} | |
91 | |
92 \vfill | |
93 | |
94 \begin{center} | |
95 \begin{tikzpicture}[shorten >=1pt, node distance = 3cm, auto, bend angle=30, initial text=] | |
96 \node[state] (q1) {$q_1$}; | |
97 \node[state, initial] (q0) [left of = q1] {$q_0$}; | |
98 \node[state, accepting] (q2) [right of = q1] {$q_2$}; | |
99 \draw[->] (q0) edge [red] node {$\epsilon$} (q1); \draw[->] (q1) edge [loop above] node {0,1} (q1); \draw[->] (q1) edge node {1} (q2); \draw[->] (q0) edge [bend right, red] node {$\epsilon$} (q2); \end{tikzpicture} \end{center} \end{frame} | |
100 } | |
101 | |
102 \defineUnit{endlicheautomaten}{% | |
103 \begin{frame} | |
104 \frametitle{Endliche Automaten} | |
105 \begin{block}{Übergangsfunktionen} | |
106 Die Automaten $A = (Q, \Sigma, \delta, q_0, F)$ unterscheiden sich nur durch ihre Übergangsfunktionen. | |
107 | |
108 \begin{description} | |
109 \item[DFA] $\delta : Q \times \Sigma \to Q$ | |
11
de844d67518b
fix powersets; wording
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
10
diff
changeset
|
110 \item[NFA] $\delta : Q \times \Sigma \to \alert{\powerset{Q}}$ |
de844d67518b
fix powersets; wording
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
10
diff
changeset
|
111 \item[$\epsilon$-NFA] $\delta : Q \times \alert{\left( \Sigma \cup \{\epsilon\} \right)} \to \alert{\powerset{Q}}$ |
1 | 112 \end{description} |
113 \end{block} | |
114 | |
115 \vfill | |
116 | |
117 \begin{theorem} | |
118 \alert{DFA}, \alert{NFA} und \alert{$\epsilon$-NFA} sind gleich mächtig und lassen sich ineinander umwandeln. | |
119 \end{theorem} | |
120 \end{frame} | |
121 } | |
122 | |
123 \defineUnit{regex}{% | |
124 \begin{frame} | |
125 \frametitle{Reguläre Ausdrücke} | |
126 \setbeamercovered{dynamic} | |
127 | |
128 \begin{definition}[Regulärer Ausdruck] | |
129 \alert{Reguläre Ausdrücke} sind induktiv definiert | |
130 \begin{itemize} | |
131 \item \alert{$\emptyset$} ist ein regulärer Ausdruck | |
132 \item \alert{$\epsilon$} ist ein regulärer Ausdruck | |
133 \item Für alle $a \in \Sigma$ ist \alert{$a$} ein regulärer Ausdruck | |
134 \item Sind $\alpha$ und $\beta$ reguläre Ausdrücke, dann auch | |
135 \begin{description} | |
136 \item[Konkatenation] \alert{$\alpha\beta$} | |
137 \item[Veroderung] \alert{$\alpha \mid \beta$} | |
138 \item[Wiederholung] \alert{$\alpha^*$} | |
139 \end{description} | |
140 \end{itemize} | |
141 Analoge Sprachdefinition, z.b. $L(\alpha\beta) = L(\alpha)L(\beta)$ | |
142 \end{definition} | |
143 | |
144 \begin{example} | |
145 $\alpha = (0|1)^*00$ \hfill $L(\alpha) = \left\{x \mid x \text{ Binärzahl}, x \mod 4 = 0 \right\}$ | |
146 \end{example} | |
147 \end{frame} | |
148 } | |
149 | |
150 \defineUnit{automatenkonversionen}{% | |
151 \begin{frame}[c] | |
152 \frametitle{Konversionen} | |
153 \setbeamercovered{dynamic} | |
154 | |
155 \begin{center} | |
156 \begin{tikzpicture}[node distance=2cm] | |
157 \node (nfa) {NFA}; | |
158 \node (dfa) [left of=nfa] {DFA}; | |
159 \node (enfa) [right of=nfa] {$\epsilon$-NFA}; | |
160 \node (re) [below of=nfa] {RE}; | |
161 | |
162 \draw [every edge, tumred] (nfa) -- (dfa); | |
163 \draw [every edge, tumred] (enfa) -- (nfa); | |
164 \draw [every edge] (dfa) -- (re); | |
165 \draw [every edge] (nfa) -- (re); | |
166 \draw [every edge, tumred] (re) -- (enfa); | |
167 \end{tikzpicture} | |
168 \end{center} | |
169 \end{frame} | |
170 } | |
171 | |
172 \defineUnit{rezuenfa}{% | |
173 \begin{frame} | |
174 \frametitle{RE $\rightarrow$ $\epsilon$-NFA} | |
175 \setbeamercovered{dynamic} | |
176 | |
177 \begin{block}{Idee (Kleene)} | |
178 Für einen Ausdruck \alert{$\gamma$} wird rekursiv mit struktureller Induktion ein $\epsilon$-NFA konstruiert. | |
179 \end{block} | |
180 | |
181 \begin{tabu} to \linewidth {XXX} | |
182 \alert{$\gamma = \emptyset$} & \alert{$\gamma = \epsilon$} & \alert{$\gamma = a \in \Sigma$} \\ | |
183 \begin{tikzpicture}[automaton, small, baseline=(current bounding box.north)] | |
184 \node[state, initial] () {}; | |
185 \end{tikzpicture} & | |
186 | |
187 \begin{tikzpicture}[automaton, small, baseline=(current bounding box.north)] | |
188 \node[state, initial, accepting] () {}; | |
189 \end{tikzpicture} & | |
190 | |
191 \begin{tikzpicture}[automaton, small, baseline=(current bounding box.north)] | |
192 \node[state, initial] (i) {}; | |
193 \node[state, accepting] (j) [right of=i] {}; | |
194 | |
195 \draw[->] (i) edge node {$a$} (j); | |
196 \end{tikzpicture} \\ | |
197 \vspace{2em} | |
198 \alert{$\gamma = \alpha\beta$} \\ | |
199 \multicolumn3{c}{ | |
200 \begin{tikzpicture}[automaton, small] | |
201 \draw[tumgreen, fill=tumgreen!20] (-0.3, 1) rectangle (1.8, -1); | |
202 \node[tumgreen] () at (0.75, -1.2) {$N_\alpha$}; | |
203 | |
204 \draw[tumgreen, fill=tumgreen!20] (3.7, 1) rectangle (5.8, -1); | |
205 \node[tumgreen] () at (4.75, -1.2) {$N_\beta$}; | |
206 | |
207 \node[state, initial] (i) at (0, 0) {}; | |
208 \node[state] (j) at (1.5, 0.5) {}; | |
209 \node[state] (k) at (1.5, -0.5) {}; | |
210 \node[state] (l) at (4, 0) {}; | |
211 \node[state, accepting] (m) at (5.5, 0) {}; | |
212 | |
213 \draw[->] (j) edge node {$\epsilon$} (l); | |
214 \draw[->] (k) edge node {$\epsilon$} (l); | |
215 \end{tikzpicture} | |
216 }\\ | |
217 \end{tabu} | |
218 \end{frame} | |
219 } | |
220 | |
221 \defineUnit{rezuenfazwei}{% | |
222 \begin{frame} | |
223 \frametitle{RE $\rightarrow$ $\epsilon$-NFA} | |
224 \setbeamercovered{dynamic} | |
225 | |
226 \begin{tabu} to \linewidth {X} | |
227 \alert{$\gamma = \alpha \mid \beta$} \\ | |
228 \centering | |
229 \begin{tikzpicture}[automaton, small] | |
230 \draw[tumgreen, fill=tumgreen!20] (2, 1.5) rectangle (4.5, 0.5); | |
231 \node[tumgreen] () at (3.25, 0.3) {$N_\alpha$}; | |
232 | |
233 \draw[tumgreen, fill=tumgreen!20] (2, -0.5) rectangle (4.5, -1.5); | |
234 \node[tumgreen] () at (3.25, -1.7) {$N_\beta$}; | |
235 | |
236 \node[state, initial] (i) at (0, 0) {}; | |
237 | |
238 \node[state] (j) at (2.5, 1) {}; | |
239 \node[state, accepting] (k) at (4, 1) {}; | |
240 \node[state] (l) at (2.5, -1) {}; | |
241 \node[state, accepting] (m) at (4, -1) {}; | |
242 | |
243 \draw[->] (i) edge node {$\epsilon$} (j); | |
244 \draw[->] (i) edge node {$\epsilon$} (l); | |
245 \end{tikzpicture} \\ | |
246 \vfill | |
247 | |
248 \alert{$\gamma = \alpha^*$} \\ | |
249 \centering | |
250 \begin{tikzpicture}[automaton, small, bend angle=70] | |
251 \draw[tumgreen, fill=tumgreen!20] (2, 1) rectangle (4.5, -1); | |
252 \node[tumgreen] () at (3.25, -1.2) {$N_\alpha$}; | |
253 | |
254 \node[state, initial, accepting] (i) at (0, 0) {}; | |
255 | |
256 \node[state] (j) at (2.5, 0) {}; | |
257 \node[state, accepting] (k) at (4, 0.5) {}; | |
258 \node[state, accepting] (m) at (4, -0.5) {}; | |
259 | |
260 \draw[->] (i) edge node {$\epsilon$} (j); | |
261 \draw[->] (k) edge [bend right] node {$\epsilon$} (j); | |
262 \draw[->] (m) edge [bend left] node[above] {$\epsilon$} (j); | |
263 \end{tikzpicture} | |
264 \end{tabu} | |
265 \end{frame} | |
266 } | |
267 | |
268 \defineUnit{enfazunfa}{% | |
269 \begin{frame} | |
270 \frametitle{$\epsilon$-NFA $\rightarrow$ NFA} | |
271 \setbeamercovered{dynamic} | |
272 | |
273 \begin{block}{Idee} | |
274 Entferne $\epsilon$-Kanten durch das Bilden von $\epsilon$-Hüllen. | |
275 \begin{enumerate} | |
276 \item<1-> Entferne \alert{unnötige Knoten}. | |
277 \item<1,3-> Für jeden \alert{Pfad} der Form $\epsilon\ldots\epsilon \alert{a} \epsilon\ldots\epsilon$ verbinde Anfangs- und Endknoten mit einer \alert{$a$}-Kante. | |
278 \item<1,4-> Entferne alle \alert{$\epsilon$-Kanten} und unerreichbare Knoten. | |
279 \item<1,5-> Wurde das leere Wort akzeptiert mache den \alert{Anfangszustand} zum Endzustand. | |
280 \end{enumerate} | |
281 \end{block} | |
282 | |
283 \vfill | |
284 | |
285 \begin{tikzpicture}[automaton, bend angle=40, node distance=2.1cm] | |
286 \useasboundingbox (-1.4,2) rectangle (9, -2); | |
287 | |
288 \node<-4>[state, initial] (q0) {$q_0$}; | |
289 \node[state] (q2) [right = 3.2cm of q0] {$q_2$}; | |
290 \node[state] (q3) [right of = q2] {$q_3$}; | |
291 \node[state, accepting] (q4) [right of = q3] {$q_4$}; | |
292 | |
293 \draw[->] (q2) edge node {$0$} (q3); | |
294 \draw[->] (q3) edge node {$1$} (q4); | |
295 | |
296 \draw<1-4>[->] (q3) edge [bend right] node [above] {$\epsilon$} (q2); | |
297 \draw[->] (q4) edge [bend right] node [above] {$1$} (q3); | |
298 \draw<1-4>[->] (q0) edge [bend right=20] node [below] {$\epsilon$} (q4); | |
299 | |
300 \node<1>[state] (q1) [right of = q0] {$q_1$}; | |
301 \draw<1>[->] (q0) edge node {$\epsilon$} (q1); | |
302 \draw<1>[->] (q1) edge node {$1$} (q2); | |
303 | |
304 \node<2>[state, fill=tumred!20] (q1) [right of = q0] {$q_1$}; | |
305 \draw<2>[->, tumred] (q0) edge node {$\epsilon$} (q1); | |
306 \draw<2>[->, tumred] (q1) edge node {$0$} (q2); | |
307 \draw<2->[->, tumblue] (q0) edge [bend left] node {$0$} (q2); | |
308 | |
309 \draw<3,4,5>[->, tumred] (q0) edge [bend right=20] node [below] {$\epsilon$} (q4); | |
310 \draw<3>[->, tumred] (q4) edge [bend right] node [above] {$1$} (q3); | |
311 \draw<3,4>[->, tumred] (q3) edge [bend right] node [above] {$\epsilon$} (q2); | |
312 \draw<3->[->, tumgreen] (q0) edge node {$1$} (q2); | |
313 | |
314 \draw<4->[->, tumgreen] (q2) edge [loop above] node [above] {$0$} (q2); | |
315 \draw<4->[->, tumgreen] (q3) edge [loop above] node [above] {$0$} (q3); | |
316 \draw<4->[->, tumgreen] (q0) edge [bend right=20] node [above] {$1$} (q3); | |
317 \draw<4->[->, tumgreen] (q4) edge [bend right=70] node [above] {$1$} (q2); | |
318 | |
319 \node<5>[state, initial, accepting, fill=tumgreen!20] (q0) {$q_0$}; | |
320 | |
321 \node<6->[state, initial, accepting] (q0) {$q_0$}; | |
322 \end{tikzpicture} | |
323 \end{frame} | |
324 } | |
325 | |
326 \defineUnit{nfazudfa}{% | |
327 \begin{frame} | |
328 \frametitle{NFA $\rightarrow$ DFA} | |
329 \setbeamercovered{dynamic} | |
330 | |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
331 \begin{block}{Potenzmengenkonstruktion} |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
332 Konstruiere einen Automaten, der \structure{alle möglichen Pfade} gleichzeitig berücksichtigt. |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
333 Gegeben ein NFA $(Q, \Sigma, \delta, S, F)$, konstruiere einen DFA mit Zuständen aus \alert{$\powerset{Q}$}. |
1 | 334 |
335 \begin{itemize} | |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
336 \item Starte in $\left\{ S \right\}$ |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
337 \item Die Übergangsfunktion speichert \structure{alle möglichen Schritte} |
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
338 \begin{align} |
11
de844d67518b
fix powersets; wording
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
10
diff
changeset
|
339 \overline{\delta}: \powerset{Q} \times \Sigma &\to \powerset{Q} \\ |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
340 (M, a) &\mapsto \bigcup_{q \in M} \delta(q, a) |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
341 \end{align} |
12
11723d02ee58
use newer definitions
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
11
diff
changeset
|
342 \item $M$ ist Endzustand wenn $F \cap M \neq \emptyset$ |
1 | 343 \end{itemize} |
344 \end{block} | |
345 | |
346 \begin{tikzpicture}[automaton, bend angle=20, node distance=2.1cm] | |
10
e1b3b7b99d28
second notes and sheet
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
6
diff
changeset
|
347 \tikzstyle{every state}=[minimum width=1cm, pretty] |
1 | 348 \useasboundingbox (-1.4,2) rectangle (9, -2); |
349 | |
350 \node[state, initial] (q0) {$q_0$}; | |
351 \node[state, accepting] (q1) [right of = q0] {$q_1$}; | |
352 | |
353 \draw[->] (q0) edge [loop above] node {$0,1$} (q0); | |
354 \draw[->] (q0) edge node {$1$} (q1); | |
355 | |
356 \node<2->(sep) [right of = q1] {$\rightarrow$}; | |
357 | |
358 \node<2->[state, initial, inner sep=1pt] (pq0) [right of = sep] {$q_{\{0\}}$}; | |
359 | |
360 \node<3->[state, accepting, inner sep=0pt] (pq01) [right of = pq0] {$q_{\{0,1\}}$}; | |
361 \draw<3->[->] (pq0) edge [loop above] node {$0$} (pq0); | |
362 \draw<3->[->] (pq0) edge [bend left] node {$1$} (pq01); | |
363 | |
364 \draw<4->[->] (pq01) edge [loop above] node {$1$} (pq01); | |
365 \draw<4->[->] (pq01) edge [bend left] node {$0$} (pq0); | |
366 | |
367 \end{tikzpicture} | |
368 \end{frame} | |
369 } | |
370 | |
371 \defineUnit{produktautomat}{% | |
372 \begin{frame} | |
373 \frametitle{Produktautomat} | |
374 \setbeamercovered{dynamic} | |
375 | |
376 \begin{theorem} | |
377 Sind $M_1 = (Q_1, \Sigma, \delta_1, s_1, F_1)$ und $M_2 = (Q_2, \Sigma, \delta_2, s_2, F_2)$ DFAs, dann ist der \alert{Produkt-Automat} | |
378 | |
379 \begin{align*} | |
380 M &:= (\alert{Q_1 \times Q_2}, \Sigma, \delta, (s_1, s_2), F_1 \times F_2) \\ | |
381 \delta\left( (q_1, q_2), a \right) &:= \left( \alert{\delta_1}(q_1, a), \alert{\delta_2}(q_2, a) \right) | |
382 \end{align*} | |
383 | |
384 ein DFA, der $L(M_1) \cap L(M_2)$ akzeptiert. | |
385 \end{theorem} | |
386 \end{frame} | |
387 } | |
388 | |
389 \defineUnit{regexrechnen}{% | |
390 \begin{frame} | |
391 \frametitle{Nochmal Reguläre Ausdrücke} | |
392 \setbeamercovered{dynamic} | |
393 | |
394 \begin{theorem} | |
395 Die regulären Ausdrücke $\mathfrak{R}$ über einem Alphabet $\Sigma$ bilden mit Konkatenation $\circ$ und Veroderung $\mid$ einen \alert{Halbring} $\langle \mathfrak{R}, \mid, \circ, \emptyset, \epsilon \rangle$. | |
396 | |
397 \begin{itemize} | |
398 \item \alert{Assoziative} Operationen | |
399 \item Veroderung \alert{kommutativ} | |
400 \item \alert{Distributivität}: $\alpha (\beta \mid \gamma) \equiv \alpha\beta \mid \alpha\gamma$ | |
401 \item $\emptyset$ \alert{neutral} bezüglich Oder | |
402 \item $\epsilon$ \alert{neutral} bezüglich Konkatenation | |
403 \end{itemize} | |
404 \end{theorem} | |
405 | |
406 \begin{example} | |
407 \[ | |
408 1\psi \mid 0\phi \mid \psi \equiv 0 \phi \mid (1 \mid \epsilon) \psi | |
409 \] | |
410 \end{example} | |
411 \end{frame} | |
412 } | |
413 | |
414 \defineUnit{arden}{% | |
415 \begin{frame} | |
416 \frametitle{Ardens Lemma} | |
417 \setbeamercovered{dynamic} | |
418 | |
419 \begin{theorem}[Ardens Lemma] | |
420 Sind $A$, $B$ und $X$ Sprachen mit $\epsilon \not \in A$, dann gilt | |
421 \[ | |
422 X = AX \cup B \Longrightarrow X = A^* B | |
423 \] | |
424 Speziell gilt für reguläre Ausdrücke | |
425 \[ | |
426 X \equiv \alpha X \mid \beta \Longrightarrow X \equiv \alpha^* \beta | |
427 \] | |
428 \end{theorem} | |
429 | |
430 \begin{example} | |
431 \[ | |
432 \psi \equiv 0 \psi \mid (1 \mid \epsilon) \phi \Longrightarrow \psi \equiv 0^*(1\mid \epsilon) \phi | |
433 \] | |
434 \end{example} | |
435 \end{frame} | |
436 } | |
437 | |
438 \defineUnit{nfazure}{% | |
439 \begin{frame} | |
440 \frametitle{NFA $\rightarrow$ RE} | |
441 \setbeamercovered{dynamic} | |
442 | |
443 \begin{block}{Idee} | |
444 Erzeuge ein Gleichungssystem aus allen Zuständen. | |
445 \begin{enumerate} | |
446 \item<1,2-> Ausdruck für jeden Zustand | |
447 \item<1,3-> Auflösen nach $X_0$ mit Algebra und Ardens Lemma | |
448 \end{enumerate} | |
449 \end{block} | |
450 \begin{columns}<2-> | |
451 \begin{column}[b]{.65\textwidth} | |
452 \begin{align*} | |
453 X_0 &\equiv 1X_0 \mid 0X_1 \\ | |
454 &\equiv \uncover<4->{1X_0 \mid 00^*(\epsilon \mid 1X_0)} \\ | |
455 &\equiv \uncover<4->{(1 \mid 00^*1) X_0 \mid 00^*} \\ | |
456 &\equiv \uncover<4->{(1 \mid 00^*1)^*(00^*)} \\ | |
457 \\ | |
458 X_1 &\equiv 1X_0 \mid 0X_1 \alt<3->{\mid \epsilon}{\alert{\mid \epsilon}} \\ | |
459 &\equiv \uncover<3-> {0X_1 \mid (\epsilon \mid 1 X_0)}\\ | |
460 &\equiv \uncover<3-> {\alt<-2,4->{0^*(\epsilon \mid 1X_0)}{\alert{0^*(\epsilon \mid 1X_0)}}} | |
461 \end{align*} | |
462 \end{column} | |
463 \begin{column}[t]{.35\textwidth} | |
464 \begin{tikzpicture}[automaton] | |
465 \node[state, initial] (q0) {$q_0$}; | |
466 \node[state, accepting] (q1) [below of=q0] {$q_1$}; | |
467 | |
468 \draw[->] (q0) edge [bend right] node [left] {$0$} (q1); | |
469 \draw[->] (q1) edge [bend right] node [right] {$1$} (q0); | |
470 \draw[->] (q0) edge [loop right] node {$1$} (q0); | |
471 \draw[->] (q1) edge [loop right] node {$0$} (q1); | |
472 \end{tikzpicture} | |
473 \end{column} | |
474 \end{columns} | |
475 \end{frame} | |
476 } | |
477 | |
478 \defineUnit{rpl}{% | |
479 \begin{frame} | |
480 \frametitle{Pumping Lemma} | |
481 \setbeamercovered{dynamic} | |
482 | |
483 \begin{theorem}[Pumping Lemma für reguläre Sprachen] | |
484 Sei $R \subseteq \Sigma^*$ regulär. Dann gibt es ein $n > 0$, so dass sich \alert{jedes} $z \in R$ mit $|z| \geq n$ so in $z = uvw$ zerlegen lässt, dass | |
485 \begin{itemize} | |
486 \item $v \neq \epsilon$ | |
487 \item $|uv| \alert{\leq n}$ | |
488 \item $\forall i \alert{\geq 0}. uv^iw \in R$ | |
489 \end{itemize} | |
490 \end{theorem} | |
491 | |
492 \vfill | |
493 | |
494 \begin{center} | |
495 \begin{tikzpicture}[automaton] | |
496 \node[state, initial] (q0) {}; | |
497 \node[state, fill=tumred!20] (q1) [right of=q0] {}; | |
498 \node[state, accepting] (q2) [right of=q1] {}; | |
499 | |
500 \draw[->, densely dashed] (q0) edge node {$u$} (q1); | |
501 \draw[->, tumred] (q1) edge [loop above] node {$v$} (q1); | |
502 \draw[->, densely dashed] (q1) edge node {$w$} (q2); | |
503 \end{tikzpicture} | |
504 \end{center} | |
505 \end{frame} | |
506 } | |
507 | |
508 \defineUnit{rplanwenden}{% | |
509 \begin{frame} | |
510 \frametitle{Nichtregularität beweisen} | |
511 \setbeamercovered{dynamic} | |
512 | |
513 \begin{block}{Idee} | |
514 Gegenbeispiel fürs Pumpinglemma suchen. | |
515 \[ | |
516 \alert{\forall} n \in \N_0 \alert{\exists} z \in L. |z| \geq n \ \alert{\forall} u,v,w. \ z = uvw \ \text{\alert{nicht} pumpbar} | |
517 \] | |
518 \end{block} | |
519 | |
520 \vfill | |
521 | |
522 \begin{example}<2-> | |
523 Ist $L = \left\{ a^ib^i \mid i \in \N_0 \right\}$ regulär? | |
524 \begin{enumerate} | |
525 \item \alert{Sei $n$} PL-Zahl | |
526 \item \alert{Wähle} $\alert{z} = a^nb^n$ | |
527 \item Dann ist \alert{$z = uvw$} mit \alert{$|uv| \leq n$}, hier: $v=a^k$ mit $k > 0$ | |
528 \item Dann ist $uv^0w \not \in L$ | |
529 \item Damit ist L \alert{nicht} regulär. | |
530 \end{enumerate} | |
531 \end{example} | |
532 \end{frame} | |
533 } | |
534 | |
535 \defineUnit{aequivalentezustaende}{% | |
536 \begin{frame} | |
537 \frametitle{Äquivalenzen} | |
538 \setbeamercovered{dynamic} | |
539 | |
540 \begin{definition}[Äquivalente Worte] | |
541 Jede Sprache $L \subseteq \Sigma^*$ induziert eine Äquivalenzrelation $\alert{\equiv_L \subseteq \Sigma^* \times \Sigma^*}$: | |
542 \[ | |
543 u \alert{\equiv_L} v \Longleftrightarrow \left( \forall w \in \Sigma^*. \alert{uw} \in L \Leftrightarrow \alert{vw} \in L\right) | |
544 \] | |
545 \end{definition} | |
546 | |
547 \vfill | |
548 | |
549 \pause | |
550 | |
551 \begin{definition}[Äquivalente Zustände] | |
552 Zwei Zustände im DFA $A$ sind \alert{äquivalent} wenn sie die selbe Sprache akzeptieren. | |
553 | |
554 \[ | |
555 p \alert{\equiv_A} q \Longleftrightarrow \left( \forall w \in \Sigma^*. \alert{\hat{\delta}(p, w)} \in F \Leftrightarrow \alert{\hat{\delta}(q, w)} \in F \right) | |
556 \] | |
557 \end{definition} | |
558 \end{frame} | |
559 } | |
560 | |
561 \defineUnit{unterscheidbarezustaende}{% | |
562 \begin{frame} | |
563 \frametitle{Unterscheidbare Zustände} | |
564 \setbeamercovered{dynamic} | |
565 | |
566 \begin{definition}[Unterscheidbarkeit] | |
567 Zwei Zustände sind \alert{unterscheidbar}, wenn sie unterschiedliche Sprachen akzeptieren. | |
568 \[ | |
569 p \alert{\not\equiv_A} q \Longleftrightarrow \left( \exists w \in \Sigma^*. \hat{\delta}(p, w) \alert{\in} F \wedge \hat{\delta}(q, w) \alert{\not\in} F \right) | |
570 \] | |
571 \end{definition} | |
572 | |
573 \begin{theorem} | |
574 Sind $\delta(p, a)$ und $\delta(q, a)$ unterscheidbar, dann auch $p$ und $q$. | |
575 \end{theorem} | |
576 | |
577 \pause | |
578 | |
579 \begin{tikzpicture}[automaton, bend angle=40, node distance=2.5cm] | |
580 \node[state, initial] (q0) {$q_0$}; | |
581 \node[state] (q1) [right of = q0] {$q_1$}; | |
582 \node[state] (q2) [right of = q1] {$q_2$}; | |
583 \node[state, accepting] (q3) [right of = q2] {$q_3$}; | |
584 | |
585 \draw[->] (q0) edge node {$a$} (q1); | |
586 \draw[->] (q0) edge [bend left] node {$b$} (q2); | |
587 \draw[->] (q1) edge node {$a$} (q2); | |
588 \draw[->] (q1) edge [bend right] node {$b$} (q3); | |
589 \draw[->] (q2) edge node {$a,b$} (q3); | |
590 \draw[->] (q3) edge [loop right] node {$a,b$} (q3); | |
591 | |
592 \node<3>[state, fill=tumred!35] () at (q2) {$q_2$}; | |
593 \node<3->[state, accepting, fill=tumgreen!35] () at (q3) {$q_3$}; | |
594 | |
595 \node<4>[state, fill=tumred!35] () at (q0) {$q_0$}; | |
596 \node<4>[state, fill=tumred!35] () at (q1) {$q_1$}; | |
597 \draw<4>[->, tumred] (q0) edge [bend left] node {$b$} (q2); | |
598 \draw<4>[->, tumgreen] (q1) edge [bend right] node {$b$} (q3); | |
599 \end{tikzpicture} | |
600 \end{frame} | |
601 } | |
602 | |
603 \defineUnit{quotientenautomat}{% | |
604 \begin{frame}[t] | |
605 \frametitle{DFA minimieren} | |
606 \setbeamercovered{dynamic} | |
607 | |
608 \begin{block}{Idee} | |
609 Erzeuge den \alert{Quotientenautomaten}. | |
610 \begin{enumerate} | |
611 \item Entferne alle von $q_0$ \alert{nicht erreichbaren} Zustände | |
612 \item<1, 3-> Berechne die \alert{unterscheidbaren} Zustände | |
613 \item<1, 6-> \alert{Kollabiere} die äquivalenten Zustände | |
614 \end{enumerate} | |
615 \end{block} | |
616 | |
617 \vfill | |
618 | |
619 \begin{columns}[c]<2-> | |
620 \begin{column}{.5\textwidth}<3-> | |
621 \begin{center} | |
622 \begin{tabu}to .8\textwidth{|X[c]|X[c]|X[c]|X} | |
623 \multicolumn{2}{l}{0} \\ \tabucline{1-1} | |
624 \alt<-4>{}{\textcolor{tumgreen}{$1/a$}} & \multicolumn{2}{l}{1} \\ \tabucline{1-2} | |
625 \alt<-4>{}{\textcolor{tumgreen}{$1/a$}} & & \multicolumn{2}{l}{2} \\ \tabucline{1-3} | |
626 \alt<-3>{}{\textcolor{tumred}{$\times$}} & \alt<-3>{}{\textcolor{tumred}{$\times$}}& \alt<-3>{} {\textcolor{tumred}{$\times$}}& 3 \\ \tabucline{1-3} | |
627 \end{tabu} | |
628 \end{center} | |
629 \end{column} | |
630 \begin{column}{.5\textwidth} | |
631 \begin{tikzpicture}[automaton, node distance=2.5cm] | |
632 \useasboundingbox (-0.5, -0.5) rectangle (2, -2); | |
633 | |
634 \node[state, initial] (q0) {$q_0$}; | |
635 \node<-5>[state] (q1) [right of = q0] {$q_1$}; | |
636 \node<-5>[state] (q2) [below of = q0] {$q_2$}; | |
637 \node<6>[state, fill=tumred!40] (q12) [right of = q0] {$q_{12}$}; | |
638 \node[state, accepting] (q3) [right of = q2] {$q_3$}; | |
639 | |
640 \draw<-5>[->] (q0) edge node {$a$} (q1); | |
641 \draw<-5>[->] (q0) edge node {$b$} (q2); | |
642 \draw<-5>[->] (q1) edge node {$a,b$} (q3); | |
643 \draw<-5>[->] (q2) edge node {$a,b$} (q3); | |
644 \draw[->] (q3) edge [loop right] node [above] {$a,b$} (q3); | |
645 | |
646 \draw<6>[->] (q12) edge node {$a,b$} (q3); | |
647 \draw<6>[->] (q0) edge node {$a,b$} (q12); | |
648 \end{tikzpicture} | |
649 \end{column} | |
650 \end{columns} | |
651 \end{frame} | |
652 } | |
653 | |
654 \defineUnit{regulaeresprachen}{% | |
655 \begin{frame} | |
656 \frametitle{Reguläre Sprachen} | |
657 \setbeamercovered{dynamic} | |
658 | |
659 \begin{center} | |
660 \begin{tikzpicture}[node distance=2cm] | |
661 \node (nfa) {NFA}; | |
662 \node (dfa) [left of=nfa] {DFA}; | |
663 \node (enfa) [right of=nfa] {$\epsilon$-NFA}; | |
664 \node (re) [below of=nfa] {RE}; | |
665 | |
666 \draw [every edge] (nfa) -- (dfa); | |
667 \draw [every edge] (enfa) -- (nfa); | |
668 \draw [every edge] (dfa) -- (re); | |
669 \draw [every edge] (nfa) -- (re); | |
670 \draw [every edge] (re) -- (enfa); | |
671 \end{tikzpicture} | |
672 \end{center} | |
673 | |
674 \vfill | |
675 | |
676 \begin{theorem} | |
677 Für eine Darstellung $D$ einer regulären Sprache ist \alert{entscheidbar}: | |
678 \vspace{1em} | |
679 \begin{description} | |
680 \item[Wortproblem] Gegeben $w$, gilt $w \in L(D)$? | |
681 \item[Leerheitsproblem] Ist $L(D) = \emptyset$? | |
682 \item[Endlichkeitsproblem] Ist $|L(D)| < \infty$? | |
683 \item[Äquivalenzproblem] Gilt $L(D_1) = L(D_2)$? | |
684 \end{description} | |
685 \end{theorem} | |
686 \end{frame} | |
687 } |