Redukovaná gramatika

Redukovaná gramatika je taková gramatika, která je bez nedosažitelných neterminálů a kde každý neterminál má konečný rozvoj, tj. každý neterminál A gramatiky lze přepsat na řetězec terminálních symbolů.

Definice

Gramatika G je redukovaná, pokud každý neterminální symbol A vyhovuje podmínkám

  • S w 1 A w 2 {\displaystyle S\longrightarrow w_{1}Aw_{2}} ,
  • existuje-li x L ( G ) {\displaystyle x\in L(G)} , že w 1 A w 2 x {\displaystyle w_{1}Aw_{2}\longrightarrow x} .

kde w 1 , w 2 {\displaystyle w_{1},w_{2}} jsou libovolné řetězce.


Gramatiku G nazveme nejednoznačnou, pokud existuje řetězec x L ( G ) {\displaystyle x\in L(G)} , pro který existují dva různé způsoby odvození. Jinak nazveme gramatiku jednoznačnou.


Příklad redukované gramatiky

Mějme gramatiku G = ( N , Σ , P , S ) {\displaystyle G=(N,\Sigma ,P,S)} definovanou množinami
N = { S , A } {\displaystyle N=\{S,A\}\,\!}
T = { a , b } {\displaystyle T=\{a,b\}\,\!}
P = { S a A a , A b A b , A a } {\displaystyle P=\{S\longrightarrow aAa,A\longrightarrow bAb,A\longrightarrow a\}} ,


potom řetězec x = a b b a b b a T {\displaystyle x=abbabba\in T} je větou jazyka L(G), protože platí


S a A a a b A b a a b b A b b a a b b a b b a {\displaystyle S\longrightarrow aAa\longrightarrow abAba\longrightarrow abbAbba\longrightarrow abbabba} a tedy S x {\displaystyle S\longrightarrow x} .


Z toho je vidět, že jazyk generovaný danou gramatikou je L ( G ) = { x | x = a b n a b n a , n = 0 , 1 , 2... } {\displaystyle L(G)=\{x|x=ab^{n}ab^{n}a,n=0,1,2...\}} .


Zároveň vidíme, že gramatika je redukovaná, protože všechna přepisovací pravidla jsou typu S w 1 A w 2 {\displaystyle S\longrightarrow w_{1}Aw_{2}} . Gramatika je jednoznačná, protože existuje pouze jeden způsob jak vygenerovat x.

Příklad neredukované gramatiky

Nechť G = ( N , Σ , P , S ) {\displaystyle G=(N,\Sigma ,P,S)} je gramatika definovaná množinami
N = { S , A } {\displaystyle N=\{S,A\}\,\!}
T = { 0 , 1 } {\displaystyle T=\{0,1\}\,\!}
P = { S 01 , S 0 S 1 , S A , S 1 S 0 , S S S } {\displaystyle P=\{S\longrightarrow 01,S\longrightarrow 0S1,S\longrightarrow A,S\longrightarrow 1S0,S\longrightarrow SS\}} ,


G je nejednoznačná, protože větu 0101 lze odvodit dvěma různými způsoby

  • S 0 S 1 0101 {\displaystyle S\longrightarrow 0S1\longrightarrow 0101}
  • S S S 01 S 0101 {\displaystyle S\longrightarrow SS\longrightarrow 01S\longrightarrow 0101}


G je neredukovaná, protože obsahuje pravidlo S A {\displaystyle S\longrightarrow A} . Pokud toto pravidlo aplikujeme, nelze již vygenerovat terminální řetězec. Když toto pravidlo z gramatiky odebereme, dostaneme redukovanou gramatiku.

Související články