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