29.08.2013 Views

Hoofdstuk 4 Talen en Automaten - Liacs

Hoofdstuk 4 Talen en Automaten - Liacs

Hoofdstuk 4 Talen en Automaten - Liacs

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!