Minimering av automat
Med minimering av en automat mener vi å finne en ekvivalent automat som inneholder det minste mulige antallet tilstander. Selv en automat som ikke inneholder noen overflødig tilstand, kan forenkles videre.
Eksempel
La oss ta denne automaten:
Automaten aksepterer bare ordene 01 og 11. Det er åpenbart at det finnes en enklere automat med tre tilstander som aksepterer det samme språket. Tilstandene q1 og q2 kan slås sammen til én ny tilstand {q1, q2}, og overgangene som gikk til tilstandene q1 eller q2, vil gå til den nye tilstanden, og det samme gjelder for overgangene som gikk ut fra q1 og q2. Vi får denne automaten:
Denne automaten aksepterer åpenbart det samme språket som den forrige, og den har færre tilstander.
Ekvivalens av tilstander
La oss ha en automat A = ⟨Q, Σ, δ, q0, F⟩. Vi definerer språket til tilstanden q ∈ Q, som vi betegner L(q), som
Det vil si at vi bytter starttilstanden i automaten A fra q0 til q og regner ut språket som denne automaten aksepterer. Med andre ord inneholder språket L(q) alle ord w slik at vi i automaten A fra tilstanden q med ordet w kommer til en sluttilstand i automaten. Hvis vi går tilbake til den forrige automaten, er L(q1) = {1}.
Vi sier at to ulike tilstander q1 og q2 er ekvivalente hvis
Hva betyr dette? Hvis tilstandene q1, q2 er ekvivalente, vil de, hvis vi gjør dem til starttilstander i automaten, generere det samme språket. Med andre ord: hvis automaten kommer til konfigurasjonene ⟨q1, w⟩ og ⟨q2, w⟩, må den i begge tilfellene enten akseptere eller i begge tilfellene avvise.
Hvis vi går tilbake til den forrige automaten: tilstandene q1 og q2 er ekvivalente, for hvis vi er i tilstanden q1, kan vi bare akseptere inputordet hvis den delen av ordet som ikke er lest, er lik 1. Det samme gjelder hvis vi er i tilstanden q2.
Ved minimering av en automat gjelder det altså å finne ekvivalente tilstander og fjerne disse tilstandene ved å slå dem sammen til én ny tilstand, på samme måte som vi gjorde i eksempelet over.
Hvordan finne ekvivalente tilstander
Hvilke tilstander er helt sikkert ikke ekvivalente? Hvis vi tar en sluttilstand og en tilstand som ikke er en sluttilstand, er de helt sikkert ikke ekvivalente, for språket til sluttilstanden er forskjellig fra språket til tilstanden som ikke er en sluttilstand — sluttilstanden aksepterer helt sikkert ordet ε, men den andre gjør det ikke. Vi viser framgangsmåten med en gang på et eksempel. La oss ha denne automaten:
Vi begynner med å lage to mengder av tilstander
Nå lager vi en overgangstabell og beholder informasjonen om gruppene S1 og S2:
Nå endrer vi tabellen slik at vi i stedet for å ha skrevet direkte hvilke tilstander vi går til for et gitt symbol, bare noterer gruppen vi går til. Fra tilstanden q3 kommer vi for 0 for eksempel til tilstanden q5, som er i gruppen S2. I stedet for q5 skriver vi derfor S2 i tabellen:
Nå deler vi begge gruppene videre. I de samme gruppene setter vi alltid tilstander som går til de samme gruppene for alle symboler. Tilstandene q3 og q6 vil for eksempel ikke være i samme gruppe, fordi de verken for 0 eller for 1 går til samme gruppe. Tilstandene q1 og q2 vil derimot være i samme gruppe, fordi begge tilstandene mangler en overgang for 0, og begge tilstandene går for 1 til gruppen S1. Vi lager dermed nye grupper:
I hver gruppe har vi de samme overgangene. De nye gruppene gir vi navn og finner igjen ut hvilke av disse nye gruppene tilstandene peker til:
Nå deler vi gruppene enda en gang. Men vi ser at vi ikke kan dele mer, vi ville fått de samme gruppene — for tilstandene q1 og q2 har riktignok de samme overgangene innenfor gruppene, men de er allerede i samme gruppe, og det finnes ingen andre tilstander i gruppen S4. Algoritmen for å finne ekvivalente tilstander er dermed ferdig. Fra hver gruppe er det nok å velge én tilstand, de andre sletter vi, og alle overganger som gikk til de slettede tilstandene, vil gå til den ene tilstanden vi valgte.
Vi kan altså velge at den nye automaten vår skal ha tilstandene q3, q6, q0, q1, q4, og tilstandene q2 og q5 fjerner vi. Alle overganger som gikk til q2, vil nå gå til q1, og alle overganger som gikk til q5, vil gå til q4:
Framgangsmåte for minimering av automat
- Vi fjerner uoppnåelige tilstander,
- vi fjerner overflødige tilstander,
- vi fjerner ekvivalente tilstander.
Kilder
Kapitler: Uoppnåelige tilstander, Overflødige tilstander, Minimering av automat