Deterministický bezkontextový jazyk
Deterministický bezkontextový jazyk () je v teorii formálních jazyků každý bezkontextový jazyk, který lze přijímat deterministickým zásobníkovým automatem. Každý deterministický bezkontextový jazyk je jednoznačný, což znamená, že pro něj existuje jednoznačná gramatika, ale pro libovolný (neprázdný) deterministický bezkontextový jazyk existují i nejednoznačné gramatiky. Protože existují nedeterministické jednoznačné bezkontextové jazyky, je třída deterministických bezkontextových jazyků vlastní podtřídou třídy bezkontextových jazyků.

Deterministické bezkontextové jazyky mají velký praktický význam a jsou často používány v matematické informatice, protože je lze analyzovat v čase přímo úměrném délce vstupní věty a různé omezené tvary deterministických bezkontextových gramatik umožňují sestrojení jednoduchých praktických analyzátorů. Přirozené jazyky jsou ze své podstaty nejednoznačné a jejich analýza je mnohem pomalejší než analýza programovacích jazyků.

Popis 
Pojem deterministického bezkontextového jazyka má těsnou souvislost s deterministickým zásobníkovým automatem. Je to zásobníkový automat, jehož výkon je snížený, protože je deterministický; takový automat nesmí mít v žádné situaci více než jednu možnost, jakou provést akci, a proto nemůže rozpoznávat všechny bezkontextové jazyky. Jednoznačná gramatika nemusí vždy generovat deterministický bezkontextový jazyk. Například jazyk palindromů sudé délky nad abecedou {0, 1} má jednoznačnou bezkontextovou gramatiku S → 0S0 | 1S1 | ε. Není možné analyzovat libovolný řetězec z tohoto jazyka bez toho, že by se nejdříve načetly všechny znaky řetězce, což znamená, že zásobníkový automat musí vyzkoušet alternativní přechody mezi stavy, aby dovoloval přijetí slov všech možných délek částečně analyzovaného řetězce.

Vlastnosti 
Deterministické bezkontextové jazyky mohou být rozpoznávány deterministickým Turingovým strojem s pamětí velikosti O(log2 n) v polynomiálním čase; v důsledku toho je třída deterministických bezkontextových jazyků podtřídou třídy složitosti SC. Třída deterministických bezkontextových jazyků není uzavřená vůči operaci sjednocení, ale je uzavřená vůči operaci doplňku.

Význam 
Deterministické bezkontextové jazyky mají velký praktický význam v matematické informatice, protože mohou být analyzovány mnohem efektivněji než nedeterministické bezkontextové jazyky. Složitost a čas běhu programové realizace analyzátoru, který využívá deterministický zásobníkový automat, je podstatně menší než analyzátoru nedeterministických jazyků. Při naivní implementaci nedeterministického automatu se při provedení každého nedeterministického kroku provede kopie zásobníku; nejznámější algoritmus pro zjišťování příslušnosti k libovolnému bezkontextovému jazyku je Algoritmus CYK, který pracuje v čase řádově O(n2.378), kde n je délka vstupního řetězce. Naproti tomu deterministické bezkontextové jazyky mohou být přijímány v čase řádu O(n) pomocí LR(k) analyzátorů. To je velmi důležité pro překlad programovacích jazyků, protože programy bývají mnohem delší než věty v přirozeném jazyce. Proto definice většiny programovacích jazyků využívá deterministické jazyky.

Odkazy

Reference

Související články 
 Bezkontextový jazyk
 Deterministický zásobníkový automat
 Deterministická bezkontextová gramatika
 Jednoduchý deterministický jazyk

Formální jazyky