Deterministički konačni automat

Izvor: Hrvatska internetska enciklopedija
Inačica 38864 od 20. kolovoza 2021. u 00:21 koju je unio WikiSysop (razgovor | doprinosi) (Bot: Automatski unos stranica)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Skoči na:orijentacija, traži

U teoriji izračunljivosti, deterministički konačni automat (DKA) je konačni automat u kojem za svaki par stanja i ulaznog znaka postoji jedan i samo jedan prijelaz u sljedeće stanje. Deterministički konačni automati prepoznaju skup regularnih jezika.

DKA prima niz ulaznih znakova, i za svaki ulazni znak obavlja prijelaz u stanje koje određuje funkcija prijelaza. Kada je pročitan cijeli ulazni niz, prihvatit će ili odbiti niz znakova ovisno o tome je li DKA u prihvatljivom ili neprihvatljivom stanju.

Formalna definicija

DKA se formalno definira uređenom petorkom, [math]\displaystyle{ \left( Q, \Sigma, \delta, q_0, F \right) }[/math], koja se sastoji od

  • konačnog skupa stanja ([math]\displaystyle{ Q }[/math])
  • konačnog skupa ulaznih znakova zvanog ulazna abeceda ([math]\displaystyle{ \Sigma }[/math])
  • funkcije prijelaza ([math]\displaystyle{ \delta : Q \times \Sigma \rightarrow Q }[/math])
  • početnog (inicijalnog) stanja ([math]\displaystyle{ q_0 \in Q }[/math])
  • skupa prihvatljivih stanja ([math]\displaystyle{ F \subseteq Q }[/math])

Neka je M DKA takav da M = [math]\displaystyle{ \left( Q, \Sigma, \delta, q_0, F \right) }[/math], i [math]\displaystyle{ X = x_0x_1 ... x_n }[/math] niz znakova nad abecedom [math]\displaystyle{ \Sigma }[/math]. M prihvaća niz znakova [math]\displaystyle{ X }[/math] ako slijed stanja [math]\displaystyle{ r_0 ,r_1 ,...,r_n }[/math], postoji u [math]\displaystyle{ Q }[/math] uz sljedeće uvjete:

  1. [math]\displaystyle{ r_0 = q_0 }[/math]
  2. [math]\displaystyle{ r_{i + 1} = \delta (r_i ,x_i ) }[/math] za [math]\displaystyle{ i = 0,...,n - 1 }[/math]
  3. [math]\displaystyle{ r_n \in F }[/math]

Kao što je pokazano u prvom uvjetu, stroj započinje rad u početnom stanju s. Drugi uvjet kaže da će za svaki znak ulaznog niza X stroj preći iz trenutačnoga stanja u stanje upravljano funkcijom prijelaza [math]\displaystyle{ \delta }[/math]. Posljednji uvjet kaže da stroj prihvaća ulazni niz ako posljednji znak ulaznog niza X uzrokuje prijelaz u jedno od prihvatljivih stanja. Inače kažemo da stroj ne prihvaća (odbija) ulazni niz. Skup nizova znakova koje DKA prihvaća je oblik formalnog jezika, i predstavlja oblik jezika kojeg DKA prepoznaje.

Primjer

Slijedi primjer DKA M nad binarnom abecedom koji određuje sadrži li ulazni niz paran broj znamenki 0.

M = [math]\displaystyle{ \left( Q, \Sigma, \delta, q_0, F \right) }[/math] gdje je

  • [math]\displaystyle{ Q = \left\{ {S_1 ,S_2 } \right\} }[/math]
  • [math]\displaystyle{ \Sigma = \left\{ {0,1} \right\} }[/math]
  • [math]\displaystyle{ q_0 = S_1 }[/math]
  • [math]\displaystyle{ F = \left\{ {S_1 } \right\} }[/math], te
  • [math]\displaystyle{ \delta }[/math] je definirana sljedećom tablicom prijelaza:
0
1
S1 S2 S1
S2 S1 S2

Kratko rečeno, stanje S1 predstavlja događaj da se u ulaznom nizu dosad pojavio paran broj znamenki 0, dok stanje S2 predstavlja događaj da se pojavio neparan broj. Znamenka 1 u ulaznom nizu ne mijenja stanje automata. Kada se završi čitanje ulaznog niza, trenutačno će stanje pokazati da li je ulazni niz sadržavao paran broj znamenki 0 ili ne.

Jezik DKA M je regularni jezik opisan sljedećim regularnim izrazom:


[math]\displaystyle{ (1^*01^*01^*)^* \,\! }[/math]

Prednosti i nedostatci

DKAi jedni su od najpraktičnijih modela izračunljivosti, s obzirom da postoji trivijalan online algoritam koji ih simulira u linearnom vremenu i konstantnom prostoru nad tijekom ulaznih simbola. Za dva dana DKAa postoje učinkoviti algoritmi za pronalaženje DKA koji prepoznaje uniju, presjek te komplement jezika koje oni prepoznaju. Također postoje učinkoviti algoritmi za određivanje da li DKA prihvaća bilo koji niz znakova, da li DKA prihvaća sve nizove znakova, da li dva DKA prihvaćaju isti jezik, te za pronalaženje DKA sa minimalnim brojem stanja za zadani jezik.

DKAi su modeli izračunljivosti jednake moći kao NKAi (nedeterministički konačni automati).

U drugu ruku, DKAi su strogo ograničene moći nad jezicima koje mogu prepoznati — mnogi jednostavni jezici, uključujući bilo koji problem čije rješenje zahtijeva više nego konstantan prostor, ne mogu biti prepoznati od strane DKA. Kanonski primjer jezika kojega nijedan DKA ne može prepoznati jest jezik koji se sastoji od nizova znakova oblika anbn — konačan broj znakova a nakon kojeg slijedi jednaki broj znakova b. Može se pokazati da nijedan DKA ne može imati dovoljan broj stanja da prepozna takav jezik.

Vidjeti također

Teorija automata: formalni jezici i formalne gramatike
Chomskyjeva
hijerarhija
Gramatike Jezici Minimalni
automat
Tip 0 Neograničenih produkcija Rekurzivno prebrojiv Turingov stroj
n/a (nema uobičajenog imena) Rekurzivni Odlučitelj
Tip 1 Kontekstno ovisna Kontekstno ovisni Linearno ograničen
n/a Indeksirana Indeksirani Ugniježđenog stoga
Tip 2 Kontekstno neovisna Kontekstno neovisni Nedeterministički potisni
n/a Deterministička kontekstno neovisna Deterministički kontekstno neovisni Deterministički potisni
Tip 3 Regularna Regularni Konačni
Svaka kategorija jezika ili gramatika je pravi podskup nadređene kategorije.