Hoofdstuk 4 Talen en Automaten - Liacs
Hoofdstuk 4 Talen en Automaten - Liacs
Hoofdstuk 4 Talen en Automaten - Liacs
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
46 HOOFDSTUK 4. TALEN EN AUTOMATEN<br />
4.23 Voorbeeld. We ontwerp<strong>en</strong> e<strong>en</strong> Turing Machine voor e<strong>en</strong> e<strong>en</strong>voudige taak.<br />
het herk<strong>en</strong>n<strong>en</strong> van het getal nul. Op de tape staat e<strong>en</strong> reeks 0-<strong>en</strong> <strong>en</strong> 1-<strong>en</strong> (omgev<strong>en</strong><br />
door blanko vakjes, dus met inhoud b). Deze reeks wordt gelez<strong>en</strong> <strong>en</strong> uitgeveegd<br />
(dus vervang<strong>en</strong> door b’s). Als er t<strong>en</strong>minste één 1 gelez<strong>en</strong> is, dan schrijft de machine<br />
1. Anders (er stond<strong>en</strong> alle<strong>en</strong> 0-<strong>en</strong> op de tape) schrijft de machine 0.<br />
Omdat we moet<strong>en</strong> onthoud<strong>en</strong> of we e<strong>en</strong> 1 zijn teg<strong>en</strong>gekom<strong>en</strong> voer<strong>en</strong> we in ieder<br />
geval twee toestand<strong>en</strong> in: n (voor ‘nul’) <strong>en</strong> e (voor ‘e<strong>en</strong>’). We beginn<strong>en</strong> in toestand<br />
n. Bij het lez<strong>en</strong> van e<strong>en</strong> 0 blijv<strong>en</strong> we in toestand n, overschrijv<strong>en</strong> we het symbool<br />
met b <strong>en</strong> gaan we naar rechts, volg<strong>en</strong>s de instructie (n,0,n,b,R). Bij het lez<strong>en</strong> van<br />
1 do<strong>en</strong> we hetzelfde, maar onthoud<strong>en</strong> we dat we dit symbool gezi<strong>en</strong> hebb<strong>en</strong>, <strong>en</strong><br />
gaan we over in toestand e volg<strong>en</strong>s de instructie (n,0,e,b,R).<br />
In toestand e hebb<strong>en</strong> we reeds e<strong>en</strong> 1 gelez<strong>en</strong> <strong>en</strong> wiss<strong>en</strong> we elk symbool dat we<br />
teg<strong>en</strong>kom<strong>en</strong>, met de instructies (e,0,e,b,R) <strong>en</strong> (e,1,e,b,R).<br />
Wanneer we e<strong>en</strong> b lez<strong>en</strong> zijn we aan het eind van de invoer gekom<strong>en</strong>. Zijn we op<br />
dat mom<strong>en</strong>t in toestand n dan schrijv<strong>en</strong> we 0 <strong>en</strong> stopp<strong>en</strong> we door naar de eindtoestand<br />
∅ te gaan; in toestand e hebb<strong>en</strong> we eerder e<strong>en</strong> 1 gelez<strong>en</strong> <strong>en</strong> schrijv<strong>en</strong> we 1.<br />
In deze laatste stap beweg<strong>en</strong> we de kop niet. Dit levert instructies (n,b,∅,0,N)<br />
<strong>en</strong> (e,b,∅,1,N).<br />
De uiteindelijke instructietabel is daarmee:<br />
toe- symbool<br />
stand 0 1 b<br />
n n,b,R e,b,R ∅,0,N<br />
e e,b,R e,b,R ∅,1,N<br />
Terug naar de eerste Turing Machine zoals gegev<strong>en</strong> in Figuur 4.1. Deze e<strong>en</strong>voudige<br />
Turing Machine zal, geplaatst op e<strong>en</strong> invoer string die uit null<strong>en</strong> <strong>en</strong> <strong>en</strong><strong>en</strong><br />
bestaat, in toestand r naar rechts over de tape beweg<strong>en</strong> totdat e<strong>en</strong> eerste b gevond<strong>en</strong><br />
wordt. Op dat mom<strong>en</strong>t staat de leeskop net ná de invoer. De toestand wordt<br />
dan ℓ <strong>en</strong> de kop gaat e<strong>en</strong> vakje terug naar links. Nu loopt de machine naar links,<br />
zolang e<strong>en</strong> 1 gelez<strong>en</strong> wordt. Deze 1 wordt dan telk<strong>en</strong>s door e<strong>en</strong> 0 vervang<strong>en</strong>.<br />
Wanneer de machine, zo doorgaand in toestand ℓ, e<strong>en</strong> 0 of e<strong>en</strong> b vindt, wordt deze<br />
door e<strong>en</strong> 1 overschrev<strong>en</strong>, de machine gaat over in toestand ∅ <strong>en</strong> stopt.<br />
Het is misschi<strong>en</strong> niet direct duidelijk, maar dit programma doet wel degelijk iets<br />
nuttigs; het telt bij de binaire invoer één op.