Deterministický bezkontextový jazyk

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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. +more 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ů. +more 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.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top