Pitanje da li je jezik da li je redovno ili ne je fundamentalna tema u oblasti teorije složenosti računara, posebno u proučavanju formalnih jezika i teorije automata. Razumijevanje ovog koncepta zahtijeva dobro razumijevanje definicija i svojstava regularnih jezika i računskih modela koji ih prepoznaju.
Regularni jezici i konačni automati
Regularni jezici su klasa jezika koja se može prepoznati pomoću konačnih automata, koji su apstraktne mašine sa konačnim brojem stanja. Ovi jezici se takođe mogu opisati pomoću regularnih izraza i mogu se generisati regularnom gramatikom. Ključna karakteristika regularnih jezika je da ih mogu prepoznati deterministički konačni automati (DFA) ili nedeterministički konačni automati (NFA). DFA se sastoji od konačnog skupa stanja, skupa ulaznih simbola, prelazne funkcije koja preslikava parove stanje-simbol u stanja, početnog stanja i skupa stanja prihvatanja.
Moć konačnih automata ograničena je njihovom konačnom memorijom. Ne mogu brojati dalje od fiksnog broja, što znači da ne mogu pratiti proizvoljan broj pojavljivanja određenog simbola osim ako broj nije ograničen brojem stanja u automatu. Ovo ograničenje je važno kada se razmatraju jezici kao što su .
Neregularnost
Da bi se utvrdilo da li je jezik regularan, može se koristiti Lema o pumpanju za regularne jezike. Lema o pumpanju daje osobinu koju svi regularni jezici moraju zadovoljiti, a često se koristi da pokaže da određeni jezici nisu regularni demonstrirajući da ne zadovoljavaju ovo svojstvo.
Lema o pumpanju to kaže za bilo koji regularni jezik , postoji dužina pumpanja
tako da bilo koji niz
in
sa dužinom
može se podijeliti na tri dijela,
, koji zadovoljava sljedeće uslove:
1. ,
2. , I
3. za sve , string
je u
.
Da upotrijebimo Lemu o pumpanju da to pokažemo nije regularan, pretpostavimo radi kontradikcije da
je redovno. Zatim, postoji dužina pumpanja
tako da bilo koji niz
in
sa
mogu se podijeliti na dijelove
zadovoljavajući uslove iz Leme o pumpanju.
Uzmite u obzir niz in
. Prema Lemi o pumpanju,
može se podijeliti na
takav da
i
. Od tada
, podniz
sastoji se samo od 0s. dakle,
,
, I
gdje
.
Sada razmotrite niz . Broj 0 je
, što je veće od
, dok broj 1s ostaje
. Stoga,
jer brojevi 0s i 1s nisu jednaki. Ova kontradikcija pokazuje da je pretpostavka da
je regularno je netačno. dakle,
nije običan jezik.
Jezici bez konteksta i automati za spuštanje
Jezik je, međutim, jezik bez konteksta (CFL). Jezike bez konteksta prepoznaju automati za spuštanje (PDA), koji su moćniji od konačnih automata jer mogu koristiti stog za pohranjivanje neograničene količine informacija. Ova dodatna memorija omogućava PDA uređajima da prate broj 0 i 1 u jeziku
.
PDA za djeluje na sljedeći način:
1. Počinje u početnom stanju i čita 0 s ulaza, gurajući svaku 0 u stog.
2. Nakon čitanja prve 1, prelazi u novo stanje i počinje iskakanje 0s iz steka za svaki 1 pročitan sa ulaza.
3. Ako je stog prazan kada je ulaz iscrpljen, PDA prihvata ulaz, pokazujući da se broj 0s podudara sa brojem 1s.
Ovaj mehanizam upotrebe steka za podudaranje broja 0 i 1 pokazuje sposobnost PDA uređaja da prepoznaju jezike koji nisu regularni, ali su bez konteksta.
Primjeri i dalje implikacije
Razmotrite primjer stringa iz jezika
. PDA bi obradio ovaj niz guranjem svake 0 na stog dok ih čita. Nakon čitanja tri 0, stek bi sadržavao tri simbola, od kojih svaki predstavlja 0. Kako PDA čita sljedeće 1, on iskoči po jedan simbol iz steka za svaki 1. Kada je ulaz potpuno pročitan, stek je prazan, što ukazuje na da je unos prihvaćen.
Nasuprot tome, konačni automat ne bi mogao pratiti broj 0 i 1, jer mu nedostaje mehanizam steka. Bez mogućnosti pohranjivanja i preuzimanja neograničenog broja simbola, konačni automat ne može osigurati da je broj 0 jednak broju 1, što dovodi do njegove nemogućnosti da prepozna jezik .
Razlika između regularnih i jezika bez konteksta važna je u teorijskoj informatici i ima praktične implikacije u oblastima kao što su dizajn programskog jezika i raščlanjivanje. Gramatike bez konteksta, koje stvaraju jezike bez konteksta, uveliko se koriste u definiciji sintakse programskih jezika. Sposobnost efikasnog prepoznavanja jezika bez konteksta pomoću PDA-a podupire razvoj parsera koji su fundamentalni za kompajlere i interpretatore.
Neregularnost naglašava ograničenja konačnih automata i naglašava potrebu za moćnijim računarskim modelima kao što su automati za spuštanje da bi se prepoznala šira klasa jezika. Ova razlika nije samo teorijska, već ima duboke implikacije u praktičnom dizajnu i implementaciji programskih jezika i alata koji ih obrađuju.
Ostala nedavna pitanja i odgovori u vezi EITC/IS/CCTF Osnove teorije računske složenosti:
- Koja je uloga teoreme rekurzije u demonstraciji neodlučnosti ATM-a?
- Uzimajući u obzir PDA koji može čitati palindrome, možete li detaljno opisati evoluciju steka kada je ulaz, prvo, palindrom, a drugo, nije palindrom?
- Uzimajući u obzir nedeterminističke PDA, superpozicija stanja je moguća po definiciji. Međutim, nedeterministički PDA uređaji imaju samo jedan stek koji ne može biti u više stanja istovremeno. Kako je to moguće?
- Koji je primjer PDA uređaja koji se koristi za analizu mrežnog prometa i identifikaciju obrazaca koji ukazuju na potencijalne sigurnosne povrede?
- Šta znači da je jedan jezik moćniji od drugog?
- Da li su jezici osetljivi na kontekst prepoznatljivi po Turing mašini?
- Kako definirati FSM koji prepoznaje binarne nizove s parnim brojem '1' simbola i pokazati šta se s njim događa prilikom obrade ulaznog niza 1011?
- Kako nedeterminizam utiče na funkciju tranzicije?
- Da li su regularni jezici ekvivalentni sa konačnim mašinama?
- Zar PSPACE klasa nije jednaka klasi EXPSPACE?