| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Sat, 23 Sep 2023 23:53:06 +0100 | |
| changeset 926 | d543eaddc7ba | 
| parent 916 | 2ab96407f350 | 
| child 936 | aabd9168c7ac | 
| permissions | -rw-r--r-- | 
| 23 | 1 | \documentclass{article}
 | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 2 | \usepackage{../style}
 | 
| 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 3 | \usepackage{../graphics}
 | 
| 23 | 4 | |
| 5 | \begin{document}
 | |
| 6 | ||
| 7 | \section*{Homework 3}
 | |
| 8 | ||
| 916 | 9 | %\HEADER | 
| 347 
22b5294daa2a
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
294diff
changeset | 10 | |
| 23 | 11 | \begin{enumerate}
 | 
| 647 | 12 | \item The regular expression matchers in Java, Python and Ruby can be | 
| 13 | very slow with some (basic) regular expressions. What is the main | |
| 14 | reason for this inefficient computation? | |
| 892 | 15 | |
| 16 |   \solution{Many matchers employ DFS type of algorithms to check
 | |
| 17 | if a string is matched by the regex or not. Such algorithms | |
| 18 | require backtracking if have gone down the wrong path which | |
| 19 | can be very slow. There are also problems with bounded regular | |
| 20 | expressions and backreferences.} | |
| 647 | 21 | |
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 22 | \item What is a regular language? Are there alternative ways | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 23 | to define this notion? If yes, give an explanation why | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 24 | they define the same notion. | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 25 | |
| 892 | 26 |       \solution{A regular language is a language for which every string
 | 
| 27 | can be recognized by some regular expression. Another definition is | |
| 28 | that it is a language for which a finite automaton can be | |
| 29 | constructed. Both define the same set of languages.} | |
| 30 | ||
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 31 | \item Why is every finite set of strings a regular language? | 
| 132 
04264d0c43bb
added
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
102diff
changeset | 32 | |
| 892 | 33 |   \solution{Take a regex composed of all strings (works for finite languages)}
 | 
| 34 | ||
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 35 | \item Assume you have an alphabet consisting of the letters | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 36 | $a$, $b$ and $c$ only. (1) Find a regular expression | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 37 | that recognises the two strings $ab$ and $ac$. (2) Find | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 38 | a regular expression that matches all strings | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 39 |       \emph{except} these two strings. Note, you can only use
 | 
| 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 40 | regular expressions of the form | 
| 258 
1e4da6d2490c
updated programs
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
146diff
changeset | 41 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 42 |   \begin{center} $r ::=
 | 
| 401 
5d85dc9779b1
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
355diff
changeset | 43 | \ZERO \;|\; \ONE \;|\; c \;|\; r_1 + r_2 \;|\; | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 44 | r_1 \cdot r_2 \;|\; r^*$ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 45 |   \end{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 46 | |
| 647 | 47 | %\item Define the function \textit{zeroable} which takes a
 | 
| 48 | % regular expression as argument and returns a boolean. | |
| 49 | % The function should satisfy the following property: | |
| 50 | % | |
| 51 | %  \begin{center}
 | |
| 52 | %    $\textit{zeroable(r)} \;\text{if and only if}\; 
 | |
| 53 | %    L(r) = \{\}$
 | |
| 54 | %  \end{center}
 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 55 | |
| 892 | 56 |   \solution{Done in the video but there I forgot to include the empty string.}
 | 
| 57 | ||
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 58 | \item Given the alphabet $\{a,b\}$. Draw the automaton that has two
 | 
| 517 | 59 | states, say $Q_0$ and $Q_1$. The starting state is $Q_0$ and the | 
| 60 | final state is $Q_1$. The transition function is given by | |
| 258 
1e4da6d2490c
updated programs
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
146diff
changeset | 61 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 62 |   \begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 63 |     \begin{tabular}{l}
 | 
| 517 | 64 | $(Q_0, a) \rightarrow Q_0$\\ | 
| 65 | $(Q_0, b) \rightarrow Q_1$\\ | |
| 66 | $(Q_1, b) \rightarrow Q_1$ | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 67 |     \end{tabular}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 68 |   \end{center}
 | 
| 258 
1e4da6d2490c
updated programs
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
146diff
changeset | 69 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 70 | What is the language recognised by this automaton? | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 71 | |
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 72 | \item Give a non-deterministic finite automaton that can | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 73 | recognise the language $L(a\cdot (a + b)^* \cdot c)$. | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 74 | |
| 517 | 75 | \item Given a deterministic finite automaton $A(\varSigma, Q, Q_0, F, | 
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 76 | \delta)$, define which language is recognised by this | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 77 | automaton. Can you define also the language defined by a | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 78 | non-deterministic automaton? | 
| 23 | 79 | |
| 892 | 80 | |
| 81 |       \solution{
 | |
| 82 | A formula for DFAs is | |
| 83 | ||
| 84 |         \[L(A) \dn \{s \;|\; \hat{\delta}(start_q, s) \in F\}\]
 | |
| 85 | ||
| 86 |         For NFAs you need to first define what $\hat{\rho}$ means. If
 | |
| 87 | $\rho$ is given as a relation, you can define: | |
| 88 | ||
| 89 | \[ | |
| 90 |           \hat{\rho}(qs, []) \dn qs \qquad
 | |
| 91 |           \hat{\rho}(qs, c::s) \dn \bigcup_{q\in qs} \{ q' \; | \; \rho(q, c, q')\}
 | |
| 92 | \] | |
| 93 | ||
| 94 | This ``collects'' all the states reachable in a breadth-first | |
| 95 | manner. Once you have all the states reachable by an NFA, you can define | |
| 96 | the language as | |
| 97 | ||
| 98 | \[ | |
| 99 |         L(N) \dn \{s \;|\; \hat{\rho}(qs_{start}, s) \cap F \not= \emptyset\}
 | |
| 100 | \] | |
| 101 | ||
| 102 | Here you test whether the all states reachable (for $s$) contain at least | |
| 103 | a single accepting state. | |
| 104 | ||
| 105 | } | |
| 106 | ||
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 107 | \item Given the following deterministic finite automaton over | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 108 |       the alphabet $\{a, b\}$, find an automaton that
 | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 109 | recognises the complement language. (Hint: Recall that | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 110 | for the algorithm from the lectures, the automaton needs | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 111 | to be in completed form, that is have a transition for | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 112 | every letter from the alphabet.) | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 113 | |
| 892 | 114 |       \solution{
 | 
| 115 | Before exchanging accepting and non-accepting states, it is important that | |
| 116 | the automaton is completed (meamning has a transition for every letter | |
| 117 | of the alphabet). If not completed, you have to introduce a sink state. | |
| 118 | ||
| 119 | For fun you can try out the example with | |
| 120 | out completion: Then the original automaton can recognise | |
| 121 | strings of the form $a$, $ab...b$; but the ``uncompleted'' automaton would | |
| 122 | recognise only the empty string. | |
| 123 | } | |
| 124 | ||
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 125 |   \begin{center}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 126 |     \begin{tikzpicture}[>=stealth',very thick,auto,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 127 |                         every state/.style={minimum size=0pt,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 128 | inner sep=2pt,draw=blue!50,very thick, | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 129 | fill=blue!20},scale=2] | 
| 517 | 130 |       \node[state, initial]        (q0) at ( 0,1) {$Q_0$};
 | 
| 131 |       \node[state, accepting]  (q1) at ( 1,1) {$Q_1$};
 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 132 |       \path[->] (q0) edge node[above] {$a$} (q1)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 133 |                 (q1) edge [loop right] node {$b$} ();
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 134 |     \end{tikzpicture}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 135 |   \end{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 136 | |
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 137 | |
| 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 138 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 139 | %\item Given the following deterministic finite automaton | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 140 | % | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 141 | %\begin{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 142 | %\begin{tikzpicture}[scale=3, line width=0.7mm]
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 143 | %  \node[state, initial]        (q0) at ( 0,1) {$q_0$};
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 144 | %  \node[state,accepting]  (q1) at ( 1,1) {$q_1$};
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 145 | %  \node[state, accepting] (q2) at ( 2,1) {$q_2$};
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 146 | %  \path[->] (q0) edge node[above] {$b$} (q1)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 147 | %                  (q1) edge [loop above] node[above] {$a$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 148 | %                  (q2) edge [loop above] node[above] {$a, b$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 149 | %                  (q1) edge node[above] {$b$} (q2)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 150 | %                  (q0) edge[bend right] node[below] {$a$} (q2)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 151 | % ; | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 152 | %\end{tikzpicture}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 153 | %\end{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 154 | %find the corresponding minimal automaton. State clearly which nodes | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 155 | %can be merged. | 
| 31 | 156 | |
| 355 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 157 | \item Given the following non-deterministic finite automaton | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 158 |       over the alphabet $\{a, b\}$, find a deterministic
 | 
| 
a259eec25156
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
347diff
changeset | 159 | finite automaton that recognises the same language: | 
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 160 | |
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 161 |   \begin{center}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 162 |     \begin{tikzpicture}[>=stealth',very thick,auto,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 163 |                         every state/.style={minimum size=0pt,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 164 | inner sep=2pt,draw=blue!50,very thick, | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 165 | fill=blue!20},scale=2] | 
| 517 | 166 |       \node[state, initial]        (q0) at ( 0,1) {$Q_0$};
 | 
| 167 |       \node[state]                    (q1) at ( 1,1) {$Q_1$};
 | |
| 168 |       \node[state, accepting] (q2) at ( 2,1) {$Q_2$};
 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 169 |       \path[->] (q0) edge node[above] {$a$} (q1)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 170 |                 (q0) edge [loop above] node[above] {$b$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 171 |                 (q0) edge [loop below] node[below] {$a$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 172 |                 (q1) edge node[above] {$a$} (q2);
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 173 |     \end{tikzpicture}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 174 |   \end{center}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 175 | |
| 778 | 176 | \item %%\textbf{(Deleted for 2017, 2018, 2019)}
 | 
| 517 | 177 | Given the following deterministic finite automaton over the | 
| 271 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 178 |   alphabet $\{0, 1\}$, find the corresponding minimal automaton. In
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 179 | case states can be merged, state clearly which states can be merged. | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 180 | |
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 181 |   \begin{center}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 182 |     \begin{tikzpicture}[>=stealth',very thick,auto,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 183 |                         every state/.style={minimum size=0pt,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 184 | inner sep=2pt,draw=blue!50,very thick, | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 185 | fill=blue!20},scale=2] | 
| 517 | 186 |       \node[state, initial]        (q0) at ( 0,1) {$Q_0$};
 | 
| 187 |       \node[state]                    (q1) at ( 1,1) {$Q_1$};
 | |
| 188 |       \node[state, accepting] (q4) at ( 2,1) {$Q_4$};
 | |
| 189 |       \node[state]                    (q2) at (0.5,0) {$Q_2$};
 | |
| 190 |       \node[state]                    (q3) at (1.5,0) {$Q_3$};
 | |
| 271 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 191 |       \path[->] (q0) edge node[above] {$0$} (q1)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 192 |                 (q0) edge node[right] {$1$} (q2)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 193 |                 (q1) edge node[above] {$0$} (q4)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 194 |                 (q1) edge node[right] {$1$} (q2)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 195 |                 (q2) edge node[above] {$0$} (q3)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 196 |                 (q2) edge [loop below] node {$1$} ()
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 197 |                 (q3) edge node[left] {$0$} (q4)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 198 |                 (q3) edge [bend left=95, looseness = 2.2] node [left=2mm] {$1$} (q0)
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 199 |                 (q4) edge [loop right] node {$0, 1$} ();
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 200 |     \end{tikzpicture}
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 201 |   \end{center}
 | 
| 
b9b54574ee41
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
267diff
changeset | 202 | |
| 892 | 203 |   \solution{Q0 and Q2 can be merged; and Q1 and Q3 as well}
 | 
| 204 | ||
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 205 | \item Given the following finite deterministic automaton over the alphabet $\{a, b\}$:
 | 
| 264 
4deef8ac5d72
uodated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
258diff
changeset | 206 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 207 |   \begin{center}
 | 
| 292 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 208 |     \begin{tikzpicture}[scale=2,>=stealth',very thick,auto,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 209 |                         every state/.style={minimum size=0pt,
 | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 210 | inner sep=2pt,draw=blue!50,very thick, | 
| 
7ed2a25dd115
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
271diff
changeset | 211 | fill=blue!20}] | 
| 517 | 212 |       \node[state, initial, accepting]        (q0) at ( 0,1) {$Q_0$};
 | 
| 213 |       \node[state, accepting]                    (q1) at ( 1,1) {$Q_1$};
 | |
| 214 |       \node[state] (q2) at ( 2,1) {$Q_2$};
 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 215 |       \path[->] (q0) edge[bend left] node[above] {$a$} (q1)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 216 |                 (q1) edge[bend left] node[above] {$b$} (q0)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 217 |                 (q2) edge[bend left=50] node[below] {$b$} (q0)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 218 |                 (q1) edge node[above] {$a$} (q2)
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 219 |                 (q2) edge [loop right] node {$a$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 220 |                 (q0) edge [loop below] node {$b$} ()
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 221 | ; | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 222 |     \end{tikzpicture}
 | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 223 |   \end{center}
 | 
| 31 | 224 | |
| 267 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 225 | Give a regular expression that can recognise the same language as | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 226 | this automaton. (Hint: If you use Brzozwski's method, you can assume | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 227 | Arden's lemma which states that an equation of the form $q = q\cdot r + s$ | 
| 
a1544b804d1e
updated homeworks
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
264diff
changeset | 228 | has the unique solution $q = s \cdot r^*$.) | 
| 294 
c29853b672fb
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 229 | |
| 
c29853b672fb
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 230 | \item If a non-deterministic finite automaton (NFA) has | 
| 770 | 231 | $n$ states. How many states does a deterministic | 
| 232 | automaton (DFA) that can recognise the same language | |
| 233 | as the NFA maximal need? | |
| 294 
c29853b672fb
updated hws
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
292diff
changeset | 234 | |
| 892 | 235 |   \solution{ $2^n$ in the worst-case and for some regexes the worst case
 | 
| 236 | cannot be avoided. | |
| 237 | ||
| 238 |     Other comments: $r^{\{n\}}$ can only be represented as $n$
 | |
| 239 | copies of the automaton for $r$, which can explode the automaton for bounded | |
| 240 | regular expressions. Similarly, we have no idea how backreferences can be | |
| 241 | represented as automaton. | |
| 242 | } | |
| 243 | ||
| 770 | 244 | \item Prove that for all regular expressions $r$ we have | 
| 245 | ||
| 246 | \begin{center} 
 | |
| 247 |   $\textit{nullable}(r) \quad \text{if and only if} 
 | |
| 248 | \quad [] \in L(r)$ | |
| 249 | \end{center}
 | |
| 250 | ||
| 251 | Write down clearly in each case what you need to prove | |
| 252 | and what are the assumptions. | |
| 253 | ||
| 254 | ||
| 444 
3056a4c071b0
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
401diff
changeset | 255 | \item \POSTSCRIPT | 
| 23 | 256 | \end{enumerate}
 | 
| 257 | ||
| 258 | \end{document}
 | |
| 259 | ||
| 260 | %%% Local Variables: | |
| 261 | %%% mode: latex | |
| 262 | %%% TeX-master: t | |
| 263 | %%% End: |