Vprašanje, ali jezik redno ali ne, je temeljna tema na področju teorije računalniške kompleksnosti, zlasti pri študiju formalnih jezikov in teorije avtomatov. Razumevanje tega koncepta zahteva dobro razumevanje definicij in lastnosti navadnih jezikov ter računalniških modelov, ki jih prepoznajo.
Običajni jeziki in končni avtomati
Običajni jeziki so razred jezikov, ki jih je mogoče prepoznati s končnimi avtomati, ki so abstraktni stroji s končnim številom stanj. Te jezike je mogoče opisati tudi z uporabo regularnih izrazov in jih je mogoče ustvariti z običajnimi slovnicami. Ključna značilnost običajnih jezikov je, da jih lahko prepoznajo deterministični končni avtomati (DFA) ali nedeterministični končni avtomati (NFA). DFA je sestavljen iz končnega niza stanj, niza vhodnih simbolov, prehodne funkcije, ki preslika pare stanje-simbol v stanja, začetnega stanja in niza sprejemajočih stanj.
Moč končnih avtomatov je omejena z njihovim končnim pomnilnikom. Ne morejo šteti več kot določeno število, kar pomeni, da ne morejo slediti poljubnemu številu pojavitev določenega simbola, razen če število ni omejeno s številom stanj v avtomatu. Ta omejitev je pomembna pri obravnavanju jezikov, kot je .
Nepravilnost
Če želite ugotoviti, ali je jezik navaden, lahko uporabite črpalno lemo za običajne jezike. Lema črpanja zagotavlja lastnost, ki jo morajo izpolnjevati vsi običajni jeziki, pogosto pa se uporablja za prikaz, da nekateri jeziki niso pravilni, tako da dokaže, da ne izpolnjujejo te lastnosti.
Lema o črpanju navaja, da za vsak običajni jezik , obstaja dolžina črpanja
tako, da katerikoli niz
in
z dolžino
lahko razdelimo na tri dele,
, ki izpolnjuje naslednje pogoje:
1. ,
2. in
3. za vse , niz
je v
.
Če želite to pokazati s črpalno lemo ni pravilna, predpostavimo zaradi protislovja, da
je redna. Potem obstaja dolžina črpanja
tako, da katerikoli niz
in
z
lahko razdelimo na dele
ki izpolnjujejo pogoje črpalne leme.
Razmislite o nizu in
. Glede na črpalno lemo,
se lahko razdeli na
tako, da
in
. Od leta
, podniz
je sestavljen samo iz 0. torej
,
in
Kje
.
Zdaj pa razmislite o nizu . Število 0s je
, ki je večji od
, medtem ko število 1s ostane
. Zato,
ker števili 0 in 1 nista enaki. To protislovje kaže, da predpostavka, da
je pravilno je napačno. torej
ni običajni jezik.
Jeziki brez konteksta in potisni avtomati
Jezik vendar je kontekstno-brezplačni jezik (CFL). Jezike brez konteksta prepoznajo potisni avtomati (PDA), ki so močnejši od končnih avtomatov, ker lahko uporabijo sklad za shranjevanje neomejene količine informacij. Ta dodatni pomnilnik omogoča dlančnikom, da spremljajo število 0 in 1 v jeziku
.
PDA za deluje na naslednji način:
1. Zažene se v začetnem stanju in bere 0 s iz vhoda, tako da vsako 0 potisne na sklad.
2. Ko prebere prvo 1, preide v novo stanje in začne izločati 0 iz sklada za vsako 1, prebrano iz vnosa.
3. Če je sklad prazen, ko je vnos izčrpan, PDA sprejme vnos, kar kaže, da se število 0 ujema s številom 1.
Ta mehanizem uporabe sklada za ujemanje števila 0 in 1 dokazuje zmožnost dlančnikov, da prepoznajo jezike, ki niso navadni, vendar so brez konteksta.
Primeri in nadaljnje posledice
Razmislite o primeru niza iz jezika
. PDA bi ta niz obdelal tako, da bi vsako 0 potisnil na sklad, ko bi jih prebral. Po branju treh 0 bi sklad vseboval tri simbole, od katerih bi vsak predstavljal 0. Ko dlančnik bere naslednje 1, izloči en simbol iz sklada za vsako 1. Ko je vnos v celoti prebran, je sklad prazen, kar pomeni, da da je vnos sprejet.
Nasprotno pa končni avtomat ne bi mogel slediti številu 0 in 1, saj nima mehanizma sklada. Brez zmožnosti shranjevanja in pridobivanja neomejenega števila simbolov končni avtomat ne more zagotoviti, da je število 0 enako številu 1, kar vodi v njegovo nezmožnost prepoznavanja jezika .
Razlikovanje med običajnimi in kontekstno prostimi jeziki je pomembno v teoretični računalniški znanosti in ima praktične posledice na področjih, kot sta načrtovanje in razčlenjevanje programskega jezika. Kontekstno proste slovnice, ki ustvarjajo kontekstno proste jezike, se v veliki meri uporabljajo pri definiciji sintakse programskih jezikov. Sposobnost učinkovitega prepoznavanja kontekstno prostih jezikov z uporabo dlančnikov podpira razvoj razčlenjevalcev, ki so temeljni za prevajalnike in tolmače.
Nepravilnost pri poudarja omejitve končnih avtomatov in poudarja potrebo po zmogljivejših računalniških modelih, kot so potisni avtomati za prepoznavanje širšega razreda jezikov. To razlikovanje ni le teoretično, ampak ima globoke posledice v praktični zasnovi in izvajanju programskih jezikov ter orodij, ki jih obdelujejo.
Druga nedavna vprašanja in odgovori v zvezi Osnove teorije računske kompleksnosti EITC/IS/CCTF:
- Kakšna je vloga rekurzijskega izreka pri dokazovanju neodločljivosti ATM?
- Če upoštevate dlančnik, ki lahko bere palindrome, ali lahko podrobno opišete razvoj sklada, ko je vhod, prvič, palindrom, in drugič, ni palindrom?
- Glede na nedeterministične dlančnike je superpozicija stanj možna po definiciji. Vendar pa imajo nedeterministični dlančniki samo en sklad, ki ne more biti v več stanjih hkrati. Kako je to mogoče?
- Kateri je primer dlančnikov, ki se uporabljajo za analizo omrežnega prometa in prepoznavanje vzorcev, ki kažejo na možne kršitve varnosti?
- Kaj pomeni, da je en jezik močnejši od drugega?
- Ali Turingov stroj prepozna kontekstno občutljive jezike?
- Kako definirati FSM, ki prepozna binarne nize s sodim številom simbolov '1', in pokazati, kaj se zgodi z njim pri obdelavi vhodnega niza 1011?
- Kako nedeterminizem vpliva na prehodno funkcijo?
- Ali so običajni jeziki enakovredni končnim avtomatom?
- Ali razred PSPACE ni enak razredu EXPSPACE?
Oglejte si več vprašanj in odgovorov v Osnovah teorije računalniške kompleksnosti EITC/IS/CCTF