Konečný automat (KA, též FSM z anglického finite state machine) je teoretický výpočetní model používaný v informatice pro studium vyčíslitelnosti a obecně formálních jazyků. Popisuje velice jednoduchý počítač, který může být v jednom z několika stavů, mezi kterými přechází na základě symbolů, které čte ze vstupu. Množina stavů je konečná (odtud název), konečný automat nemá žádnou další paměť kromě informace o aktuálním stavu. Konečný automat je velice jednoduchý výpočetní model, dokáže rozpoznávat pouze regulární jazyky. Konečné automaty se používají pro zpracování regulárních výrazů, např. jako součást lexikálního analyzátoru v překladačích.
Podle toho, zda automat skončí po přečtení vstupu ve stavu, který patří do množiny přijímajících stavů, platí, že automat buď daný vstup přijal, nebo nepřijal. Množina všech řetězců, které daný automat přijme, tvoří regulární jazyk.
V přechodové tabulce nedeterministického automatu je také navíc sloupeček pro prázdný vstup, označovaný ε (ε obecně v celé teorii formálních jazyků označuje prázdné slovo; musí platit, že ε ∉ Σ). Tyto tzv. epsilon-přechody automat provádí neustále, bez čtení symbolu ze vstupu. Je zřejmé, že teoreticky jich musí proběhnout nekonečné množství, ale prakticky to znamená, že automat přejde do takové množiny stavů, která odpovídá tranzitivnímu uzávěru přes tyto přechody.
Jakkoli se možnost současně provádět více větví výpočtu může zdát užitečná, ve skutečnosti je výpočetní model nedeterministického automatu úplně stejně mocný jako model deterministického automatu, také přijímá pouze regulární jazyk. Ve skutečnosti je relativně triviální převést libovolný nedeterministický automat na deterministický. K tomu stačí „pouze“ původní množinu stavů nahradit její potenční množinou (ovšem tím vzroste počet stavů exponenciálně, na 2n). Každý stav takto vytvořeného automatu pak odpovídá nějaké množině stavů původního nedeterministického automatu a jsou mezi nimi jednoznačné přechody.
Pokud má daný automat zpracovat vstup 1011, bude to probíhat takto: Na počátku je automat ve stavu S0. Na vstup přijde první symbol, jednička. Z tabulky vyplývá, že na příchod jedničky ve stavu S0 automat reaguje přechodem do stavu S1. Dále přichází nula, ze stavu S1 se příchodem nuly přechází do stavu S2. Poté přichází jednička, ze stavu S2 se příchodem jedničky přechází do stavu S2 (tzn. zůstává se ve stejném stavu). Nakonec přichází další jednička, takže automat opět zůstává ve stavu S2. Stav S2 nepatří do množiny A, tudíž tento automat vstup 1011 nepřijal, řetězec 1011 nepatří do jazyka přijímaného tímto automatem.
Pro úplnost: tento konečný automat přijímá regulární jazyk řetězců, které vyjadřují binární číslo dělitelné beze zbytku třemi. Číslo 10112 = 1110, číslo, které není dělitelné třemi (má zbytek 2, odpovídající výslednému stavu S2).
Dvojité kolečko označuje přijímající stavy (v našem případě pouze jeden, S0), počáteční stav je označen šipkou, někdy s připsaným textem, např. START. (Tato notace není jediná, jindy se např. koncové stavy označují tlustším orámováním a dvojité kolečko označuje počáteční stav apod.)
Краен автомат | Endlicher Automat | Finite state machine | Autómata finito | Äärellinen automaatti | Automate fini | אוטומט סופי | Automa a stati finiti | 有限オートマトン | Eindige toestandsautomaat | Máquina de estado finito | Automat finit | Конечный автомат | Ändlig automat | 有限状态自动机
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Konečný automat".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world