ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI. 1. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on

Samankaltaiset tiedostot
Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Yhteydettömän kieliopin jäsennysongelma

Säännöllisten kielten sulkeumaominaisuudet

Chomskyn hierarkia ja yhteysherkät kieliopit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Kertausta 1. kurssikokeeseen

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Automaatit. Muodolliset kielet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Pinoautomaatit. Pois kontekstittomuudesta

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Turingin koneen laajennuksia

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

MS-A0402 Diskreetin matematiikan perusteet

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

1. Universaaleja laskennan malleja

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Tietotekniikan valintakoe

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Rajoittamattomat kieliopit (Unrestricted Grammars)

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

DFA:n käyttäytyminen ja säännölliset kielet

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

uv n, v 1, ja uv i w A kaikilla

Rajoittamattomat kieliopit

S BAB ABA A aas bba B bbs c

Säännöllisen kielen tunnistavat Turingin koneet

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

Algoritmin määritelmä [Sipser luku 3.3]

Äärellisten mallien teoria

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

9. Matemaattisista koneista.

5.3 Ratkeavia ongelmia

Algoritmit 2. Luento 6 To Timo Männikkö

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

6. Tekijäryhmät ja aliryhmät

MS-A0401 Diskreetin matematiikan perusteet

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

kaikki kielet tunnistettavat A TM HALT TM { a n } { a n b n } { a n b n c n } TOTAL TM EQ TM

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Nopea kertolasku, Karatsuban algoritmi

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

8. Kieliopit ja kielet

Lebesguen mitta ja integraali

Tietojenkäsittelyteorian alkeet, osa 2

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Lisää pysähtymisaiheisia ongelmia

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmit 2. Luento 13 Ti Timo Männikkö

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Datatähti 2019 loppu

MS-C1340 Lineaarialgebra ja

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Ei-yhteydettömät kielet [Sipser luku 2.3]

Formalisoimme nyt edellä kuvatun laskennan.

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

Rekursiiviset palautukset [HMU 9.3.1]

Transkriptio:

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI MIKKO KANGASMÄKI. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on viisikko (Q, Σ, s, δ, F ), missä Q on äärellinen joukko tiloja Σ on äärellinen kokoelma merkkejä, aakkosto s Q on aloitustila δ : Σ Q Q on siirtymäfunktio, ja F Q on hyväksyvien tilojen joukko. q, start q q 3, q 2 Esimerkki.. Kuvan äärellisen automaatin tilojen joukko on {q, q, q 2, q 3 } aakkosto {, }, aloitustila q ja hyväksyvien tilojen joukko F = {q, q 2 }. Siirtymäfunktio on ikävä kuvata sanallisesti, se on parhaiten ilmoitettu kuviolla: Tilasta q menee :llä otsikoitu nuoli q :een ja :lla otsikoitu nuoli q 2 :een, joten δ(, q ) = q ja δ(, q ) = q 2. Koska kuva täsmentää funktion δ yksikäsitteisesti, sen ilmoittaminen missään muussa muodossa on turhaa vaivannäköä. Merkitään aakkostosta Σ muodostettuja äärellisen mittaisia sanoja Σ. Tässä joukossa on mukana myös tyhjä sana ε. Esimerkiksi aakkostolla {, } on Σ = {ε,,,,,,,,,,,,...} Automaatti käsittelee sanan w = w w 2... w k Σ siirtymällä ensin aloitustilasta tilaan δ(w, s), siitä tilaan δ(w 2, δ(w, s)) ja siitä edelleen

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 2 tilaan δ(w 3, δ(w 2, δ(w, s))) ja niin edelleen. Kun syöte loppuu, automaatti hyväksyy sanan, jos se on hyväksyvässä tilassa, ja hylkää muuten. Tämä on jälleen selkeämpi esimerkin kautta ajateltuna: Ylläolevalle automaatille syöte kulkee reittiä q q 2 q 2 q 3 q 3 q 3. Automaatti hylkää sanan, koska se päätyy tilaan q 3, joka ei ole hyväksyvä. Sanalle automaatti kulkee reittiä q q q q q ja hyväksyy sen, koska q on hyväksyvä tila. Ajatellaan tästedes funktiota δ rekursiivisest laajennettuna joukkoon Σ siten, että δ(w w 2... w k, q) := δ(w 2 w 3... w k, δ(w, q)). Esimerkin automaatista huomaa pian, että se hyväksyy sanat L := {,,,,,...}. Sanotaan, että L on automaatin hyväksymä kieli. Sitä voidaan merkitä säännöllisenä lausekkeena ( ). Yleisemmin, jokaista äärellistä automaattia vastaa säännöllinen lauseke ja jokaista säännöllistä lauseketta äärellinen automaatti. Tämä voidaan todistaa määrittelemällä ensin epädeterministinen äärellinen automaatti (NDFA), jonka siirtymäfunktio ei määrää seuraavaa tilaa, vaan tilojen joukon, josta automaatti voi valita. Säännölliselle lausekkeelle voidaan rakentaa NDFA rekursiivisesti (ks. Sipser tai Hopcroft), mutta tyypillisesti tällaiset NDFAt ovat tarpeettoman isoja. Tässä esimerkki Hopcroftin NDFA:sta, joka tunnistaa saman kielen kuin esimerkkiautomaattimme: ε q7 q8 ε q q9 start ε ε ε ε ε ε q q2 q3 q4 q5 q6 ε Jokaisesta NDFA:sta puolestaan voidaan tehdä DFA. Tyypillisesti DFAn tilat ovat tällöin NDFAn kaikkien tilojen osajoukkoja, joten niiden määrä kasvaa n:stä 2 n :ään. Jos siis laittaisimme tietokoneen muuntamaan säännöllisiä lausekkeita äärellisiksi automaateiksi Sipserin metodilla, saisimme esimerkin nelitilaisen automaatin sijasta 24-tilaisen. Tämä on jo sinänsä hyvä syy miettiä, miten automaatteja voitaisiin minimoida, mutta toki se on yleisemminkin tutkimisen arvoinen asia. Lisäksi käyttämämme Tässä w i :t ovat yksittäisiä aakkosia. Jätän tekstissä tällaiset asiat mainitsematta, jos lukijan voi olettaa tajuavan haetun merkityksen

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 3 metodi on hyödyllinen muutenkin, esimerkiksi kahden automaatin osoittamisessa ekvivalenteiksi keskenään. Minimoinnissa on ajatuksena samaistaa tiloja, joista päädytään samaan lopputulokseen, riippumatta mikä käsiteltävän sanan loppuosa on. Katsotaan ensin, mitä samanlaisuus tässä tarkoittaa, sen jälkeen, millaisin keinoin tilojen samankaltaisuus pystytään löytämään, ja lopuksi vielä algoritmin oikeellisuutta ja aikavaatimuksia. 2. Tilojen ekvivalenssi Määritelmä 2.. Äärellisen automaatin (Q, Σ, s, δ, F ) tilat q ja p ovat ekvivalentit keskenään, jos w Σ : δ(q, w) F δ(p, w) F. Tilat siis ovat ekvivalentit, jos niistä päädytään jokaisella sanalla molemmista joko hyväksyvään tai hylkäävään tilaan. Jos tilat p ja q eivät ole ekvivalentit, on olemassa sana w Σ, joka erottaa ne, eli tasan toinen tiloista δ(w, p) ja δ(w, q) on hyväksyvä. Esimerkki 2.2. Jo käyttämässämme esimerkissämme mitkään kaksi tilaa eivät ole ekvivalentit keskenään: q, start q q 3, q 2 Tässä on taulukko sanoista, jotka erottavat eri tilat toisistaan: q q q 2 q 3 q ε ε q ε q 2 ε Taulukko on täytetty vain tarpeellisilta osiltaan, eivätkä kaikki kohdat ole yksikäsitteisiä. Esimerkiksi tilat q ja q 3 erottaa toisistaan myös sana tai. Toisaalta tiloja q ja q 3 ei erota toisistaan mikään muu sana kuin ε, joka erottaa toisistaan hylkäävät ja hyväksyvät tilat. Esimerkki 2.3. Tässä automaatissa tilat c ja e ovat ekvivalentit:

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 4 start a b c d e f, Miten tämä nähdään? Käydään läpi kaikki mahdolliset sanat pituutensa mukaan: Sana ε hyväksytään molemmista tiloista. Sanalla päädytään molemmista sanoista tilaan c, joka hyväksyy. Sanalla päädytään molemmista sanoista tilaan f, joka hylkää. Pidemmillä sanoilla mennään molemmista tiloista samoihin paikkoihin: :llä c:hen ja :lla f:ään, joten reitit ovat loppusanalle samat. Myös b ja c, sekä a ja d voidaan samantapaisella järkeilyllä osoittaa ekvivalenteiksi keskenään. Koska ekvivalenssimme todella on ekvivalenssirelaatio (helppo harjoitustehtävä), b, c ja e muodostavat yhden ekvivalenssiluokan, ja a ja d toisen. Tila f ei ole ekvivalentti minkään muun tilan kanssa, b:stä, c:stä ja e:stä sen erottaa ε ja a:sta ja d:stä. Esimerkki 2.4. Huomaa, että ekvivalenssi ei edellytä, että molemmista tiloista päädytään kaikilla sanoilla samaan tilaan. Tässä automaatissa tilat b ja d ovat ekvivalentit, mutta niistä ei voida koskaan päätyä samaan tilaan: start a b c, d e, 3. Algoritmi ekvivalenssien löytämiseksi On helppoa huomata, että kaksi tilaa eroavat toisistaan (eivät ole ekvivalentit), mutta ekvivalenssin näyttäminen on hankalampaa. Seuraavassa algoritmissa on ajatuksena etsiä toisistaan eroavia tiloja kunnes se ei enää onnistu, ja tämän jälkeen loput tilat ovat ekvivalentit keskenään. Esimerkki 3.. Etsitään tästä automattista keskenään ekvivalentit tilat:

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 5 start a b c d e f, Aluksi piirretään taulukko, jossa on kaikki tilaparit: b X X X X c X X X d X X e X f a b c d e Taulukosta on rastittu yli toista kertaa esiintyvät tilaparit. Sana ε erottaa hyväksyvät tilat muista, joten merkitään se taulukkoon tilapareihin, joista tasan yksi hyväksyy: b ε X X X X c ε X X X d ε ε X X e ε ε X f ε ε ε a b c d e Nyt aletaan käydä tyhjiä ruutuja läpi yksi kerrallaan ja katsotaan, päästäänkö niistä yhdellä aakkosella jo eroavaksi merkittyyn tilapariin. Jos päästään, merkitään ruutuun se aakkonen, jolla päästään. Tilaparista (a, d) päästään :lla (d.a):han, jota ei ole vielä merkitty. :llä päästään pariin (b, e), jota sitäkään ei ole merkitty, joten tähän ruutuun ei merkitä ainakaan vielä mitään. Seuraavasta tyhjästä ruudusta (a.f) päästään :lla (d, f):ään, jota ei ole vielä merkitty eroavaksi. Aakkosella päästään (b, f):ään, joka on merkitty eroavaksi. Merkitään se näin: b ε X X X X c ε X X X d ε ε X X e ε ε X f ε ε ε a b c d e Jatketaan tilaparien läpikäyntiä: (b, c):stä, (b, e):stä ja (e.c):stä ei päästä millään aakkosella eroavaksi merkittyyn ruutuun. Parista (f, d) sen sijaan päästään :llä (f, e):hen, joka on merkitty eroavaksi, joten

merkitään ruudukkoon: b ε X X X X c ε X X X d ε ε X X e ε ε X f ε ε ε ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 6 a b c d e Nyt kaikki tilaparit on käyty kerran läpi, ja olemme ilmeisestikin löytäneet kaikki sellaiset tilaparit, jotka enintään yhden aakkosen mittainen sana erottaa toisitaan. Seuraavaksi käydään taulukko uudelleen läpi, niin kauan, kunnes läpikäynnillä ei enää merkitä yhtään tilaparia eroavaksi. Sen jälkeen kaikki merkitsemättömät tilaparit ovat ekvivalentteja keskenään. Tässä esimerkkitapauksessa toinen läpikäynti ei tee muutosta taulukkoon, joten tilojen joukko Q jakautuu ekvivalenssiluokkiin {a, d}, {b, c, e}ja{f}. Jokaisesta ekvivalenssiluokasta tulee uuden automaatin solmu. Aloitustila on se, joka sisältää alkuperäisen aloitustilan. Hyväksyviä ovat ne, joiden sisältämät solmut ovat hyväksyviä. Siirtymäsäännöissä valitaan jokin ekvivalnssiluokan solmu, katsotaan, mihin siitä siirryttiin alkuperäisessä automaatissa, ja merkitään uuteen siirtymä sen sisältävään ekvivalenssiluokkaan: start ad bce f, Algoritmi pähkinänkuoressa Tee taulukko, jossa on kaikki automaatin tilaparit. Merkitse ε:lla tilaparit, joissa tasan yksi tila on hyväksyvä. Käy taulukko läpi ja jokaisen merkitsemättömän tilaparin (p, q) kohdalla: Jos tilaparista päästään jollain aakkosella a Σ jo merkittyyn tilapariin (δ(a, p), δ(a, q)), niin merkitse ruutuun (p, q) merkki a....ja lopeta, kun taulukko on käyty läpi ensimmäisen kerran ilman, että yhtään uutta tilaparia on merkitty, 4. Algoritmin aikavaativuus ja oikeellisuus Solmupareja 2 on n(n )/2 n 2 kappaletta, ja jokaisella kierroksella vähintään yksi merkitään eroavaksi (tai muuten algoritmi pysähtyy), 2 solmu = tila

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 7 joten parit käydään läpi enintään n 2 kertaa. Aikavaativuudella on siis yläraja Σ n 4. Nettiä selaillessani näin väitettävän aikavaatimukseksi O(n 3 ), mutta en missään perusteita tälle. Tämä pitäisi kyllä paikkansa, jos ei jokaista tilaparia varten tarvitse tarkistaa ensin, onko se merkattu, eli jos vaikkapa pidettäisiin yllä listaa merkitsemättömistä pareista. Algoritmi voidaan tehostaa O(n 2 )-aikaiseksi solmuparikohtaisilla listoilla, joihin merkataan, mikä solmu riippuu tästä parista. (Ks. Hopcroft s. 7-). Lisäksi on nopeampikin O(n log n)-aikainen algoritmi, josta enemmän myöhemmin. Algoritmi toimii oikein: () Jos kaksi solmua ovat ekvivalentit, niitä ei merkitä eroaviksi. Tämä on täysin selvää, sillä kun solmupari (p, q) on merkitty eroavaksi merkillä a, voidaan katsoa, mikä merkki erottaa solmuparin (δ(a, p), δ(a, q)) ja niin edelleen, kunnes lopulta saadaan sana, joka erottaa solmut p ja q toisistaan. (2) Jos kaksi solmua eroavat toisistaan, ne merkitään eroaviksi. Tämä on selvää samalla tavalla kuin edellinen. Oletetaan, että sana w w 2... w k erottaa solmut p ja q. Merkitään: p i := δ(w w 2... w i, p) ja q i vastaavasti. Tasan toinen tiloista p k ja q k hyväksyy, joten pariin (p k, q k ) on ruudukossa merkitty ε. Merkillä w k päästäään tilaparista (p k, q k ) tiloihin (p k, q k ), joten se on merkitty vastaavaan paikkaan taulukosta. Näin jatketaan tilapareille (p k 2, q k 2 ), (p k 3, q k 3 )..., kunnes lopulta ruutuun (p, q) merkitään w. (3) Uusi automaatti hyväksyy saman kielen kuin alkuperäinen eikä uusien siirtymäsääntöjen tekeminen aiheuta ristiriitoja. Tämänkin näkee helposti induktiivisesti: Aloitetaan tilasta q sanalla w = w w 2... w k. Tästä päädytään hyväksyvään tilaan jos ja vain jos tilasta q := δ(w, q ) päädytään hyväksyvään tilaan sanalla w 2 w 3... w k. Se taas pätee jos ja vain jos tilan q kanssa ekvivalenteista tiloista p päästään hyväkysvään tilaan sanalla w 2 w 3... w k. Vuorottelemalla tällä tavalla ekvivalenssirelaatiota ja automaatissa eteenpäin kulkemista huomataan, että sanan hyväksymisen kannalta uudet siirtymäsäännöt eivät aiheuta ristiriitaa. Saatu automaatti on myös pienin, joka tunnistaa saman kielen kuin alkuperäinen. Todistus. Oletetaan, että algoritmi tuottaa automaatin M, jossa on m tilaa. Olkoon N pienempi automaatti n:llä tilallaan, n < m. Valitaan nyt jokaiselle M:n tilalle p sana w p Σ siten, että δ M (w p, s M ) = p, eli sana jolla päästään aloitustilasta tilaan p. Näitä sanoja on m

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 8 kappaletta, joten N päätyy ainakin kahdella näistä sanoista samaan tilaan: δ N (w p, s N ) = δ N (w q, s N ) joillakin p, q Q M. Nyt, koska tilat p ja q eivät ole ekvivalentit, on oltava jokin sana v Σ, joka erottaa ne. Toisin sanoen, on oltava sana v Σ siten, että automaatti M hyväksyy tasan toisen sanoista w p v ja w q v. Automaatilla N puolestaan tämä ei ole mahdollista, sillä jo sanojen alkuosissa ollaan päädytty samaan tilaan. Automaatti N siis hyväksyy tai hylkää yhtäaikaa molemmat sanat w p v ja w q v, joten se tunnistaa eri kielen kuin M. 5. Hopcroftin algoritmi Hopcroftin artikkelissaan 97 esittämä algoritmi toimii nopeammin n log n-ajassa. En puutu tässä sen oikeellisuuteen tai aikavaativuuteen, mutta kerron lyhyesti, kuinka se toimii: Tee joukko S, johon laitetaan solmujoukkoja. Laita sinne joukot F ja Q \ F. Tee jono J, johon laitetaan solmujoukkoja. Laita sinne toinen joukoista F tai Q \ F. Niin kauan kuin jono J ei ole tyhjä, tee: Ota jonosta J joukko A. Jokaiselle aakkoselle a Σ, tee: Määrittele joukko B a niiden solmujen joukoksi, joista siirrytään aakkosella a joukkoon A: B a := {q Q : δ(a, q) A}. Jokaiselle X S, jolle X B a ja X \ B a poista X joukosta S ja laita tilalle joukot X B a ja X \ B a. Jos X J, korvaa se joukoilla X B a ja X \B a. Muussa tapauksessa laita toinen näistä joukoista jonoon. Algoritmi ei ole oikeasti niin hankala kuin miltä se näyttää. Suurin vaikeus on viitsiä lukea niin monta sisäkkäistä luuppia. Osa algortimista on lisäksi aika teknistä tavaraa. Ajatus lyhyesti on jakaa ensin kaikkien solmujen joukko Q hyväksyviin, F, ja ei hyväksyviin, Q \ F. Sitten jakoa hienonnetaan etsimällä joukot, josta päästään yhdellä merkillä hyväksyviin tiloihin. Sitten jakoa hienonnetaan etsimällä joukot, joista päästään yhdellä merkillä näihin tiloihin jne. Pohjimmiltaan kyse on samasta ideasta kuin aiemmassa algoritmissa, mutta vain toisella tavalla toteutettuna.

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI 9 References [Hopcroft] Hopcroft, Ullman: Introduction to Automata Theory, Languages and Computation 979 [Hopcroft97] Hopcroft: An n log n algorithm for minimizing the states in a finite automaton 97, The Theory of Machines and Computations pp. 89-96 ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/7/9/cs-tr-7-9.pdf [Sipser] Sipser: Introduction to the Theory of Computation.