Kontekstno nezavisni jezik

Izvor: testwiki
Datum izmjene: 22. decembra 2023. u 13:25; autor/autorica: imported>InternetArchiveBot (Bluelink 2 books for verifiability (20231221)) #IABot (v2.0.9.5) (GreenC bot)
(razlika) ← Starija verzija | Aktualna verzija (razlika) | Novija verzija → (razlika)
Prijeđi na navigaciju Prijeđi na pretragu

U formalnoj teoriji jezika, kontekstno slobodni jezik je jezik koji generiše neka kontekstno-slobodna gramatika. Skup svih kontekstno slobodnih jezika je identičan skupu jezika koje prihvataju potisni automati.

Primeri

Klasičan primer kontekstno slobodnog jezika je L={anbn:n1}, jezik svih nepraznih niski parne dužine, čije ja prva polovina sastavljena od slova a, a druga polovina je sastavljena od slova b. L je generisan gramatikom SaSb|ab, a prihvata ga potisni automat M=({q0,q1,qf},{a,b},{a,z},δ,q0,{qf}) gde je δ definisano na sledeći način:

δ(q0,a,z)=(q0,a)
δ(q0,a,a)=(q0,a)
δ(q0,b,a)=(q1,x)
δ(q1,b,a)=(q1,x)
δ(q1,λ,z)=(qf,z)

δ(state1,read,pop)=(state2,push)
where z je početni simbol steka a x predstavlja akciju skidanja sa steka.

Kontekstno slobodni jezici imaju mnoge primene u programskim jezicima; na primer, jezik svih ispravno uparenih zagrada je generisan gramatikom SSS|(S)|λ. Takođe, većina aritmetičkih izraza su generisani kontekstno slobodnim gramatikama.


Svojstva zatvorenja

Kontekstno slobodni jezici su zatvoreni u odnosu na sledeće operacije. To jest, ako su -{L}- i -{P}- kontekstno slobodni jezici, a -{D}- je regularan jezik, onda su i sledeći jezici kontekstno-slobodni:

Kontekstno slobodni jezici nisu zatvoreni za komplement, presek i razliku.

Nezatvorenost u odnosu na presek

Kontekstno slobodni jezici nisu zatvoreni za presek. Ovo se može videti ako se uzmu jezici A={ambncnm,n0} i B={anbncmm,n0}, koji su oba konetksno slobodna. Njihov presek je AB={anbncnn0}, za šta se može pokazati da nije kontekstno slobodan jezik pamping lemom za kontekstno slobodne jezike.

Svojstva odlučivosti

Sledeći problemi su neodlučivi za proizvoljne kontekstno slobodne gramatike -{A}- i -{B}-:

  • Ekvivalencija: da li je L(A)=L(B)?
  • da li je L(A)L(B)= ?
  • da li je L(A)=Σ* ?
  • da li je L(A)L(B) ?

Sledeći problemi su odlučivi za proizvoljne kontekstno slobodne gramatike:

  • da li je L(A)=?
  • da li je L(A) konačan?
  • Pripadnost: za svaku datu reč w, da li je wL(A) ? (problem pripadnosti je čak odlučiv u polinomijalnom vremenu - videti -{algoritam CYK}-)

Svojstva kontekst-slobodnih jezika

Reference

Šablon:Formalni jezici i gramatike