9 2 Eindige utomten In dit hoofdstuk introduceren we de hoofdrolspelers vn het college: eindige utomten. 2.1 Deterministische eindige utomten We eginnen met een vooreeld. Vooreeld 2.1 Beschouw het volgende pltje vn de eindige utomt A 1. 6 q1 q2 q3 Deze utomt estt uit de toestnden q 0, q 1, q 2 en q 3, wrvn q 0 de strttoestnd is, en q 3 de enige ccepterende toestnd; de verzmeling vn lle toestnden noteren we ls Q = {q 0, q 1, q 2, q 3 }. Het invoerlfet vn A 1 is de verzmeling Σ = {, }. De mogelijke stppen of trnsities vn A 1 worden weergegeven door de pijlen in het digrm. Merk op dt er vnuit elke toestnd voor elk symool een unieke pijl vertrekt; we kunnen dus de trnsities vn A 1 weergeven ls een trnsitiefunctie δ : Q Σ Q. Alle ovenstnde informtie over A 1 kunnen we ook weergeven in een tel: A 1 q 0 q 1 q 0 q 1 q 2 q 0 q 2 q 3 q 0 q 3 q 3 q 3 De utomt komt tot leven ls we invoer toedienen in de vorm vn een woord uit het invoerlfet. De utomt verwerkt dit woord ls volgt: te eginnen vnuit de initiële toestnd q 0 loopt A 1 stp voor stp door het woord, ij elk symool vn toestnd verspringend zols de trnsitie-functie dt voorschrijft. Dit proces, dt we de run vn de utomt op het woord noemen, is fgerond ls het ltste symool voorij is gekomen; de utomt evindt zich dn in de eindtoestnd vn de run. Vooreelden: - Op inputwoord w 1 = voltrekt zich het volgende proces: q 0 q1 q 0 q 1 q2 q 0 q1 ; - De run vn A 1 op inputwoord w 2 = is ls volgt: q 0 q1 q 0 q1 q 2 q3 q 3 q3.
10 We zeggen dt A 1 het woord w 2 herkent of ccepteert omdt de eintoestnd q 3 vn de run op w 2 ccepterend is; het woord w 1 wordt niet herkend, oftewel geweigerd, omdt de run vn de utomt op dit woord eindigt in de toestnd q 1 die niet ccepterend is. Deze utomt ccepteert precies de woorden w over het lfet {, } die drie opeenvolgende s evtten. De utomt A 1 vn Vooreeld 2.1 is een vooreeld vn een deterministische eindige utomt. De lgemene definitie is ls volgt. Definitie 2.2 Een deterministische eindige utomt of de is een quintupel A = (Q, q I, Σ, δ, F ) zó dt Q is een eindige, niet-lege verzmeling vn ojecten die we toestnden noemen, q I Q is de egintoestnd, Σ is het invoerlfet, δ : Q Σ Q is de trnsitiefunctie F Q is de verzmeling ccepterende toestnden. Definitie 2.3 Gegeven is een deterministische eindige utomt A = (Q, q I, Σ, δ, F ). plts vn δ(q) = q noteren we vk q q. We schrijven q w q ls w = 1 2... n en er trnsities zijn vn de vorm q 1 q 2 1 q 2 n q n = q. Bijzondere gevllen vn deze definitie: voor het lege woord geldt q ɛ q, en q ɛ q geldt voor geen enkele q q; ls w uit één symool estt, zeg w =, dn geldt q w q precies ls q q. Voor elke toestnd q en elk woord w is er precies één toestnd q zodnig dt q w q ; deze toestnd q noteren we wel ls ˆδ(q, w). In Vooreeld 2.4 Voor de utomt A 1 vn Vooreeld 2.1 geldt q 0 q 0, q 2 ɛ q 3. q 3 Merk op dt we de functie ˆδ ook inductief hdden kunnen definiëren: ˆδ(q, ɛ) = q ˆδ(q, x) = δ(ˆδ(q, x), ). q 3 en (3) Definitie 2.5 Gegeven is een deterministische eindige utomt A = (Q, q I, Σ, δ, F ). De run vn A op een Σ-woord w = 1 2... n wordt gedefinieerd ls de rij q 1 I 2 q1 q2 n q n. De eindtoestnd vn deze run is de toestnd q n = ˆδ(q I, w); een run is succesvol ls de eindtoestnd ccepterend is, dt wil zeggen: element vn F is. De utomt A ccepteert of herkent een woord w Σ ls ˆδ(q I, w) F, dt wil zeggen ls de run vn A op w succesvol is. De tl L(A) wordt gedefinieerd ls de verzmeling woorden die door A worden geccepteerd. Anders geformuleerd: L(A) = {w Σ ˆδ(q I, w) F }.
11 Vooreeld 2.6 Beschouw de tl L over {, } estnde uit die woorden wr een even ntl s in voorkomt. Deze tl wordt herkend door de volgende utomt A 2 : 6 7 q1 Dit kunt u ntonen door ijvooreeld te lten zien dt voor lle woorden w {, } het volgende geldt: { q0 ls # ˆδ(q 0, w) = (w) is even, (4) q 1 ls # (w) is oneven. 2.2 Niet-deterministische eindige utomten Niet-deterministische utomten lijken op deterministische. Het verschil is dt ij een nietdeterministische utomt, gegeven een toestnd q en een invoersymool, de volgende toestnd niet uniek epld hoeft te zijn, of zelfs mr hoeft te estn. Definitie 2.7 Een niet-deterministische eindige utomt of ne is een quintupel A = (Q, q I, Σ,, F ) zó dt Q is een eindige, niet-lege verzmeling toestnden, q I Q is de egintoestnd, Σ is het invoerlfet, : Q Σ P(Q) is de trnsitiefunctie F Q is de verzmeling eindtoestnden. Vooreeld 2.8 Beschouw de volgende utomt A 3 :,, q1 q2 q3 In een tel kunnen we deze utomt ls volgt weergeven: A 3 q 0 q 0, q 1 q 0 q 1 q 2 q 2 q 3 q 3 q 3 q 3
12 Nondeterminisme vn een utomt komt dus nr voren in de trnsitie-functie, die een pr (q, ) Q Σ feeldt op een verzmeling (q, ) Q vn mogelijke nieuwe toestnden, in plts vn op een unieke nieuwe toestnd δ(q, ). Een niet-deterministische utomt kn meerdere runs heen op één en hetzelfde invoerwoord, en een run kn ook vstlopen. Dit ltste geeurt, ls de utomt zich in een eplde toestnd, zeg q, evindt, en op een symool, zeg Σ, stuit wrvoor geldt dt (q, ) =. Definitie 2.9 Gegeven is een niet-deterministische eindige utomt A = (Q, q I, Σ, δ, F ). We noteren q q ls q (q, ), dt wil zeggen, ls q een mogelijke nieuwe toestnd is n q ij invoersymool. We schrijven q w q ls w = 1 2... n en er trnsities zijn vn de vorm q 1 q 2 1 q2 n q n = q. Bijzondere gevllen vn deze definitie werken precies ls in het deterministische gevl. Een run vn A op het Σ-woord w = 1 2... n is een rij q 1 I 2 q1 q2 k q k wrvoor geldt dt (i) k = n of (ii) k < n en (q k, k+1 ) =. In het eerste gevl zeggen we dt de run succesvol is wnneer q k F ; in het tweede gevl zeggen we dt de run vstloopt in q k op k+1. Vooreeld 2.10 Beschouw de volgende runs vn de utomt A 3 (vn Vooreeld 2.8) op het woord w = : q 0 q0 q 0 q0 q0 q0 q 0 ; q 0 q0 q 0 q1 q2 q3 q 3 ; q 0 q1 Vn deze drie runs is de tweede de enige die succesvol is; de derde loopt vst in q 1 op. Nu runs niet meer uniek zijn, moeten we een keuze mken wnneer we een woord ccepteren. Definitie 2.11 Een niet-deterministische eindige utomt A ccepteert een woord w ls A miniml één succesvolle run op w heeft. De tl L(A) wordt gedefinieerd ls de verzmeling woorden die door A worden herkend. Vooreeld 2.12 Beschouw de volgende utomt A 4 :, q1 q2 We climen dt L(A 4 ) = {w {, } w eindigt op }. (5) Voor het ewijs vn (5) ehndelen we de twee inclusies fzonderlijk.
13 : Stel eerst dt w L(A 4 ). Er is dus een succesvolle run vn A 4 op w. Op grond vn het digrm vn de utomt kn dt lleen mr etekenen dt de ltste stppen vn deze run er ls volgt uit zien: q 0 q1 q 2. Mr dt etekent dt w inderdd eindigt op de string. : Omgekeerd, ls w eindigt op, dn kunnen we w dus schrijven ls w = u voor zeker woord u {, }. Bekijk nu die run vn A 4 op w wrin de utomt net zo lng in de egintoestnd q 0 lijft wchten totdt het hele woord u voorij is, dn met de overgt nr q 1, en vervolgens met de nr q 2. Deze run, die je u kunt weergeven ls q 0 q0 q1 q 2, is duidelijk succesvol; per definitie wordt w dus door A 4 geccepteerd. Vooreeld 2.13 Voor een tweede vooreeld, eschouw de volgende utomt A 5 : c 6 q1 q2 We lten zien dt L(A 5 ) = L(( + c) ). (6) : Stel dt A 5 het woord w ccepteert. We moeten ntonen dt w mtcht met de expressie ( + c). Bekijk drvoor een succesvolle run vn A 5 op w. Op grond vn het digrm vn A 5 kunnen we onmiddellijk concluderen dt deze run óf lengte nul heeft, óf uit een ntl (één of meer) deelruns estt die elk vn de vorm q 0 q1 q 0 dnwel c q 0 q1 q 2 q2 zijn. Hieruit volgt dt w óf leeg is (w = ɛ), of vn de vorm w = u 1 u n (met n 1) wrij elke u i één vn de woorden of c is, en dus in ieder gevl mtcht met de expressie + c. Mr dn is het duidelijk dt inderdd w ( + c). : Stel omgekeerd dt w L(( + c) ). Dn is w óf het lege woord, óf w is vn de vorm w = u 1 u n (met n 1) wrij elke u i mtcht met de expressie +c. In ɛ het eerste gevl wordt w = ɛ geccepteerd door A 5 op grond vn de run q 0 q 0. In u i het tweede gevl geldt voor iedere u i dt q 0 q 0. Comineren we deze deelruns u 1 u 2 dn heen we een succesvolle run q 0 q 0... un q 0. Met ndere woorden w wordt inderdd door A 5 geccepteerd. 2.3 Determinizeren Definitie 2.14 Twee utomten A en B (deterministisch dnwel niet-deterministisch) heten equivlent ls L(A) = L(B), dt wil zeggen: ls ze precies dezelfde woorden herkennen.
Vooreeld 2.15 De utomten A 1 uit Vooreeld 2.1 en A 3 uit Vooreeld 2.8 herkennen lleei precies die woorden over het lfet {, } die drie opéénvolgende s evtten (g dit n voor A 3 ), en zijn dus equivlent. Het is niet zo moeilijk om in te zien dt je elke determinische utomt een niet-deterministisch equivlent A kunt geven: vervng de trnsitiefunctie δ : Q Σ Q door : Q Σ P(Q) gegeven door (q, ) := {δ(q, )}. Op het eerste gezicht hoeft het omgekeerde niet te gelden. Het is ijvooreeld niet op voorhnd duidelijk of je een deterministische utomt kunt mken die equivlent is met de utomt A 4 vn Vooreeld 2.12. Toch is dit mogelijk. Vooreeld 2.16 De eindige utomt A 4 uit Vooreeld 2.12 kn worden eschreven door de volgende tel: A 4 q 0 q 0, q 1 q 0 q 1 q 2 q 2 We construeren nu een nieuwe utomt A d 4. De toestnden vn Ad 4 worden gevormd door lle cht verzmelingen vn toestnden vn A 4 :, {q 0 }, {q 1 },..., {q 0, q 1, q 2 }. De trnsities worden ls volgt epld: ekijk steeds lle toestnden die je op grond vn het symool (zeg, ) kunt ereiken uit één vn de toestnden uit de huidige verzmeling (zeg, S); de verzmeling vn l deze toestnden tesmen vormt de δ(s, ). Bijvooreeld: uit q 0 kun je met in q 0 terechtkomen, en uit q 1 kun je met in q 2 terechtkomen; dus geldt δ({q 0, q 1 }, ) = {q 0, q 2 }. De egintoestnd vn A d 4 is het singleton {q 0}; een deelverzmeling S Q is een eindtoestnd vn A d 4 ls S een eindtoestnd vn A 4 evt; dt wil zeggen, ls q 2 S. A d 4 {q 0 } {q 0, q 1 } {q 0 } {q 1 } {q 2 } {q 2 } {q 0, q 1 } {q 0, q 1 } {q 0, q 2 } {q 0, q 2 } {q 0, q 1 } {q 0 } {q 1, q 2 } {q 2 } {q 0, q 1, q 2 } {q 0, q 1 } {q 0, q 2 } Merk op dt voor elk woord w geldt dt ˆδ({q 0 }, w) precies de verzmeling vn toestnden w s Q is wrvoor geldt dt q 0 s. Bijvooreeld: ˆδ({q0 }, ) = {q 0, q 1 }, en q 0 en q 1 zijn precies de twee toestnden s vn A 4 wrvoor geldt q s. Het is niet l te moeilijk om te lten zien dt L(A d 4 ) = L(A 4). Sterker nog, de suset constructie vn het ovenstnde vooreeld kn worden uitgevoerd voor elke niet-deterministische utomt. 14
15 Definitie 2.17 Gegeven is een ne A = (Q, q I, Σ,, F ). De deterministische simultor vn A is de utomt A d = (Q, q I, Σ, δ, F ) gegeven door: Q = P(Q) q I = {q I } Σ = Σ δ(s, ) = {q Q s q voor zekere s S} F = {S Q S F }. Stelling 2.18 Voor elke niet-deterministische eindige utomt A geldt dt L(A) = L(A d ). Bewijs. De crucile oservtie in het ewijs is dt voor lle woorden w Σ geldt: Hieruit volgt vrijwel onmiddellijk dt L(A) = L(A d ): ˆδ({q I }, w) = {q Q q I w A q}. (7) L(A d ) = {w Σ ˆδ({q I }, w) F } = {w Σ ˆδ({q I }, w) F } = {w Σ er is een s ˆδ({q I }, w) F } = {w Σ er is een s F zodnig dt q I w A s} = L(A). Het ewijs vn (7) gt met inductie nr de lengte vn w. sisstp Neem n dt w = 0, dt wil zeggen: w = ɛ. Links in (7) stt er dn ˆδ({q I }, ɛ), en dt is wegens (3) gelijk n {q I }. ɛ Rechts in (7) stt er dn {q Q q I q} = {q I }. Deze twee verzmelingen zijn dus inderdd n elkr gelijk. inductiestp Neem n dt w = k + 1. We mogen dus nnemen dt w vn de vorm x is, wrij de inductiehupothese vn toepssing is op x. Dt wil zeggen: we mogen geruik mken vn de inductiehypothese ˆδ({q I }, x) = {q Q q I x A q}. We geven deze verzmeling weer ls P. Nu kijken we nr w. Wegens (3) geldt dt ˆδ({q I }, x) = δ(ˆδ({q I }, x), ) = δ(p, ). Links in (7) stt er nu ˆδ({q I }, x) = δ(p, ) = {q Q er is een p P zodnig dt p q} Rechts in (7) stt er {q Q q I x A q} = {q Q er is een p zodnig dt q I x p q} Deze twee verzmelingen zijn dus inderdd n elkr gelijk. qed
16 Merk op dt de deterministische simultor A d vn een nondeterministische eindige utomt A exponentieel veel toestnden heeft, uitgedrukt in het ntl toestnden vn A. Immers, een verzmeling vn n elementen heeft 2 n deelverzmelingen. In veel gevllen zijn niet l deze toestnden nodig, en kn een ne worden gesimuleerd door een de die niet l te veel groter is dn de ne. Vooreeld 2.19 In de utomt A d 4 vn Vooreeld 2.16 kunnen de onereikre toestnden, {q 1 }, {q 2 }, {q 1, q 2 } en {q 1, q 2, q 3 } proleemloos verwijderd worden zonder dt dit invloed heeft op de herkennende krcht vn de utomt. Wt overlijft is de volgende utomt, die evenveel toestnden heeft ls de oorspronkelijke. {q 0 } {q 0, q 1 } {q 0 } {q 0, q 1 } {q 0, q 1 } {q 0, q 2 } {q 0, q 2 } {q 0, q 1 } {q 0 } In het lgemeen is een exponentiële toenme vn het ntl toestnden echter onvermijdelijk. Opgven Opgve 2.1 Geef deterministische utomten die precies de volgende tlen herkennen het lfet is steeds {0, 1}. () {w {0, 1} zowel # 0 (w) ls # 1 (w) is even}, () {w {0, 1} w eindigt op 0}, (c) {w {0, 1} w eindigt op 00}, (d) {w {0, 1} elk lok vn vijf opéénvolgende symolen in w evt minstens één 0 } (e) {w {0, 1} w 010 en w 101}. Opgve 2.2 Gegeven is een de A. Geef een de B die het complement vn L(A) herkent; dt wil zeggen: B ccepteert precies de woorden die niet door A worden herkend. Opgve 2.3 Welke tlen over {, } worden door de volgende utomten herkend? () A 1 q 0 q 1 q 0 q 1 q 2 q 1 q 2 q 2 q 1 () A 2 q ɛ q q ɛ q q q ɛ q q q q q q (c) A 3 q 0 q 1 q 3 q 1 q 3 q 2 q 2 q 2 q 2 q 3 q 3 q 3 Opgve 2.4 In een zekere impertieve progrmmeertl P kunnen (en moeten) reële getllen op een vn de volgende mnieren worden gerepresenteerd: 1. een niet-lege cijferreeks (ijvooreeld: 24356);
17 2. twee niet-lege cijferreeksen gescheiden door een punt (ijvooreeld: 3.1416); 3. een niet-lege cijferreeks, gevolgd door het symool E, mogelijk gevolgd door een minteken (-), en zeker gevolgd door een niet-lege cijferreeks (ijvooreeld: 15E-4, 16E238); 4. een comintie vn 2 en 3, dt wil zeggen: twee niet-lege cijferreeksen gescheiden door een punt (ijvooreeld: 3.1416), gevolgd door het symool E, mogelijk gevolgd door een minteken (-), en zeker gevolgd door een niet-lege cijferreeks (ijvooreeld: 16.2E-23). Geef een eindige utomt die precies deze expressies herkent. Opgve 2.5 Geef eindige utomten die de volgende tlen herkennen: () L(( + ) ( + ) ) () L( + ) (c) L( + ). Kn een utomt met 5 toestnden het werk doen? (d) L(( + c) ). Kn een utomt met 3 toestnden het werk doen? Opgve 2.6 Geef deterministische equivlenten vn de volgende niet-deterministische utomten: () A 1 q 0 q 0, q 1 q 1 q 1 q 2 q 2 q 2 q 2 () A 2 q 0 q 0, q 1 q 0 q 1 q 2 q 2 q 2 q 3 q 3 q 3 q 3 (c) A 3 q 0 q 1, q 3 q 1 q 1 q 2 q 1, q 2 q 2 q 3 q 0 q 3 q 0 (d) A 4 q 0 q 0, q 1 q 0 q 1 q 2, q 3 q 4 q 2 q 1, q 2, q 4 q 3 q 4 Opgve 2.7 Gegeven is een eindige utomt A. Geef een eindige utomt B zó dt L(B) = L(A) L(A).