✖

Automaatin minimointi

Automaatin minimoinnilla tarkoitetaan sellaisen ekvivalentin automaatin löytämistä, jossa on mahdollisimman vähän tiloja. Myös automaattia, jossa ei ole yhtään tarpeetonta tilaa, voi vielä yksinkertaistaa.

Esimerkki

Otetaan tämä automaatti:

automaatti hyväksyy vain sanat 01 ja 11. On kuitenkin ilmeistä, että on olemassa yksinkertaisempi kolmen tilan automaatti, joka hyväksyy saman kielen. Tilat q1 ja q2 voi yhdistää yhdeksi uudeksi tilaksi {q1, q2}, ja ne siirtymät, jotka johtivat tiloihin q1 tai q2, johtavat uuteen tilaan, ja sama pätee tiloista q1 ja q2 lähteviin siirtymiin. Saamme tämän automaatin:

Tämä automaatti hyväksyy selvästi saman kielen kuin edellinen, ja siinä on silti vähemmän tiloja.

Tilojen ekvivalenssi

Olkoon meillä automaatti A = (Q, Σ, δ, q0, F). Määrittelemme tilan q ∈ Q kielen, merkitään L(q), seuraavasti:

L(q)=L((Q,Σ,δ,q,F))

Eli vaihdamme automaatin A alkutilan tilasta q0 tilaksi q ja laskemme tämän automaatin hyväksymän kielen. Toisin sanoen kielessä L(q) ovat kaikki sellaiset sanat w, joilla automaatissa A päästään tilasta q sanalla w automaatin lopputilaan. Jos palaamme edelliseen automaattiin, niin L(q1) = {1}.

Sanomme, että kaksi eri tilaa q1 ja q2 ovat ekvivalentit, jos pätee

L(q1)=L(q2)

Mitä tämä tarkoittaa? Jos tilat q1, q2 ovat ekvivalentit, niin kun teemme niistä automaatin alkutiloja, ne tuottavat saman kielen. Toisin sanoen: jos automaatti päätyy konfiguraatioon (q1, w) ja (q2, w), sen täytyy molemmissa tapauksissa joko hyväksyä tai molemmissa tapauksissa hylätä.

Jos palaamme edelliseen automaattiin: tilat q1 ja q2 ovat ekvivalentit, koska kun olemme tilassa q1, voimme hyväksyä syötesanan enää vain silloin, jos sanan lukematon osa on 1. Sama pätee, kun olemme tilassa q2.

Automaatin minimoinnissa on siis tarkoitus löytää ekvivalentit tilat ja poistaa nämä tilat yhdistämällä ne yhdeksi uudeksi tilaksi samalla tavalla kuin teimme yllä olevassa esimerkissä.

Ekvivalenttien tilojen löytäminen

Mitkä tilat eivät varmasti ole ekvivalentit? Jos otamme lopputilan ja ei-hyväksyvän tilan, ne eivät varmasti ole ekvivalentit, koska lopputilan kieli on eri kuin ei-hyväksyvän tilan kieli — lopputila hyväksyy varmasti sanan ε, ei-hyväksyvä tila ei. Näytämme menetelmän heti esimerkillä. Olkoon meillä tämä automaatti:

Aloitamme luomalla kaksi tilojen joukkoa

S1=F={q3,q6},S2=Q∖F={q0,q1,q2,q4,q5}.

Nyt luomme siirtymätaulukon ja säilytämme tiedon ryhmistä S1 ja S2:

ryhmätila01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Nyt muokkaamme taulukkoa niin, että sen sijaan, että siinä olisi suoraan kirjoitettuna, mihin tiloihin annetulla symbolilla mennään, merkitsemme siihen vain ryhmän, johon siirrytään. Esimerkiksi tilasta q3 pääsemme symbolilla 0 tilaan q5, joka on ryhmässä S2. Tilan q5 sijaan kirjoitamme taulukkoon siis S2:

ryhmätila01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Nyt jaamme molemmat ryhmät edelleen. Samaan ryhmään laitamme aina tilat, jotka siirtyvät kaikilla symboleilla samoihin ryhmiin. Esimerkiksi tilat q3 ja q6 eivät ole samassa ryhmässä, koska ne eivät siirry samaan ryhmään symbolilla 0 eivätkä symbolilla 1. Sen sijaan tilat q1 ja q2 ovat samassa ryhmässä, koska kummallakaan tilalla ei ole siirtymää symbolille 0 ja kumpikin tila siirtyy symbolilla 1 ryhmään S1. Muodostamme siis uudet ryhmät:

ryhmätila01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

Jokaisessa ryhmässä on samat siirtymät. Nimeämme vasta syntyneet ryhmät ja selvitämme taas, mihin näistä uusista ryhmistä tilat osoittavat:

ryhmätila01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

Tässä vaiheessa jaamme ryhmiä edelleen. Näemme kuitenkin, ettemme voi enää tehdä uutta jakoa, saisimme samat ryhmät — koska tiloilla q1 ja q2 on kyllä samat siirtymät ryhmien tasolla, mutta ne ovat jo samassa ryhmässä eikä ryhmässä S4 ole muita tiloja. Ekvivalenttien tilojen etsintäalgoritmi on lopussa. Jokaisesta ryhmästä riittää valita yksi tila, muut poistamme, ja kaikki siirtymät, jotka johtivat poistettuihin tiloihin, johtavat siihen yhteen tilaan, jonka valitsimme.

Voimme siis valita, että uudessa automaatissamme on tilat q3, q6, q0, q1, q4, ja tilat q2 ja q5 poistamme. Kaikki siirtymät, jotka johtivat tilaan q2, johtavat nyt tilaan q1, ja kaikki siirtymät, jotka johtivat tilaan q5, johtavat tilaan q4:

Automaatin minimoinnin eteneminen

  1. Poistamme saavuttamattomat tilat,
  2. poistamme tarpeettomat tilat,
  3. poistamme ekvivalentit tilat.

Lähteet

Luvut: Saavuttamattomat tilat, Tarpeettomat tilat, Automaatin minimointi