source: liacs/TPFL2010/assignment1/report.tex@ 245

Last change on this file since 245 was 245, checked in by Rick van der Zwet, 14 years ago

Part of 3.22a

File size: 12.4 KB
RevLine 
[2]1%
2% $Id: report.tex 571 2008-04-20 17:31:04Z rick $
3%
4
5\documentclass[12pt,a4paper]{article}
6
7\frenchspacing
8\usepackage[english,dutch]{babel}
9\selectlanguage{dutch}
[224]10\usepackage[pdftex]{graphicx}
[2]11\usepackage{url}
12\usepackage{amssymb,amsmath}
[224]13\usepackage{float}
[226]14\usepackage{tikz}
[227]15\usepackage{fixltx2e}
[2]16
[226]17\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,positioning,fit,petri}
18
19
20
21\setlength\parindent{0pt}
22\setlength\parskip{\baselineskip}
[224]23\floatstyle{ruled}
24\newfloat{algoritm}{thp}{lop}
25\floatname{algoritm}{Algoritme}
26
27\title{Opdracht 1 \\
28\large{Topics on Parsing and Formal Languages - fall 2010}}
[2]29\author{Rick van der Zwet\\
[224]30 \texttt{<hvdzwet@liacs.nl>}}
[2]31\date{\today}
32
[224]33
[2]34\begin{document}
[224]35\newcommand{\DFA}{\emph{DFA}~}
36\newcommand{\qed}{\hfill \ensuremath{\Box}}
[2]37\maketitle
[224]38\begin{abstract}
39Dit schrijven zal uitwerkingen van opgaven behandelen uit het boek
40\cite{JS2009} gebruikt bij het college. In deze opdracht zullen zeven opgaven
[243]41(3,20,22,47,54,68,69) van hoofdstuk 3 behandeld worden.
[224]42\end{abstract}
[2]43
[224]44\section{Opgave 3.3}
45Als $L \subseteq \Sigma^*$ is regulier dan is de taal
46\begin{equation}
472L := {a_1,a_1,a_2,a_2,\ldots,a_k,a_k}~:~elke~a_i \in \Sigma~en~a_1a_2{\cdots}a_k \in L
48\end{equation}
49regulier. Zie dat er een `verdubbeling' optreed van symbolen, dit gedrag is de
[229]50modelleren in een \DFA. Omdat $L$ regulier is bestaat er een \DFA $M =
51(Q,\Sigma,\delta,q_0,F)$ die $L$ beschrijft. Construeer nu een nieuwe \DFA $P$
[224]52die de nieuwe taal $2L$ gaat beschrijven, neem hiervoor het alfabet ($\Sigma$),
[229]53en de begintoestand $q_0$ over van $L$. De toestanden ($Q$) worden verdubbeld.
[224]54$voor~alle~q \in Q:~voeg~q'~toe~aan~Q$. Neem ook de transities over van $M$,
[229]55maar maak aanpassingen zodanig dat de nieuwe toestanden ook gelezen worden. Dus
[224]56$\delta(q,x)$ wordt $\delta(q,q'),\delta(q',x)$. De acceptatie toestand $F$
[243]57is gelijkt aan de oude acceptatie toestand.
[226]58\\
[229]59De nieuwe \DFA $P$ beschrijft $2L$ en dus is $2L$ regulier.
[224]60\qed
61
62
[225]63\section{Opgave 3.20}
[243]64Laat $\Sigma = \{0,1\}$ zijn. Een voorbeeld van de taal $L \subseteq
[225]65\Sigma^*$ voor welke geldt dat, de Myhill-Nerode\cite{JS2009}[pg. 77--81]
[229]66gelijkheid relatie $R_L$ de eigenschap heeft dat elk woord in $\Sigma^*$ zijn
[244]67eigen equivalentie klasse is. Dit wilt zeggen dat $xR_{l}y$ dan en slechts dan
68voor alle $z \in \Sigma^*$, is er een $xz \in L$ dan en slechts als $yz \in L$.
69Omdat hier gezocht wordt naar een taal waarbij de woorden allemaal equivalentie
70klassen op-zich zijn, zal alle elementen met elkaar vergeleken kunnen worden
71door middel van $R_L$ en hier mogen geen positieve 'gevallen' uitkomen.
[224]72
[244]73De (triviale) taal $L = {01,10}$ is een voorbeeld hiervan. Beiden woorden hebben
74hun eigen klasse. Als $x = 0$ en $y = 1$, bestaat er een $z = 1$, zodanig dat
75$xz \in L, yz \notin L$.
[226]76
[245]77De taal $M = \{{0}^* : |M|_0~is~een~priemgetal\}$ is een ander voorbeeld. Als we
[244]78kijken naar $aR_{l}b$ kan er altijd een $z$ gevormd worden zodanig dat $az \in
79M, bz \notin M$. Bijvoorbeeld $a = 0^3, b =0^5, z = 0^4$. Deze eigenschap wordt
80afgedwongen door het `feit' dat er geen relatie bestaat tussen de lengtes
81tussen opeenvolgende priemgetallen.\footnote{Ik heb dit voor gemak aangenomen,
82de praktijk is echter dat is nog een groot wiskundig vraagstuk is.}
[226]83
[244]84
85\section{Opgave 3.22*}
[229]86Om aan te tonen dat een \emph{2DFA} exponentieel meer expressief is dan een
[226]87\DFA voor bepaalde talen kijken we naar de volgende taal; Laat $n$ een integer
[229]88$\ge1$ en $F_n \subseteq \{0,1,2,3,4\}^*$ als volgende gedefinieerd:
[226]89\begin{equation}
[244]90 F_n = \{3~0^{i_1}~1~0^{i_2} \cdots 1~0^{i_n}~2^k~0^{i_k}~4 : 1 \le k,j,i_j \le n\}
[226]91\end{equation}
92
93Als eerste kan de $F_n$ door een \emph{2DFA} van $O(n)$ toestanden geaccepteerd
94worden, welke aan te tonen is door eerst te kijken naar de eigenschappen van
[245]95$F_n$ hierbij is de zien dat de $0$-reeks van de lengte $i_k$ zowel voor als na
[226]96de $2^k$ moet voorkomen. Waarbij $2^k$ aangeeft, waar deze $0$-reeks gevonden
[245]97kan worden bij de plek $k$. De \emph{2DFA} moet dus twee dingen doen. Het
[226]98aantal keer nul op twee plekken vergelijken. Waarbij 1 plek vast staat en de
[245]99tweede plek variabele wordt gedefinieerd. De aanpak kan als volgt gezien worden:
100\begin{verbatim}
1011. controleren of |1| <= 2de 0-reeks (dmv 'knopen-strook').
1022. |2| tellen (onthouden dmv 'knopen-strook', dit is `variable' A).
1033. naar begin lopen.
1044. A-1 '1' instanties laten passeren.
1055. |0| tellen (onthouden dmv 'knopen-strook'm dit is `variable' A).
1066. naar begin 2de 0-reeks lopen.
1077. 0-reeks vergelijken.
108\end{verbatim}
109Voor deze aanpak zijn 3 `knopen-stroken' nodig en 3 transitie-lagen. In totaal
110dus in ongeveer $O(6n)$ knopen. Figuur~\ref{fig:2dfa} laat de \emph{2DFA}
111zien.
[226]112
113
114\begin{figure}
115\center
116\begin{tikzpicture}
[245]117\node[place,pin={[pin edge={style=<-,blue,thick,decorate,decoration={snake, pre length=4pt}}]left:}] (q00) {};
118\node[place] (q01) [right=of q00] {};
119\node[place] (q02) [right=of q01] {};
120\node[place] (q03) [right=of q02] {};
121\node[place] (q11) [below=of q01] {};
122\node[place] (q12) [below=of q02] {};
123\node[place] (q13) [below=of q03] {};
124\node[place] (q10) [below=of q00] {};
125\node[place] (q20) [below=of q10] {};
126\node[place] (q21) [below=of q11] {};
127\node[place] (q22) [below=of q12] {};
128%\node[place] (q2) [below=of q1] {};
129%\node[place,pin={[pin edge={style=-<,thick,decorate,decoration={snake, pre length=4pt}}]below:}] (q3) [below=of q2] {};
130%\node[place] (q01) [right=3cm of q1] {};
131%\node[place] (q02) [right=3cm of q2] {};
[226]132\path[->]
[245]133% (q0) edge [decorate,decoration={snake}] node[left] {goto-2} (q00)
134 (q00) edge node[above] {3,R} (q01)
135 (q01) edge node[above] {1,R} (q02)
136 (q01) edge [loop above] node[above] {0,R} (q01)
137 (q02) edge node[above] {1,R} (q03)
138 (q02) edge [loop above] node[above] {0,R} (q02)
139 (q03) edge [loop above] node[above] {0,R} (q03)
140
141 (q11) edge node[above] {0,L} (q10)
142 (q12) edge [bend left] node[below] {0,L} (q10)
143 (q13) edge [bend left] node[below] {0,L} (q10)
144
145 (q01) edge node {2,R} (q11)
146 (q02) edge node {2,R} (q12)
147 (q03) edge node {2,R} (q13)
148 (q13) edge node[above] {2,R} (q12)
149 (q12) edge node[above] {2,R} (q11)
150
151 (q10) edge node {2,L} (q20)
152 (q20) edge node[below] {2,L} (q21)
153 (q21) edge node[below] {2,L} (q22)
154
155
156% (q1) edge node[left] {2} (q2)
157% (q2) edge node[left] {2} (q3)
158% (q1) edge [decorate,decoration={snake}] node[above] {0-length-check} (q01)
159% (q2) edge [decorate,decoration={snake}] node[above] {0-length-check} (q02)
[226]160 ;
161\end{tikzpicture}
[245]162\caption{Opdracht 2.22a uitgewerkt voor $n = 3$, niet geldige stappen zijn niet genoemd en moet allen naar een 'trap' knoop gestuurd worden}
163\label{fig:2dfa}
[226]164\end{figure}
165
166Om te laten zien dat een \DFA minstens $n^n$ toestanden nodig heeft moet je
167gebruik maken van het feit dan een \DFA niet terug kan lopen. Het zal dus een
168`geheugen' moeten maken om het maximale $0$ woord voor de `splitsing' ($2^k$)
169te kunnen onthouden om zo te kijken of het overeen komt het $0$ woord na de
170`splitsing'. Omdat je voor elke $F_i$ waarbij $1 \ge i \ge n$ minimaal $n$
171toestanden nodig hebt om te kunnen tellen en hiervan weer $n$ unieke sets
172bestaan, heb je dus minimaal $n^n$ toestanden nodig.
173
[227]174\section{Opgave 3.47}
[226]175
[227]176Om te bewijzen dat `de klasse van talen geaccepteerd door \DFA' => `de klasse van
177talen gespecificeerd door de reguliere expressies'\cite{JS2009}[Theorem 1.4.2, (b) => (a)]
178aan de hand van het volgende voorbeeld:
179Laat $M = (Q,\Sigma, \delta, q_1,F)$ een \DFA zijn, waarbij $Q =
[229]180\{q_1,q_2,\ldots,q_n\}$. Definieer nu $R_{i,j,k}$ als de taal van alle woorden
[227]181die van toestand $i$ naar toestand $j$ gaan zonder door toestanden te gaan die
182hoger als $k$ genummerd zijn.
[226]183
[229]184Om dit te doen is een recursieve formule nodig, welke $R_{i,j,k}$ als invoer
[227]185heeft. a) Kijk welke transities er mogelijk zijn in $\delta$ met toestand $i$ als
186begin positie. Plaats deze op de `stapel'. b) Werk de elementen op de stapel
187stuk voor stuk af volgens dezelfde methodiek. Stop pas als de $\delta$
188resultaat $j$ bevat. Let erop dat oneindige herhalingen gedetecteerd moeten
189worden om het algoritme te laten termineren. Je kan het zien als het volledig
190doorzoeken van een boom met in de wortel de knoop $i$.
[226]191
[224]192\section{Opgave 3.54}
[227]193
[229]194Laat $\Sigma = \{1,2,3,\ldots,n\}$ zijn en definieer:
[227]195\begin{equation}
196L_n = \{w \in \Sigma^* : |w|_i = 1~voor~alle~i\}
197\end{equation}
198Dit zijn dus de woorden waarbij alle elementen precies \'{e}\'{e}n keer in voor
199komen. Bijvoorbeeld $L_3 = \{123,132,213,231,312,321\}$.
200
201Om te laten zijn dat er minimal een reguliere expressie van lengte $2^{n-1}$
202nodig is om $L_n$ te specificeren, moet de \emph{Myhill-Nerode} stelling
203toegepast worden. Vanwege de eigenschap dat prefix uniek is, zat het nooit
204mogelijk worden om aan beiden woorden hetzelfde toe te voegen zodanig dat ze in
205elkaars klasse terecht komen. (elk `bit' informatie is relevant). Voor alle
206klasse zal dus apart gekeken worden of aan de eisen voldaan wordt. Om dus alle
207getallen $n$ van de string te controleren of zij uniek is zijn minimaal
208$2^{n-1}$ toestanden nodig.
209
210Echter voor $\overline{L_n}$ is wel een reguliere expressie te vinden en wel
211in de grootte $O(n^2)$. Door simpelweg voor elke $i \in \Sigma^*$ een reguliere
212expressie te maken van de vorm $x^*~i~x^*~i~x^*$ waarbij $x = Sigma^* - i$.
213
[224]214\section{Opgave 3.68}
[227]215
216Voor een woord $w \in \Sigma^*$, is een palc($w$) de korte palindroom $x$
217zodanig dat $w$ een prefix is van $x$. en palc($L$) = $\bigcup_{w \in L}\{palc(w)\}$.
218
219Om te laten zien dat palc($w$) = $wt^{-1}w^R$, waarbij $wt^{-1}$ het woord is $w$
[229]220waar het suffix $t$ eraf gehaald is en $t$ de langste palindroom suffix van $w$
[227]221is, moet er gebruik gemaakt worden van een tegenstelling. Als $w$ nog een
222palindroom aan het einde zal bevatten $uu$, dan ziet $x$ er als volgt uit
223$wuuuuw$, dit is niet de korte palindroom ($ww$), welke $uuuu$ er nog makkelijk
[229]224uit weggehaald had kunnen worden. Een willekeurige suffix van $w$ kan ook geen
[227]225palindroom vormen die nog `weggesneden' kan worden, omdat hij anders al in den
226beginne een palindroom had moeten zijn.
227
[229]228Als $L$ is regulier, dan is palc($L$) ook regulier, welke er een unieke
[227]229`vertaling' van een woord $w$ naar zijn palc($w$). De nieuwe woorden zullen in
230het slechtste geval evenveel blijven, maar de taal kan ook kleiner worden.
231
232De andere kant op geldt dit \underline{niet}, als $L$ regulier is, dan is het
233onbeslist of palc\textsuperscript{-1}($L$) ook regulier is. Het kan namelijk
[229]234zeer goed dat een (ingewikkelde) functie die woorden genereerde welke een
235palindroom zijn en die aan een vast prefix ($p$) toegevoegd. De \emph{palc}
[227]236functie zal deze allen naar \'{e}\'{e}n woord omzetten, welke dan regulier is.
237
238
[224]239\section{Opgave 3.69}
240
[227]241Laat $x_1,x_2,\ldots,x_k \in \Sigma^*$. Om te laten zien dat $\Sigma^* -
242x_{1}^{*}x_{2}^{*} \cdots x_{k}^*$ eindig is dan en slechts als $|\Sigma| = 1$
243en gcd($|x_1|,|x_2|,\ldots,|x_k|$) = 1 moet er een paar dingen bewezen worden
244a) aantonen dat het \underline{niet} geldt voor de tegenvoorbeelden a) $gcd
245> 1$ b) $|\Sigma| > 1$ en tevens moet aangetoond worden waarom de eindigheid
[228]246 voor dit specifieke geval geldt.
[227]247
[228]248Merk op dat met een gcd van 1 alle getallen in de verzameling \{1,
249priemgetallen\} zitten. Bij een alfabet van 1 letter hoeft er enkel maar
250gesproken worden over lengtes. Standaard zitten alle lengtes in de taal.
251Aangezien de `deel-lengtes' ($x_1,x_2,\ldots,x_k$) nul of meer keer in de
252verzameling in de verzameling mogen zitten. Zal je uiteindelijk overblijven met
253een eindige set lengtes. In het geval dat er lengte 1 gevonden wordt, zal zelfs
254de lege set het antwoord zijn.
255
256a) Als $|\Sigma| > 1$, bijvoorbeeld $\{1,2\}$ dan kan er een oneindige
257verzameling gemaakt worden, door $x_1,x_2,\ldots,x_k \in 1^*$. De $2*$ zal dan een
258oneindige verzameling vormen.
259
260b) $gcd > 1$, bijvoorbeeld $2$ dan kan er een oneindige verzameling gemaakt
261worden, doordat niet alle woorden gemaakt kunnen worden. Enkel worden van
262`even' lengte in dit geval. Waardoor de `oneven' woorden een eindige string
263gaan vormen. Bij grotere waardes ($r$) kunnen ook 'groepen' (de $|r|* - 1$)
264bijvoorbeeld niet meer bereikt worden, welke dan tot een oneindige verzameling
265kunnen groeien.
266
[224]267\begin{thebibliography}{1}
268\bibitem[JS2009]{JS2009}Jeffrey Shallit, \emph{A second course in formal
269languages and automata theory }, \emph{Cambridge University Press}, 2009.
[2]270\end{thebibliography}
271\newpage
272\end{document}
Note: See TracBrowser for help on using the repository browser.