Klausimas, ar kalba yra reguliarus, ar ne, yra pagrindinė tema skaičiavimo sudėtingumo teorijos srityje, ypač formalių kalbų ir automatų teorijos studijose. Norint suprasti šią sąvoką, reikia gerai suprasti įprastų kalbų apibrėžimus ir savybes bei jas atpažįstančius skaičiavimo modelius.
Įprastos kalbos ir baigtiniai automatai
Reguliarios kalbos yra kalbų klasė, kurią gali atpažinti baigtiniai automatai, kurie yra abstrakčios mašinos su baigtiniu skaičiumi būsenų. Šias kalbas taip pat galima apibūdinti naudojant reguliariąsias išraiškas ir jas galima sugeneruoti įprastomis gramatikomis. Pagrindinė įprastų kalbų savybė yra ta, kad jas galima atpažinti pagal deterministinius baigtinius automatus (DFA) arba nedeterministinius baigtinius automatus (NFA). DFA sudaro baigtinis būsenų rinkinys, įvesties simbolių rinkinys, perėjimo funkcija, kuri susieja būsenų ir simbolių poras su būsenomis, pradinė būsena ir priėmimo būsenų rinkinys.
Baigtinių automatų galią riboja jų baigtinė atmintis. Jie negali skaičiuoti daugiau nei fiksuotas skaičius, o tai reiškia, kad jie negali sekti savavališko konkretaus simbolio pasikartojimų skaičiaus, nebent skaičius yra apribotas automato būsenų skaičiumi. Šis apribojimas yra svarbus kalbant apie tokias kalbas kaip .
Nereguliarumas
Norėdami nustatyti, ar kalba yra taisyklinga, įprastoms kalboms galima naudoti Pumping Lemma. Pumping Lemma suteikia savybę, kurią turi atitikti visos įprastos kalbos, ir ji dažnai naudojama norint parodyti, kad tam tikros kalbos nėra taisyklingos, parodant, kad jos neatitinka šios savybės.
Pumping Lemma teigia, kad bet kuriai įprastai kalbai , yra siurbimo ilgis
tokia, kad bet kokia eilutė
in
su ilgiu
galima suskirstyti į tris dalis,
, atitinkantis šias sąlygas:
1. ,
2. ir
3. visiems , eilutė
yra
.
Norėdami tai parodyti, naudodami Pumping Lemma nėra taisyklinga, manykite, kad prieštaravimo tai
yra reguliarus. Tada yra siurbimo ilgis
tokia, kad bet kokia eilutė
in
su
galima suskirstyti į dalis
atitinkančios Pumping Lemmos sąlygas.
Apsvarstykite eilutę in
. Pagal Pumping Lemma,
galima suskirstyti į
taip, kad
ir
. Nuo
, poeilutė
susideda tik iš 0. Taigi,
,
ir
kur
.
Dabar apsvarstykite eilutę . 0 skaičius yra
, kuris yra didesnis nei
, o lieka 1 s skaičius
. Todėl,
nes 0 ir 1 skaičiai nėra lygūs. Šis prieštaravimas rodo, kad prielaida, kad
yra reguliarus yra klaidingas. Vadinasi,
nėra įprasta kalba.
Kalbos be konteksto ir automatas
Kalba tačiau yra be konteksto kalba (CFL). Nekontekstinės kalbos atpažįstamos išstumiamųjų automatų (PDA), kurie yra galingesni už baigtinius automatus, nes gali naudoti krūvą neribotam informacijos kiekiui saugoti. Ši papildoma atmintis leidžia PDA sekti 0 ir 1 skaičių kalboje
.
PDA skirtas veikia taip:
1. Jis prasideda pradinėje būsenoje ir skaito 0 iš įvesties, stumdamas kiekvieną 0 į krūvą.
2. Nuskaitęs pirmąjį 1, jis pereina į naują būseną ir pradeda rodyti 0 iš krūvos kiekvienam 1 nuskaitytam iš įvesties.
3. Jei krūva tuščia, kai įvestis yra išnaudota, PDA priima įvestį, nurodydamas, kad 0 skaičius sutapo su 1 s.
Šis dėklo naudojimo mechanizmas, kad būtų suderintas 0 ir 1 skaičius, parodo PDA gebėjimą atpažinti kalbas, kurios nėra įprastos, bet yra be konteksto.
Pavyzdžiai ir kitos pasekmės
Apsvarstykite pavyzdinę eilutę iš kalbos
. PDA apdorotų šią eilutę, įstumdamas kiekvieną 0 į krūvą, kai juos nuskaito. Nuskaičius tris 0, krūvoje būtų trys simboliai, kurių kiekvienas reiškia 0. Kai PDA nuskaito vėlesnius 1, jis ištraukia po vieną simbolį iš krūvos kiekvienam 1. Kai įvestis yra visiškai nuskaityta, krūva tuščia, o tai rodo kad įvestis priimta.
Priešingai, baigtinis automatas negalėtų sekti 0 ir 1 skaičiaus, nes jam trūksta kamino mechanizmo. Be galimybės saugoti ir gauti neribotą skaičių simbolių, baigtinis automatas negali užtikrinti, kad 0 skaičius būtų lygus 1 skaičiui, todėl jis nesugeba atpažinti kalbos. .
Skirtumas tarp įprastų ir bekontekstinių kalbų yra svarbus teoriniame informatikos moksle ir turi praktinių pasekmių tokiose srityse kaip programavimo kalbos kūrimas ir analizavimas. Apibrėžiant programavimo kalbų sintaksę plačiai naudojamos bekontekstinės gramatikos, generuojančios bekontekstines kalbas. Galimybė efektyviai atpažinti kalbas be konteksto naudojant delninius kompiuterius padeda kurti analizatorius, kurie yra būtini kompiliatoriams ir vertėjams.
Nereguliarumas pabrėžia baigtinių automatų ribotumą ir pabrėžia, kad reikalingi galingesni skaičiavimo modeliai, tokie kaip išstumiami automatai, kad būtų galima atpažinti platesnę kalbų klasę. Šis skirtumas nėra tik teorinis, bet turi didelę reikšmę praktiniam programavimo kalbų ir jas apdorojančių įrankių kūrimui ir įgyvendinimui.
Kiti naujausi klausimai ir atsakymai apie EITC/IS/CCTF skaičiavimo sudėtingumo teorijos pagrindai:
- Turint omenyje PDA, galintį nuskaityti palindromus, ar galėtumėte išsamiai aprašyti krūvos raidą, kai įvestis, pirma, yra palindromas, o antra, ne palindromas?
- Atsižvelgiant į nedeterministinius PDA, būsenų superpozicija yra įmanoma pagal apibrėžimą. Tačiau nedeterministiniai PDA turi tik vieną krūvą, kuri negali būti kelių būsenų vienu metu. Kaip tai įmanoma?
- Koks yra PDA, naudojamo tinklo srautui analizuoti ir modeliams, rodantiems galimus saugumo pažeidimus, pavyzdys?
- Ką reiškia, kad viena kalba yra galingesnė už kitą?
- Ar Turingo mašina atpažįsta kontekstui jautrias kalbas?
- Kaip apibrėžti FSM, atpažįstantį dvejetaines eilutes su lyginiu simbolių skaičiumi '1', ir parodyti, kas su juo atsitinka apdorojant įvesties eilutę 1011?
- Kaip nedeterminizmas veikia perėjimo funkciją?
- Ar įprastos kalbos lygiavertės baigtinių būsenų mašinoms?
- Ar PSPACE klasė nėra lygi EXPSPACE klasei?
- Ar algoritmiškai apskaičiuojama problema yra problema, kurią pagal Church-Turing tezę galima apskaičiuoti Tiuringo mašina?
Peržiūrėkite daugiau klausimų ir atsakymų EITC/IS/CCTF skaičiavimo sudėtingumo teorijos pagrinduose