slides/slides03.tex
changeset 137 69cec773736b
parent 136 cc19e6cbcb68
child 138 b98a0a49c432
equal deleted inserted replaced
136:cc19e6cbcb68 137:69cec773736b
    16 \usetikzlibrary{automata}
    16 \usetikzlibrary{automata}
    17 \usetikzlibrary{shapes}
    17 \usetikzlibrary{shapes}
    18 \usetikzlibrary{shadows}
    18 \usetikzlibrary{shadows}
    19 \usetikzlibrary{positioning}
    19 \usetikzlibrary{positioning}
    20 \usetikzlibrary{calc}
    20 \usetikzlibrary{calc}
       
    21 \usetikzlibrary{fit}
       
    22 \usetikzlibrary{backgrounds}
    21 \usepackage{graphicx} 
    23 \usepackage{graphicx} 
    22 
    24 
    23 \definecolor{javared}{rgb}{0.6,0,0} % for strings
    25 \definecolor{javared}{rgb}{0.6,0,0} % for strings
    24 \definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments
    26 \definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments
    25 \definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords
    27 \definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords
   434 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   435 \mode<presentation>{
   437 \mode<presentation>{
   436 \begin{frame}[c]
   438 \begin{frame}[c]
   437 
   439 
   438 \begin{center}
   440 \begin{center}
   439 \includegraphics[scale=0.7]{pics/ch3.jpg}
   441 \begin{tikzpicture}[>=stealth',very thick,auto,
       
   442                              every state/.style={minimum size=0pt,inner sep=2pt,draw=blue!50,very thick,fill=blue!20},]
       
   443 \node[state,initial]  (q_0)  {$q_0$};
       
   444 \node[state] (q_1) [right=of q_0] {$q_1$};
       
   445 \node[state] (q_2) [below right=of q_0] {$q_2$};
       
   446 \node[state] (q_3) [right=of q_2] {$q_3$};
       
   447 \node[state, accepting] (q_4) [right=of q_1] {$q_4$};
       
   448 \path[->] (q_0) edge node [above]  {\alert{$a$}} (q_1);
       
   449 \path[->] (q_1) edge node [above]  {\alert{$a$}} (q_4);
       
   450 \path[->] (q_4) edge [loop right] node  {\alert{$a, b$}} ();
       
   451 \path[->] (q_3) edge node [right]  {\alert{$a$}} (q_4);
       
   452 \path[->] (q_2) edge node [above]  {\alert{$a$}} (q_3);
       
   453 \path[->] (q_1) edge node [right]  {\alert{$b$}} (q_2);
       
   454 \path[->] (q_0) edge node [above]  {\alert{$b$}} (q_2);
       
   455 \path[->] (q_2) edge [loop left] node  {\alert{$b$}} ();
       
   456 \path[->] (q_3) edge [bend left=95, looseness=1.3] node [below]  {\alert{$b$}} (q_0);
       
   457 \end{tikzpicture}
   440 \end{center}\pause
   458 \end{center}\pause
       
   459 
   441 
   460 
   442 \begin{itemize}
   461 \begin{itemize}
   443 \item start can be an accepting state
   462 \item start can be an accepting state
   444 \item it is possible that there is no accepting state
   463 \item it is possible that there is no accepting state
   445 \item all states might be accepting (but does not necessarily mean all strings are accepted)
   464 \item all states might be accepting (but does not necessarily mean all strings are accepted)
   451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   470 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   452 \mode<presentation>{
   471 \mode<presentation>{
   453 \begin{frame}[c]
   472 \begin{frame}[c]
   454 
   473 
   455 \begin{center}
   474 \begin{center}
   456 \includegraphics[scale=0.7]{pics/ch3.jpg}
   475 \begin{tikzpicture}[>=stealth',very thick,auto,
       
   476                              every state/.style={minimum size=0pt,inner sep=2pt,draw=blue!50,very thick,fill=blue!20},]
       
   477 \node[state,initial]  (q_0)  {$q_0$};
       
   478 \node[state] (q_1) [right=of q_0] {$q_1$};
       
   479 \node[state] (q_2) [below right=of q_0] {$q_2$};
       
   480 \node[state] (q_3) [right=of q_2] {$q_3$};
       
   481 \node[state, accepting] (q_4) [right=of q_1] {$q_4$};
       
   482 \path[->] (q_0) edge node [above]  {\alert{$a$}} (q_1);
       
   483 \path[->] (q_1) edge node [above]  {\alert{$a$}} (q_4);
       
   484 \path[->] (q_4) edge [loop right] node  {\alert{$a, b$}} ();
       
   485 \path[->] (q_3) edge node [right]  {\alert{$a$}} (q_4);
       
   486 \path[->] (q_2) edge node [above]  {\alert{$a$}} (q_3);
       
   487 \path[->] (q_1) edge node [right]  {\alert{$b$}} (q_2);
       
   488 \path[->] (q_0) edge node [above]  {\alert{$b$}} (q_2);
       
   489 \path[->] (q_2) edge [loop left] node  {\alert{$b$}} ();
       
   490 \path[->] (q_3) edge [bend left=95, looseness=1.3] node [below]  {\alert{$b$}} (q_0);
       
   491 \end{tikzpicture}
   457 \end{center}
   492 \end{center}
   458 
   493 
   459 for this automaton \bl{$\delta$} is the function\\
   494 for this automaton \bl{$\delta$} is the function\\
   460 
   495 
   461 \begin{center}
   496 \begin{center}
   462 \begin{tabular}{lll}
   497 \begin{tabular}{lll}
   463 \bl{(q$_0$, a) $\rightarrow$ q$_1$} & \bl{(q$_1$, a) $\rightarrow$ q$_4$} & \bl{(q$_4$, a) $\rightarrow$ q$_4$}\\
   498 \bl{$(q_0, a) \rightarrow q_1$} & \bl{$(q_1, a) \rightarrow q_4$} & \bl{$(q_4, a) \rightarrow q_4$}\\
   464 \bl{(q$_0$, b) $\rightarrow$ q$_2$} & \bl{(q$_1$, b) $\rightarrow$ q$_2$} & \bl{(q$_4$, b) $\rightarrow$ q$_4$}\\
   499 \bl{$(q_0, b) \rightarrow q_2$} & \bl{$(q_1, b) \rightarrow q_2$} & \bl{$(q_4, b) \rightarrow q_4$}\\
   465 \end{tabular}\ldots
   500 \end{tabular}\ldots
   466 \end{center}
   501 \end{center}
   467 
   502 
   468 \end{frame}}
   503 \end{frame}}
   469 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   513 \end{itemize}
   548 \end{itemize}
   514 
   549 
   515 
   550 
   516 \begin{center}
   551 \begin{center}
   517 \begin{tabular}{c}
   552 \begin{tabular}{c}
   518 \bl{(q$_1$, a) $\rightarrow$ q$_2$}\\
   553 \bl{$(q_1, a) \rightarrow q_2$}\\
   519 \bl{(q$_1$, a) $\rightarrow$ q$_3$}\\
   554 \bl{$(q_1, a) \rightarrow q_3$}\\
   520 \end{tabular}
   555 \end{tabular}
   521 \hspace{10mm}
   556 \hspace{10mm}
   522 \begin{tabular}{c}
   557 \begin{tabular}{c}
   523 \bl{(q$_1$, $\epsilon$) $\rightarrow$ q$_2$}\\
   558 \bl{$(q_1, \epsilon) \rightarrow q_2$}\\
   524 \end{tabular}
   559 \end{tabular}
   525 \end{center}
   560 \end{center}
   526 
   561 
   527 \end{frame}}
   562 \end{frame}}
   528 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   563 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   529 
   564 
   530 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   565 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   531 \mode<presentation>{
   566 \mode<presentation>{
   532 \begin{frame}[c]
   567 \begin{frame}[c]
   533 \frametitle{An NFA}
   568 \frametitle{An NFA Example}
   534 
   569 
   535 \begin{center}
   570 \begin{center}
   536 \begin{tikzpicture}[scale=0.7,>=stealth',very thick,
   571 \begin{tikzpicture}[scale=0.7,>=stealth',very thick,
   537                              every state/.style={minimum size=0pt,draw=blue!50,very thick,fill=blue!20},]
   572                              every state/.style={minimum size=0pt,draw=blue!50,very thick,fill=blue!20},]
   538 \node[state,initial]  (q_0)  {$q_0$};
   573 \node[state,initial]  (q_0)  {$q_0$};
   551 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   586 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   552 
   587 
   553 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   588 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   554 \mode<presentation>{
   589 \mode<presentation>{
   555 \begin{frame}[c]
   590 \begin{frame}[c]
   556 
   591 \frametitle{Rexp to NFA}
   557 \begin{center}
   592 
   558 \begin{tabular}[b]{ll}
   593 \begin{center}
   559 \bl{$\varnothing$} & \includegraphics[scale=0.7]{pics/NULL.jpg}\\\\
   594 \begin{tabular}[t]{l@{\hspace{10mm}}l}
   560 \bl{$\epsilon$} & \includegraphics[scale=0.7]{pics/epsilon.jpg}\\\\
   595 \raisebox{1mm}{\bl{$\varnothing$}} & 
   561 \bl{c} & \includegraphics[scale=0.7]{pics/char.jpg}\\
   596 \begin{tikzpicture}[scale=0.7,>=stealth',very thick, every state/.style={minimum size=3pt,draw=blue!50,very thick,fill=blue!20},]
       
   597 \node[state, initial]  (q_0)  {$\mbox{}$};
       
   598 \end{tikzpicture}\\\\
       
   599 \raisebox{1mm}{\bl{$\epsilon$}} & 
       
   600 \begin{tikzpicture}[scale=0.7,>=stealth',very thick, every state/.style={minimum size=3pt,draw=blue!50,very thick,fill=blue!20},]
       
   601 \node[state, initial, accepting]  (q_0)  {$\mbox{}$};
       
   602 \end{tikzpicture}\\\\
       
   603 \raisebox{2mm}{\bl{$c$}} & 
       
   604 \begin{tikzpicture}[scale=0.7,>=stealth',very thick, every state/.style={minimum size=3pt,draw=blue!50,very thick,fill=blue!20},]
       
   605 \node[state, initial]  (q_0)  {$\mbox{}$};
       
   606 \node[state, accepting]  (q_1)  [right=of q_0] {$\mbox{}$};
       
   607 \path[->] (q_0) edge node [below]  {\alert{$c$}} (q_1);
       
   608 \end{tikzpicture}\\\\
   562 \end{tabular}
   609 \end{tabular}
   563 \end{center}
   610 \end{center}
   564 
   611 
   565 \end{frame}}
   612 \end{frame}}
   566 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   613 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   567 
   614 
   568 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   615 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   569 \mode<presentation>{
   616 \mode<presentation>{
   570 \begin{frame}[c]
   617 \begin{frame}[t]
   571 
   618 \frametitle{Case $r_1\cdot r_2$}
   572 \begin{center}
   619 
   573 \begin{tabular}[t]{ll}
   620 \mbox{}\bigskip
   574 \bl{r$_1$ $\cdot$ r$_2$} & \includegraphics[scale=0.6]{pics/seq.jpg}\\\\
   621 \onslide<1>{By recursion we are given two automata:\bigskip}
   575 \end{tabular}
   622 
   576 \end{center}
   623 \begin{tikzpicture}[node distance=3mm,
   577 
   624                              >=stealth',very thick, every state/.style={minimum size=3pt,draw=blue!50,very thick,fill=blue!20},]
   578 \end{frame}}
   625 \node[state, initial]  (q_0)  {$\mbox{}$};
   579 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   626 \node (r_1)  [right=of q_0] {$\ldots$};
   580 
   627 \only<1>{
   581 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   628 \node[state, accepting]  (t_1)  [right=of r_1] {$\mbox{}$};
   582 \mode<presentation>{
   629 \node[state, accepting]  (t_2)  [above=of t_1] {$\mbox{}$};
   583 \begin{frame}[c]
   630 \node[state, accepting]  (t_3)  [below=of t_1] {$\mbox{}$};}
   584 
   631 \only<2>{
   585 \begin{center}
   632 \node[state]  (t_1)  [right=of r_1] {$\mbox{}$};
   586 \begin{tabular}[t]{ll}
   633 \node[state]  (t_2)  [above=of t_1] {$\mbox{}$};
   587 \bl{r$_1$ + r$_2$} & \includegraphics[scale=0.7]{pics/alt.jpg}\\\\
   634 \node[state]  (t_3)  [below=of t_1] {$\mbox{}$};}
   588 \end{tabular}
   635 \only<1>{\node[state, initial]  (a_0)  [right=2.5cm of t_1] {$\mbox{}$};}
   589 \end{center}
   636 \only<2>{\node[state]  (a_0)  [right=2.5cm of t_1] {$\mbox{}$};}
   590 
   637 \node (b_1)  [right=of a_0] {$\ldots$};
   591 \end{frame}}
   638 \node[state, accepting]  (c_1)  [right=of b_1] {$\mbox{}$};
   592 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   639 \node[state, accepting]  (c_2)  [above=of c_1] {$\mbox{}$};
   593 
   640 \node[state, accepting]  (c_3)  [below=of c_1] {$\mbox{}$};
   594 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   641 \only<2>{
   595 \mode<presentation>{
   642 \path[->] (t_1) edge node [above, pos=0.3]  {\alert{$\epsilon$}} (a_0);
   596 \begin{frame}[c]
   643 \path[->] (t_2) edge node [above]  {\alert{$\epsilon$}} (a_0);
       
   644 \path[->] (t_3) edge node [below]  {\alert{$\epsilon$}} (a_0);
       
   645 }
       
   646 \begin{pgfonlayer}{background}
       
   647 \only<1>{\node (1) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (q_0) (r_1) (t_1) (t_2) (t_3)] {};}
       
   648 \only<1>{\node (2) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (a_0) (b_1) (c_1) (c_2) (c_3)] {};}
       
   649 \only<2>{\node (3) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (q_0) (c_1) (c_2) (c_3)] {};}
       
   650 \only<1>{\node [yshift=2mm] at (1.north) {\bl{$r_1$}};}
       
   651 \only<1>{\node [yshift=2mm] at (2.north) {\bl{$r_2$}};}
       
   652 \only<2>{\node [yshift=2mm] at (3.north) {\bl{$r_1\cdot r_2$}};}
       
   653 \end{pgfonlayer}
       
   654 \end{tikzpicture}\bigskip\bigskip
       
   655 
       
   656 \small
       
   657 We need to (1) change the accepting nodes of the first automaton into non-accepting nodes, and (2) connect them
       
   658 via $\epsilon$-transitions to the starting state of the second automaton. 
       
   659 
       
   660 \end{frame}}
       
   661 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
   662 
       
   663 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   664 \mode<presentation>{
       
   665 \begin{frame}[t]
       
   666 \frametitle{Case $r_1+ r_2$}
       
   667 
       
   668 \onslide<1>{By recursion we are given two automata:\smallskip}
       
   669 
       
   670 \begin{tikzpicture}[node distance=3mm,
       
   671                              >=stealth',very thick, every state/.style={minimum size=3pt,draw=blue!50,very thick,fill=blue!20},]
       
   672 \onslide<1>{\node at (0,0)  (1)  {$\mbox{}$};}
       
   673 \onslide<2>{\node at (0,0) [state, initial]  (1)  {$\mbox{}$};}
       
   674 \only<1>{
       
   675 \node[state, initial]  (2)  [above right=16mm of 1] {$\mbox{}$};
       
   676 \node[state, initial]  (3)  [below right=16mm of 1] {$\mbox{}$};}
       
   677 \only<2>{
       
   678 \node[state]  (2)  [above right=16mm of 1] {$\mbox{}$};
       
   679 \node[state]  (3)  [below right=16mm of 1] {$\mbox{}$};}
       
   680 
       
   681 \node (a)  [right=of 2] {$\ldots$};
       
   682 \node[state, accepting]  (a1)  [right=of a] {$\mbox{}$};
       
   683 \node[state, accepting]  (a2)  [above=of a1] {$\mbox{}$};
       
   684 \node[state, accepting]  (a3)  [below=of a1] {$\mbox{}$};
       
   685 
       
   686 \node (b)  [right=of 3] {$\ldots$};
       
   687 \node[state, accepting]  (b1)  [right=of b] {$\mbox{}$};
       
   688 \node[state, accepting]  (b2)  [above=of b1] {$\mbox{}$};
       
   689 \node[state, accepting]  (b3)  [below=of b1] {$\mbox{}$};
       
   690 \only<2>{
       
   691 \path[->] (1) edge node [above]  {\alert{$\epsilon$}} (2);
       
   692 \path[->] (1) edge node [below]  {\alert{$\epsilon$}} (3);
       
   693 }
       
   694 \begin{pgfonlayer}{background}
       
   695 \only<1>{\node (1) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (2) (a1) (a2) (a3)] {};}
       
   696 \only<1>{\node (2) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (3) (b1) (b2) (b3)] {};}
       
   697 \only<2>{\node (3) [rounded corners, inner sep=1mm, thick, draw=black!60, fill=black!20, fit= (1) (a2) (a3) (b2) (b3)] {};}
       
   698 \only<1>{\node [yshift=3mm] at (1.north) {\bl{$r_1$}};}
       
   699 \only<1>{\node [yshift=3mm] at (2.north) {\bl{$r_2$}};}
       
   700 \only<2>{\node [yshift=3mm] at (3.north) {\bl{$r_1+ r_2$}};}
       
   701 \end{pgfonlayer}
       
   702 \end{tikzpicture}
       
   703 
       
   704 \small
       
   705 We (1) need to introduce a new starting state and (2) connect it to the original two starting states.
       
   706 \end{frame}}
       
   707 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
   708 
       
   709 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   710 \mode<presentation>{
       
   711 \begin{frame}[c]
       
   712 \frametitle{Rexp to NFA}
   597 
   713 
   598 \begin{center}
   714 \begin{center}
   599 \begin{tabular}[b]{ll}
   715 \begin{tabular}[b]{ll}
   600 \bl{r$^*$} & \includegraphics[scale=0.7]{pics/star.jpg}\\
   716 \bl{r$^*$} & \includegraphics[scale=0.7]{pics/star.jpg}\\
   601 \end{tabular}
   717 \end{tabular}