48 \end{itemize} | 
    48 \end{itemize} | 
    49   | 
    49   | 
    50 \end{frame} | 
    50 \end{frame} | 
    51 %%%%%%%%%%%  | 
    51 %%%%%%%%%%%  | 
    52   | 
    52   | 
    53 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
    54 \begin{frame}[c] | 
         | 
    55 \frametitle{Regular Expressions} | 
         | 
    56   | 
         | 
    57 In programming languages they are often used to recognise:\medskip  | 
         | 
    58   | 
         | 
    59 \begin{itemize} | 
         | 
    60 \item symbols, digits  | 
         | 
    61 \item identifiers  | 
         | 
    62 \item numbers (non-leading zeros)  | 
         | 
    63 \item keywords  | 
         | 
    64 \item comments  | 
         | 
    65 \end{itemize}\bigskip | 
         | 
    66   | 
         | 
    67 \mbox{}\hfill\bl{\url{http://www.regexper.com}} | 
         | 
    68 \end{frame} | 
         | 
    69 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
    70   | 
    53   | 
    71   | 
    54   | 
    72 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
    55 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
    73 \begin{frame}[c] | 
    56 \begin{frame}[c] | 
    74 \frametitle{Last Week} | 
    57 \frametitle{Last Week} | 
   148   | 
   131   | 
   149 \end{frame} | 
   132 \end{frame} | 
   150 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   151   | 
   134   | 
   152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   135 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   153 \begin{frame}[c] | 
   136 \begin{frame}[t] | 
   154 \frametitle{Simplification} | 
   137 \frametitle{Simplification} | 
   155   | 
   138   | 
   156 Given \bl{$r \dn ((a \cdot b) + b)^*$} what is | 
   139 Given \bl{$r \dn ((a \cdot b) + b)^*$}, you can simplify as follows | 
   157   | 
   140   | 
   158 \begin{center} | 
   141 \begin{center} | 
   159 \def\arraystretch{2}   | 
   142 \def\arraystretch{2}   | 
   160 \begin{tabular}{@{}lcl} | 
   143 \begin{tabular}{@{}lcl} | 
   161   \bl{$((\ONE \cdot b) + \ZERO) \cdot r$} | 
   144   \bl{$((\ONE \cdot b) + \ZERO) \cdot r$} | 
   295   | 
   278   | 
   296 A \alert{\bf deterministic finite automaton}, DFA, consists of: | 
   279 A \alert{\bf deterministic finite automaton}, DFA, consists of: | 
   297   | 
   280   | 
   298 \begin{itemize} | 
   281 \begin{itemize} | 
   299 \item an alphabet \bl{$\varSigma$}   | 
   282 \item an alphabet \bl{$\varSigma$}   | 
   300 \item a set of states \bl{$\mbox{Q}$} | 
   283 \item a set of states \bl{$\mbox{Qs}$} | 
   301 \item one of these states is the start state \bl{$\mbox{Q}_0$} | 
   284 \item one of these states is the start state \bl{$\mbox{Q}_0$} | 
   302 \item some states are accepting states \bl{$F$}, and | 
   285 \item some states are accepting states \bl{$F$}, and | 
   303 \item there is transition function \bl{$\delta$}\bigskip  | 
   286 \item there is transition function \bl{$\delta$}\bigskip  | 
   304   | 
   287   | 
   305 \small  | 
   288 \small  | 
   306 which takes a state as argument and a character and produces a   | 
   289 which takes a state as argument and a character and produces a   | 
   307 new state; this function might not be everywhere defined $\Rightarrow$ partial function  | 
   290 new state; this function might not be everywhere defined $\Rightarrow$ partial function  | 
   308 \end{itemize} | 
   291 \end{itemize} | 
   309   | 
   292   | 
   310 \begin{center} | 
   293 \begin{center} | 
   311 \bl{$A(\varSigma, \mbox{Q}, \mbox{Q}_0, F, \delta)$} | 
   294 \bl{$A(\varSigma, \mbox{Qs}, \mbox{Q}_0, F, \delta)$} | 
   312 \end{center} | 
   295 \end{center} | 
   313   | 
   296   | 
   314 \end{frame} | 
   297 \end{frame} | 
   315 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   298 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   316   | 
   299   | 
   472 \end{tikzpicture} | 
   455 \end{tikzpicture} | 
   473 \end{center} | 
   456 \end{center} | 
   474   | 
   457   | 
   475 \end{frame} | 
   458 \end{frame} | 
   476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   459 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
   460   | 
         | 
   461 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
   462 \begin{frame}[c] | 
         | 
   463 \frametitle{Another Example} | 
         | 
   464   | 
         | 
   465 For the regular expression \bl{$(.^*)a\,(.^{\{n\}})bc$}\bigskip\bigskip | 
         | 
   466   | 
         | 
   467 % \begin{center} | 
         | 
   468 \mbox{}\hspace{-11mm} | 
         | 
   469 	\begin{tikzpicture}[>=stealth',very thick, auto, | 
         | 
   470 	every state/.style={minimum size=5pt,inner sep=1pt, | 
         | 
   471 		draw=blue!50,very thick,fill=blue!20},scale=1, node distance=5mm,  | 
         | 
   472 	decoration={brace,mirror,amplitude=7}] | 
         | 
   473 	\node[state,initial]  (Q_0)  {$\;0\;$}; | 
         | 
   474 	\node[state] (Q_1) [right=of Q_0] {$\;1\;$}; | 
         | 
   475 	\node[state] (Q_2) [right=of Q_1] {$\;2\;$}; | 
         | 
   476 	\node (Q_3) [right=of Q_2] {$\hspace{-1mm}\ldots\hspace{-3mm}$}; | 
         | 
   477 	\node[state] (Q_4) [right=of Q_3] {$\;\phantom{1}\;$}; | 
         | 
   478 	\node (Q_5) [right=of Q_4] {$\hspace{-1mm}\ldots\hspace{-3mm}$}; | 
         | 
   479 	\node[state] (Q_6) [right=of Q_5] {\tiny$n+1$}; | 
         | 
   480 	\node[state] (Q_7) [right=of Q_6] {\tiny$n+2$}; | 
         | 
   481 	\node[state,accepting] (Q_8) [right=of Q_7] {\tiny$n+3$}; | 
         | 
   482 	  | 
         | 
   483 	\path[->] (Q_0) edge [loop above] node {$*$} (); | 
         | 
   484 	\path[->] (Q_0) edge node [above] {$a$} (Q_1); | 
         | 
   485 	\path[->] (Q_1) edge node [above] {$*$} (Q_2); | 
         | 
   486 	\path[->] (Q_2) edge node [above] {$*$} (Q_3); | 
         | 
   487 	\path[->] (Q_4) edge node [above] {$*$} (Q_5); | 
         | 
   488 	\path[->] (Q_5) edge node [above] {$*$} (Q_6); | 
         | 
   489 	\path[->] (Q_6) edge node [above] {$b$} (Q_7); | 
         | 
   490 	\path[->] (Q_7) edge node [above] {$c$} (Q_8); | 
         | 
   491 	  | 
         | 
   492 	\draw [decorate] ([yshift=-5mm]Q_1.east) --node[below=3mm]{$n$} ([yshift=-5mm]Q_6.west); | 
         | 
   493 	\end{tikzpicture}\bigskip | 
         | 
   494   | 
         | 
   495   | 
         | 
   496 {\small Note the star-transitions: accept any character.} | 
         | 
   497           | 
         | 
   498 \end{frame} | 
   477   | 
   499   | 
   478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   479 \begin{frame}[c] | 
   501 \begin{frame}[c] | 
   480 \frametitle{Two Epsilon NFA Examples} | 
   502 \frametitle{Two Epsilon NFA Examples} | 
   481   | 
   503   |