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, {\displaystyle \left(Q,\Sigma ,\delta ,q\_{0},F\right)}, koja se sastoji od

* konačnog skupa stanja ({\displaystyle Q})
* konačnog skupa ulaznih znakova zvanog *ulazna abeceda* ({\displaystyle \Sigma })
* funkcije prijelaza ({\displaystyle \delta :Q\times \Sigma \rightarrow Q})
* početnog (inicijalnog) stanja ({\displaystyle q\_{0}\in Q})
* skupa prihvatljivih stanja ({\displaystyle F\subseteq Q})

Neka je **M** DKA takav da **M** = {\displaystyle \left(Q,\Sigma ,\delta ,q\_{0},F\right)}, i {\displaystyle X=x\_{0}x\_{1}...x\_{n}} niz znakova nad abecedom {\displaystyle \Sigma }. **M** prihvaća niz znakova {\displaystyle X} ako slijed stanja {\displaystyle r\_{0},r\_{1},...r\_{n}}, postoji u {\displaystyle Q} uz sljedeće uvjete:

1. {\displaystyle r\_{0}=q\_{0}}
2. {\displaystyle r\_{i+1}=\delta (r\_{i},x\_{i})} za {\displaystyle i=0,...n-1}
3. {\displaystyle r\_{n}\in F}

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 trenutnog stanja u stanje upravljano funkcijom prijelaza {\displaystyle \delta }.
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.

dijagram stanja za *M*
*M* = {\displaystyle \left(Q,\Sigma ,\delta ,q\_{0},F\right)} gdje je

* {\displaystyle Q=\left\{{S\_{1},S\_{2}}\right\}}
* {\displaystyle \Sigma =\left\{{0,1}\right\}}
* {\displaystyle q\_{0}=S\_{1}}
* {\displaystyle F=\left\{{S\_{1}}\right\}}, te
* {\displaystyle \delta } je definirana sljedećom tablicom prijelaza:

|  |  |  |
| --- | --- | --- |
|  | **0** | **1** |
| ***S*1** | *S*2 | *S*1 |
| ***S*2** | *S*1 | *S*2 |

Kratko rečeno, stanje *S*1 predstavlja događaj da se u ulaznom nizu dosad pojavio paran broj znamenki 0, dok stanje *S*2 predstavlja događaj da se pojavio neparan broj. Znamenka 1 u ulaznom nizu ne mijenja stanje automata. Kada se završi čitanje ulaznog niza, trenutno stanje će 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:

  

{\displaystyle (1^{\*}01^{\*}01^{\*})^{\*}\,\!}

Prednosti i nedostaci
---------------------

DKAi su jedni od najpraktičnijih modela izračunljivosti, s obzirom da postoji trivijalan *online* algoritam koji ih simulira u linearnom vremenu i konstantnom prostoru nad tokom 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 kojeg 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
---------------

* Aciklički deterministički konačni automat


| Teorija automata: formalni jezici i formalne gramatike |
| --- |
| **Chomskyjevahijerarhija** | **Gramatike** | **Jezici** | **Minimalniautomat** |
| 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. |