diff --git a/examenvragen.tex b/examenvragen.tex index b27a380..8a2cd7b 100644 --- a/examenvragen.tex +++ b/examenvragen.tex @@ -2,7 +2,23 @@ \section{Examenvragen} \subsection{Reguliere talen} -\subsubsection{Vraag 1 (Bijvraag)} +\subsubsection{Vraag 1} + +\textit{Bewijs dat een reguliere taal beschreven door een reguliere expressie door een eindige toestandsautomaat wordt herkend. Doe dit door van de automaat een gegeneraliseerde niet-deterministische eindige toestandsautomaat te maken.} + +\textit{Beschrijf in detail hoe uit die GNFA een reguliere expressie kan worden afgeleid.} + +\subsubsection{Vraag 1 (Bijvraag 1)} + +\textit{Kan voor een PDA ongeveer hetzelfde gedaan worden door een gegeneraliseerde PDA op te stellen?} + +Nee, want +\begin{itemize} +\item Een PDA bepaalt een contextvrije grammatica, geen reguliere expressie. Elke RE kan naar een CFG (of PDA) geconverteerd worden omdat de verzameling van de talen bepaald door een CFG sterker is dan de verzameling van de reguliere talen. Maar niet elke CFG (of PDA) bepaalt een reguliere taal, dus is het niet mogelijk een GPDA op te stellen om een RE af te leiden. +\item Een GPDA formaat om een CFG af te leiden uit een PDA is niet nodig, dat kan namelijk rechtstreeks uit een PDA. +\end{itemize} + +\subsubsection{Vraag 1 (Bijvraag 2)} \begin{center} \renewcommand{\arraystretch}{1.5} @@ -96,6 +112,10 @@ \subsubsection{Vraag 1 (Bijvraag)} \subsubsection{Vraag 2} +Beschrijf in detail de transformatie van een deterministische eindige toestandsautomaat naar een equivalente determinischtische eindige toestandsautomaat met een minimaal aantal toestanden. Beschrijf de notie van "equivalentie van automaten" in deze context en argumenteer waarom er geen kleinere equivalente deterministische einde toestandsautomaat bestaat. Bijvraag: Kan een kleinere equivalente niet-deterministische einde toestandsautomaat bestaan? + +\subsubsection{Vraag 3} + \textit{Geef de definitie van een Myhil-Nerode relatie over een taal $L$, of zoals we noteren een $MN(L)$-relatie.} Een Myhill-Nerode relatie voor een taal $L$ ($MN(L)$-relatie) is een equivalentierelatie $\sim_X$ die voldoet aan de volgende eigenschappen: diff --git a/samenvatting.tex b/samenvatting.tex index 482d083..19a8b39 100644 --- a/samenvatting.tex +++ b/samenvatting.tex @@ -78,7 +78,7 @@ >=stealth', shorten >=1pt, auto, - node distance=2cm, + node distance=3cm, semithick] \tikzstyle{every state}=[fill=none,draw=black,text=black] \tikzstyle{accepting}=[accepting by double] @@ -119,6 +119,8 @@ \newcommand{\eqtm}{\ensuremath{{EQ_{TM}}}} \newcommand{\oatm}{\ensuremath{{O^\atm}}} +\newcommand{\pdat}[3]{\ensuremath{{#1},{#2} \rightarrow {#3}}} % PDA transition + \newcommand{\cmark}{\ding{51}} \newcommand{\xmark}{\ding{55}} @@ -202,22 +204,31 @@ \subsection{Verzamelingenleer} \end{definitie} \begin{definitie}{De unie van twee verzamelingen} - De unie van twee verzamelingen $S_1$ en $S_2$ is de verzameling die alle elementen bevat die in $S_1$ en/of $S_2$ zitten. \\ - \\ $S_1 \cup S_2 = \{x|x \in S_1 \of x \in S_2\}$ + De unie van twee verzamelingen $S_1$ en $S_2$ is de verzameling die alle elementen bevat die in $S_1$ en/of $S_2$ zitten. + \begin{equation*} + S_1 \cup S_2 = \{x|x \in S_1 \of x \in S_2\} + \end{equation*} \end{definitie} \begin{definitie}{De doorsnede van twee verzamelingen} - De doorsnede van twee verzamelingen $S_1$ en $S_2$ is de verzameling die alle elementen bevat die in zowel $S_1$ als $S_2$ zitten. \\ - \\ $S_1 \cup S_2 = \{x|x \in S_1 \en x \in S_2\}$ + De doorsnede van twee verzamelingen $S_1$ en $S_2$ is de verzameling die alle elementen bevat die in zowel $S_1$ als $S_2$ zitten. + \begin{equation*} + S_1 \cup S_2 = \{x|x \in S_1 \en x \in S_2\} + \end{equation*} \end{definitie} \begin{definitie}{Het complement van een verzameling} - Het complement van een verzameling $S$ van alle elementen uit het domein die niet in $S$ zitten. \\ - \\ $\overline{S} = \{x|x \notin S\}$ + Het complement van een verzameling $S$ van alle elementen uit het domein die niet in $S$ zitten. + \begin{equation*} + \overline{S} = \{x|x \notin S\} + \end{equation*} \end{definitie} \begin{definitie}{Een machtsverzameling $\powerset(S)$ van een verzameling $S$} - Een machtsverzameling $\powerset(S)$ is een verzameling van alle deelverzamelingen die gevormd kunnen worden met de elementen in S, inclusief de lege verzameling en de verzameling A.\\ \\ $\powerset(S) = \{A|A \subseteq S\}$ + Een machtsverzameling $\powerset(S)$ is een verzameling van alle deelverzamelingen die gevormd kunnen worden met de elementen in S, inclusief de lege verzameling en de verzameling A. + \begin{equation*} + \powerset(S) = \{A|A \subseteq S\} + \end{equation*} \end{definitie} \begin{definitie}{Een equivalentierelatie $\sim$ op een verzameling $S$} @@ -230,8 +241,10 @@ \subsection{Verzamelingenleer} \end{definitie} \begin{definitie}{Een equivalentieklasse onder $\sim$ op een verzameling $S$} - Een equivalentieklasse ($x_\sim \subseteq S$) is de verzameling van alle elementen in de verzameling $S$ die onder de gegeven equivalentierelatie gelijkwaardig zijn aan $x$. \\ - \\ $x_\sim = \{y \in S|x \sim y\}$ + Een equivalentieklasse ($x_\sim \subseteq S$) is de verzameling van alle elementen in de verzameling $S$ die onder de gegeven equivalentierelatie gelijkwaardig zijn aan $x$. + \begin{equation*} + x_\sim = \{y \in S|x \sim y\} + \end{equation*} \end{definitie} \begin{definitie}{Een partitie $\partition$ van een verzameling $S$} @@ -252,8 +265,10 @@ \subsection{Verzamelingenleer} \end{definitie} \begin{definitie}{Een volledige tralie ($L$, $\leq$, $\vee$, $\wedge$)} - Een tralie is een volledige tralie indien elke deelverzameling van $L$ een bovengrens en ondergrens heeft die een elementen zijn van $L$. \\ - \\ $\forall X \subseteq L: \bigwedge_X \in L \en \bigvee_X \in L$ + Een tralie is een volledige tralie indien elke deelverzameling van $L$ een bovengrens en ondergrens heeft die een elementen zijn van $L$. + \begin{equation*} + \forall X \subseteq L: \bigwedge_X \in L \en \bigvee_X \in L + \end{equation*} \end{definitie} \begin{definitie}{Injectie} @@ -424,7 +439,7 @@ \subsection{NFA} Twee NFA's zijn equivalent als ze dezelfde taal bepalen. \end{definitie} -% TODO: Transitietabel +Voor een automaat zoals een NFA kan men een transitietabel opstellen die vanuit elke toestand de overgang weergeeft en voor elk symbool en ook voor welke symbolen er geen voergang is. Een voorbeeld van een transitietabel voor een NFA is gegeven in sectie \ref{ex:nfatbl}. Elke NFA beschrijft een reguliere taal en elke reguliere taal kan beschreven worden door een NFA ($L_E = L_{NFA_E}$). Figuur \ref{fig:regexnfa} toont de overgangen van de elementaire reguliere expressies naar de bijhorende NFA's. @@ -572,17 +587,6 @@ \subsection{DFA} \end{enumalgo} \end{algoritme} -\begin{nfa} - \node[initial,state] (q1) {$\{q_1\}$}; - \node[state,accepting] (q2) [right=1.5cm of q1] {$\{q_1,q_2\}$}; - - \path (q1) edge [loop above] node {$a$} (q1) - edge [bend left] node [above] {$b$} (q2) - (q2) edge [loop above] node {$b$} (q2) - edge [bend left] node [below] {$a$} (q1); - \addvmargin{1mm} -\end{nfa} - Algoritme \ref{alg:cdfa} impliceert ook dat voor elke $a \in \Sigma$ een overgang $\delta(q_t,a)=q_t$ bestaat van $q_t$ naar $q_t$, waarin $t$ staat voor ``trash''. Bovendien kunnen er ook bogen bestaan van $q \in F$ naar $q_t$. Een voorbeeld van hoe een complete DFA voor een gegeven parti\"ele DFA eruit ziet wordt gegeven in sectie \ref{ex:dfatotal}. De complete DFA wordt voornamelijk gebruikt in praktijk. Verder in dit document wordt vaak gebruik gemaakt van een DFA met de assumptie dat $\delta$ een totale functie is. Daarbij wordt impliciet gesteld dat voor een niet-complete DFA eerst de constructie van de equivalente complete DFA wordt uitgevoerd. @@ -668,8 +672,8 @@ \subsection{Minimale DFA} \label{alg:dfafeqpart} We geven een alternatieve aanpak voor het bepalen van f-gelijke toestanden, door een partitie van de toestanden in $Q$ te verfijnen (definitie \ref{def:partfine}). Deze methode werkt op dezelfde wijze als de methode beschreven in algoritme \label{alg:dfafeq}, maar is in praktijk vaak makkelijker om manueel uit te voeren. \begin{enumalgo} - \item We weten dat alle eindtoestanden f-verschillend zijn van alle andere toestanden. Daarom stellen we een partitie op van Q zodanig dat $P_0 = \{F, Q-F\}$. - \item Bij de $i$-de iteratie verfijnen we de partitie $P_{i-1}$ zodanig dat $P_i \leq P_{i-1}$. Elk paar toestanden dat voor elk symbool een overgang heeft naar de zelfde deelverzameling van de partitie $P_{i-1}$ nemen we nu samen in een deelverzameling $P_i$. Herhaal stap 2 tot $P_i = P_{i-1}$, dan is $P_i$ een partitie van $Q$ zodanig dat de toestanden van elke deelverzameling van $P_i$ f-verschillend zijn van die van elke andere deelverzameling. + \item We weten dat alle eindtoestanden f-verschillend zijn van alle andere toestanden. Daarom stellen we een partitie op van Q zodanig dat $\partition_0 = \{F, Q-F\}$. + \item Bij de $i$-de iteratie verfijnen we de partitie $\partition_{i-1}$ zodanig dat $\partition_i \leq \partition_{i-1}$. Elk paar toestanden dat voor elk symbool een overgang heeft naar de zelfde deelverzameling van de partitie $\partition_{i-1}$ nemen we nu samen in een deelverzameling $\partition_i$. Herhaal stap 2 tot $\partition_i = \partition_{i-1}$, dan is $\partition_i$ een partitie van $Q$ zodanig dat de toestanden van elke deelverzameling van $\partition_i$ f-verschillend zijn van die van elke andere deelverzameling. \end{enumalgo} \end{algoritme} @@ -858,6 +862,8 @@ \subsection{Andere automaten} \end{itemize} \end{definitie} +Een voorbeeld van een CFG is gegeven in sectie \ref{ex:cfg}. + \begin{definitie}{Afleiding/constructie m.b.v. een CFG} Gegeven een CFG ($V$, $\Sigma$, $R$, $S$) en een string $f$ over $V \cup \Sigma_\epsilon$, dan kan men een string $b$ over $V \cup \Sigma_\epsilon$ afleiden/construeren uit $f$ ($b \Rightarrow^* f$) met de gegeven CFG, indien er er een rij strings $s_0,s_1,s_2,...,s_n$ bestaat zodanig dat \begin{itemize} @@ -911,6 +917,8 @@ \subsection{Andere automaten} \item heeft de afleiding van een string van lengte $n > 0$ altijd een lengte $2n-1$. \end{itemize} +Een voorbeeld van een CFG in CNF is gegeven in sectie \ref{ex:cnf}. + % TODO: Bewijs CNF \begin{definitie}{Greibach Normaal Vorm} @@ -963,6 +971,8 @@ \subsection{PDA} \end{nobreakparagraph} Indien de PDA niet-deterministisch is, kunnen er meerdere bogen met dezelfde $\alpha,\beta$ combinaties vertrekken uit een toestand. +Als voorbeeld wordt een PDA voor de niet-reguliere contextvrije taal $L = \{a^nb^n|n \in \nat\}$ over $\Sigma = \{a,b\}$ wordt gegeven in sectie \ref{ex:pda}. + % TODO: Aanvaarding van een string door een PDA Alternatieve definities van een PDA: @@ -999,7 +1009,22 @@ \subsection{PDA} Om een meest-linkse afleiding te bekomen moeten we in algoritme \ref{alg:cfgpda} de symbolen van een string $\gamma \in \sstar_\epsilon$ in omgekeerde volgorde op de stapel plaatsen. % TODO: Een PDA accepteert een L_CFG -% TODO: Constructie CFG uit PDA + +\begin{algoritme}{Constructie CFG uit PDA.} + We construeren een CFG ($V$, $\Sigma$, $R$, $S$) uit een PDA ($Q$, $\Sigma$, $\Gamma$, $\delta$, $q_s$, $F$) als volgt: + + Vor de PDA om zodanig dat er slechts \'e\'en eindtoestand $q_f$ is, de stapel leeg is wanneer we $q_f$ bereiken en bij elke transitie een symbool van de stapel wordt verwijderd of er op wordt geplaatst, maar niet beiden. Vervolgens wordt de CFG bepaald als + \begin{itemize} + \item $V = A_{p,q}$ met $p,q \in Q$ + \item $S = A_{q_s,q_f}$ + \item $R$ bestaat uit producties van drie verschillende vormen: + \begin{itemize} + \item $A_{p,p} \rightarrow \epsilon$ met $p \in Q$ + \item $A_{p,q} \rightarrow A_{p,r}A_{r,q}$ met $p,q,r \in Q$ + \item $A_{p,q} \rightarrow aA_{r,s}b$ met $p,q,r,s \in Q \en a,b \in \Sigma_\epsilon \en t \in \Gamma \en (r,t) \in \delta(p,a,\epsilon) \en (q,\epsilon) \in \delta(s,b,t)$ + \end{itemize} + \end{itemize} +\end{algoritme} \subsection{Pompend lemma voor contextvrije talen} @@ -1263,7 +1288,7 @@ \subsection{Enumeratormachine} \input{bewijzen/recogenum} \end{bewijs} -\subsection{Beslisbare talen} +\subsection{(Niet-)beslisbare talen} \begin{bewijs}{We bewijzen dat $A_{DFA}$ beslisbaar is.} Voor $A_{DFA} = \{\langle D,s \rangle | D \text{ is een DFA en } D \text{ accepteert } s\}$ construeren we een beslisser $B$ als volgt: @@ -1286,11 +1311,61 @@ \subsection{Beslisbare talen} % TODO: E_DFA is beslisbaar % TODO: EQ_DFA is beslisbaar % TODO: A_CFG is beslisbaar -% TODO: E_CFG is beslisbaar -% TODO: ES_CFG is beslisbaar + +\begin{bewijs}{We bewijzen dat $E_{CFG}$ beslisbaar is.} + We kunnen bewijzen dat $E_{CFG} = \{\langle G \rangle | G \text{ is een CFG en } L_G = \emptyset\}$ beslisbaar is door $G$ te transformeren als volgt: + \begin{itemize} + \item Voor een regel $A \rightarrow \alpha$ met $\alpha$ bestaande enkel uit terminals (inclusief $\epsilon$), dan: + \begin{itemize} + \item Verwijder alle producties waar $A$ aan de linkerkant staat. + \item Vervang in elke regel waar $A$ rechts voorkomt, de voorkomens van $A$ door $\alpha$. + \end{itemize} + \item Herhaal de transformatie totdat: + \begin{itemize} + \item Het startsymbool verwijderd is, waarbij de invoer verworpen wordt, omdat dat betekent dat het mogelijk is een string af te leiden in het startsymbool. + \item Er geen regels zijn van de benodigde vorm, waarbij de invoer verworpen wordt, omdat de taal dan leeg is. (Het is dus niet mogelijk om een terminal te bereiken vanuit het startsymbool.) + \end{itemize} + \end{itemize} + Door deze transformatie uit te voeren kunnen we voor elke CFG bepalen of die de lege taal bepaalt of niet en dus is $E_{CFG}$ beslisbaar. +\end{bewijs} + +\begin{bewijs}{We bewijzen dat $ES_{CFG}$ beslisbaar is.} + We kunnen bewijzen dat $ES_{CFG} = \{\langle G \rangle | G \text{ is een CFG en } \epsilon \in L_G\}$ beslisbaar is door $G$ te transformeren naar de Chomsky Normaal Vorm (definitie\ref{def:cnf}). Indien de CNF de productie ``$S \rightarrow \epsilon$'' bevat kunnen we concluderen dat de gegeven CFG $G$ de lege string bevat. Bij gevolg is $ES_{CFG}$ beslisbaar. +\end{bewijs} + % TODO: Elke CFL is beslisbaar + +\begin{bewijs}{We bewijzen dat $\etm$ niet beslisbaar is.} + Stel dat $\etm$ beslisbaar is en $E$ is een beslisser voor $\etm$, dan kunnen we een beslisser $B$ voor $\atm$ construeren. Voor een gegeven invoer $\langle M,s \rangle$ construeren we een machine $M_s$ waarvoor geldt + \begin{itemize} + \item Gegeven een invoer $w$, als $w \neq s$, verwerpt $M_s$ de string $w$. + \item Anders laat $M_s$ $M$ lopen op $w$ en geeft het resultaat terug. + \end{itemize} + $M_s$ is een machine die enkel accept teruggeeft indien $M$ $s$ accepteert en anders reject. We laten $E$ lopen op $\langle M_s \rangle$: + \begin{itemize} + \item Als $E$ $M_s$ accepteert, dan laten we $B$ zijn input $\langle M,s \rangle$ verwerpen, omdat $M_s$ dan de lege taal bepaalt, wat enkel mogelijk is als $M$ $s$ verwerpt. + \item Als $E$ $M_s$ verwerpt, dan laten we $B$ zijn input $\langle M,s \rangle$ accepteren, omdat $M_s$ dan niet de lege taal bepaalt, wat enkel mogelijk is als $M$ $s$ accepteert. + \end{itemize} + + We zeggen dat $\atm$ reduceerbaar is naar $\etm$. +\end{bewijs} + +\begin{bewijs}{We bewijzen dat $\eqtm$ niet beslisbaar is.} + We kunnen $\eqtm$ reduceren naar $\etm$ ($\etm \leq_m \eqtm$). Indien er een beslisser $EQ$ bestaat voor $\eqtm$, dan kunnen we een beslisser $E$ voor $\etm$ bouwen die bij een invoer $\langle M \rangle$, $EQ$ laat lopen op $\langle M,m_\emptyset \rangle$ en hetzelfde resultaat teruggeeft. We weten dat $\etm$ niet beslisbaar is, dus de beslisser $E$ kan niet bestaan en dus de beslisser $EQ$ ook niet. Bijgevolg is $eqtm$ ook niet beslisbaar. +\end{bewijs} + +% TODO: EQ_TM is niet herkenbaar en niet co-herkenbaar + +\begin{definitie}{$IsIn_{TM,S}$} + Stel dat $S$ een verzameling van talen is, kunnen we voor een gegeven machine $M$ bepalen of de taal $L_M$ bepaald van die machine behoort tot de verzameling $S$? + \begin{equation*} + IsIn_{TM,S} = \{\langle M \rangle|L_M \in S\} + \end{equation*} +\end{definitie} + +We kunnen zeggen dat $\etm = IsIn_{TM,\{\emptyset\}}$ en $REGULAR_{TM} = IsIn_{TM,RegLan}$. + % TODO: REGULAR_TM is niet beslisbaar: $REGULAR_{TM} = \{\langle M \rangle | M \text{ is een Turingmachine en } L_M \text{ is een reguliere taal}\}$ -% TODO: EQ_TM is niet beslisbaar % TODO: ALL_CFG is niet beslisbaar \subsubsection{Overzicht} diff --git a/voorbeelden.tex b/voorbeelden.tex index 9b08de5..8ae9367 100644 --- a/voorbeelden.tex +++ b/voorbeelden.tex @@ -1,5 +1,39 @@ \section{Voorbeelden} +\subsection{Transitietabel NFA} +\label{ex:nfatbl} + +\begin{nfa} + \node[initial,state] (S) {$S$}; + \node[state] (A) [below right of=S] {$A$}; + \node[state,accepting] (E) [above right of=A] {$E$}; + + \path (S) edge [] node {$a$} (E) + edge [] node {$a,\epsilon$} (A) + (A) edge [loop below] node {$b$} (A) + edge [bend right] node {$a$} (E) + (E) edge [loop right] node {$a,b$} (E) + edge [bend right] node [above] {$\epsilon$} (A); + \addvmargin{1mm} +\end{nfa} + +De bijhorende transitietabel voor de gegeven NFA: + +\begin{center} +\begin{tabular}{r|r|r} + $Q$ & $\Sigma_\epsilon$ & $\powerset(Q)$ \\ \hline + $S$ & $a$ & $\{A,E\}$ \\ + $S$ & $\epsilon$ & $\{A\}$ \\ + $A$ & $a$ & $\{E\}$ \\ + $A$ & $b$ & $\{A\}$ \\ + $E$ & $a$ & $\{E\}$ \\ + $E$ & $b$ & $\{E\}$ \\ + $E$ & $\epsilon$ & $\{A\}$ \\ \hline + $S$ & $b$ & $\emptyset$ \\ + $A$ & $\epsilon$ & $\emptyset$ \\ +\end{tabular} +\end{center} + \subsection{NFA naar RE} \label{ex:gnfa} @@ -603,4 +637,50 @@ \subsection{Taal met NFA kleiner dan minimale DFA} \addvmargin{1mm} \end{ugraph} -De complementgraaf bevat geen enkele component die uit meer dan \'e'en toestand bestaat. We concluderen dat de DFA reeds minimaal is. We zien nu ook dat de NFA minder toestanden heeft dan de equivalente minimale DFA. \ No newline at end of file +De complementgraaf bevat geen enkele component die uit meer dan \'e'en toestand bestaat. We concluderen dat de DFA reeds minimaal is. We zien nu ook dat de NFA minder toestanden heeft dan de equivalente minimale DFA. + +\subsection{CFG} +\label{ex:cfg} + +We stellen een CFG op voor de contextvrije taal $L = \{a^nb^n|n \in \nat\}$ over $\Sigma = \{a,b\}$. + +\begin{itemize} +\item $S \rightarrow aSb$ +\item $S \rightarrow \epsilon$ +\end{itemize} + +\subsection{CNF} +\label{ex:cnf} + +We stellen een CFG in CNF op voor de contextvrije taal $L = \{a^nb^n|n \in \nat\}$ over $\Sigma = \{a,b\}$. + +\begin{itemize} +\item $A \rightarrow a$ +\item $B \rightarrow b$ +\item $C \rightarrow XB$ +\item $X \rightarrow AC$ +\item $X \rightarrow AB$ +\item $S \rightarrow X$ +\item $S \rightarrow \epsilon$ +\end{itemize} + +\subsection{PDA} +\label{ex:pda} + +We stellen een PDA op voor de contextvrije taal $L = \{a^nb^n|n \in \nat\}$ over $\Sigma = \{a,b\}$. + +\begin{pda} + \node[initial,state] (q1) {$q_1$}; + \node[state] (q2) [right of=q1] {$q_2$}; + \node[state] (q3) [right of=q2] {$q_3$}; + \node[state,accepting] (q4) [right of=q3] {$q_4$}; + + \path (q1) edge [] node {$\pdat{\epsilon}{\epsilon}{\$}$} (q2) + (q2) edge [loop above] node {$\pdat{a}{\epsilon}{a}$} (q2) + edge [] node {$\pdat{\epsilon}{\epsilon}{\epsilon}$} (q3) + (q3) edge [loop above] node {$\pdat{b}{a}{\epsilon}$} (q3) + edge [] node {$\pdat{\epsilon}{\$}{\epsilon}$} (q4); + \addvmargin{1mm} +\end{pda} + +Deze PDA kan niet met minder toestanden voorgesteld worden. Indien $q_3$ een eindtoestand zou zijn (en $q_2$ de starttoestand), dan zou het aantal $a$'s en $b$'s niet meer gelijk zijn, omdat de PDA dan kan stoppen voor dat het even veel $b$'s als $a$'s is tegengekomen. De strings $aaa$ of $aaab$ zouden dan onder andere geldig zijn, zo lang er minder dan of evenveel $b$'s als $a$'s zijn. \ No newline at end of file