Zásobníkový automat (PDA z anglického pushdown automaton) je teoretický výpočetní model používaný v informatice pro studium vyčíslitelnosti a obecně formálních jazyků. Popisuje jednoduchý počítač, který má jako pracovní paměť k dispozici pouze zásobník. Zásobníkový automat dokáže rozpoznávat bezkontextové jazyky.
Je vidět, že zásobníkový automat se v podstatě skládá z konečného automatu, který má navíc k dispozici potenciálně nekonečné množství paměti ve formě zásobníku. Obsah tohoto zásobníku ovlivňuje činnost automatu tím, že vstupuje jako jeden z parametrů do přechodové funkce.
Po dokončení činnosti (po přečtení celého vstupu, pokud do té doby nedojde k chybě) je rozhodnuto, jestli automat vstupní řetězec přijal. K tomu mohou sloužit dvě kritéria:
Tento automat rozhoduje o přijetí tím, že po přečtení vstupu je zásobník prázdný, nejsou zde tedy přijímající stavy. Řekněme, že na vstupu je řetězec BAABCBACC. Na počátku je automat ve stavu q (ostatně jako neustále, tento automat má pouze jeden stav, viz též níže), zásobník je prázdný (což se značí symbolem prázdného řetězce ε) a na vstupu zbývá celý řetězec, BAABCBACC; tuto konfiguraci označíme jako (q, ε, BAABCBACC). Z přechodové funkce je vidět, že ve stavu q při přečtení vstupu B se ze zásobníku nečte žádný symbol (ε), „přejde“ se do stavu q a na zásobník se nic neukládá (opět ε). Automat je tedy poté v konfiguraci (q, ε, AABCBACC) – jediná změna spočívá v přečtení symbolu B ze vstupu. Teď se má přečíst symbol A, z přechodové funkce je vidět, že se má na zásobník uložit symbol A. Automat tedy pokračuje konfigurací (q, A, ABCBACC), dále následují konfigurace (q, AA, BCBACC), (q, AA, CBACC), (q, A, BACC), (q, A, ACC), (q, AA, CC), (q, A, C), (q, ε, ε), vstup byl celý přečten, automat skončil ve stavu s prázdným zásobníkem, řetězec BAABCBACC tedy byl přijat, patří do jazyka, který tento automat rozpoznává.
Pro úplnost: tento automat rozpoznává jazyk závorkových struktur, kde symbol A představuje otevírací závorku a symbol C zavírací závorku (symbol B je nevýznamný). Vstupní řetězec odpovídá řetězci x((x)x()), ve kterém jsou závorky správně párovány.
Jelikož se tedy přidáním zásobníku rozšíří třída jazyků, které automat umí detekovat, nabízí se otázka, zda by se téhož nedosáhlo přidáním dalšího zásobníku. A skutečně, zásobníkový automat se dvěma zásobníky má výpočetní sílu ekvivalentní Turingovu stroji, neboť jedním zásobníkem může emulovat část pásky vlevo od polohy hlavy, druhým zásobníkem pak část pásky vpravo od hlavy. (Dalším přidáváním zásobníků už evidentně výpočetní síla neroste.)
Kellerautomat | Pushdown automaton | Autómata con pila | Pinoautomaatti | Automate à pile | Automa a pila | プッシュダウン・オートマトン | 下推自动机
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Zásobníkový automat".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world