Teorija Formalnih Jezika Danica Milić 164/07
Savremeni prevodioci i interpretatori programskih jezika zasnivaju se upravo na rezultatima teorije formalnih jezika.
Opis formalnih jezika Alfabet (azbuka, vokabular) je konačni skup znakova. Reč (string, word) na nekom alfabetu je niz znakova tog alfabeta. Reč je konačna ako je niz koji je predstavlja konačan, odnosno reč je beskonačna ako je niz beskonačan.
Dužina reči je ukupan broj znakova koji čini reč Dužina reči je ukupan broj znakova koji čini reč. (Ako imamo neku reč z, njena dužina se označava kao |z|) Prazna reč (označavamo je sa ε) je reč dužine nula.
Ako su u i v dve reči na nekom alfabetu njihovim spajanjem (nadovezivanjem, konkatenacijom) dobijamo reč uv i važi da je |uv| = |u| + |v| Reč u je podreč reči v ako postoje reči x i y takve da je v=xuy. Ako je x prazna reč i v=uy onda je u prefiks a ako je y prazna reč i v=xu onda je u sufiks reci v.
Oznake: wº=ε wn+1=wwn w ˉ¹ - reč u kojoj je redosled znakova obrnut u odnosu na w. A+ - skup svih reči nad alfabetom A izuzev prazne reči ε A* - skup svih reči uključujući i ε
Jezik je bilo koji podskup skupa svih reči. Ako je L jezik na alfabetu A, njegov komplement C(L) je skup A*\L tj skup svih reči alfabeta koje nisu u L.
Nad jezicima nad istim alfabetom se primenjuju: Unarna operacija zatvorenja (Klinijeva zvezdica) definisana sa L*={w: w=w1w2..wk za neko k≥0 wi Є L, i = 1, k} gde je L neki jezik. Binarna operacija spajanja definisana sa L1.L2={w: w=xy, x Є L1, y Є L2 } Unarna operacija komplementiranja jezika, binarne operacije unije, preseka itd..
Predstavljanje jezika Vrši se: Zadavanjem postupka koji generiše sve reči jezika u nekom redosledu, tako da se svaka reč pojavi kao izlaz nakon nekog konačnog broja koraka rada. Zadavanjem postupka za prepoznavanje koji za svaku reč jezika dobija kao ulazni podatak odgovara sa ‘da’ ako pripada jeziku, dok za reči koje ne pripadaju jeziku odgovara sa ‘ne’ (ili se eventualno ne zaustavlja, zavisno da je skup reči odlučiv ili ne.)
Sistemi za generisanje jezika su: gramatike, regularni izrazi itd. Sistemi za prepoznavanje jezika obuhvataju apstraktne mašine, takozvane automate, koji se dobijaju raznim restrikcijama modela Tjuringove mašine. Jezici za koje postoje postupci generisanja i/ili prepoznavanja su barem parcijalno odlučivi.
Gramatike Def: Gramatika je uređena četvorka G=<VN, VT, P, S> gde su: VN - skup neterminalnih znakova VT - skup terminalnih znakova P - skup pravila izvođenja S - početni simbol
I važi da su: VN, VT i P neprazni konačni skupovi VN ∩ VT =Ø V=VN U VT P je skup izraza oblika α→β, gde su α Є V*.VN.V* I β Є V* S Є VN
Ako su γ i δ reči na alfabetu V i ako je α→β ЄP, onda se reč γβδ direktno izvodi u gramatici G iz reči γαδ ( u oznaci γαδ→γβδ) Ako su α1, α2... αn reči na alfabetu V za koje je α1→Gα2,..., αn-1→Gαn onda se kaže da se reč αn izvodi iz reči α1 (u oznaci α1→*Gαn) Dužina izvođenja α1→*Gαn je broj primena pravila izvođenja
Jezik L(G) generisan gramatikom G je skup {w: S →. Gw, w ЄVT Jezik L(G) generisan gramatikom G je skup {w: S →*Gw, w ЄVT*} Dve gramatike G1 I G2 su ekvivalentne ako je L(G1)=L(G2)
Hijerarhija Čomskog Gramatike tipa 0 (gramatike bez ograničenja) uključuju sve formalne gramatike. Generišu sve jezike koje može prepoznati Tjuringova mašina. Gramatika tipa 1 (konteksno osetljive) ako važi da je svako pravilo izvođenja α→β i |β|≥|α|. Jezici koje gramatike ovog tipa opisuju su tačno svi jezici koje može prepoznati linearno ograničen automat (nedeterministička Tjuringova mašina čija je traka ograničena konstantom puta dužina ulaza.)
Gramatika tipa 2 (konteksno slobodna) – ako za svako pravilo izvođenja α→β gramatike G i važi da je α neterminalni znak i da je β neprazna reč. Kontekstno slobodni jezici su teorijska baza za sintaksu većine programskih jezika. Gramatika tipa 3 (regularna) – ako su pravila izvođenja A →aB, odnosno A →a, gde su A, B ЄVN i a ЄVT. Ovakve gramatike generišu regularne jezike.
Jezici koji im odgovaraju nazivaju se: Jezici tipa 0 ili parcijalno odlučivi jezici Jezici tipa 1 ili konteksno osetljivi jezici Jezici tipa 2 ili konteksno slobodni jezici Jezici tipa 3 ili regularni jezici
Primer: G=<{A, B, S}, {0,1,..,9}, {S→0, S→1,…, S→9, S→AB, A→1,…, A→9, B →0, B→1,…, B→9, B →BB}, S}> -konteksno slobodna gramatika koja generise jezik koji se sastoji od prirodnih brojeva. G=<{A, S}, {0,1,..,9}, {S→0, S→1,…, S→9, S→1A, S→2A,…, S→9A, A →0, A →1,…, A →9, A →0A, A →1A,…, A →9A},S} –regularna gramatika koja generiše isti jezik
Na osnovu ograničenja koja se postavljaju jasno je da su gramatike tipa 3 istovremeno i tipa 2, a gramatike tipa 2 su istovremeno i tipa 1 i da su gramatike tipa 1 istovremeno i tipa 0.
Prema klasifikaciji Čomskog, ε ne pripada ni jednom od jezika tipa 1, 2 ili 3. Definicija se slabi dodavanjem pravila S → ε, gde je S početni simbol i on se ne nalazi sa desne strane ni jednog od pravila izvođenja. Pravilo S → ε može se primeniti samo u prvom koraku izvođenja.
Ako je L jezik tipa 1, 2 ili 3 tada su istog tipa i jezici L U {ε} i L \ {ε}
(Ne)odlučivi problemi kod gramatika Gramatika je odlučiva ako je odlučiv njome generisani jezik shvaćen kao skup. (Odlučiv je problem da li neka reč pripada jeziku) Odlučive su sve gramatike tipa 1 ili višeg, pa za svaki odgovarajući jezik postoji postupak koji za svaku reč koja pripada jeziku odgovara sa ‘da’, a za one koje ne pripadaju sa ‘ne’.
Sledeći problemi nisu odlučivi u opštem slučaju, tj Sledeći problemi nisu odlučivi u opštem slučaju, tj. za gramatike tipa 0: Da li proizvoljna reč pripada jeziku generisanom gramatikom Da li je jezik generisan gramatikom podskup jezika generisanog drugom gramatikom Da li su dve gramatike ekvivalentne Da li je generisan jezik prazan Da li je generisan jezik beskonačan
Tue sisteme Neodlučiv problem Posmatra se konačan skup J parova reči za koje se kaže da je x~y ako (x,y) ili (y,x) pripadaju skupu J. Postavlja se pitanje da li dve reči w i u ekvivalentne, odnosno da li se proizvoljnim brojem zamena podreči iz w odgovarajućim rečima sa kojima su u relaciji ~ može dobiti reč u. Zapravo, postavlja se pitanje da li w→*u u gramatici čiji skup pravila sadrži x →y i y →x za (x,y)Є J
Postov problem korespodencije Za zadati alfabet A posmatraju dve liste od po k reči l1=w1,w2,…wk i l2=u1,u2,…uk, a postavlja se pitanje da li postoji niz brojeva i1, i2,…,im, m≥1, tako da je wi1wi2…wim=ui1ui2…uim