Bezkontextový jazyk: Porovnání verzí

Z testwiki
Skočit na navigaci Skočit na vyhledávání
imported>JAnDbot
m robot: přidáno {{Autoritní data}}; kosmetické úpravy
 
(Žádný rozdíl)

Aktuální verze z 4. 8. 2021, 12:21

Bezkontextový jazyk je formální jazyk, který je akceptovaný nějakým zásobníkovým automatem. Bezkontextové jazyky mohou být vygenerovány bezkontextovými gramatikami (viz Chomského hierarchie).

Příklady

Typickým příkladem bezkontextového jazyka je L={anbn:n1}, jazyk všech slov sudé délky ve kterých první polovinu tvoří znaky a a druhou polovinu znaky b. L je generovaný gramatikou SaSb|ab a je akceptovaný zásobníkovým automatem M=({q0,q1,qf},{a,b},{a,z},δ,q0,z,{qf}) kde δ je definována následovně:

δ(q0,a,z)=(q0,az)
δ(q0,a,a)=(q0,aa)
δ(q0,b,a)=(q1,ε)
δ(q1,b,a)=(q1,ε)

Bezkontextové jazyky jsou využívány především v programovacích jazycích. Například dobře uzávorkovaný výraz (tj. výraz, kde počet '(' je stejný jako počet ')') je generován gramatikou SSS|(S)|λ nebo také SS(S)|λ

Uzávěrové vlastnosti

Bezkontextové jazyky jsou uzavřeny vzhledem ke zřetězení, sjednocení, iteraci, substituci, morfismu a rozdíl s regulárním jazykem, ale ne na průnik a rozdíl.

Související články

Pro bezkontextové jazyky existuje lemma o vkládání (pumping lemma) které udává nezbytnou podmínku, kterou musí jazyk splňovat, aby byl bezkontextový.

Normální formy

Každý bezkontextový jazyk lze převést do obou z následujících normálních forem (někdy také normálního tvaru):

Chomského normální forma

Gramatika je v chomského normální formě, pokud obsahuje pouze pravidla tvaru XYZ|a, kde X,Y,Z jsou neterminály a a je terminální symbol.

Greibachové normální forma

Gramatika je v greibachové normální formě, pokud obsahuje pouze pravidla tvaru Xaα, kde α obsahuje libovolný (i nulový) počet neterminálů.

Šablona:Formální jazyky a gramatiky Šablona:Autoritní data