diff -r c78bb592a034 -r 25580bf89ac0 handouts/ho02.tex --- a/handouts/ho02.tex Wed Sep 27 21:29:25 2017 +0100 +++ b/handouts/ho02.tex Thu Sep 28 11:04:11 2017 +0100 @@ -23,7 +23,7 @@ match the strings). To see the substantial differences in the left and right plots below, note the different scales of the $x$-axes. - + \begin{center} Graphs: $(a^*)^* \cdot b$ and strings $\underbrace{a\ldots a}_{n}$ \begin{tabular}{@{}cc@{}} @@ -282,7 +282,7 @@ that they hold. As an aside, there has been a lot of research about questions like: Can one always decide when two regular expressions are equivalent or not? What does an algorithm look like to decide this -efficiently? +efficiently? So in general it is not a trivial problem. \subsection*{The Matching Algorithm} @@ -726,7 +726,7 @@ \end{center} \noindent -To reacap, Python and Ruby needed approximately 30 seconds to match a +To recap, Python and Ruby needed approximately 30 seconds to match a string of 28 \texttt{a}s and the regular expression $a^{?\{n\}} \cdot a^{\{n\}}$. We need a third of this time to do the same with strings up to 11,000 \texttt{a}s. Similarly, Java and Python needed 30 @@ -774,7 +774,7 @@ but it seems it is a combination of the clauses for \texttt{ALT} and \texttt{SEQ}. In the latter case we call \texttt{der} with a single character and this potentially produces an alternative. -The derivative of such an alternative can then be more effeciently +The derivative of such an alternative can then be more efficiently calculated by \texttt{ders2} since it pushes a whole string under an \texttt{ALT}. The numbers are that in the second case $(a^*)^* \cdot b$ both versions are pretty much the same, but in the @@ -1046,7 +1046,7 @@ recipes} is already a big step in actually performing these proofs. If you do not believe it, proofs have helped me to make sure my code is correct and in several instances prevented me of letting slip -embarassing mistakes into the `wild'. +embarrassing mistakes into the `wild'. \end{document}