Minimizacija konačnog automata

Izvor: Wikipedija
Skoči na: orijentacija, traži

Minimizacija konačnog automata je postupak izgradnje konačnog automata koji je istovjetan (tj. prihvaća isti jezik), i koji sadrži što je moguće manji broj stanja. Općenito je za bilo koji DKA moguće izgraditi beskonačno mnogo drugih DKA koji prihvaćaju isti jezik. Mininimizacija broja stanja dovodi do učinkovitijeg programskog ili sklopovskog ostvarenja automata.

Istovjetnost stanja i automata[uredi VE | uredi]

Stanje p DKA  M = (Q,\Sigma ,\delta ,q_0 ,F) je istovjetno stanju p' DKA  M = (Q',\Sigma ,\delta ',q_0 ',F') ako i samo ako DKA M u stanju p prihvaća isti skup nizova kao i DKA M' u stanju p'. Za bilo koji niz w skupa \Sigma * vrijedi \delta (p,w) \in F \wedge \delta '(p'w) \in F' ili \delta (p,w) \notin F \wedge \delta '(p'w) \notin F'.

Relacija ekvivalencije (tj. istovjetnosti) jest po definiciji tranzitivna, pa iz istovjetnosti stanja p i q, i istovjetnosti stanja q i r, slijedi istovjetnost stanja p i r.

Istovjetnost DKA jest izrađena nad definicijom istovjetnosti stanja: DKA M i N su istovjetni ako i samo ako su istovjetna njihova početna stanja.

Ispitivanje istovjetnosti stanja se može svesti na ispitivanje dva uvjeta:

  1. Uvjet podudarnosti: Stanja p i q moraju oba biti prihvatljiva (p \in F \wedge q \in F) ili oba neprihvatljiva (p \notin F \wedge q \notin F).
  2. Uvjet napredovanja: Za bilo koji ulazni znak a \in \Sigma vrijedi da su stanja \delta (p,a) i \delta (q,a) istovjetna.

Određivanje istovjetnih stanja[uredi VE | uredi]

Postoji mnogo algoritama za određivanje istovjetnih stanja automata, i svi na neki način računski pojednostavljuju osnovnu definiciju istovjetnosti preko uvjeta podudarnosti i napredovanja.

Mooreov redukcijski postupak[uredi VE | uredi]

Algoritam dijeli skup stanja DKA M = (Q,\Sigma ,\delta ,q_0 ,F) u podskupove na temelju uvjeta podudarnosti. Te podskupove zovemo particije ekvivalencije.

Klase ekvivalencije su pobrojane po broju koraka koji je bio potreban da se dođe do nje, počevši od nulte particije. Stanja koja se mogu razlikovati (razabrati) u k-toj particiji se zovu k-razaberiva stanja. Stanja koja su u istom podskupu su k-ekvivalentna. Stanja koja su k-ekvivalentna u jednom koraku nisu nužno istovjetna, pošto u nekom od sljedećih koraka mogu biti razdvojena u različite particije ekvivalencije.

Pseudokod algoritama se može prikazati u tri koraka:

1) Skup stanja se podijeli u dva podskupa. Jedan podskup sadrži sva prihvatljiva stanja (sva stanja p \in F), a drugi podskup sva
   stanja koja nisu prihvatljiva (sva stanja q \notin F). Označimo simbolom \Pi podjelu skupa stanja u ta dva podskupa.
2) Primjenimo sljedeći algoritam: za (sve particije ekvivalencije G_j \in \Pi) { Podijeli particiju G_j u potparticije tako da su dva stanja p i q iz particije G_j u istoj potparticiji ako i samo ako za bilo koji ulazni znak a vrijedi:
\delta (p,a) \in G_i  \wedge \delta (q,a) \in G_i, za neku particiju G_i \in \Pi
// Za različite ulazne znakove a particije G_i mogu biti različite
Označi novu podjelu particija \Pi _{nova}; }
3) Ako je podjela na potparticije ostala ista, tj. ako je \Pi _{nova} = \Pi, tada se algoritam zaustavlja, i stanja u istim particijama ekvivalencije su istovjetna. Ako je \Pi _{nova} \ne \Pi, tada nastavi algoritam korakom (2) sa \Pi = \Pi _{nova}

Implikacijska tablica[uredi VE | uredi]

Ovaj je algoritam pesimističan u smislu da traži neistovjetna stanja. Označi li se par stanja (p, q) DKA M = (Q,\Sigma ,\delta ,q_0 ,F) algoritmom koji je prikazan dolje, dva stanja p i q su neistovjetna.

Označi sve parove (p, q) takve da je p \in F i q \notin F
za (Bilo koji par različitih stanja (p,q) \in \left( {F \times F} \right) ili (p,q) \notin \left( {F \times F} \right)) { ako (Za neki znak a par (\delta (p,a),\delta (q,a)) jest označen { Označi (p, q);
Rekurzivno označi sve neoznačene parove u listi koja je pridružena paru (p, q) i sve ostale parove u listama koje su pridružene parovima označenim u ovom koraku; } inače { za (Svi znakovi a) { ako (\delta (p,a) \ne \delta (q,a)) Stavi (p, q) u listu koja je pridružena paru (\delta (p,a),\delta (q,a)); } } }

Nedohvatljiva stanja[uredi VE | uredi]

Stanje p DKA M = (Q,\Sigma ,\delta ,q_0 ,F) jest nedohvatljivo stanje ako ne postoji niti jedan niz w \in \Sigma * za koji vrijedi p = \delta(q_0,w). Odbacivanjem nedohvatljivih stanja dobije se istovjetni DKA s manjim brojem stanja.

Dohvatljiva stanja DKA M = (Q,\Sigma ,\delta ,q_0 ,F) se određuju sljedećim algoritmom:

1) U listu dohvatljivih stanja DS upiše se početno stanje q_0.
2) Lista DS proširi se skupom stanja \left\{ {p|p = \delta (q_i ,a),\mathrm{za\ sve\ }a \in \Sigma } \right\}.
3) Za sva stanja q_i \in DS proširi se lista skupom stanja \left\{ {p|p = \delta (q_i ,a),\mathrm{stanje\ p\ nije\ prethodno\ zapisano\ u\ listu\ }a \in \Sigma } \right\}.

Ukoliko se lista dohvatljivih stanja proširi zapisom novog stanja, tada se rad algoritma nastavlja korakom (3) priloženog pseudokoda. Lista DS sadrži sva dohvatljiva stanja, dok su sva ostala stanja nedohvatljiva.

DKA s minimalnim brojem stanja[uredi VE | uredi]

Odbacivanjem istovjetnih i nedohvatljivih stanja dobije se istovjetni DKA s minimalnim brojem stanja. U postupku minimizacije je učinkovitije prvo primjeniti postupak odbacivanja nedohvatljivih stanja, a tek potom postupak odbacivanja istovjetnih stanja.

Ostali konačni automati, kao što su NKA i \epsilon-NKA, se uvijek mogu svesti na DKA i na na taj se način može primjeniti isti minimizacijski postupak.