Lyhyt MathCheck-ohje (uuteen välilehteen)
Tässä tehtävässä opiskellaan deterministisiin äärellisiin automaatteihin eli DFA:hin liittyviä peruskäsitteitä ja harjoitellaan päättelytapoja. Ne luovat pohjan, jonka varaan voidaan rakentaa mielenkiintoisia sovelluksia.
Oheinen kuva esittää erästä DFA:ta. Sama kuva on pysyvästi ruudun oikeassa alanurkassa. Kertaamme alkajaisiksi DFA:n matemaattisen määritelmän sekä osien nimet ja piirrosmerkinnät. Määritelmä on alla tiiviisti ja sen perässä on kysymyksiä. Mallivastaukset tulevat näkyviin siirtämällä kursori ruskean alueen päälle.
Määritelmä Deterministinen äärellinen automaatti eli DFA tarkoittaa viisikkoa (Q, Σ, δ, q̂, F), jonka osat toteuttavat seuraavat ehdot:
Millä nimellä Q:n alkioita kutsutaan ja miten ne piirretään? vastausNiitä kutsutaan tiloiksi. Tilat piirretään yksin- tai kaksinkertaisina ympyröinä.
Mikä on kuvan DFA:n Q? vastaus{1, 2, 3, 4, 5, 6}
Millä nimellä Σ:aa kutsutaan? Millä nimellä Σ:n alkioita kutsutaan? Miten Σ ilmaistaan piirroksessa? vastausΣ:aa kutsutaan aakkostoksi ja sen alkioita kutsutaan merkeiksi. Jollei erikseen ole muuta sanottu, Σ on piirroksessa kaarten yhteydessä esiintyvien merkkien joukko.
Mikä on kuvan DFA:n Σ? vastaus{a, b}
Mitä ε ∉ Σ tarkoittaa? vastausε tarkoittaa tyhjää merkkijonoa eli nollasta merkistä koostuvaa merkkijonoa. ε ∉ Σ tarkoittaa, että tyhjää merkkijonoa ei voi käyttää merkkinä. Tätä on tärkeää korostaa siksi, että on paljon DFA:lta näyttäviä piirroksia, joissa ε esiintyy kaaren yhteydessä ikään kuin se olisi merkki. Niitä on paljon, koska NFA:n kaaren nimenä voi olla tyhjä merkkijono eli ε. Voiko ε esiintyä DFA:n kaaren nimenä? vastausEi voi.
Mitä Σ* tarkoittaa? vastausΣ* tarkoittaa kaikkien Σ:n alkioista muodostettavissa olevien jonojen eli kaikkien merkkijonojen joukkoa. Jos Σ = {a}, niin Σ* = …{ε, a, aa, aaa, …} Jos Σ = {a, b}, niin Σ* = …{ε, a, b, aa, ab, ba, bb, aaa, …} Jos Σ = ∅, niin Σ* = …{ε}
Millä nimellä δ:n alkioita kutsutaan ja miten ne piirretään? vastausSen alkioita kutsutaan kaariksi. Kaari (q, a, q’) piirretään nuolena, joka alkaa tilasta q, päättyy tilaan q’ ja jonka vieressä on merkki a.
Mitä tarkoittaa, että δ on osittainen funktio joukolta Q × Σ joukolle Q? vastausSe tarkoittaa ensinnäkin, että δ on joukko kolmikoita muotoa (q, a, q’), missä a on merkki ja q ja q’ ovat tiloja. Lisäksi se tarkoittaa, että siihen ei kuulu kahta kolmikkoa, jotka eroavat toisistaan vain viimeisen osan osalta; toisin sanoen, mistään tilasta ei lähde millään merkillä useampaa kuin yksi kaari. ”Funktio” tarkoittaisi, että jokaisesta tilasta lähtee jokaisella merkillä tasan yksi kaari. ”Osittainen” väljentää tätä siten, että tilasta ei tarvitse lähteä kaaria jokaisella merkillä. (Jopa se on sallittua, että mistään tilasta ei lähde lainkaan kaaria.)
Toisinaan käytämme funktiokutsumerkintää δ(q, a). Jos (q, a, q’) on kaari, niin δ(q, a) = q’. Jos δ(q, a) = q’, niin (q, a, q’) on kaari. Valitettavasti funktiokutsumerkintä on kömpelö silloin, kun q:sta ei lähde a-nimistä kaarta. Siksi käytämme paljon kaarimerkintää (q, a, q’).
Mikä on kuvan DFA:n δ? vastaus{(1, a, 4), (2, a, 6), (2, b, 5), (3, b, 2), (4, b, 5), (5, a, 6), (5, b, 5), (6, a, 3)}
Luettele ne δ(q, a), jotka eivät ole määritellyt kuvan DFA:ssa. vastausδ(1, b), δ(3, a), δ(4, a) ja δ(6, b)
Jos A on joukko, niin |A| tarkoittaa A:n kokoa eli alkioiden määrää. Se on joko luonnollinen luku 0, 1, 2, … tai ääretön. Milloin δ on mahdollisimman pieni, ja kuinka paljon |δ| on silloin? vastausSilloin kun kaaria ei ole lainkaan. Silloin |δ| = 0. Milloin δ on mahdollisimman suuri, ja kuinka paljon |δ| on silloin? vastausSilloin kun jokaisesta tilasta lähtee kaari jokaisella merkillä. Silloin |δ| = |Q||Σ|. Kuinka paljon ovat kuvan DFA:n |δ|, |Q|, |Σ| ja |Q||Σ|? vastaus|δ| = 8, |Q| = 6, |Σ| = 2 ja |Q||Σ| = 12.
Millä nimellä q̂:ta kutsutaan ja miten se piirretään? vastausq̂ on alkutila. Se osoitetaan piirroksessa nuolella, joka päättyy siihen ja alkaa tyhjästä (siis ei ala tilasta).
Mitä q̂ ∈ Q tarkoittaa? vastausSe tarkoittaa, että alkutila on tila (eikä esimerkiksi merkki). Se, että alkutila on tila, ei matemaattisessa määritelmässä seuraa siitä, että sana ”tila” on sanan ”alkutila” loppuosa, koska nimet eivät ole osa matemaattista määritelmää. Sitäpaitsi eihän tällaiseen voi luottaa edes luonnollisessa kielessä, sillä puolitotuus ei ole totuus eikä penkkiurheilu ole urheilua.
Mikä on kuvan DFA:n q̂? vastaus1
Millä nimellä F:n alkioita kutsutaan ja miten ne piirretään? Mitä F ⊆ Q tarkoittaa? vastausNiitä kutsutaan lopputiloiksi ja ne piirretään kaksinkertaisina ympyröinä. F ⊆ Q tarkoittaa, että jokainen lopputila on tila.
Mikä on kuvan DFA:n F? vastaus{3, 4}
Edellä yhden ”Mikä on kuvan DFA:n x” -kysymyksen vastauksessa ei esiinny merkkejä { ja }. Missä ja miksi? vastausq̂ on yksi tila, mutta muut DFA:n osat ovat joukkoja.
Tyhjää joukkoa merkitään ∅. Jokaiselle DFA:n osalle Q, Σ, δ, q̂ ja F kerro, voiko se olla ∅, ja jos ei voi niin perustele miksi. vastausQ ≠ ∅, koska q̂ ∈ Q. Sama suomeksi: tilojen joukko ei voi olla tyhjä, koska alkutila kuuluu siihen. Σ, δ ja F voivat olla tyhjiä. Jos ollaan oikein tarkkoja, niin q̂ voi olla tyhjä joukko. Tämä johtuu siitä, että ei ole rajattu sitä, mitä tiloina voi olla. Siksi tiloina voi olla joukkoja, ja toisinaan niin tehdäänkin. Tämä on kuitenkin niin hienovarainen asia, että vastaus ”q̂ ei voi olla tyhjä joukko, koska se ei ole joukko” on tässä vaiheessa kurssia täysin hyväksyttävä.
Miksi äärellisyyttä ei vaadita δ:lta ja F:ltä, vaikka kyse on deterministisistä äärellisistä automaateista? vastausF on Q:n osajoukkona korkeintaan yhtä suuri kuin Q, ja Q on äärellinen, joten myös F on äärellinen. Edellä todettiin, että |δ| ≤ |Q||Σ|, joka on äärellinen, koska Q ja Σ ovat äärellisiä.
Piirrä DFA, jonka muut osat kuin q̂ ovat mahdollisimman pienet. vastaus
MathCheck ei osaa äärellisiä automaatteja, mutta se osaa jotakin, jolla niitä voi matkia tehtävien kannalta riittävän hyvin. Tilat merkitään isoilla kirjaimilla. Alkutilan kirjain on määrätty tehtävässä, mutta muut saat valita itse, ellei toisin sanota. Aakkostoa ei merkitä. Tilasta lähtevät kaaret sekä tieto, onko tila lopputila, esitetään tähän tyyliin:
A ::= aD
B ::= aF | bE
C ::= "" | bB
Keskimmäinen rivi esittää kaaret (B, a, F) ja (B, b, E). Alin rivi esittää kaaren (C, b, B) ja kertoo, että C on lopputila. Jos tila ei ole lopputila eikä siitä lähde kaaria, sille ei tehdä omaa riviä. Alkutila on se tila, joka mainitaan ensimmäisenä. Välien ja rivinsiirtojen käyttö on melko vapaata kahta sääntöä lukuunottamatta:
MathCheck ei tarkasta annoitko oikean DFA:n, vaan hyväksyykö
antamasi DFA oikean kielen.
Siksi vastaukseksi kelpaa myös jokin muu DFA, joka hyväksyy saman kielen.
Kokeile vaihtamalla kaaren (2, b, 5) tilalle (2, b, 2)!
VihjeKorvaa rivi
B ::= aF | bE
rivillä
B ::= aF | bB
.
Tee vastaukseen jokin muutos, joka muuttaa hyväksyttyä kieltä ja kokeile, minkälainen ilmoitus tulee.
Kokeile toisen rivin paikalla seuraavat ja katso, minkälainen
ilmoitus tulee.
B ::= aF| bE
B ::= aF|bE
B::=aF |bE
DFA:n polku tarkoittaa jonoa q0a1q1a2q2⋯qn, missä n ≥ 0, q0 ∈ Q ja jokaisella 1 ≤ i ≤ n pätee (qi−1, ai, qi) ∈ δ. Sen pituus on n. Polku on siis yhtä erikoistapaustaMyös yksi tila on polku. Se saadaan määritelmästä valitsemalla n = 0, jolloin jono on pelkkä q0. Jono, jossa on nolla kaarta, on eri asia, koska se jättää kertomatta, mikä on se yksi tila q0. Tätä havainnollistetaan hieman jäljempänä päätekstissä. lukuunottamatta olennaisesti sama asia (vaikka eri tavalla ilmaistuna) kuin jono kaaria, jossa seuraava kaari alkaa siitä tilasta missä edellinen kaari loppuu. Matemaattinen polun määritelmä vastaa siis varsin hyvin sanan ”reitti” merkitystä yksisuuntaisten katujen verkostossa. Polun pituus on siinä olevien kaarten määrä.
Luettele kuvan DFA:n kaikki tilasta 4 alkavat polut, joiden
pituus on enintään 2.
vastaus4
4b5
4b5a6
4b5b5
polku jono kaaria q0 q0a1q1 (q0, a1, q1) q0a1q1a2q2 (q0, a1, q1)(q1, a2, q2) q0a1q1a2q2a3q3 (q0, a1, q1)(q1, a2, q2)(q2, a3, q3)
Miksi polun määritelmässä osista q1, …, qn ei tarvitse sanoa, että ne ovat tiloja, ja osista a1, …, an ei tarvitse sanoa, että ne ovat merkkejä, vaikka osasta q0 tarvitsi sanoa, että se on tila? vastausJoukon δ eli kaarten määritelmä takaa yhdessä ehdon (qi−1, ai, qi) ∈ δ kanssa, että ai on merkki ja qi on tila kun 1 ≤ i ≤ n. Jos n > 0, niin ne takaavat myös että q0 on tila, koska se on kaaren (q0, a1, q1) alkupää. Jos n = 0, niin ”jokaisella 1 ≤ i ≤ n pätee (qi−1, ai, qi) ∈ δ” ei lupaa mitään. Riittäisi sanoa ”jos n = 0 niin q0 on tila”, mutta on yksinkertaisempaa sanoa ”q0 on tila”.
Polku q0a1q1⋯qn alkaa q0:sta ja päättyy qn:ään, eli on q0:sta qn:ään. Ilmaus ”q:sta pääsee q’:uun” tarkoittaa, että on olemassa polku q:sta q’:uun. Jos σ ∈ Σ* eli σ on merkkijono, niin q:sta pääsee σ:lla q’:uun ja q =σ⇒ q’ tarkoittavat, että on olemassa sellainen polku q0a1q1⋯qn, että q0 = q, a1a2⋯an = σ ja qn = q’.
Luettele kaikki σ, joiden pituus on enintään 6 ja joille
pätee 6 =σ⇒ 6 kuvan DFA:ssa.
vastausε
aba
abba
abbba
abaaba
abbbba
Millä ehdolla polku q0a1q1⋯qn voidaan liittää polun r0b1r1⋯rm perään siten, että niistä tulee yksi polku? vastausq0 = rm Mistä minne näin saatu polku vie, ja millä merkkijonolla? vastausSe vie r0:sta qn:ään b1⋯bma1⋯an:llä. Miten se ilmaistaan q =σ⇒ q’-merkinnällä? vastausr0 =b1⋯bma1⋯an⇒ qn
Jokaiselle q ∈ Q on olemassa ainakin yksi sellainen σ ja q’, että q =σ⇒ q’. Ne ovat …ε ja q. Siis jokaiselle q ∈ Q pätee q =ε⇒ q. Tämä seuraa siitä, että jokaisesta tilasta pääsee itseensä kulkemalla nolla kaarta.
Silmukka tarkoittaa polkua, jonka pituus on vähintään 1 ja jonka ensimmäinen ja viimeinen tila ovat samat. Esimerkiksi 2a6a3b2b5a6a3b2 on kuvan DFA:n silmukka. Yksinkertainen silmukka tarkoittaa silmukkaa, jossa mikään tila ei toistu sitä lukuunottamatta, että viimeinen tila on sama kuin ensimmäinen. Esimerkiksi 2a6a3b2b5a6a3b2 ei ole kuvan DFA:n yksinkertainen silmukka, mutta 2b5a6a3b2 on.
Luettele kuvan DFA:n kaikki yksinkertaiset silmukat, joissa
tila 5 ei esiinny.
vastaus2a6a3b2
6a3b2a6
3b2a6a3
(Kaikki kolme ovat eri silmukoita, koska ne alkavat eri
tilasta.)
Huomaamme, että jokainen yksinkertainen silmukka, jonka pituus on n, tuottaa n − 1 muuta yksinkertaista silmukkaa, jotka ovat muuten sama kuin alkuperäinen silmukka, mutta kiertäminen aloitetaan eri kohdasta. Jotta jokaista niistä ei tarvitsisi mainita erikseen, seuraavissa tehtävissä pyydetään mainitsemaan niistä vain se, jossa kiertäminen aloitetaan mahdollisimman pieninumeroisesta tilasta.
Luettele kuvan DFA:n kaikki sellaiset yksinkertaiset
silmukat, joiden ensimmäinen tila on numeroarvoltaan pienin silmukassa
esiintyvä tila.
vastaus5b5
2a6a3b2
2b5a6a3b2
Luettele kuvan DFA:n kaikki sellaiset silmukat, joiden pituus
on 5 tai 6, ja joiden ensimmäinen tila on numeroarvoltaan pienin silmukassa
esiintyvä tila.
vastaus5b5b5b5b5b5
5b5b5b5b5b5b5
2b5b5a6a3b2
2b5b5b5a6a3b2
2a6a3b2a6a3b2
Edellä totesimme, että jokainen yksinkertainen silmukka, jonka pituus on n, tuottaa n − 1 muuta yksinkertaista silmukkaa, jotka ovat muuten sama kuin alkuperäinen silmukka, mutta kiertäminen aloitetaan eri kohdasta. Päteekö sama silmukoille? vastausEi päde. Esimerkiksi 2a6a3b2a6a3b2 tuottaa vain kolme eri silmukkaa, vaikka sen pituus on 6. Kuvan DFA:lla on jopa silmukka, jonka pituus on 6, ja josta saadaan kaikkiaan vain yksi silmukka aloittamalla kiertäminen eri kohdasta. Se on tämä5b5b5b5b5b5b5.
Määritelmä DFA:n (Q, Σ, δ, q̂, F) hyväksymä kieli tarkoittaa niiden σ joukkoa, joille on olemassa sellainen q ∈ F, että q̂ =σ⇒ q. Tilan q ∈ Q hyväksymä kieli tarkoittaa DFA:n (Q, Σ, δ, q, F) hyväksymää kieltä.
Luettele kuusi mahdollisimman lyhyttä merkkijonoa, jotka
kuuluvat kuvan DFA:n hyväksymään kieleen.
vastausa
abaa
abbaa
abbbaa
abbbbaa
abaabaa
Aakkosto on {a, b, c}. Anna mahdollisimman pienet DFA:t, joiden hyväksymät kielet ovat seuraavanlaiset. Käytä alkutilan nimenä A. Valitse itse muiden tilojen nimet.
DFA:n rakenteesta voi melko helposti päätellä joitakin asioita sen hyväksymästä kielestä.
Seuraavaksi osoitamme, että jokaiselle äärelliselle kielelle on olemassa DFA, joka hyväksyy sen. Konstruktio on hyvin yksinkertainen. Tämä DFA hyväksyy kielen {ahven, hei, heinä, hepo}.
Konstruktio voidaan ilmaista matemaattisesti seuraavasti. Olkoon L = {σ1, …, σn} ⊆ Σ* äärellinen kieli. Jos L = ∅, niin on vain alkutila. Annamme sen nimeksi ε. Jos L ≠ ∅, niin jokaista L:ään kuuluvan merkkijonon jokaista alkuosaa kohden muodostetaan tila. Alkuosaa voidaan sellaisenaan käyttää tilan nimenä. Muita tiloja ei ole. Esimerkissä tiloiksi saadaan {ε, a, ah, ahv, ahve, ahven, h, he, hei, hein, heinä, hep, hepo}. Alkutila on ε. Jos a1⋯ak−1ak on tila missä k > 0, niin (a1⋯ak−1, ak, a1⋯ak−1ak) on kaari, ja muita kaaria ei ole. Esimerkiksi (ahv, e, ahve) on kaari mutta (ahv, a, hein) ei ole kaari. Lopputilat ovat L:ään kuuluvat tilat. Esimerkissä ne ovat ahven, hei, heinä ja hepo.
Miksi tämä konstruktio ei kelpaa, jos DFA:n hyväksymä kieli on ääretön? vastausSyntyisi äärettömän monta tilaa, mikä rikkoo vaatimusta, että tilojen joukko on äärellinen.
Miksi tarvitsi käsitellä tyhjä kieli erikoistapauksena? vastausJotta alkutila olisi tila. Jos kieli ei ole tyhjä, niin ε saadaan kieleen kuuluvan sanan (minkä tahansa) alkuosana. Jos kieli on tyhjä, niin sanojen alkuosia ei ole lainkaan, joten ε ei tule sitä kautta.
Jos tilaan q ei pääse alkutilasta, niin q ei voi olla osa alkutilasta johonkin lopputilaan vievää polkua. Sellaisen q:n, siihen päättyvien kaarten ja siitä alkavien kaarten poistaminen ei muuta DFA:n hyväksymää kieltä.
Miksi tilan poistaminen vaatii, että myös siihen kytkeytyvät kaaret poistetaan? vastausPiirroksesta tilan voi poistaa ilman, että siihen kytkeytyvät kaaret poistetaan. Silloin syntyy kaaria, joiden nuolenkärki osoittaa tyhjää tai jotka alkavat tyhjästä. Tällainen olento ei kuitenkaan ole DFA, koska se ei kaikilta osin toteuta DFA:n matemaattista määritelmää. Se rikkoo sitä vaatimusta, että δ on osittainen funktio joukolta Q × Σ joukolle Q. Tämä vaatimus sisältää sen, että jokainen kaari alkaa tilasta (”joukolta Q × Σ”) ja päättyy tilaan (”joukolle Q”).
Oletetaan, että tilat ja kaaret on toteutettu tietueina siten, että kaaritietueesta on osoitin kaaren kärkipään tilan tietueeseen. Mikä ohjelmoinnissa laajalti huonona pidetty asia voi tapahtua, jos tila poistetaan ilman, että siihen kytkeytyvät kaaret poistetaan? vastausJos kaaren kärkipään tila poistetaan, niin osoitin siihen osoittaa vapautettuun muistiin. Tästä voi seurata virhetoimintoja, varsinkin jos muisti otetaan myöhemmin ohjelman suorituksen aikana muuhun käyttöön.
Myöskään tila, josta ei pääse mihinkään lopputilaan, ei voi olla osa alkutilasta johonkin lopputilaan vievää polkua. Senkään poistaminen ei muuta DFA:n hyväksymää kieltä, kunhan poistaminen toteutetaan oikein. Miten se toteutetaan oikein? vastausTilaan kytkeytyvät kaaret on poistettava, ja lisäksi on vielä yksi sääntö, mikä? vastausAlkutilaa ei saa poistaa, vaikka siitä ei pääsisikään mihinkään lopputilaan. Määritelmän mukaan q̂ ∈ Q eli DFA:lla on aina oltava alkutila.
Miksi äsken mainittua lisäsääntöä ei tarvinnut sanoa kun edellä puhuttiin sellaisten tilojen poistamisesta, joihin ei pääse alkutilasta? vastausAlkutila ei ole sellainen tila. Alkutilasta pääsee itseensä kulkemalla polku, jonka pituus on nolla.
Vaikka tämän tehtävän laatija yritti olla hyvin huolellinen, hän unohti edellä tilan poistamiseen liittyvän säännön, jonka huomasi vasta oikolukiessaan tehtävän. Mikä sääntö puuttuu? vastausPoistettava tila pitää poistaa myös lopputilojen joukosta F. Alkuperäisessä DFA:ssa voi olla turhia lopputiloja, joihin ei pääse alkutilasta.
Määritelmä DFA:n muu tila kuin alkutila on turha jos ja vain jos alkutilasta ei pääse siihen tai siitä ei pääse mihinkään lopputilaan. Alkutila ei ole turha.
Lause 1 Jos DFA:sta poistetaan turhat tilat ja niihin kytkeytyvät kaaret, niin DFA:n hyväksymä kieli ei muutu. (Poistettavat lopputilat pitää poistaa myös lopputilojen joukosta.)
Jos turhia tiloja ei ole, niin seuraavat pätevät:
Toisinaan halutaan, että tilasiirtymäfunktio on seuraavassa mielessä täysi.
DFA:n tilasiirtymäfunktio on täysi, jos ja vain jos δ(q, a) on määritelty jokaiselle q ∈ Q ja jokaiselle a ∈ Σ.
Kerro selkeällä suomenkielellä, mitä täysi tilasiirtymäfunktio tarkoittaa DFA-piirrosten kannalta. vastausJokaisesta tilasta eli yksin- tai kaksinkertaisesta ympyrästä lähtee jokaisella aakkosella kaari. (Useamman kuin yhden samannimisen kaaren lähteminen samasta tilasta on joka tapauksessa kielletty DFA:ssa. Vaatimus ”täysi” sulkee pois mahdollisuuden, että tilasta lähtee jollain merkillä nolla kaarta.)
Jos oheisen kuvan esittämän DFA:n tilasiirtymäfunktio on täysi, niin mikä on DFA:n aakkosto? vastaus∅ eli tyhjä joukko.
Jos tilasiirtymäfunktion halutaan olevan täysi, niin voi olla välttämätöntä, että DFA:ssa on ainakin yksi turha tila. Täsmällisemmin sanoen, on olemassa kieliä, jotka voi hyväksyä DFA:lla, mutta ei millään sellaisella DFA:lla, jossa ei ole turhia tiloja ja jonka tilasiirtymäfunktio on täysi. Olkoon L kieli, jonka jokin DFA hyväksyy. Anna sellainen L:ää kuvaava ehto, että jos ja vain jos se toteutuu, niin L:n voi hyväksyä DFA:lla, jossa ei ole turhia tiloja ja jonka tilasiirtymäfunktio on täysi. vastausJoko L = ∅, tai jokaisella σ ∈ Σ* on olemassa sellainen ρ ∈ Σ*, että σρ ∈ L. Ehdossa on siis yleissääntö ja lisäksi yksi erikoistapaus. Yleissääntö sanoo, että jokaisella merkkijonolla on sellainen jatke, että jatkettu merkkijono kuuluu L:ään. Erikoistapauksena L on tyhjä kieli.
Ehdon voi perustella osoittamalla, että ykkösestä seuraa kakkonen ja kakkosesta seuraa ykkönen, missä ykkönen ja kakkonen ovat seuraavat:
Jos ykkönen pätee siksi, että L = ∅, niin kakkonen pätee tästä syystä∅:n hyväksyy DFA, jossa on yksi tila, se ei ole lopputila, ja siitä on jokaisella merkillä kaari itseensä. Sen tilasiirtymäfunktio on selvästi täysi. Siinä ei ole turhia tiloja tästä syystäAlkutila ei koskaan ole turha, ja muita tiloja siinä ei ole...
Jos ykkönen pätee mutta L ≠ ∅, niin kakkonen pätee
tästä syystäAlussa oletettiin, että
jokin DFA hyväksyy L:n.
Tästä syystäLauseen 1
nojalla on olemassa DFA, jossa ei ole turhia tiloja ja joka
hyväksyy L:n.
Todistamme, että sen tilasiirtymäfunktio on täysi.
Olkoon q tämän DFA:n mikä tahansa tila.
Tästä syystäKoska turhia tiloja ei ole siihen pääsee alkutilasta jollakin merkkijonolla σ.
Olkoon a mikä tahansa merkki.
Myös σa on merkkijono eli σa ∈ Σ*.
Tästä syystäYkkösen
nojalla on olemassa sellainen ρ ∈ Σ*, että σaρ ∈
L.
Siksi q:sta pääsee aρ:lla johonkin lopputilaan.
Tästä seuraa, että q:sta lähtee a-niminen kaari.
Siis δ(q, a) on määritelty jokaisella q ∈ Q ja
a ∈ Σ..
Jos kakkonen pätee, niin ykkönen pätee tästä syystäOtetaan tarkasteluun mikä tahansa σ ∈ Σ*. Koska tilasiirtymäfunktio on täysi, alkutilasta pääsee σ:lla johonkin tilaan. Annamme sen nimeksi q. Koska turhia tiloja ei ole, joko q:sta pääsee johonkin lopputilaan tai q on alkutila. Jos q:sta pääsee johonkin lopputilaan, niin σρ ∈ L, missä ρ on q:sta lopputilaan vievän polun merkkien muodostama merkkijono. Muussa tapauksessa q:sta ei pääse mihinkään lopputilaan ja q on alkutila. Tällöin L = ∅..
Jollei DFA:n tilasiirtymäfunktio ole täysi, siitä saadaan täysi hyväksytyn kielen muuttumatta lisäämällä yksi tila ja sopivasti kaaria. Miten kaaret lisätään? vastausOlkoon lisätty tila r. Se ei ole lopputila. Jokaiselle q ∈ Q ja a ∈ Σ, joille δ(q, a) ei ole määritelty, lisätään kaari (q, a, r) eli asetetaan δ(q, a) = r. Lisäksi jokaiselle a ∈ Σ lisätään kaari (r, a, r), jotta δ(r, a) olisi määritelty. Siis lisätystä tilasta lähtee jokaisella aakkosella kaari siihen itseensä.
DFA:ja käytetään muun muassa merkkijonojen tunnistamiseen ja tietoliikenneprotokollien suunnittelemiseen. Ne ovat myös pohja muille hyödyllisille formalismeille, joista tärkeimpiä ovat epädeterministiset äärelliset automaatit, säännölliset lausekkeet ja yhteysriippumattomat kieliopit.