Nekontekstinė kalba yra formalios kalbos rūšis, kurią galima apibūdinti naudojant bekontekstinę gramatiką. Skaičiavimo sudėtingumo teorijos srityje bekontekstinės kalbos vaidina svarbų vaidmenį suprantant problemų sudėtingumą ir skaičiavimo ribas. Norint visiškai suprasti bekontekstinės kalbos sąvoką, būtina ištirti jos apibrėžimą ir bekontekstinės gramatikos komponentus.
Nekontekstinė kalba apibrėžiama kaip eilučių rinkinys, kurį galima sugeneruoti bekontekstinės gramatikos. Nekontekstinė gramatika susideda iš keturių komponentų: negalinių simbolių rinkinio, terminalo simbolių rinkinio, gamybos taisyklių rinkinio ir pradžios simbolio.
Negaliniai simboliai reiškia abstrakčius objektus, kuriuos galima toliau išplėsti arba pakeisti kitais simboliais. Šie simboliai paprastai žymimi didžiosiomis raidėmis. Pavyzdžiui, bekontekstinėje aritmetinių posakių gramatikoje galime turėti negalinius simbolius, tokius kaip E (reiškia), T (reiškia terminą) ir F (atstoja veiksnį).
Kita vertus, terminalo simboliai yra pagrindiniai kalbos vienetai. Šių simbolių negalima toliau išplėsti, jie paprastai vaizduojami mažosiomis raidėmis arba kitais simboliais. Aritmetinių išraiškų kontekste terminalo simboliai gali apimti skaičius (pvz., 0, 1, 2) ir aritmetinius operatorius (pvz., +, -, *, /).
Gamybos taisyklės apibrėžia, kaip negalinius simbolius galima išplėsti arba pakeisti kitais simboliais. Kiekvieną gamybos taisyklę sudaro negalinis simbolis kairėje ir simbolių seka (ir ne terminalo, ir terminalo) dešinėje. Šios taisyklės nurodo galimas transformacijas arba išvedimus, kurie gali būti taikomi generuojant galiojančias kalbos eilutes. Pavyzdžiui, bekontekstinėje aritmetinių išraiškų gramatikoje galime turėti gamybos taisykles, pvz., E -> E + T (nurodančios, kad reiškinį galima išplėsti pridedant terminą) arba T -> F (nurodantis, kad terminas gali būti pakeistas veiksniu).
Pradžios simbolis reiškia pradinį negalinį simbolį, nuo kurio prasideda galiojančių eilučių generavimas. Paprastai jis žymimas S. Aritmetinių išraiškų kontekste pradžios simbolis gali būti E, nurodantis, kad galiojančių išraiškų generavimas prasideda nuo išraiškos.
Norėdami iliustruoti bekontekstinės kalbos sampratą ir jos komponentus, panagrinėkime paprastą be konteksto kalbos gramatiką, kuri generuoja subalansuotus skliaustus. Gramatika susideda iš šių komponentų:
Negaliniai simboliai: S (pradžios simbolis)
Terminalo simboliai: (, )
Gamybos taisyklės: S -> (S) | SS | ε (kur ε reiškia tuščią eilutę)
Šioje gramatikoje negalinis simbolis S reiškia subalansuotų skliaustų eilutę. Gamybos taisyklėse nurodoma, kad S gali būti išplėstas įtraukiant kitą S skliausteliuose ((S)), sujungiant du S (SS) arba generuojant tuščią eilutę (ε).
Naudodami šią gramatiką galime sugeneruoti galiojančias eilutes subalansuotų skliaustų kalba. Pavyzdžiui, pradedant nuo pradžios simbolio S, galime taikyti gamybos taisykles, kad gautume eilutę ((())). Ši eilutė yra subalansuotų skliaustų seka.
Nekontekstinė kalba apibrėžiama kaip eilučių rinkinys, kurį galima sugeneruoti bekontekstinės gramatikos. Bekontekstinės gramatikos komponentai apima negalinius simbolius, terminalo simbolius, gamybos taisykles ir pradžios simbolį. Negaliniai simboliai žymi abstrakčias esybes, kurias galima išplėsti arba pakeisti, o galiniai simboliai yra pagrindiniai kalbos vienetai. Gamybos taisyklėse nurodomos galimos transformacijos arba išvedimai, o pradžios simbolis yra pradinis negalinis simbolis, skirtas generuoti galiojančias eilutes.
Kiti naujausi klausimai ir atsakymai apie Jautrios kontekstui kalbos:
- Ar Chomsky gramatikos normalioji forma visada yra išsprendžiama?
- Ar yra dabartinių 0 tipo atpažinimo metodų? Ar tikimės, kad kvantiniai kompiuteriai tai padarys įmanoma?
- Kodėl D kalbos pavyzdyje siurbimo savybė negalioja eilutei S = 0^P 1^P 0^P 1^P?
- Į kokius du atvejus reikia atsižvelgti dalijant eilutę, kad būtų taikoma siurbimo lema?
- Kodėl B kalbos pavyzdyje siurbimo savybė negalioja eilutei a^Pb^Pc^P?
- Kokios sąlygos turi būti įvykdytos, kad siurbimo turtas išsilaikytų?
- Kaip galima naudoti CFL siurbimo lemą siekiant įrodyti, kad kalba nėra be konteksto?
- Kokios sąlygos turi būti įvykdytos, kad kalba būtų laikoma be konteksto pagal bekontekstinių kalbų lemą?
- Paaiškinkite rekursijos sąvoką bekontekstinės gramatikos kontekste ir kaip ji leidžia generuoti ilgas eilutes.
- Kas yra analizavimo medis ir kaip jis naudojamas bekontekstinės gramatikos sugeneruotos eilutės struktūrai pavaizduoti?
Peržiūrėkite daugiau klausimų ir atsakymų skiltyje Kontekstui jautrios kalbos