Monotonní gramatika

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

V teorii formálních jazyků je gramatika monotonní, pokud všechna její přepisovací pravidla jsou tvaru α → β, kde α a β jsou řetězce neterminálních a terminálních symbolů, v nichž délka řetězce α je menší nebo rovna délce řetězce β, |α| ≤ |β|, tj. β není kratší než α. Gramatika je v zásadě monotonní, pokud může obsahovat pravidlo S → ε, kde S je počáteční symbol a ε prázdný řetězec; pokud gramatika toto pravidlo obsahuje, S se nesmí objevit na pravé straně žádného pravidla.

Použitím žádného z pravidel monotonní gramatiky se nezkrátí délka řetězce. Pokud gramatika má pouze pravidla, která striktně zvětšují délku řetězce, mluvíme o rostoucí kontextové gramatice.

Historie

Chomsky (1963) nazývá monotonní gramatiky gramatikami typu 1; ve stejné práci nazývá kontextové gramatiky „gramatikami typu 2“, a dokázal, že tyto dvě definice jsou slabě ekvivalentní (bezkontextové gramatiky byly v této práci označovány za „typ 4“). Číslování gramatik v této Chomského práci z roku 1963 se liší od číslování použitého v popisu hierarchie jazyků, známé dnes jako Chomského hierarchie, protože Chomsky se snažil zdůraznit rozdíl mezi slabou [generativní] a silnou [strukturální] ekvivalencí; ve své práci z roku 1959 používal označení „gramatiky typu 1“ pro kontextové gramatiky a „gramatiky typu 2“ pro bezkontextové gramatiky.

Příklad

Sabc
SaSBc
cBBc
bBbb

Tato gramatika s počátečním symbolem S generuje jazyk {{nowrap|1={ anbncn : n ≥ 1 } }}, který není bezkontextový, jak lze dokázat pomocí pumping lemmatu pro bezkontextové jazyky.

Kontextová gramatika pro stejný jazyk je ukázána #Transformace na kontextovou gramatiku|níže.

Transformace na kontextovou gramatiku

Každou monotonní gramatiku (N, Σ, P, S) lze transformovat na kontextovou gramatiku (N’, Σ, P’, S) takto: # Pro každá terminální symbol a ∈ Σ, zavedeme nový neterminální symbol [a] ∈ N’, a nové pravidlo ([a] → a) ∈ P’. # Ve všech pravidlech z množiny P, nahradíme každý terminální symbol a jemu odpovídajícím neterminálním symbolem [a]. +more Díky tomu všechna tato pravidla přejdou na tvar X1. Xm → Y1. Yn pro neterminály Xi, Yj a m≤n. # Každé pravidlo X1. Xm → Y1. Yn, kde m>1 nahradíme celkem 2m pravidly: ::

X1X2. Xm-1XmZ1X2. Xm-1Xm
Z1X2. Xm-1XmZ1Z2. Xm-1Xm
:
Z1Z2. Xm-1XmZ1Z2. Zm-1Xm
Z1Z2. Zm-1XmZ1Z2. Zm-1Zm
Z1Z2. Zm-1ZmYm+1. YnY1Z2. Zm-1Zm
Y1Z2. Zm-1ZmYm+1. YnY1Y2. Zm-1Zm
:
Y1Y2. Zm-1ZmYm+1. YnY1Y2. Ym-1Zm
Y1Y2. Ym-1ZmYm+1. YnY1Y2. Ym-1Ym
::kde každé Zi ∈ N’ je nový neterminální symbol, který se neobjevuje nikde jinde.

Například #Příklad|výše uvedenou monotonní gramatiku generující jazyk { anbncn | n ≥ 1 } lze převést na následující kontextovou gramatiku s počátečním symbolem S, která generuje stejný jazyk:

[a]az kroku 1
[b]bz kroku 1
[c]cz kroku 1
S[a][b][c]z kroku 2, nezměněno
S[a]SB[c]z kroku 2, nezměněno
[c]BB[c]z kroku 2, dále změněno níže
[c]BZ1Bzměněno z výše uvedeného v kroku 3
Z1BZ1Z2změněno z výše uvedeného v kroku 3
Z1Z2BZ2změněno z výše uvedeného v kroku 3
BZ2B[c]změněno z výše uvedeného v kroku 3
[b]B[b][b]z kroku 2, dále změněno níže
[b]BZ3Bzměněno z výše uvedeného v kroku 3
Z3BZ3Z4změněno z výše uvedeného v kroku 3
Z3Z4[b]Z4změněno z výše uvedeného v kroku 3
[b]Z4[b][b]změněno z výše uvedeného v kroku 3

Expresivní síla

Podobně existuje snadný postup pro převod libovolné monotonní gramatiky do Kurodovy normální formy. Naopak, každá kontextová gramatika a každá gramatika v Kurodově normální formě je triviálně také monotonní gramatikou. +more Proto monotonní gramatiky, gramatiky v Kurodově normální formě, a kontextové gramatiky mají stejný expresivní sílu. Přesněji, monotonní gramatiky popisují právě kontextové jazyky, které neobsahují prázdný řetězec, zatímco v zásadě monotonní gramatiky popisují právě množinu kontextových jazyků.

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