Tarpeettomat tilat
Äärellisessä automaatissa voi olla tiloja, joista ei ole mahdollista päästä lopputilaan ja jotka ovat siksi turhia. Tällaisia tiloja kutsutaan tarpeettomiksi tiloiksi. Ne haluamme yleensä poistaa, koska ne vain turhaan monimutkaistavat koko automaattia.
Esimerkki tarpeettomista tiloista
Olkoon meillä tämä äärellinen automaatti:
Näemme, että kun päädymme tiloihin q4 tai q5, emme enää koskaan pääse kumpaankaan lopputilaan q1 tai q2. Tällaiset tilat ovat siis tarpeettomia, ja voimme yksinkertaisesti poistaa ne, jolloin saisimme uuden automaatin, joka olisi kuitenkin ekvivalentti; se hyväksyisi saman kielen. Tarpeettomien tilojen poistamisen jälkeen automaatti näyttäisi tältä:
Se hyväksyisi silti saman kielen. On kuitenkin hetkiä, jolloin tarpeettomia tiloja kannattaa pitää — esimerkiksi kun rakennamme täydellistä automaattia.
Tarpeettoman tilan määritelmä
Olkoon meillä äärellinen automaatti A = (Q, Σ, δ, q0, F). Sanomme, että tila q ∈ Q on tarpeeton, jos ei ole olemassa yhtään sanaa w ∈ Σ∗ eikä yhtään tilaa qf ∈ F, joille
Tarpeettomien tilojen poistaminen
Oletamme, että syötteenä on automaatti A = (Q, Σ, δ, q0, F), jossa ei ole jo valmiiksi saavuttamattomia tiloja. Etsimme vähitellen tilat, jotka johtavat lopputiloihin, sitten tilat, jotka johtavat tiloihin, jotka johtavat lopputiloihin, ja niin edelleen. Näin saamme kaikkien niiden tilojen joukon, jotka eivät ole tarpeettomia. Alussa asetamme S0 = F. Rakennamme seuraavat joukot Si kaikille i ∈ ℤ+ tämän säännön mukaan:
Kaikkien tilojen, jotka eivät ole tarpeettomia, tuloksena syntyvän joukon voi esittää näin:
Ja tarpeettomien tilojen joukon näin:
Toisin sanoen: jos pätee Si = Si + 1, joukossa Q ∖ Si on tarpeettomat tilat. Havainnollistamme menetelmää tällä automaatilla:
Ensimmäiseksi asetamme yhtälön S0 = {q1, q2}. Seuraavaksi muodostamme joukon S1 lisäämällä joukkoon S0 kaikki tilat, joista johtaa siirtymä johonkin joukon S0 tilaan. Lisäämme siis tilat q0 ja q3, koska tilasta q0 johtaa siirtymä tilaan q1 ja tilasta q3 johtaa siirtymä tilaan q2. Saamme S1 = {q0, q1, q2, q3}. Koska S0 ≠ S1, jatkamme eteenpäin.
Muodostamme joukon S2. Etsimme siis kaikki tilat, joista pääsee joukkoon S1 ja jotka eivät vielä ole joukossa S1. Se on ainoa tila q6, josta pääsee tilaan q3. Saamme S2 = {q0, q1, q2, q3, q6}. Koska S1 ≠ S2, jatkamme eteenpäin.
Muodostamme joukon S3. Onko olemassa uutta tilaa, josta pääsee johonkin joukon S2 tilaan? Ei ole, tiloista q4 ja q5 ei pääse mihinkään joukon S2 tilaan, ja muut tilat ovat jo joukossa S2. Pätee siis S3 = {q0, q1, q2, q3, q6}. Koska S2 = S3, algoritmi päättyy ja joukko S2 on niiden tilojen joukko, jotka eivät ole tarpeettomia. Joukko {q4, q5} on niiden tilojen joukko, jotka ovat tarpeettomia.
Täsmällisesti uuden ekvivalentin automaatin ilman tarpeettomia tiloja rakennamme näin. Meillä on automaatti A = (Q, Σ, δ, q0, F), ja rakennamme sille ekvivalentin automaatin A′ = (Q′, Σ, δ′, q0, F) ilman tarpeettomia tiloja.
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a), jos δ(q, a) ∈ Q′, muuten δ′(q, a) ei ole määritelty
Lähteet
Luvut: Saavuttamattomat tilat, Tarpeettomat tilat, Automaatin minimointi