✖

Automaták minimalizálása

Az automata minimalizálásán azt értjük, hogy megkeressük azt az ekvivalens automatát, amelynek a lehető legkevesebb állapota van. Még az az automata is egyszerűsíthető tovább, amelyben nincs felesleges állapot.

Példa

Vegyük ezt az automatát:

Az automata csak a 01 és a 11 szót fogadja el. Ugyanakkor nyilvánvaló, hogy létezik egyszerűbb, három állapotú automata, amely ugyanezt a nyelvet fogadja el. A q1 és a q2 állapot összevonható egyetlen új, {q1, q2} állapottá, a q1 vagy q2 állapotba vezető átmenetek az új állapotba fognak vezetni, és ugyanez igaz a q1 és q2 állapotból induló átmenetekre. Ezt az automatát kapjuk:

Ez az automata nyilvánvalóan ugyanazt a nyelvet fogadja el, mint az előző, ugyanakkor kevesebb állapota van.

Az állapotok ekvivalenciája

Legyen adott egy A = ⟨Q, Σ, δ, q0, F⟩ automata. A q ∈ Q állapot nyelvét, amelyet L(q)-val jelölünk, így definiáljuk:

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

Vagyis az A automata kezdőállapotát a q0 állapotról a q állapotra változtatjuk, és kiszámoljuk az így kapott automata által elfogadott nyelvet. Más szóval az L(q) nyelvben azok a w szavak vannak, amelyekre az A automatában a q állapotból a w szóval az automata valamelyik végállapotába jutunk. Ha visszatérünk az előző automatához, akkor L(q1) = {1}.

Azt mondjuk, hogy két különböző állapot, a q1 és a q2 ekvivalens, ha fennáll

L(q1)=L(q2)

Mit jelent ez? Ha a q1, q2 állapotok ekvivalensek, akkor ha bármelyiküket tesszük meg kezdőállapotnak, ugyanazt a nyelvet fogják generálni. Más szóval: ha az automata a ⟨q1, w⟩ és a ⟨q2, w⟩ konfigurációba kerül, akkor mindkét esetben el kell fogadnia, vagy mindkét esetben el kell utasítania a szót.

Ha visszatérünk az előző automatához: a q1 és a q2 állapot ekvivalens, mert ha a q1 állapotban vagyunk, akkor a bemeneti szót már csak akkor fogadhatjuk el, ha a szó el nem olvasott része 1. Ugyanez igaz, ha a q2 állapotban vagyunk.

Az automata minimalizálásakor tehát az a lényeg, hogy megkeressük az ekvivalens állapotokat, és ezeket az állapotokat úgy távolítsuk el, hogy egyetlen új állapottá vonjuk össze őket, ugyanúgy, ahogy a fenti példában tettük.

Hogyan találjuk meg az ekvivalens állapotokat

Mely állapotok biztosan nem lesznek ekvivalensek? Ha egy végállapotot és egy nem végállapotot veszünk, azok biztosan nem ekvivalensek, mert a végállapot nyelve különbözik a nem végállapot nyelvétől – a végállapot biztosan elfogadja az ε szót, a nem végállapot nem. Az eljárást rögtön egy példán mutatjuk be. Legyen tehát adott ez az automata:

Azzal kezdjük, hogy létrehozunk két állapothalmazt

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

Most elkészítjük az átmenetek táblázatát, és megőrizzük az S1 és S2 csoportokra vonatkozó információt:

csoportállapot01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Most úgy módosítjuk a táblázatot, hogy ne közvetlenül azt írjuk bele, hogy az adott szimbólumra mely állapotokba jutunk, hanem csak azt a csoportot jegyezzük fel, amelybe átmegyünk. Például a q3 állapotból a 0 szimbólumra a q5 állapotba jutunk, amely az S2 csoportban van. A q5 helyett tehát a táblázatba S2-t írunk:

csoportállapot01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Most tovább osztjuk mindkét csoportot. Mindig azokat az állapotokat tesszük egy csoportba, amelyek minden szimbólumra ugyanazokba a csoportokba mennek át. Például a q3 és a q6 állapot nem lesz ugyanabban a csoportban, mert sem a 0, sem az 1 szimbólumra nem ugyanabba a csoportba mennek. Ezzel szemben a q1 és a q2 állapot ugyanabban a csoportban lesz, mert egyiküknek sincs átmenete a 0 szimbólumra, és mindketten az 1 szimbólumra az S1 csoportba mennek. Új csoportokat hozunk létre:

csoportállapot01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

Minden csoportban ugyanazok az átmenetek vannak. Az újonnan keletkezett csoportokat megjelöljük, és ismét megállapítjuk, hogy az állapotokból ezek közül az új csoportok közül melyikbe vezetnek az átmenetek:

csoportállapot01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

Most a csoportok újabb felosztása következne. Látjuk azonban, hogy további osztást már nem végezhetünk, ugyanezeket a csoportokat kapnánk – mert a q1 és a q2 állapot átmenetei ugyan a csoportokon belül megegyeznek, de már ugyanabban a csoportban vannak, és az S4 csoportban nincs más állapot. Az ekvivalens állapotok keresésének algoritmusa véget ért. Minden csoportból elég egy állapotot kiválasztanunk, a többit töröljük, és az összes átmenet, amely a törölt állapotokba vezetett, abba az egy állapotba fog vezetni, amelyet kiválasztottunk.

Választhatjuk például, hogy az új automatánk állapotai a q3, q6, q0, q1, q4 legyenek, a q2 és q5 állapotot pedig töröljük. Minden átmenet, amely a q2 állapotba vezetett, most a q1 állapotba fog vezetni, és minden átmenet, amely a q5 állapotba vezetett, a q4 állapotba:

Az automata minimalizálásának menete

  1. Eltávolítjuk az elérhetetlen állapotokat,
  2. eltávolítjuk a felesleges állapotokat,
  3. eltávolítjuk az ekvivalens állapotokat.

Források

Fejezetek: Elérhetetlen állapotok, Felesleges állapotok, Automaták minimalizálása