345 \end{itemize} |
345 \end{itemize} |
346 |
346 |
347 \end{frame} |
347 \end{frame} |
348 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
348 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
349 |
349 |
350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
351 \begin{frame}[c] |
|
352 \frametitle{DFAs} |
|
353 |
|
354 \begin{center} |
|
355 \begin{tikzpicture}[>=stealth',very thick,auto, |
|
356 every state/.style={minimum size=0pt,inner sep=2pt, |
|
357 draw=blue!50,very thick,fill=blue!20},] |
|
358 |
|
359 \only<1,3->{\node[state,initial] (Q_0) {$\mbox{Q}_0$};} |
|
360 \only<2>{\node[state,initial,fill=red] (Q_0) {$\mbox{Q}_0$};} |
|
361 \only<1,2,4->{\node[state] (Q_1) [right=of Q_0] {$\mbox{Q}_1$};} |
|
362 \only<3>{\node[state,fill=red] (Q_1) [right=of Q_0] {$\mbox{Q}_1$};} |
|
363 \only<-3,5->{\node[state] (Q_2) [below right=of Q_0] {$\mbox{Q}_2$};} |
|
364 \only<4>{\node[state,fill=red] (Q_2) [below right=of Q_0] {$\mbox{Q}_2$};} |
|
365 \only<-4,6->{\node[state] (Q_3) [right=of Q_2] {$\mbox{Q}_3$};} |
|
366 \only<5>{\node[state,fill=red] (Q_3) [right=of Q_2] {$\mbox{Q}_3$};} |
|
367 \only<-5>{\node[state, accepting] (Q_4) [right=of Q_1] {$\mbox{Q}_4$};} |
|
368 \only<6->{\node[state, accepting,fill=red] (Q_4) [right=of Q_1] {$\mbox{Q}_4$};} |
|
369 |
|
370 \path[->] (Q_0) edge node [above] {\alert{$a$}} (Q_1); |
|
371 \path[->] (Q_1) edge node [above] {\alert{$a$}} (Q_4); |
|
372 \path[->] (Q_4) edge [loop right] node {\alert{$a, b$}} (); |
|
373 \path[->] (Q_3) edge node [right] {\alert{$a$}} (Q_4); |
|
374 \path[->] (Q_2) edge node [above] {\alert{$a$}} (Q_3); |
|
375 \path[->] (Q_1) edge node [right] {\alert{$b$}} (Q_2); |
|
376 \path[->] (Q_0) edge node [above] {\alert{$b$}} (Q_2); |
|
377 \path[->] (Q_2) edge [loop left] node {\alert{$b$}} (); |
|
378 \path[->] (Q_3) edge [bend left=95, looseness=1.3] node [below] {\alert{$b$}} (Q_0); |
|
379 \end{tikzpicture} |
|
380 \end{center} |
|
381 |
|
382 \begin{textblock}{9}(4,12) |
|
383 \LARGE{} |
|
384 \only<3->{\boldmath\alert{$a$}}% |
|
385 \only<4->{\boldmath\alert{$b$}}% |
|
386 \only<5->{\boldmath\alert{$a$}}% |
|
387 \only<6->{\boldmath\alert{$a$}}% |
|
388 \only<7->{\boldmath\alert{$a\quad\Rightarrow \textbf{yes}$}}% |
|
389 \end{textblock} |
|
390 |
|
391 \end{frame} |
|
392 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
393 |
|
394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
395 \begin{frame}[t] |
|
396 \frametitle{DFAs} |
|
397 |
|
398 A \alert{\bf deterministic finite automaton}, DFA, consists of |
|
399 5 things: |
|
400 |
|
401 \begin{itemize} |
|
402 \item an alphabet \bl{$\varSigma$} |
|
403 \item a set of states \bl{$\mbox{Qs}$} |
|
404 \item one of these states is the start state \bl{$\mbox{Q}_0$} |
|
405 \item some states are accepting states \bl{$F$}, and |
|
406 \item there is transition function \bl{$\delta$}\bigskip |
|
407 |
|
408 \small |
|
409 which takes a state and a character as arguments and produces a |
|
410 new state; this function might not be everywhere defined |
|
411 \end{itemize} |
|
412 |
|
413 \begin{center} |
|
414 \bl{$A(\varSigma, \mbox{Qs}, \mbox{Q}_0, F, \delta)$} |
|
415 \end{center} |
|
416 |
|
417 \end{frame} |
|
418 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
419 |
|
420 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
421 \begin{frame}[c] |
|
422 \frametitle{NFAs} |
|
423 |
|
424 \begin{center} |
|
425 \begin{tikzpicture}[>=stealth',very thick, auto, |
|
426 every state/.style={minimum size=0pt,inner sep=3pt, |
|
427 draw=blue!50,very thick,fill=blue!20},scale=2] |
|
428 \node[state,initial] (Q_0) {$\mbox{Q}_0$}; |
|
429 \node[state] (Q_1) [right=of Q_0] {$\mbox{Q}_1$}; |
|
430 \node[state, accepting] (Q_2) [right=of Q_1] {$\mbox{Q}_2$}; |
|
431 \path[->] (Q_0) edge [loop above] node {\alert{$b$}} (); |
|
432 \path[<-] (Q_0) edge node [below] {\alert{$b$}} (Q_1); |
|
433 \path[->] (Q_0) edge [bend left] node [above] {\alert{$a$}} (Q_1); |
|
434 \path[->] (Q_0) edge [bend right=45,looseness=1.3] node [below] {\alert{$a$}} (Q_2); |
|
435 \path[->] (Q_1) edge [loop above] node {\alert{$a,b$}} (); |
|
436 \path[->] (Q_1) edge node [above] {\alert{$a$}} (Q_2); |
|
437 \end{tikzpicture} |
|
438 \end{center} |
|
439 |
|
440 \end{frame} |
|
441 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
442 |
|
443 |
350 |
444 |
351 |
445 \begin{frame}[t] |
352 \begin{frame}[t] |
446 |
353 |
447 \begin{center} |
354 \begin{center} |