How to convert a non-deterministic finite automaton that recognizes words with two or three 1s to an equivalent finite automaton.
\documentclass[border=4pt]{standalone} \usepackage{tikz} \usetikzlibrary{automata, positioning, arrows, calc} \tikzset{ ->, % makes the edges directed >=stealth, % makes the arrow heads bold shorten >=2pt, shorten <=2pt, % shorten the arrow node distance=3cm, % specifies the minimum distance between two nodes. Change if n every state/.style={draw=blue!55,very thick,fill=blue!20}, % sets the properties for each ’state’ n initial text=$ $, % sets the text that appears on the start arrow } \begin{document} \begin{tikzpicture} % FSM \node[state, initial] (s0) {$s_0$}; \node[state, right of=s0] (r1q1) {$\{r_1,q_1\}$}; \node[state, accepting, right of=r1q1] (r0q2) {$\{r_0,q_2\}$}; \node[state, accepting, right of=r0q2] (r1q0) {$\{r_1,q_0\}$}; \node[state, accepting, right of=r1q0] (r0q1) {$\{r_0,q_1\}$}; \node[state, right of=r0q1] (r1q2) {$\{r_1,q_2\}$}; \node[state, accepting, right of=r1q2] (r0q0) {$\{r_0,q_0\}$}; \draw (s0) edge[above] node{$1$} (r1q1) (r1q1) edge[above] node{$1$} (r0q2) (r0q2) edge[above] node{$1$} (r1q0) (r1q0) edge[above] node{$1$} (r0q1) (r0q1) edge[above] node{$1$} (r1q2) (r1q2) edge[above] node{$1$} (r0q0) (r0q0) edge[bend left, below] node{$1$} (r1q1); % NDFSM \node[state, initial, above of=s0, yshift=+5cm] (s0) {$s_0$}; \node[state, accepting, right of=s0, yshift=1.5cm] (r0) {$r_0$}; \node[state, right of=r0] (r1) {$r_1$}; \node[state, accepting, right of=s0, yshift=-3cm] (q0) {$q_0$}; \node[state, right of=q0] (q1) {$q_1$}; \node[state, right of=q1] (q2) {$q_2$}; \draw (s0) edge[above, out=90, in=130] node{$1$} (r1) (r0) edge[above] node{$1$} (r1) (r1) edge[below, out=240, in=-60] node{$1$} (r0) (s0) edge[above, out=-60, in=110] node{$1$} (q1) (q1) edge[above] node{$1$} (q2) (q2) edge[below, out=240, in=-60] node{$1$} (q0) (q0) edge[above] node{$1$} (q1) ; % Text \node[xshift=5cm] at (r0q0|-s0) {Non Deterministic Finite State Recognizer}; \node[xshift=5cm] at (r0q0) {Deterministic Finite State Recognizer}; \end{tikzpicture} \end{document}