566 lines
17 KiB
TeX
566 lines
17 KiB
TeX
\documentclass[a4paper]{article}
|
|
\usepackage{listings}
|
|
\usepackage{fontspec}
|
|
\usepackage[margin=1in]{geometry}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{multicol}
|
|
\usepackage{changepage}
|
|
\usepackage[dvipsnames]{xcolor}
|
|
\usepackage{tikz}
|
|
|
|
\usetikzlibrary{arrows.meta,automata}
|
|
|
|
\renewcommand{\thesection}{Task \arabic{section}}
|
|
\renewcommand{\thesubsection}{\arabic{subsection})}
|
|
\renewcommand{\thesubsubsection}{\alph{subsubsection})}
|
|
|
|
\setmonofont[Scale=0.9]{Antikor Mono Medium}
|
|
|
|
\input{fasto.sty}
|
|
|
|
\setlength{\parskip}{5pt}
|
|
\setlength{\parindent}{0pt}
|
|
|
|
\title{W4 - IPS}
|
|
\author{Nikolaj Gade (qhp695)}
|
|
\date{May 2022}
|
|
|
|
\makeatletter
|
|
\renewenvironment{table}%
|
|
{\renewcommand{\familydefault}{\ttdefault}\selectfont
|
|
\@float{table}}
|
|
{\end@float}
|
|
\makeatother
|
|
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
\section{}
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|r||r|r|r|l|} \hline
|
|
SubExp & I/O? & Elim? & UsedVars & OptSubExp \\ \hline \hline
|
|
1 & no & - & u & u \\ \hline
|
|
2 & no & - & x & x+x \\ \hline
|
|
3 & yes & - & x & foo(x) \\ \hline
|
|
4 & no & - & & 7 \\ \hline
|
|
5 & yes & no & x & let x=foo(x) in 7 \\ \hline
|
|
6 & no & - & x,u & x+u \\ \hline
|
|
7 & no & - & y,x & y*x \\ \hline
|
|
8 & no & yes & y,x & y*x \\ \hline
|
|
9 & yes & no & x & let y=(let x=foo(x) in 7) in y*x \\ \hline
|
|
10 & yes & yes & x & let y=(let x=foo(x) in 7) in y*x \\ \hline
|
|
11 & yes & no & u & let x=u in let y=(let x=foo(x) in 7) in y*x \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\section{}
|
|
\subsubsection{}
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|r||r|r|r|} \hline
|
|
i & succ[i] & gen[i] & kill[i] \\ \hline \hline
|
|
1 & 2 & & \\ \hline
|
|
2 & 3,7 & a,b & \\ \hline
|
|
3 & 4 & & \\ \hline
|
|
4 & 5 & a & t \\ \hline
|
|
5 & 6 & b & a \\ \hline
|
|
6 & 7 & t & b \\ \hline
|
|
7 & 8 & & \\ \hline
|
|
8 & 9 & & z \\ \hline
|
|
9 & 10 & a,b & b \\ \hline
|
|
10 & 1,11 & b,z & \\ \hline
|
|
11 & 12 & & \\ \hline
|
|
12 & & a & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\newpage
|
|
\subsubsection{}
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|r||c|c||c|c||c|c||c|c|} \hline
|
|
& \multicolumn{2}{c||}{Initial} & \multicolumn{2}{c||}{Iteration 1} & \multicolumn{2}{c||}{Iteration 2} & \multicolumn{2}{c|}{Iteration 3} \\
|
|
i & out[i] & in[i] & out[i] & in[i] & out[i] & in[i] & out[i] & in[i] \\ \hline \hline
|
|
1 & & & a,b & a,b & a,b & a,b & a,b & a,b \\ \hline
|
|
2 & & & a,b & a,b & a,b & a,b & a,b & a,b \\ \hline
|
|
3 & & & a,b & a,b & a,b & a,b & a,b & a,b \\ \hline
|
|
4 & & & b,t & a,b & b,t & a,b & b,t & a,b \\ \hline
|
|
5 & & & a,t & b,t & a,t & b,t & a,t & b,t \\ \hline
|
|
6 & & & a,b & a,t & a,b & a,t & a,b & a,t \\ \hline
|
|
7 & & & a,b & a,b & a,b & a,b & a,b & a,b \\ \hline
|
|
8 & & & a,b,z & a,b & a,b,z & a,b & a,b,z & a,b \\ \hline
|
|
9 & & & a,b,z & a,b,z & a,b,z & a,b,z & a,b,z & a,b,z \\ \hline
|
|
10 & & & a & a,b,z & a,b & a,b,z & a,b & a,b,z \\ \hline
|
|
11 & & & a & a & a & a & a & a \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\subsubsection{}
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|r||c|c||c|} \hline
|
|
i & kill[i] & out[i] & Interferes with \\ \hline \hline
|
|
4 & t & b,t & b \\ \hline
|
|
5 & a & a,t & t \\ \hline
|
|
6 & b & a,b & a \\ \hline
|
|
8 & z & a,b,z & a,b \\ \hline
|
|
9 & b & a,b,z & a,z \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\subsubsection{}
|
|
\resizebox{100pt}{!}{%
|
|
\begin{tikzpicture}
|
|
\node[font=\bfseries] (a) {a};
|
|
\node[font=\bfseries] (b) [right of=a] {b};
|
|
\node[font=\bfseries] (t) [below of=a] {t};
|
|
\node[font=\bfseries] (z) [below of=b] {z};
|
|
|
|
\draw (t) to (b);
|
|
\draw (a) to (t);
|
|
\draw (z) to (a);
|
|
\draw (z) to (b);
|
|
\draw (b) to (a);
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\newpage
|
|
|
|
\subsubsection{}
|
|
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|c|c||c|} \hline
|
|
Node & Neighbors & Color \\ \hline \hline
|
|
z & & \color{blue} 1 \\ \hline
|
|
b & z & \color{red} 2 \\ \hline
|
|
a & b,z & \color{green} 3 \\ \hline
|
|
t & a,b & \color{blue} 1 \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\resizebox{100pt}{!}{%
|
|
\begin{tikzpicture}
|
|
\node[font=\bfseries] (a) [color=red] {a};
|
|
\node[font=\bfseries] (b) [right of=a, color=green] {b};
|
|
\node[font=\bfseries] (t) [below of=a, color=blue] {t};
|
|
\node[font=\bfseries] (z) [below of=b, color=blue] {z};
|
|
|
|
\draw (t) to (b);
|
|
\draw (a) to (t);
|
|
\draw (z) to (a);
|
|
\draw (z) to (b);
|
|
\draw (b) to (a);
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\subsubsection{}
|
|
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|c|c||c|} \hline
|
|
Node & Neighbors & Color \\ \hline \hline
|
|
z & & \color{blue} 1 \\ \hline
|
|
b & z & \color{red} 2 \\ \hline
|
|
t & b & \color{blue} 1 \\ \hline
|
|
a & b,t,z & spill \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\resizebox{100pt}{!}{%
|
|
\begin{tikzpicture}
|
|
\node[font=\bfseries] (a) [color=gray] {a};
|
|
\node[font=\bfseries] (b) [right of=a, color=red] {b};
|
|
\node[font=\bfseries] (t) [below of=a, color=blue] {t};
|
|
\node[font=\bfseries] (z) [below of=b, color=blue] {z};
|
|
|
|
\draw (t) to (b);
|
|
\draw [color=gray] (a) to (t);
|
|
\draw [color=gray] (z) to (a);
|
|
\draw (z) to (b);
|
|
\draw [color=gray] (b) to (a);
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\begin{lstlisting}
|
|
gcd(a,b) {
|
|
M[addra] := a
|
|
1: LABEL start
|
|
a2 := M[addra]
|
|
2: IF a2 < b THEN next ELSE swap
|
|
3: LABEL swap
|
|
a4 := M[addra]
|
|
4: t := a4
|
|
5: a5 := b
|
|
M[addra] := a5
|
|
6: b := t
|
|
7: LABEL next
|
|
8: z := 0
|
|
a9 := M[addra]
|
|
9: b := b mod a9
|
|
10: IF b = z THEN end ELSE start
|
|
11: LABEL end
|
|
a := M[addra]
|
|
12: RETURN a
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\section{}
|
|
Edges without a label should be assumed to be labeled with \epsilon.
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[draw, rectangle, rounded corners=2mm] (a) at (3,0) {\color{ForestGreen}\textbf{(a*b|a)*(b|}$\boldsymbol\epsilon$\textbf{)}};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (b);
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[draw, rectangle, rounded corners=2mm] (a) at (2,0) {\color{ForestGreen}\textbf{(a*b|a)*}};
|
|
\node[draw, rectangle, rounded corners=2mm] (c) at (4,0) {\color{red}\textbf{b|}$\boldsymbol\epsilon$};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (c) -- (b);
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[state] (a) at (2,0) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (d) at (2,2) {\color{ForestGreen}\textbf{a*b|a}};
|
|
\node[draw, rectangle, rounded corners=2mm] (c) at (4,0) {\color{red}\textbf{b|}$\boldsymbol\epsilon$};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (c) -- (b);
|
|
\draw (a) to [out = 135, in=225] (d);
|
|
\draw (d) to [out = 315, in=45] (a);
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[state] (a) at (2,0) {};
|
|
\node[state] (d) at (0.5,2.5) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (e) at (2,3.5) {\color{ForestGreen}\textbf{a*b}};
|
|
\node[draw, state] (f) at (2,1.5) {};
|
|
\node[draw, state] (g) at (3.5,2.5) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (c) at (4,0) {\color{red}\textbf{b|}$\boldsymbol\epsilon$};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (c) -- (b);
|
|
\draw (a) to [out = 135, in=180] (d);
|
|
\draw (g) to [out = 0, in=45] (a);
|
|
\draw (d) -- (e);
|
|
\draw (d) -- (f);
|
|
\draw (e) -- (g);
|
|
\draw (f) -- (g) node[midway, above] {a};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[state] (a) at (2,0) {};
|
|
\node[state] (d) at (0,2.5) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (e) at (1.3,3.5) {\color{ForestGreen}\textbf{a*}};
|
|
\node[state] (h) at (2.7,3.5) {};
|
|
\node[draw, state] (f) at (2,1.5) {};
|
|
\node[draw, state] (g) at (4,2.5) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (c) at (4,0) {\color{red}\textbf{b|}$\boldsymbol\epsilon$};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (c) -- (b);
|
|
\draw (a) to [out = 135, in=180] (d);
|
|
\draw (g) to [out = 0, in=45] (a);
|
|
\draw (d) -- (e);
|
|
\draw (d) -- (f);
|
|
\draw (e) -- (h);
|
|
\draw (h) -- (g) node[midway, above] {b};
|
|
\draw (f) -- (g) node[midway, above] {a};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[state] (a) at (2,0) {};
|
|
\node[state] (d) at (0,2.5) {};
|
|
\node[state] (e) at (1.3,3.5) {};
|
|
\node[state] (i) at (0.3,4.5) {};
|
|
\node[state] (h) at (2.7,3.5) {};
|
|
\node[draw, state] (f) at (2,1.5) {};
|
|
\node[draw, state] (g) at (4,2.5) {};
|
|
\node[draw, rectangle, rounded corners=2mm] (c) at (4,0) {\color{red}\textbf{b|}$\boldsymbol\epsilon$};
|
|
\node[draw, state, double] (b) at (6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (c) -- (b);
|
|
\draw (a) to [out = 135, in=180] (d);
|
|
\draw (g) to [out = 0, in=45] (a);
|
|
\draw (d) -- (e);
|
|
\draw (d) -- (f);
|
|
\draw (e) to [out = 180, in=270] (i) node at (1.3,4.5) {a};
|
|
\draw (i) to [out = 0, in=90] (e);
|
|
\draw (e) -- (h);
|
|
\draw (h) -- (g) node[midway, above right] {b};
|
|
\draw (f) -- (g) node[midway, above left] {a};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\begin{tikzpicture}
|
|
\begin{scope}
|
|
\node[] (0) at (0,0) {start};
|
|
\node[state] (a) at (2,0) {};
|
|
\node[state] (d) at (0,2.5) {};
|
|
\node[state] (e) at (1.3,3.5) {};
|
|
\node[state] (i) at (0.3,4.5) {};
|
|
\node[state] (h) at (2.7,3.5) {};
|
|
\node[state] (f) at (2,1.5) {};
|
|
\node[state] (g) at (4,2.5) {};
|
|
\node[state] (c) at (5,0) {};
|
|
\node[state] (j) at (6.8,1) {};
|
|
\node[state] (k) at (6.8,-1) {};
|
|
\node[state, double] (b) at (8.6,0) {};
|
|
\end{scope}
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (a);
|
|
\draw (a) -- (c);
|
|
\draw (a) to [out = 135, in=180] (d);
|
|
\draw (g) to [out = 0, in=45] (a);
|
|
\draw (d) -- (e);
|
|
\draw (d) -- (f);
|
|
\draw (e) to [out = 180, in=270] (i) node at (1.3,4.5) {a};
|
|
\draw (i) to [out = 0, in=90] (e);
|
|
\draw (e) -- (h);
|
|
\draw (h) -- (g) node[midway, above right] {b};
|
|
\draw (f) -- (g) node[midway, above left] {a};
|
|
\draw (c) -- (j);
|
|
\draw (c) -- (k);
|
|
\draw (j) -- (b) node[midway, above right] {b};
|
|
\draw (k) -- (b);
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\section{}
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_0, \mathtt{a}) & = \epsilon\text{-closure}(\{t | s \in \{1,2,4\}\text{ and } s^{\mathtt{a}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{3,4\}) \\
|
|
& = \{3,4,6\} \\
|
|
& = s'_1
|
|
\end{split}
|
|
\end{equation}
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_0, \mathtt{b}) & = \epsilon\text{-closure}(\{t | s \in \{1,2,4\}\text{ and } s^{\mathtt{b}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{5\}) \\
|
|
& = \{4,5,6\} \\
|
|
& = s'_2
|
|
\end{split}
|
|
\end{equation}
|
|
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \checkmark \\ \hline
|
|
1 & \{3,4,6\} & \\ \hline
|
|
2 & \{4,5,6\} & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_1, \mathtt{a}) & = \epsilon\text{-closure}(\{t | s \in \{3,4,6\}\text{ and } s^{\mathtt{a}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{4\}) \\
|
|
& = \{4\} \\
|
|
& = s'_3
|
|
\end{split}
|
|
\end{equation}
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_1, \mathtt{b}) & = \epsilon\text{-closure}(\{t | s \in \{3,4,6\}\text{ and } s^{\mathtt{b}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{3,5\}) \\
|
|
& = \{3,4,5,6\} \\
|
|
& = s'_4
|
|
\end{split}
|
|
\end{equation}
|
|
|
|
\newpage
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \checkmark \\ \hline
|
|
1 & \{3,4,6\} & \checkmark \\ \hline
|
|
2 & \{4,5,6\} & \\ \hline
|
|
3 & \{4\} & \\ \hline
|
|
4 & \{3,4,5,6\} & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_2, \mathtt{a}) & = \epsilon\text{-closure}(\{t | s \in \{4,5,6\}\text{ and } s^{\mathtt{a}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{4\}) \\
|
|
& = \{4\} \\
|
|
& = s'_3
|
|
\end{split}
|
|
\end{equation}
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_2, \mathtt{b}) & = \epsilon\text{-closure}(\{t | s \in \{4,5,6\}\text{ and } s^{\mathtt{b}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{5\}) \\
|
|
& = \{4,5,6\} \\
|
|
& = s'_2
|
|
\end{split}
|
|
\end{equation}
|
|
|
|
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \checkmark \\ \hline
|
|
1 & \{3,4,6\} & \checkmark \\ \hline
|
|
2 & \{4,5,6\} & \checkmark \\ \hline
|
|
3 & \{4\} & \\ \hline
|
|
4 & \{3,4,5,6\} & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_3, \mathtt{a}) & = \epsilon\text{-closure}(\{t | s \in \{4\}\text{ and } s^{\mathtt{a}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{4\}) \\
|
|
& = \{4\} \\
|
|
& = s'_3
|
|
\end{split}
|
|
\end{equation}
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_3, \mathtt{b}) & = \epsilon\text{-closure}(\{t | s \in \{4\}\text{ and } s^{\mathtt{b}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{5\}) \\
|
|
& = \{4,5,6\} \\
|
|
& = s'_2
|
|
\end{split}
|
|
\end{equation}
|
|
|
|
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \checkmark \\ \hline
|
|
1 & \{3,4,6\} & \checkmark \\ \hline
|
|
2 & \{4,5,6\} & \checkmark \\ \hline
|
|
3 & \{4\} & \checkmark \\ \hline
|
|
4 & \{3,4,5,6\} & \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_4, \mathtt{a}) & = \epsilon\text{-closure}(\{t | s \in \{3,4,5,6\}\text{ and } s^{\mathtt{a}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{4\}) \\
|
|
& = \{4\} \\
|
|
& = s'_3
|
|
\end{split}
|
|
\end{equation}
|
|
\begin{equation}
|
|
\begin{split}
|
|
move(s'_4, \mathtt{b}) & = \epsilon\text{-closure}(\{t | s \in \{3,4,5,6\}\text{ and } s^{\mathtt{b}}t \in T\}) \\
|
|
& = \epsilon\text{-closure}(\{3,5\}) \\
|
|
& = \{3,4,5,6\} \\
|
|
& = s'_4
|
|
\end{split}
|
|
\end{equation}
|
|
|
|
\newpage
|
|
\begin{table}[h]
|
|
\begin{center}
|
|
\begin{tabular}{|l||r|c|} \hline
|
|
state & epsilon-closure & complete \\ \hline \hline
|
|
0 & \{1,2,4\} & \checkmark \\ \hline
|
|
1 & \{3,4,6\} & \checkmark \\ \hline
|
|
2 & \{4,5,6\} & \checkmark \\ \hline
|
|
3 & \{4\} & \checkmark \\ \hline
|
|
4 & \{3,4,5,6\} & \checkmark \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{table}
|
|
|
|
\begin{tikzpicture}
|
|
\node[state] (0) at (0,0) {$S_0$};
|
|
\node[state, double] (1) at (3,0) {$S_1$};
|
|
\node[state, double] (2) at (0,-3) {$S_2$};
|
|
\node[state] (3) at (3,-3) {$S_3$};
|
|
\node[state, double] (4) at (6,0) {$S_4$};
|
|
|
|
\begin{scope}[rounded corners=2mm, -Triangle]
|
|
\draw (0) -- (1) node [midway, above] {\texttt{a}};
|
|
\draw (0) -- (2) node [midway, left] {\texttt{b}};
|
|
\draw (1) -- (3) node [midway, left] {\texttt{a}};
|
|
\draw (1) -- (4) node [midway, above] {\texttt{b}};
|
|
\draw (2) to [out=315, in=225] (3) node at (1.5,-2) {\texttt{a}};
|
|
\draw (2) to [out=270, in=180, loop] (2) node at (-1.2,-4.1) {\texttt{b}};
|
|
\draw (3) to [out=0, in=270, loop] (3) node at (4.2,-4.1) {\texttt{a}};
|
|
\draw (3) to [out=135, in=45] (2) node at (1.5,-4) {\texttt{a}};
|
|
\draw (4) -- (3) node [midway, above] {\texttt{a}};
|
|
\draw (4) to [out=0, in=270, loop] (4) node at (7.2,-1.1) {\texttt{b}};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
|
|
\end{document} |