37
1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve algoritme sre}emo kod starih Grka.Svima su poznati Euklidov algoritam i Eratostenovo sito(250. g. p. n. e.)Pojam algoritam nastao je prema imenu Uzbekistanskog matemati~ara (Ibn Musa Al Horezmi).Latinski prevod nastavka imena Al Horezmi(iz Horezma,dana{nji grad Hiva),dao je sada{nji pojam algoritam.Ovaj matemati~ar definisao je prva pravila za izvr{avanje aritmeti~kih operacija nad dekadnim brojevima.Algoritam predstavlja uputstvo za re{avanje nekog zadatka u cilju dobijanja re{enja(posle kona~no mnogo vremena).Do sli~nih formulacija pojma algoritma nailazimo u literaturi.Ovakve definicije nastale su na osnovu iskustva ~oveka u re{avanju zadataka razli~ite prirode. Pri re{avanju nekog slo`enog zadatka (problema) korsitimo rastavljanje (dekompoziciju) zadatka na prostije podzadatke (podprobleme).Postupak mo`emo nastaviti sve dok se ne dobije jedan kona~an skup relativno jednostavnih podzadataka.Takve podzadatke nazva}emo elementarnim koracima ili elementarnim operacijama.Svaki takav korak defini{e koju operaciju i kojim redosledom se takva obrada izvr{avau cilju dobijanja re{enja datog problema.Ukoliko je elementarni korak relativno slo`en tada se on mo`e zadati u vidu uputstva (pravila) za re{avanje takvog podproblema.Zato elementarne korake nazivamo i (elementarnim) pravilima. Opis toka odvijanja elementarnih operacija (koraka) u cilju re{avanja nekog zadatka (problema) naziva se procedura.Procedura se sastoji od kona~no mnogo elementarnih koraka koji se mogu mehani~ki izvr{avati u odre|enom strogo definisanom redosledu i to za kona~no vreme. Primena procedure mo`e dovesti do slede}a tri slu~aja: 1) Primena procedure predstavlja beskona~an proces.Re{enje zadatka se u tom slu~aju ne mo`e dobiti posle kona~no mnogo koraka,odnosno,posle koan~no mnogo vremena.Procedura ne daje rezultat. 2) Primena procedure se prekida posle kona~no mnogo koraka i ne dobija se rezultat.Proces ra~unanja se ne mo`e nastaviti jer se nazna korak na koji se prenosi izvr{enje.Uzrok ove situacije mogu biti pogre{ni ulazni podaci (ili pogre{no definisana procedura).U prethodna dva slu~aja ka`emo da imamo nerezultativnu proceduru. 3) Proces primene procedure se prekida posle kona~no mnogo koraka sa dobijanjem rezultata.Re{enje zadatka postoji i mo`e se dobiti primenom procedure (rezultativne). Samo u tre}em slu~aju ka`emo da procedura predstavlja algoritam koji se mo`e primeniti za re{avanje datog zadatka.Na sli~an na~in uvedene su i stroge matemati~ke definicije algoritama(vidi ) Na osnovu prethodnog mo`emo dati intuitivnu definiciju algoritma,gde umesto pojma elementarni korak koristimo naziv algoritamski korak (pravilo).

ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

  • Upload
    buiminh

  • View
    289

  • Download
    5

Embed Size (px)

Citation preview

Page 1: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve algoritme sreemo kod starih Grka.Svima su poznati Euklidov algoritam i Eratostenovo sito(250. g. p. n. e.)Pojam algoritam nastao je prema imenu Uzbekistanskog matemati~ara (Ibn Musa Al Horezmi).Latinski prevod nastavka imena Al Horezmi(iz Horezma,dananji grad Hiva),dao je sadanji pojam algoritam.Ovaj matemati~ar definisao je prva pravila za izvravanje aritmeti~kih operacija nad dekadnim brojevima.Algoritam predstavlja uputstvo za reavanje nekog zadatka u cilju dobijanja reenja(posle kona~no mnogo vremena).Do sli~nih formulacija pojma algoritma nailazimo u literaturi.Ovakve definicije nastale su na osnovu iskustva ~oveka u reavanju zadataka razli~ite prirode. Pri reavanju nekog slo`enog zadatka (problema) korsitimo rastavljanje (dekompoziciju) zadatka na prostije podzadatke (podprobleme).Postupak mo`emo nastaviti sve dok se ne dobije jedan kona~an skup relativno jednostavnih podzadataka.Takve podzadatke nazvaemo elementarnim koracima ili elementarnim operacijama.Svaki takav korak definie koju operaciju i kojim redosledom se takva obrada izvravau cilju dobijanja reenja datog problema.Ukoliko je elementarni korak relativno slo`en tada se on mo`e zadati u vidu uputstva (pravila) za reavanje takvog podproblema.Zato elementarne korake nazivamo i (elementarnim) pravilima. Opis toka odvijanja elementarnih operacija (koraka) u cilju reavanja nekog zadatka (problema) naziva se procedura.Procedura se sastoji od kona~no mnogo elementarnih koraka koji se mogu mehani~ki izvravati u odre|enom strogo definisanom redosledu i to za kona~no vreme. Primena procedure mo`e dovesti do sledea tri slu~aja:

1) Primena procedure predstavlja beskona~an proces.Reenje zadatka se u tom slu~aju ne mo`e dobiti posle kona~no mnogo koraka,odnosno,posle koan~no mnogo vremena.Procedura ne daje rezultat.

2) Primena procedure se prekida posle kona~no mnogo koraka i ne dobija se rezultat.Proces ra~unanja se ne mo`e nastaviti jer se nazna korak na koji se prenosi izvrenje.Uzrok ove situacije mogu biti pogreni ulazni podaci (ili pogreno definisana procedura).U prethodna dva slu~aja ka`emo da imamo nerezultativnu proceduru.

3) Proces primene procedure se prekida posle kona~no mnogo koraka sa dobijanjem rezultata.Reenje zadatka postoji i mo`e se dobiti primenom procedure (rezultativne).

Samo u treem slu~aju ka`emo da procedura predstavlja algoritam koji se mo`e primeniti za reavanje datog zadatka.Na sli~an na~in uvedene su i stroge matemati~ke definicije algoritama(vidi ) Na osnovu prethodnog mo`emo dati intuitivnu definiciju algoritma,gde umesto pojma elementarni korak koristimo naziv algoritamski korak (pravilo).

Page 2: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

def. 1 : Algoritam je kona~an (ure|en) skup strogo definisanoh algoritamskih koraka (pravila) ~ijom primenom na ulazne podatke (i me|urezultate) dobijamo reenje zadatka posle kona~no mnogo vremena. Iz definicije uo~avamo da svaki algoritam ima kona~no mnogo algoritamskih koraka (koij je naj~ee ure|en).Svaki algoritamski korak mora biti strogo (nedvosmisleno) definisan (,kao i ceo algoritam) tako da se mo`e na isti na~in razumeti i izvriti od strane bilo kog izvrioca. Primena algoritma se zavrava posle kona~no mnogo vremena a to zna~i da svaki algoritamski korak mora biti izvriv i da se mora primeniti kona~no mnogo puta. Algoritam definie preslikavanje (funkciju) koje svakom izboru vrednosti ulaznih veli~ina algoritma (zadatka) pridru`uje odgovarajui rezultsat.Ka`emo da svaki algoritam ima svoju oblast primenljivosti (ulaz).To su neke osobine algoritama koje su detaljnije objanjene u sledeem odeljku. 1.2. OSOBINE ALGORITAMA Intuitivna definicija algoritma je nestroga definicija.Zato navodimo neke osobine koje karakteriu svaki algoritam kao to su diskretnost, definisanost, determinisanost, izvrivost, kona~nost, ulaz i izlaz algoritma, masovnost (univerzalnost), elementarnost, rezultativnnost.Na taj na~in dodatno preciziramo ovaj pojam tako da je ekvivalentan sa strogim matemati~kim definicijama algoritma.

1. Diskretnost. Svaki algoritam predstavlja kona~an ure|en skup algoritamskih koraka.To je rezultat dekompozicije ( diskretizacije) problema koji se reava od strane ~oveka.Pri tome,algoritam nije skup algoritamskih koraka,ve ure|en skup ili niz,jer je bitan redosled algoritamskih koraka u zapisu algoritma.Tako|e ka`mo da je proces izvrenja algoritma diskretan u vremenu.To zna~i da se u svakom vremenskom trenutku (intervalu) izvrava samo jedan algoritamski korak.Proces izvravanja algoritma jeste kona~an niz algoritamskih koraka koji se po strogo definisanom redosledu izvravaju.To je slu~aj kada imamo jednog izvrioca algoritma (jedan procesor).Postoje i paralelni algoritmi,koji omoguuju da se dva ili vie algoritamskih koraka izvravaju istovremeno.

2. Determinisanost (odre|enost). Svaki algoritamski korak treba da je definisan jasno,strogo (ta~no) i nedvosmisleno.Tuma~enje i izvravanje pravila algoritma ne sme zavisiti od volje ~oveka ili maine.Posle izvrenja nekog algoritamskog koraka strogo je definisan prelaz na sledei algoritamski korak.To zna~i da je izvrenje algoritma deterministi~ki proces i da se mo`e automatski izvravati. Opis algoritma na prirodnom jeziku mo`e dovesti do dvosmislenosti.

3. Izvrivost. Uspenu definiciju izvrivosti dao je D. Knut.On ka`e da je algoritamski korak izvriv ako je ~ovek u stanju da ga izvri za kona~no vreme (pomou olovke i papira).Kod algoritamski reivih zadataka nema naizvrivih koraka.Me|utim,mogue je lako formulisati pravilo koje nije izvrivo.Na primer : Ako broj π sadr`i 7 uzastopnih devetki tada sabrati sve preostale cifre.

Page 3: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

4. Kona~nost. Osobina kona~nosti algoritma jeste zahtev da se izvrenje svakog algoritma zavri posle kona~no mnogo vremena.Drugim re~ima,izvrenje svakog algoritma je postignuto posle kona~no mnogo primena algoritamskih koraka.Zbog osobina 1. i 3. to zna~i da svaki algoritamski korak ma kog algoritma mora da se izvri kona~no mnogo puta.U suprotnom,nemamo algoritam.Takav je sledei primer procedure koja se nikad ne zavrava :

Korak 1 : Neka je i=0 ; Korak 2 : Neka i dobije vrednost i+1 ; Korak 3 : Pre|i na korak 2 . Iako imamo kona~no mnogo algoritamskih koraka,pri ~emu je svaki od njih strogo definisan i izvriv,ovo nije algoritam.Kod slo`enijih algoritama(zadataka) javlja se potreba formalnog dokaza kona~nosti algoritma. 5. Ulaz i izlaz algoritma. Svaki algoritam ima dva posebno izdvojena (kona~na)

skupa podataka (veli~ina).Prva jeste skup ulaznih a druga skup izlaznih veli~ina.Broj veli~ina u ovim skupovima mo`e biti i nula.Skup ulaznih veli~ina algoritma predstavlja polazne veli~ine (podatke) zadatka koji se reava.Skup izlaznih veli~ina jeste tra`eno reenje (rezultat) postavljenog zadatka.Ukratko,ove skupove nazivamo ulaz i izlaz algoritma.(Za podatke koji na pripadaju skupu ulaznih podataka algoritma ka`emo da algoritam nije primenljiv).

6. Masovnost (Univerzalnost). Univerzalnost je osobina algoritma da se mo`e primeniti na to iru klasu problema.To upravo zna~i da ulazne veli~ine algoritma mogu uzimati po~etne vrednosti iz to obilnijih (masovnijih) skupova podataka.Algoritam jeste opte uputstvo koje se mo`e primeniti na ma koji izbor vrednosti ulaznih veli~ina.Zbog ove osobine,mo`emo rei da je algoritam bolji ukoliko je univerzalniji(termin masovnost manje odgovara ovoj osobini).

7. Elementarnost algoritamskih koraka. Algoritam treba da sadr`i algoritamske korake koji predstavljaju elementarne operacije koje korisnik algoritma mo`e da razume ili izvrilac algoritma da izvri.Za potrebe ~oveka,algoritamski koraci mogu biti kompleksnije fundamentalne ili logi~ke celine u slo`enom algoritmu. Me|utim,za potrebe pisanja programa,algoritam sadr`i elementarne algoritamske korake koji odgovaraju naredbama ili pozivima potprograma, algoritam sad`i elementarne algoritamske korake koji odgovaraju naredbama ili pozivima potprograma programskog jezika.

8. Rezultativnost(usmerenost). Algoritam je tako definisan da polazei od proizvoljnih vrednosti ulaznih veli~ina primena algoritamskih koraka vodi (usmerava) strogo ka dobijanju tra`enog rezultata.

Ovo bi bile ‘stati~ke’ osobine algoritama,koje mo`emo uo~iti pregledom (~itanjem) algoritma.Me|utim,postoje izvesne osobine algoritama koje nazivamo ‘dinami~kim’. One se uo~avaju izvravanjem (testiranjem) algoritama.(Tok izvrenja algoritma se mo`e najlake pratiti korienjem dijagrama toka algoritma.) Analizom izvrenja algoritma mogu se uo~iti tri na~ina izvravanja algoritamskih koraka: sukcesivno (sekvencijalno), sa granicom i cikli~ko.

Page 4: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

a) Sukcesivno izvravanje algoritamskih koraka jeste takvo da se koraci izvravaju jedanput i u redosledu kako su napisani.Takvi algoritamski koraci ~ine prostu linijsku algoritamsku strukturu ili sekvencu (nisku) algoritamskih koraka.

b) Izvravanje algoritamskih koraka tako da se neki izvre jedanput a neki nijednom predstavlja primer izvravanja sa grananjem (ili prelazom).Takvu algoritamsku strukturu nazivamo razgranatom linijskom algoritamskom strukturom.

c) Cikli~ko izvravanje se javlja kada se grupa algoritamskih koraka izvrava vie puta.Takvu grupu naredbi nazivamo cikli~kom algoritamskom strukturom ili ciklusom.

Korienjem (komponovanjem) ovakve tri algoritamske strukture mo`emo reiti ma koji zadatak. Paralelnost (jednovremenost). Algoritam definiemo kao kona~an skup algoritamskih koraka.Taj skup je ure|en jer se njime definie prirodan redosled izvravanja koraka sa mogunou grananja ili ponovnog izvravanja.Za izvrenje algoritma ka`emo da je niz primena algoritamskih koraka.Postavlja se pitanje ta je pravilnije rei : skup ili niz.Prednost dajemo prvom terminu jer postoje algoritmi u kojima se mo`e promeniti redosled nekih algoritamskih koraka a da se reenje ne menja.Takve algoritamske korake mo`emo izvravati istovremeno (paralelno) , pomou vie izvrioca (procesora).Algoritmi koji definiu paralelno izvravanje algoritamskih koraka jesu paralelni algoritmi,a paralelni procesori izvravaju takve algoritme. Efikasnost (efektivnost). Dva razli~ita algoritma koji reavaju jedan isti zadatak mo`emo upore|ivati u odnosu na neki izbrani kriterijum.Rezultat upore|ivanja mo`e biti da je jedan algoritam bolji ili efikasniji od drugog.Izbor kriterijuma mo`e biti razli~it. Naj~ee se pravi kompromis izme|u razli~itih kriterijuma ( vreme – memorija , jednostavnost – brzina ).^esto puta neki efikasni algoritmi zavise od izbora ulaznih podataka algoritma.Tako imamo efikasne algoritme sortiranja podataka za slu~ajno izabrane (neure|ene) podatke ili pak za delimi~no ure|ene. Elegantnost. Elegantnost mo`e biti subjektivan kriterijum za izbor algoritma,ali se ~esto koristi.Elegantno reenje zadatka jeste ono koje je prosto (jednostavno) i originalno.Jednistavnost reenja je uvek po`eljno ali je pitanje da li su uvek mogua originalna reenja.Pod originalnou reenja podrazumeva se njegova neo~iglednost. Originalno reenje za izmenu mesta (vrednosti) dveju promenljivih a i b mo`e biti sledei algoritam : Korak 1 : Neka je a=a+b ; Korak 2 : Neka je b=b−a ; Korak 3 : Neka je a=a−b . Me|utim,ovo nije elegantno reenje jer nije jednostavno,a tako|e nije efikasno niti univerzalno (ne va`i za sve mogue vrednosti a i b).Univerzalno reenje koristi pomonu promenljivu :

1) p = a ;

Page 5: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

2) a = b ; 3) b = p .

Rekurzija. Nasuprot iteraciji,koja se naj~ee koristi za reavanje zadataka cikli~ke prirode,rekurzija je razra|ena od strane specijalista funadamentalne matematike kao na~in definisanja funkcija.Ona se koristi i u (ra~unarstvu i) programiranju za rekurzivne definicije tipova i struktura podataka,kao i za rekurzivne potprograme (funkcije i procedure).Rekurzivne definicije se karakteriu time to objekat koji se definie figurie u samoj definiciji.Rekurzivna definicija funkcije f,koja zavisi od prirodnog broja n,sadr`i dva dela.Najpre se definie veza izme|u funkcije f(n) i funkcije f(n−1).U drugom delu se definie vrednost funkcije f za posebnu vrednost argumenta n.Na sli~an na~in se iskazuju razli~ite rekurzivne definicije.Navedimo sledee rekurzivne definicije funkcija :

1) n-faktorijel : n (n 1)! , n 1

n! 1 , n 0 , 1⋅ − >

= =

2) stepen : n 1

n a a , n 0 a

1 , n 0

− ⋅ >=

=

3) Fibona~ijev niz : ( )f (n 1) f (n 2) , n 1

f n 1 , n 0

− + − >= =

4) najvei zajedni~ki delilac : ( ) ( )n , m n

NZD m,n NZD n,m , n m NZD(m n,n) , m n

== > − >

5) Peterova funkcija :

( )( )( )

( )P m,P m 1,n , za m 1 0 , n 1 0

P m 1,n 1 P m,1 , za n 1 0n 2 , za m 1 0

+ + > + >+ + = + = + + =

Page 6: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

1.3. ZAPIS (OPIS) ALGORITMA Opis algoritma ima dva osnovna cilja :

1) da je (algoritam) razumljiv raznim korisnicima (ljudima) tako da se mo`e koristiti ili prenositi ;

2) da se na osnovu njega mo`e pisati program na nekom (algoritamskom) programskom jeziku u cilju izvravanja na ra~unaru.

U tom cilju razvijeni su razli~iti sistemi (dogovori) za zapis (opis , zadavanje , predstavljanje) algoritama.Ovakvi sistemi zapisivanja algoritama treba da budu jednostavni ali (dovoljno) precizni tako da ih ~ovek mo`e lako da razume.Takvi opisi algoritama predstavljaju ‘univerzalne’ jezike,koji su nezavisni od ra~unara.Postoji nekoliko naj~ee korienih na~ina za zapis algoritama,a to su :

a) skup pravila (pomou prirodnog jezika) ; b) dijagram toka (pomou grafi~kih tabela) ; c) pseudokod .

Za ta~an zapis algoritama tako da se mo`e izvriti na ra~unaru koristimo algoritamske programske jezike.Ekvivalentan zapis algoritma na programskom jeziku jeste program.Program predstavlja zapis algoritma pomou naredbi koje su ekvivalentne odgovarajuim algoritamskim koracima. • Zapis algoritama skupom pravila Najprirodniji na~in zapisa algoritama jeste pomou prirodnog jezika kojim komuniciraju ljudi.Tako se algoritam mo`e saoptiti govorom ili tekstualno.Primeri za to su razni kulinarski recepti,uputstva za rukovanje mainama,...,koja jesu neka vrsta algoritama.Takvi opisi mogu biti neprecizni,pa ~ak i dvosmisleni zbog slo`enosti prirodnog jezika. Me|utim,zapis algoritama pomou skupa pravila ima zadatak da pregledno , jasno i ta~no opie algoritamske korake pomou re~i , simbola i re~enica prirodnog jezika.Oblik pravila algoritma je na odre|en na~in precizan tako da su ona jasna i razumljiva svakome.U zapisu algoritama skupom pravila mo`e se uvesti ime algoritma.Pored toga algoritamska pravila se naj~ee ozna~avaju rednim brojevima (o,1,2,...),sa dodatnom simboli~kom oznakom u vidu slova ili re~i.Izvrenje algoritma po~inje od pravila sa rednim brojem 0 ili 1.Zatim se pravila algoritma izvravaju prirodnim redosledom (redno) dok se ne do|e do pravila za grananje,prelaz ili pravila za cikli~ko izvravanje algoritamskih koraka. Navodimo neka naj~ee upotrebljavana pravila za zapis algoritma :

1. Pravilo dodeljivanja : <promenljiva> := <izraz> Izra~unata vrednost izraza dodeljuje se promenljivoj sa leve strane simbola dodeljivanja := .Alternativni simboli mogu biti = , ← , ⇐. 2. Pravilo uslovnog grananja : Ako <uslov> tada <pravilo> Ako je <uslov> ispunjen tada se izvrava <pravilo>,a u suprotnom prelazi se na sledee pravilo. 3. Pravilo grananja : Ako <uslov> tada <pravilo1>

Page 7: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

ina~e <pravilo2> Ako je <uslov> ispunjen izvrava se <pravilo1>,a u suprotnom <pravilo2>. 4. Pravilo bezuslovnog grananja (skoka) : Pre|i na <oznaka pravila> Ovo pravilo ukazuje da se prekida prirodni redosled izvrenja pravila algoritma i zahteva prelaz na pravilo ozna~eno sa <oznaka pravila>. 5. Pravilo za prekid izvrenja algoritma : Kraj (Stop) Posle izvrenja ovog pravila prekida se izvrenje algoritma. 6. Pravilo za ulaz podataka : Ulaz (<lista ulaznih veli~ina>) 7. Pravilo za izlaz podataka : Izlaz (<lista izlaznih veli~ina>) 8. Pravilo ciklusa : Ponavljaj <pravilo 1> <pravilo 2> . . . <pravilo n> Sve dok se <uslov> ne ispuni Ovo pravilo definie ponovljeno izvravanje niza pravila <pravilo 1>,...,<pravilo n> sve dok <uslov> nije ispunjen.Kada se <uslov> ispuni prelazi se na sledee pravilo. Navedimo primer Euklidovog algoritma za nala`enje najveeg zajedni~kog delioca. E0. Euklid E1. Ulaz (m,n) E2. r:= m MOD n ostatak deljenja E3. Ako r=0 tada pre|i na E7 E4. m:=n E5. n:=r E6. Pre|i na E2 E7. nzd:=n E8. Izlaz (nzd) E9. Kraj Sli~na algoritamska pravila imamo kod opisa algoritama pomou pseudo koda. Pseudo kod koristi pravila bliska naredbama programskog jezika.Pravila su jednostavna , ~itljiva i nedvosmislena. • Zapis algoritama dijagramom toka Jedan od najjednostavnijih i ~esto korienih na~ina zapisa algoritama jeste dijagram toka (ili blok ema) algoritma (tokovnik).Dijagram toka predstavlja jednu varijantu grafi~kog opisa algoritma.Svaki algoritamski korak predstavljen je grafi~kim simbolom (blokom).Svi blokovi su povezani linijama sa moguim strelicama.Na taj na~in se zadaje struktura algoritma i redosled izvravanja algoritamskih koraka.Oblik grafi~kog simbola ukazuje na vrstu algoritamskog koraka,odnosno njegovu funkciju u algoritmu.U tabeli 1.3 dati su naj~ee korieni grafi~ki simbili i njihova funkcija.

Page 8: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Grafi~ki simbol algoritamskog koraka

Funkcija algoritamskog koraka

( Definie ) po~etak algoritma ( algoritamskog koraka )

Ulazne veli~ine algoritma ( blok ulaza )

Obrada podataka ( blok obrade )

Uslovni algoritamski korak ( blok odluke )

Izlazne veli~ine algoritma ( blok izlaza )

Kraj algoritma

Tabela 1.3 Grafi~ki simboli dijagrama toka Na slici dat je dijagram toka Euklidovog algoritma.

Page 9: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Proizvoljna algoritamska ema se u optem slu~aju mo`e razlo`iti na elementarne eme (ili elementarne algoritamske strukture).Postoje tri vrste elementarnih ema:

1) linijska (sekvenca) 2) razgranata (grananje) 3) cikli~ka (ciklus)

Pokazuje se da je dovoljno imati na raspolaganju jednu linijsku,jednu razgranatu i jednu cikli~ku elementarnu emu da bi se realizovala proizvoljna algoritamska struktura.U praksi se ~esto koriste razli~iti oblici razgranatih i cikli~kih elementarnih ema.Na sledeim slikama data je struktura elementarnih ema u strukturnom programiranju. Mo`e se primetiti da svaka od ovih elementarnih ema ima jedinstven ulaz u emu i jedinstven izlaz iz nje.To omoguuje lako komponovanje slo`enih algoritamskih ema pomou elementarnih.Takve eme zovemo dobro strukturiranim.Ukoliko se na izlaz jedne elementarne eme pove`e ulaz druge elementarne eme i tako postupak nastavi dobijamo linijsku kompoziciju elementarnih ema.Me|utim,ako na izlaz nekog algoritamskog koraka u okviru

Page 10: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

cikli~ke eme nadove`emo ulaz elementarne cikli~ke eme dobijamo koncentri~nu kompoziciju cikli~kih ema. Viestruko grananje mo`emo realizovati kada (na izlaz nekog algoritamskog koraka) u okviru jedne od grana umetnemo novu razgranatu emu. Strukturna ema Euklidovog algoritma ima sledei oblik (uz korienje ciklusa sa preduslovom) : ... • FORMALNE DEFINICIJE ALGORITAMA 1.4. KNUTOVE FORMALNE DEFINICIJE ALGORITMA U svojoj monografiji Umetnost programiranja ,D. Knut uvodi dve formalne definicije algoritama.Prva definicija je bazirana na pojmovima skupa,funkcije i numeri~kog metoda.Druga definicija je stro`ija i bazira se na transformaciji re~i definisanih u nekoj azbuci. Najpre definiimo pojam numeri~kog metoda. def.1: Numeri~ki metod jeste ure|ena ~etvorka ( Q , I , Ω , f ) , gde su Q , I , Ω skupovi takvi da je I ⊂ Q , Ω ⊂ Q , a f je funkcija takva da f : Q → Q i (∀q∈Ω) ⇒ f(q)=q.Skup I jeste ulazni skup , Ω jeste izlazni skup a Q jeste skup stanja izra~unavanja.Funkcija f jeste pravilo izra~unavanja. Za svako x iz ulaznog skupa I definiemo numeri~ki niz x0,x1,x2,... na sledei na~in: xo = x xi = f ( xi–1 ), gde je i = 1,2,... Ka`emo da se numeri~ki niz zavrava u k koraka ako je k najmanji prirodan broj za koji je xk iz Ω.U tom slu~aju numeri~ki niz daje izlaz(rezultat) xk za ulaz x. (Napomena: za xk ∈ Ω sledi f(xk)=xk ) Numeri~ki nizovi ne daju rezultat ukoliko se ne zavravaju posle kona~no mnogo koraka. Sledea formulacija jeste prva Knutova definicija algoritma. def.2: Algoritam je numeri~ki metod ~ija se primena zavrava posle kona~no mnogo koraka za svako x iz ulaznog skupa I. Naosnovu prethodne definicije mo`emo opisati Euklidov algoritam,baziran na primeni sledea tri pravila: E1. Nai ostatak deljenja r brojeva m i n

Page 11: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

E2. Ako je r = 0 tada nzd = n E3. m = n , n = r i pre|i na E1 Ure|enu ~etvorku ( Q , I , Ω , f ) mo`emo definisati na sledei na~in : I = (m,n) : m,n∈N Ω = n : n∈N Q = (m,n),n,(m,n,r,i) : r = 0 ∨ r∈N , i=1,2,3 Funkciju f definiemo tako da simulira primenu koraka E1,E2,E3 preslikavajui ~etvorke (m,n,r,i), i=1,2,3 : ← f(m,n) = (m,n,0,1) ; prelaz na korak E1 f(m,n,r,1) = (m,n,m – [m/n]∗n,2) ; ra~unanje ostatka deljenja (korak E1)

( ) ( )n , ako je r 0

f m,n, r, 2 m, n, r,3 , r 0

== >

; pravilo E2

f(m,n,r,3) = (n,r,r,1) ; primena pravila E3 Formulisanjem numeri~kog niza za ma koji par prirodnih brojeva dobiemo tra`eni najvei zajedni~ki delilac. Na kraju napomenimo nedostatke ove definicije zbog kojih se ona ne mo`e svrstati u stroge (formalne) definicije.Ova definicija ne uklju~uje ograni~enja koja se ti~u ispunjenja osobine izvrivosti algoritamskih koraka i to:

1) Skup Q mo`e sadr`ati podatke koji se ne mogu obra|ivati za kona~no vreme (npr. niz sa beskona~no elemenata,realni brojevi sa beskona~no mnogo decimala);

2) Funkcija f je neizra~unljiva,ukoliko je potrebno beskona~no mnogo

vremena za njeno izra~unavanje.Funkcija f mo`e biti i prakti~no neizra~unljiva ukoliko je za izra~unavanje njene vrednosti potrebno ogromno vreme.

Uo~ene nedostatke uklanja druga Knutova definicija algoritma.Ona je ekvivalentna prvoj definiciji sa izmenama koje sev ti~u skupa Q i funkcije f.Naime skup Q (kao i skupovi I i Ω) sadr`i podatke u vidu re~i kona~ne du`ine u nekoj azbuci,a funkcija f je izra~unljiva jer koristi operaciju zamene podre~i.

Page 12: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Neka je A = s1,s2,...,sn , n>=1 kona~na azbuka.A* je skup svih re~i u azbuci A,uklju~ujui praznu nisku λ.Du`ina re~i jeste broj simbola u re~i (oznaka |r| = d , |λ| = 0 ).Ideja je da skupovi Q,I,Ω sadr`e re~i u azbuci A,a funkcija f na jednozna~an na~in preslikava re~ pomou strogo definisanih zamena podre~i.Funkcija f je zadata tabli~no (sl. ). def.3 : Algoritam je numeri~ki metod (Q,I,Ω,f) ~ija se primena zavrava posle kona~no mnogo koraka za svako x iz I,pri ~emu je za datu azbuku A i dato k∈N: Q = ( σ , j ) : σ∈A* , o<=j<=k , I = ( σ , 0 ) : σ∈A* , Ω = (σ , k ) : σ∈A* . (σ,bj) , θj nije podre~ re~i σ Za j=0,1,...,k–1 , f ( σ , j ) = ( α φj β , aj ) , θj nijepodre~ re~i σ i σ=α φj β , |α| je minimalno j=k : f ( σ , k )= ( σ , k ) ∈ Ω . Podaci θj , φj , aj , bj za j=0,1,2,...,k dati su u sledeoj tablici i definiu funkciju f. j θ j φ j a j b j

0 θ 0 φ 0 a 0 b 0 1 θ 1 φ 1 a 1 b 1 . . . . . . . . . . . . . . . k–1 θ k–1 φ k–1 a k–1 b k–1 k λ λ k

θ j , φ j ∈A* , 0 <= aj,bj <= k . Funkcija f na osnovu datog j i θj iz tablice transformie re~ σ u re~ α φj β , ukoliko je θ j podre~ re~i σ oblika αθ jβ i α minimalne du`ine.Druga komponenta u ure|enog para (σ, j) postaje aj u slu~aju zamene podre~i θ j sa φ j i uzima se iz odgovarajue kolone. Ceo nenegativan broj j ima ulogu usmeravanja redosleda zamene podre~i θ j sa φ j.Redosled zamena podre~i je druga~je definisan kod normalnih algoritama Markova sa kojima je ova definicija sli~na. Ova definicija algoritma je dovoljno mona,jer se svaki algoritamski reivi zadatak mo`e reiti i u ovoj formalizaciji. Navodimo primer Euklidovog algoritma. Za azbuku A uzeemo skup A = a,b,c .Ulazni par prirodnih brojeva m i n prezentujemo pomou re~i σ = aa...abb...b = a b ,te (σ,0)∈I.Funkciju f tako

Page 13: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

definiemo da njenom primenom dobijamo rezultat (σ,k)∈Ω , gde je k=5 i σ=a Broj slova a jeste najvei zajedni~ki delilac.Funkcija f simulira primenu operacije oduzimanja i sledee rekurzivne definicije

( ) ( )( )

n , m n NZD m , n NZD m – n , n , m n

NZD m , n – m , m n

== > <

Tablica funkcije f koja definie pravila zamene podre~i ima sledei oblik:

j θ j φ j a j b j

0 a b λ 1 2 1 λ c 0 2 a b 2 3 3 b a 3 4 4 b b 0 5 5 λ λ 5

Numeri~ki niz za m=n=2 glasi : x0 = ( aabb , 0 )∈I x1 = f ( x0 ) = ( ab , 1 ) x2 = ( cab , 0 ) x3 = ( c , 1 ) x4 = ( cc , 0 ) x5 = ( cc , 2 ) x6 = ( cc , 3 ) x7 = ( ac , 3 ) x8 = ( aa , 3 ) x9 = ( aa , 4 ) x10 = ( aa , 5 )∈Ω NZD = 2 . 1.5. NORMALNI ALGORITAM MARKOVA Ruski matemati~ar A.Markov definisao je pojam normalnog algoritma 1954. godine.On koristi jednostavne operacije u vidu zamene podre~i kao u prethodnoj Knutovoj definiciji. Neka je data kona~na azbuka A.Normalni algoritam se definie na sledei na~in : def.3 : Algoritamska shema S u azbuci A jeste ure|eni skup trojki

Page 14: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

S = (α1,β1,δ1),(α2,β2,δ2),...,(αn,βn,δn) gde su αi , βi re~i u azbuci A , a δi ∈ 0,1 . Normalni algoritam u azbuci A jeste ure|eni par ( A,S ) , gde je A azbuka a S shema u azbuci A.Primena ovako definisanog algoritma U = ( A,S ) se odvija na sledei na~in: 1. Ukoliko nijedna re~ αi , i=1,...,n nije podre~ re~i α tada ka`emo da algoritam U ne

prihvata re~ α . Mo`emo simboli~ki pisati U : α ; 2. U suprotnom,neka je i0 najmanji indeks za koji je αi0 podre~ re~i α i β rezultat

zamene prvog pojavljivanja αi0 sleva u re~i α sa βi0.Tada ka`emo da normalni algoritam U prosto (nezaklju~no) prevodi re~ α u β , ako je δi0=0 , ili zaklju~no prevodi re~ α u β ako je δi0=1.Simboli~ki mo`emo zapisati:

U : α β , δi0=0 ili α β , δi0=1. Ukoliko algoritam U prosto ili zaklju~no prevodi re~ α u β tada ka`emo da U prevodi α u β.Me|utim,ukoliko algoritam U prosto prevodi re~ α u β , tada se o~ekuju novi prosti prevodi do dobijanja rezultata ili se odvija beskona~an postupak prevo|enja kada nema rezultata.O tome govori sledei stav. Stav : Normalni algoritam U = ( A,S ) transformie re~ α u re~ β i piemo β=U(α),ako postoji takav niz γ0,γ1,...,γk re~i u azbuci A da su ispunjeni sledei uslovi :

a) γ0=α , γk=β , k > 0 ; b) U : γi γi+1 za i < k – 1 ; c) U : γk–1 γk ili ( U : γk–1 γk i U : γk ) .

Ako je k=0 tada normalni algoritam U ne prihvata re~ α . Isti je slu~aj kada imamo beskona~an niz re~i γ0=α , γ1 , γ2 , ... takav da U : γi γi+1 za svako i=0,1,2, ... .Ukoliko normalni algoritam U transformie re~ α u β tada je re~ β jednozna~no definisana aloritmom U i datom re~i α.Zato je opravdan zapis β=U(α). Ure|ene trojke (αi,βi,δi) , i=1,2,...,n mo`emo nazvati pravilima prevo|enja ili pravilima zamene (prosta ili zavrna zamena).Njih mo`emo zapisivati na sledei na~in: αi → βi , ako je δi = 0 , ili αi →. βi , ako je δi =1. Primena normalnog algoritma U na datoj re~i γ0=α u datoj azbuci A mo`e biti opisana na sledei na~in.Uo~imo prvu po redosledu ure|enu trojku (αi0,βi0,δi0) takvu da je αi0 podre~ re~i α.Izvrimo zamenu prve podre~i αi0 sa leve strane re~i α sa drugom komponentom βi0.Neka je rezultat zamene re~ γ1.Ukoliko je δi0=1 tada imamo zavrnu zamenu i zavrava se primena algoritma i dobija se rezultat γ1.Ukoliko je δi0=0 tada imamo prostu zamenu i prethodni postupak treba nastaviti posmatrajui re~ γ1.Na kraju dobiemo re~ γk,takvu da je U : γk–1 γk ili ( U : γk–1 γk i U : γk ) .

Page 15: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

U tom slu~aju se uspeno zavrava primena algoritma i γk je njegova vrednost.Ukoliko je prethodni proces beskona~an,algoritam U se ne mo`e primeniti na ulaznu re~ α. Primer : Navedimo primer nala`enja najveeg zajedni~kog delioca dva prirodna broja m i n. Posmatrajmo kona~nu azbuku A= a,b,c .Par brojeva (m,n) , pri ~emu je m<=n kodiramo na raniji na~in pomou re~i α= a b =aa...ab...b. Algoritamska shema ima sledea pravila zamene :

1) ac → ca 2) ab → c 3) c → a

(Za slu~aj m >=n pravila zamene imaju oblik: 1) cb → bc 2) ab → c 3) c → b

Demonstracija primene prve verzije normalnog algoritma za m=2 i n=2 sadr`i sledee korake zamene: α = aabb → acb → abc → cc →ac → ca → aa Rezultat primene algoritma jeste re~ aa ~iji broj slova a jeste najevi zajedni~ki delilac. Zadatak : Nai normalni algoritam za proizvoljne vrednosti m i n. Napomena : U literaturi nisam naiao na opis normalnog algoritma za odre|ivanje najveeg zajedni~kog delioca dva prirodna broja. Na kraju razjasnimo pojmove : normalni algoritam u azbuci A i nad azbukom A , ekvivalentnost dva normalna algoritma i princip normalizacije. Svaki normalni algoritam u azbuci A koristi simbole azbuke A.Normalni algoritam nad azbukom A mo`e koristiti i neke dodatne simbole koji ne pripadaju azbuci A.Svaki normalni algoritam u azbuci A jeste tako|e normalni algoritam nad azbukom A.Me|utim,postoje algoritmi u azbuci A,koji se mogu definisati (koji su ekvivalentni) normalnim algoritmima nad A,ali nisu normalni algoritmi u azbuci A. Tako u prethodnom primeru imamo normalni algoritam nad azbukom B= a,b jer je B⊂A , ali zato ka`emo da je to normalni algoritam u azbuci A. def. 1 : Dva normalna algoritma U1=( A,S1 ) i U2=( A,S2 ) jesu ekvivalentni u odnosu na A , ako za svaku re~ α u azbuci A va`e sledea dva uslova:

a) ako U1 prihvata re~ α tada U2 prihvata re~ α i va`i U2(α)=U1(α) ; b) ako U2 prihvata re~ α tada i U1 prihvata re~ α i va`i U1(α)=U2(α).

Page 16: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Za svaka dva normalna algoritma U1 i U2 u azbuci A mo`emo definisati njihovu kompoziciju. def. 2 : Normalni algoritam U nad azbukom A jeste kompozicija normalnh algoritama U1 i U2 u azbuci A , ako za svaku re~ α u azbuci A U prihvata re~ α onda i samo onda kada U1 prihvata re~ α i U2 prihvata re~ U1(α) i va`i U(α) = U2(U1(α)) . Klasa normalnih algoritama je zatvorena za operaciju kompozicije.Zato va`i sledei stav. Stav : Za proizvoljna dva normalna algoritma U1 i U2 u azbuci A postoji normalni algoritam U nad azbukom A koji jeste kompozicija algoritama U1 i U2. O univerzalnosti pojma normalnog algoritma govori sledea hipoteza. Princip normalizacije : Svaki algoritam nad kona~nom azbukom A ekvivalentan je u odnosu na A nekom normalnom algoritmu nad A. 1.6. TJURINGOVA MA[INA (Algoritam Tjuringa) A.Tjuring i E.Post su uveli novu definiciju algoritma 1936.godine.Oni definiu klasu apstraknih maina koje mogu izvriti bilo koju “mehani~ki” izvrivu proceduru,odnosno algoritam.Takve maine nazvane su Tjuringovim (Postovim) mainama.Algoritam koji se realizuje korienjem Tjuringove maine jeste algoritam Tjuringa.Opis apstraktne Tjuringove maine i na~in njenog rada imamo u U nastavku dajemo definiciju Tjuringove maine i opis njenog rada prema tekstu ud`benika Neka su data dva kona~na skupa simbola A=s0,s1,...,sn i Q=q0,q1,...,qm, koji ne sadr`e slova L,R. Kona~an skup ure|enih ~etvorki P= (xi,yi,ui,vi) : i<=k jeste program sa spoljanjom azbukom A i unutranjom azbukom Q , ako je xi,ui∈Q , yi∈A i vi∈A∪L,Rza svako i<=k.Ure|enu ~etvorku (xi,yi,ui,vi) nazivamo komandom ili pravilom zamene xiyi→uivi . Program definie postupak transformacije re~i u azbuci A menjajuii unutranje stanje qi∈Q maine Tjuringa. def. 1 : Tjuringova maina jeste ure|ena estorka M = ( A , Q , a0 , q0 , q1,P ) , koja zadovoljava sledee uslove:

1) Skupovi A i Q su kona~ni,disjunktni i ne sadr`e slova L i R ; 2) a0∈A ; q0,q1∈Q ;

Page 17: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

3) P je takav program,sa spoljanjom azbukom A i unutranjom azbukom Q , da :

a) ne postoje dve razli~ite ~etvorke ~ije su odgovarajue prve komponenete jednake (uslov jednozna~nosti) ;

b) q0 nije prvi ~lan nijedne `etvorke (zavrno stanje maine) .

Napomena : Obi~no se uzima q1 kao po~etno stanje maine Tjuringa , a q0

zavrno stanje , kojim se prekida proces transformacije re~i.Isto tako a0∈A predstavlja specijalni simbol spoljanje azbuke A i reprezentuje prazninu.Praznina mo`e biti sastavni deo re~i koja se transormie. def. 2 : Mainska re~ u spoljanjoj azbuci A i unutranjoj azbuci Q (ili mainska re~ u (A,Q) ) jeste takva re~ α u azbuci A∪q za neko q∈Q , gde re~ α sadr`i samo jedan simbol q . Neka su α i β mainske re~i u (A,Q) i α sadr`i simbol q∈Q .Ka`emo da Tjuringova maina , M = ( A,Q,a0,q0,q1,P ) , prevodi re~ α u re~ β (oznaka α → β),ako je ispunjen jedan od sledea tri uslova: 1) ako je α = α1qaα2 i qa→rb∈P , b∈A tada je β=(α1rbα2) ; 2) ako je α = α1aqbα2 i qb→rL∈P , tada je β=(α1rabα2) (specijalno α = a0qaα2 i qa→rL∈P , tada je β=(ra0aα2) ; 3) ako je α = α1qaα2 i qa→rR∈P , tada je β=(α1arα2) . Primetimo da maina M mo`e prevesti re~ α u samo jednu re~ β , zbog uslova jednozna~nosti (3.a) ) u definiciji maine.Me|utim postavlja se pitanje kada Tjuringova maina M transformie re~ α u re~ β , tako da mo`emo zapisati β = M (α) . Neka je α mainska re~ u azbuci B i b∈B.Re~ , dobijenu zamenom svih simbola b u re~i α sa praznom niskom , ozna~avamo sa α\b. def. 3 : Neka je M = ( A,Q,a0,q0,q1,P ) Tjuringova maina su α,β re~i u azbuci A\a0.Tada ka`emo da maina M transformie re~ α u re~ β ( simboli~ki β = M (α) ) , ako postoji niz γ0,γ1,...,γk , (k>0) mainskih re~i u (A,Q) , koje zadovoljvaju uslove:

1) γ0=q1α ; 2) β=(γk\q0)\a0 ; 3) γi→γi+1 , i<k .

Primetimo da mainska re~ γk sadr`i simbol q0 , jer je β re~ u azbuci A\a0.Takvu re~ maina M ne prevodi u novu re~ jer ne postoji komanda ~ija je prva komponenta q0 (uslov 3.b)u definiciji).To je dovoljan uslov za zavretak prevo|enja pomou Tjuringove maine dobijanjem rezultata u vidu re~i β. Me|utim,Tjuringova maina mo`e da ne transformie re~ α ni u kakvu re~ i da ne daje rezulatate.To se deava u sledea tri slu~aja:

Page 18: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

a) Mana M ne prevodi mainsku re~ γ0=q1α=q1aα1 , a∈A , jer ne postoji

komanda ~ija je leva strana q1a ; b) Postoji niz γ0,γ1,...,γk mainskih re~i koje zadovoljavaju uslove 1),2) i 3)

definicije 3 pri ~emu γk ne sadr`i simbol q0∈Q ; c) Postoji beskona~an niz mainsih re~i γ0,γ1,... takav da je γ0=q1α i γi–1→γi za

svako i∈N . Primer : Formirajmo Tjuringovu mainu M za izra~unavanje vrednosti funkcije f(n)=2n.Neka je M = ( A,Q,a0,q0,q1,P ) , gde je A=0,1,a0, Q=q0,q1,q2,q3,q4 , a program P sadr`i sledee ~etvorke : q11→q30 , q30→q3R , q31→q20 , q20→q2L , q2a0→q30 , q3a0→q4L , q40→q41 , q41→q4L , q4a0→q0a0. Negativan broj n kodiramo pomou re~i α=1 = 11...1 . Radi ilustracije rada maine zapiimo proces ra~unanja vrednosti f(1)=2. γ0 = q1α = q111→q301→0q31→0q20→q200→q2a000→q3000→ →0q300→00q30→000q3→00q40→00q41→0q401→0q411→ →q4011→q4111→q4a0111→q0a0111=γk . β = ( γk \ q0 ) \ a0 = 111 i kodira broj 2 , to jeste vrednost funkcije. Zadatak : Definisati Tjuringovu mainu za funkciju NZD(m,n).Par brojeva (m,n) kodirati sa α=1m+1 01n+1 . 2. PROGRAMSKI JEZICI 2.1. POJAM I ISTORIJAT PROGRAMSKIH JEZIKA Programski jezici jesu vrsta veta~kih jezika namenjenih za komunikaciju izme|u ~oveka i ra~unara.Postoje dva osnovna razloga za definisanje programskih jezika:

Page 19: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

1) mainski jezik je definisan nad binarnom azbukom i kao takav nije pogodan za pisanje programa od strane ljudi ;

2) prirodan jezik u pisanom i govornom obliku je vrlo slo`en te je zato neprihvatljiv kao jezik za komunikaciju sa ra~unarom .

Programski jezik jeste spona izme|u mainskog jezika ( jezika ra~unara ) i prirodnog jezika ( jezika ljudi ).Namenje je za lake pisanje programa u cilju reavanja zadataka razli~ite prirode.Tako zapisani programi,posle prevo|enja na mainski jezik mogu se izvriti na ra~unaru. Prvi programski jezici bili su mainski jezici i simboli~ki ( asemblerski ) jezici (pronalazak elektronskog ra~unara 1946.godine ).Ubrzo se uvidelo da je programiranje na mainski zavisnim (programskim) jezicima mukotrpan i slo`en posao.Zato je 1954.godine definisan prvi vii programski jezik FORTRAN ( FORmula TRANslating ).To je jezik namenjen za nau~no-tehni~ke primene.Podr`avan od ameri~ke firme IBM,ovaj programski jezik jo uvek ima svoju primenu ( definisanjem standarda jezika FORTRAN 66,F-77,F-90 ). Sledei programski jezik za nau~no-tehni~ke primene bio je ALGOL 60 ( ALGOrithmic Language ) i novija verzija ALGOL 68. U isto vreme (1960) za poslovne primene definisan je programski jezik COBOL ( COmmon Business Oriented Language ).1960. godine definisan je i programski jezik LISP ( LISt Processing ) za simboli~ku obradu listi kao struture podataka.Ovaj jezik je naao iroku primenu i u oblasti veta~ke inteligencije.On je predstavnik jezika funkcionalnog ( stila ) programiranja. Prvi “univerzlni” jezici bili su PL/I ( Programming Language (1) ) definisan 1964.godine i ALGOL 68 .Oni nisu nali veu primenu zbog svoje slo`enosti ( specijalno na malim ra~unarima ). Prvi jezici za obuku u programiranju i druge namene bili su BASIC ( Beginer’s All-purpose Symbolic Instuction Code ),definisan 1965.godine, i PASCAL (prema imenu francuskog matemati~ara B.Pascala) definisan 1970.godine.Programski jezik PASCAL je jedan od predstavnika jezika strukturnog programiranja.Programskiu jezik C ( i novije verzije C++ ),definisan 1972.godine,namenjen je za razradu sistemskih programa.Specijalno,izgradnja operacionih sistema UNIX i MS-DOS je izvrena pomou jezika C.Glavni razlog za to je taj to programsi jezik C raspola`e nekim mogunostima mainskog jezika.Niklaus Virt ( pored jezika PASCAL ),definisao je i programski jezik MODULA 2 (197 ).Ovaj programski jezik nasle|uje dobre strane jezika PASCAL i poboljava loe strane jezika C tako da je pogodan za sistemsko programiranje.Pored programskog jezika LISP u oblasti veta~ke inteligencije sve vie se primenjuje i programski jezik PROLOG.Osnovu jezika ~ini aparat matemeti~ke logike.Otuda poti~e i naziv jezika (PROgramation en LOGic).Prolog je predstavnik jezika logi~kog programiranja.Tvorci ovog jezika programiranja su Colmeraner(73),Roussel(75),Kowalski(74,79),dok je Warren (77,80) prvi doao do efikasne realizacije ovog jezika. Programski jezik SMALLTALK ( A.Goldberg ’76. , Ingalls ’78 , i drugi ) predstavlja jedan od jezika objektno orijrntisanog programiranja. Programski jezik ADA ( Ichbiach 1979.) definisan je za potrebe oru`anih snaga SAD.Ima iroke mogunosti jer : podr`ava paralelno programiranje,omoguuje

Page 20: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

reavanje problema u realnom vremenu,poseduje elemente objektnog programiranja itd.Za sada nema veliku primenu na malim ra~unarima. U novije vreme,po~ev od 1980.godine,razvoj programskih jezika odvija se u dva pravca.U prvom slu~aju vre se dopune i nadgradnje postojeih ~esto korienih programskih jezika ( FORTRAN,PASCAL,LISP,C,PROLOG,itd. ).Drugi pravac se ogleda u definisanju novih (neproceduralnih (opisnih)) programskih jezika ili u izgrdnji programskih paketa i sistema ( GPSS -,SPSS-,ECAP-,STRESS-,MATHEMATICA-,JAWA-). 2.2. STRUKTURA PROGRAMSKIH JEZIKA Svaki jezik,pa u tom smislu i programski jezik,sadr`i dve osnovne komponente :sintaksu i semantiku.Programski sadr`i i treu komponentu i to pragmatiku.Da bismo mogli koristiti neki programski jezik za reavanje nekog problema,potrebno je poznavanje sve tri komponente jezika. Sintaksa jezika definie strukturu svakog pojma (konstrukcije,sintaksi~ke kategorije) u jeziku.Ona se mo`e upotrebiti kako za gra|enje pravilnih konstrukcija, tako i za (sintaksnu) proveru prethodno zapisanih konstrukcija u jeziku.Svaki jezik je definisan nad nekom polaznom azbukom.Azbuka jeste kona~an skup simbola.Od simbola azbuke gradimo sve (ostale) konstrukcije u jeziku uz pomo sintaksnih (gramati~kih) pravila.Sve konstrukcije u programskom jeziku naj~ee delimo na slo`ene i elementarne. U slo`ene konstrukcije spadaju program ( kao osnovni pojam u jeziku ),modul,potprogram,naredba,definicija,deklaracija i izraz. U elementarne konstrukcije naj~ee se ubrajaju labela(obele`je naredbe),konstanta,simboli~ko ime(identifikator),konstrukcije vezane za strukture podataka(indeksna promenljiva,komponentna promenljiva,baferska promenljiva,itd.),poziv funkcije kao potprograma,itd. Na taj na~in mo`emo govoriti o hijerarhiji konstrukcija u programskim jezicima. Sintaksa jezika mo`e se definisati formalno na vie na~ina ( odeljak ).To mo`emo ostvariti pomou:prirodnog jezika,jezika za predstavljanje skupova ( kod jednostavnih ili kona~nih jezika ),gramatika (razli~itog tipa) ili pomou automata ili maina koji se mogu upotrebitit kako za gra|enje tako i za raspoznavanje pravilnih konstrukcija u jeziku. Semantika jezika definie zna~enje (smisao) konstrukcija (pojmova) u jeziku, po~ev od najjednostavnijih do najslo`enijih.Svaki pojamu jeziku ima svoje jedinstveno zna~enje,koje mo`e zavisiti i od konteksta.Tako jedinstveni znak – mo`e biti :

1. znak broja ( npr. –5 ) ; 2. operacija promene znaka ( –p ) ; 3. operacija oduzimanja celih ili realnih podataka ( a – b ) ; 4. operacija razlike skupova ( P – Q ,P,Q su skupovi ) .

Smisao programa,kao osnovnog pojma programskog jezika,jeste koij problem on reava i na koji na~in je taj problem reen.Poznavanje semantike je potrebno radi pisanja logi~ki ispravnih (korektnih) programa a tako|e i za izgradnju jezi~kih

Page 21: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

procesora (prevodilaca).Za te potrebe neophodna je stroga (formalna) definicija semantike kao i sintakse.Metode definisanja semantike nisu dobro razra|ene kao u slu~aju sintakse.Formalno definisanje sintakse i semantike omoguuje automatsko gra|enje prevodioca programskog jezika. Pragmatika predstavlja na~in realizacije (implementacije i korienja programskog jezika na nekom ra~unarskom sistemu.U tom cilju razvijaju se slo`eni programski sistemi (programska okru`enja) za jednostavno korienje programskih jezika.Takva programska okru`enja sadr`e prevodilac programskog jezika (jezi~ki procesor) i ~itav niz dodatnih programa kao to su : ure|iva~ (editor) teksta, poveziva~ (linker),dibager i drugi.Tako,na primer,integrisano razvojno okru`enje Borlandovog Turbo-Pascala pru`a iroke mogunosti koje se odnose na rad sa datotekama,editovanjem programa,izvravanjem,prevo|enjem i povezivanjem,pretra`ivanjem,testiranjem i ispravljanjem greaka u programu i tako dalje. O pragmatici jezika mo`emo govoriti i u “u`em” smislu.Tada mislimo prvenstveno na karakteristike prevodioca.Postoje razli~iti re`imi rada prevodioca i razli~ite mogunosti za upravljanje prevo|enjem i izvrenjem programa.Tako u programskim jezicima ALGOL 68 i Turbo-Pascal mo`emo koristiti pragmati~ke komentare ili direktive prevodioca u okviru programa za razli~ite namene (prekida~ke i parametarske direktive i direktive za uslovno prevo|enje u Turbo-Pascalu).Ovakve mogunosti se mogu realizovati i u okviru programskog okru`enja jezika (van programa). U implementaciji jezika mo`e se i odstupiti od definicije programskog jezika.Tako mo`emo govoriti o konstrukcijama jezika koje su zavisne od implementacije,definisane implementacijom ili predstavljaju proirenje(jezika) (WIRTH-Pascal). Dobro poznavanje pragmatike programskog jezika omoguuje brzu razradu efikasnih programa. 2.3. KLASIFIKACIJA I OSOBINE PROGRAMSKIH JEZIKA Programski jezici su razijeni u cilju smanjivajna napora (truda,rada) programera za opis algoritma.Oni omoguuju lake i jednostavnije komuniciranje sa ra~unarom.Navedimo neke osnovne osobine koje su po`eljne za svaki programski jezik :

1) nezavisnost programskog jezika od ra~unara i pribli`avanje prirodnim jezicima ;

2) formalnost programskog jezika u cilju jedozna~nog zapisa algoritma ; 3) mogunost formalnog prevo|enja na mainski jezik ; 4) lakoa projektovanja programskih prevodioca (jezi~kih procesora) ; 5) ~itljivost (razumljivost) programa na programskom jeziku ; 6) mogunost korienja programa u publikacijama radi razmene programa

; 7) lakoa u~enja i usvajanja mogunosti jezika .

Page 22: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Prethodne osobine odnose se uglavnom na procedularne programske jezike.Na kraju navodimo neke osobine neproceduralnih programskih jezika :

1) implicitna specifikacija toka upravljanja (obrade podataka) ; 2) strukture podataka visokog nivoa i agragatne (skupovne) operacije ; 3) asocijativno ukazivanje na podatke ; 4) jednostavna sintaksa jezika ; 5) slo`ena semantika jezika .

U dosadanjem razoju ra~unarstva definisan je veliki broj razli~itih programskih jezika.Svaki od njih je imao odre|enu namenu i oblast primene.Mnogi od njih nisu nali iru primenu.Me|utim,mali broj programskij jezika se stalno usavravao i dogra|ivao prema zahtevima novih metodologija programiranja i jo uvek se koristi.Takvi programski jezici jesu FORTRAN,BASIC,PASCAL,LISP,PROLOG,C i drugi.Postojanje velikog broja programskih jezika doputa i razli~ite podele programskih jezika.Naj~ea podela programskih jezika se vri prema : tipu gramatika jezika (odelak ),prema zavisnosti programskih jezika od ra~unara,prema vrsti prevodioca,prema nameni i tako dalje. Najoptija (najira) podela je izvrena prema stepenu zavisnosti programskog jezika od arhitekture ra~unara.Prema ovom kriterijumu programski jezici se dele na mainski zavisne i mainski nezavisne programske jezike. Mainski zavisni jezici se dele na mainske jezike i mainski orijentisane jezike.Mainski orijentisane jezike delimo na simboli~ke (asemblerske) jezike i makroasemblerske jezike. Mainski nezavisne jezike delimo tako|e na dve grupe jezika i to na proceduralne i neproceduralne programske jezike. Na taj na~in mo`emo govoriti o hijerarhiji programskih jezika koja polazi od mainskih jezika i zavrava na neproceduralnim jezicima sa tendencijom razvoja ka prirodnim jezicima.Ova podela ukazuje na ~etiri generacije programskih jezika u dosadanjem razvoju ra~unarstva:

1. Mainski jezici ; 2. Mainski orijentisani jezici (asemblrerski i makroasemblerski) ; 3. Proceduralni programski jezici (vii programski jezici) ; 4. Neproceduralni programski jezici (jezici vrlo visokog nivoa) .

Mainski jezik jeste interan jezik ra~unara.Definisan je nad binarnom azbukom A=0,1.Program na mainskom jeziku se sastoji od niza mainskih naredbi koje ra~unar mo`e direktno raspoznati i izvriti.Mainska naredba definie kod opercije i adrese podataka nad kojima se operacija izvrava.Naravno,i podaci su binarno kodirani i obra|uju se izvravanjem mainskih naredbi.Pisanje programa na mainskom jeziku je slo`en i monoton proces,koji je podlo`an grekama. Prvi programski jezici (prva generacija) su bili mainski jezici. Mainski orijentisani jezici su bliski mainskim jezicima.Tu spadaju simboli~ki(asemblerski) jezici i makroasemblerski jezici.Naredbe na simboli~kom jeziku koriste simboli~ka imena za ozna~avanje operacija i operanada.To

Page 23: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

omoguava lake programiranje.Programi na asemblerskom jeziku moraju se prevesti na mainski jezik pre njihovog izvravanja.Za te potrebe napisani su posebni sistemski programi za prevo|enje na mainski jezik koji se naziva asembler .(Za simboli~ki jezik ~esto se koristi naziv asembler). Makroasemblerski jezik pored naredbi simboli~kog jezika koristi i makronaredbe.Time se dobija na ~itljivosti (preglednosti) programa.Program na makroasemblerskom jeziku mora se prevesti na mainski jezik pomou prevodioca koji nazivamo makroasembler.Pisanje programa na mainski orijentisanim jezicima je znatno lake nego na mainskom jeziku.Me|utim,to zahteva poznavanje algoritma reenja zadatka i strukture konkretnog procesora kao i na~in njegovog programiranja. Proceduralni (algoritamski ili vii) programski jezici predstavljaju treu generaciju programskih jezika,koji ne zavise od ra~unara (maine) odnosno od njegovog mainskog jezika.Programi na ovim jezicima opisuju proceduru (algoritam) reenja postavljenog zadatka.Program daje odgovor na pitanje “ta” i “kako” treba reiti.Veina definisanih programskih jezika pripada grupi proceduralnih programskih jezika.Programi na proceduralnim programskim jezicima se moraju prevesti na mainski jezik radi njihovog izvravanja.Postoje dve vrste prevodilaca (jezi~kih procesora) za mainski nezavisne programske jezike.To su kompilatori (translatori) i interpretatori.Kompilatori prevode kompletan program na mainski jezik.Prevedeni program se mo`e izvravati prema potrebi.nterpretatori ne prevode kompletan program,ve oni prevode svaku naredbu programa sa istovremenim izvravanjem.Na taj na~in prevo|enje i izvravanje naredbi programa se cikli~ki ponavlja.Svako izvrenje programa zahteva i ponovno prevo|enje,to nije slu~aj kod kompilatora. Neproceduralni programski jezici omoguuju pisanje programa na znatno veem nivou apstrakcije.Programi na naproceduralnim programskim jezicima opisuju “ta” treba uraditi,a ne “kako” treba reiti posatavljeni zadatak.Program na neproceduralnom jeziku ne zadaje algoritam reenja zadatka.To zna~i da sintaksa jezika nije algoritamska,a da semantikam neproceduralnih jezika jeste proceduralna (algoritamska).U neproceduralne jezike (jezike ~etvrte generacije) spadaju upitni jezici (za baze podataka),funkcionalni (aplikativni) jezici,programski generatori,generatori aplikacija,jezici za specifikaciju zadataka (programa) i tako dalje. Peta generacija programskih jezika se nalazi u fazi razvoja.To su jezici koji omoguuju predstavljanje znanja i njegovo korienje bazirano na dedukciji.Predstavnici ove generacije jezika su LISP i PROLOG. Druga podela programskih jezika se mo`e izvriti prema vrsti prevodioca koji se koriste za njihovo prevo|enje.Tako mainski nezavisne programske jezike delimo na interpretatorske i kompilatorske programske jezike.Na~in korienja interpretatora omoguuje dijalog izme|u ~oveka i ra~unara.Zbog toga interpretatorske programske jezike mo`emo nazvati interaktivnim ili konverzacionim jezicima.Analogno,kompilatorske jezike mo`emo nazvati neinteraktivnim ili nekonverzacionim jezicima.Veina proceduralnih proceduralnih jezika je kompilatorskog,dok su neproceduralni uglavnom interpretatorskog tipa.

Page 24: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Naravno,i mainski orijentisane programske jezike delimo prema vrsti prevodioca (asemblerski i makroasemblerski jezici). Trea podela se mo`e izvriti prema nameni programskih jezika.Tu imamo veliki broj oblasti primene ra~unara i odgovarajuih programskih jezika koji se za te potrebe koriste.Navedimo neke klase programskih jezika za specijalne namene :

1) za nau~no-tehni~ke primene (FORTRAN,ALGOL,PL/1,...) ; 2) za poslovne primene (COBOL,...) ; 3) za obuku u programiranju (BASIC,PASCAL,...) ; 4) za simulaciju ; 5) za paralelno programiranje (SIMULA 67,MODULA 2,ADA,...) ; 6) za logi~ko programiranje (PROLOG,PROLOG,...) ; 7) za objektno programiranje (SMALLTALK,...) ; 8) za funkciolno programiranje (LISP,APL,FP,...) ; 9) za predstavljanje znanja (MACLISP,KRL,NETL,...) , itd.

2.4. OPIS (SINTAKSE) PROGRAMSKIH JEZIKA

Jedan od va`nijih problema u izu~avanju programskih jezika jeste opis sintakse i semantike jezika.Opis semantike jezika je slo`eniji problem.Zato se naj~ee semantika jezika opisuje prirodnim jezikom.Me|utim,za opis sintakse programsih jezika razvijeni su posebni jednostavni jezici.

Jezik koji slu`i za opis drugog jezika nazivamo metajezik.Mi emo razmotriti nekoliko metajezika za opis sintakse programskih jezika i to:

1. Jezik skupova

2. Bekusova normalna forma

3. Sintaksni dijagram(i)

4. Dijagrami kona~nog automata

5. Regularni skupovi

6. Trec-gramatike i OTN* gramatike (* transmition nettwork)

Neformalno,jezik definiemo kao podskup skupa svih re~i (re~enica) u nekoj azbuci.U opisu jezika definie se koje re~enice pripadaju jeziku (sintaksa jezika) i koje je njihovo zna~enje (semantika jezika).

Azbuka jezika jeste kona~an skup simbola,npr. A=s1,s2,...,sn.Kona~na niska simbola azbuke A jeste re~ (niska,re~enica).Niska koja ne sar`i ni jedan simbol jeste prazna niska (oznaka je λ,ε,∴).Du`ina niske x (zapisuje se |x| ) jeste broj simbola u niski.

Page 25: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Skup svih re~i u nekoj azbuci A ozna~avamo sa A*(uklju~ujui i praznu nisku). Jezik J definisan u azbuci A jeste podskup skupa A*,tj. J⊂A*.Strukturu re~i (re~enica) koje pripadaju jeziku J definie sintaksa jezika.

Azbuka jezika mo`e biti i beskona~na,npr. A=s1,s2,....To je bez zna~aja jer se svaka beskona~na azbuka mo`e kodirati simbolima kona~ne azbuke,npr. A1=a,b. Pri tome simbole s1,s2,... azbuke A kodiramo simbolima binarne azbuke A1 sledei na~in:

s1=aba , s2=abba , s3=abbba , ...( i ~ak aa=λ ).

Nad re~ima (niskama) neke azbuke mo`emo uvesti operaciju nadovezivanja ( ili spajanja,katenacije,konkatenacije).Ako su x i y re~i tada njihova katenacija jeste re~ xy (oznaka za operaciju ne postoji).Specijalno za praznu nisku va`i:

λx = xλ =x .

Operacija nadovezivanja nije komutativna ( jer ne va`i xy=yx ),ali zato jeste asocijativna.

Pomou opercije nadovezivanja mo`emo definisati proizvod (katenaciju) dva skupa niski P i Q.Proizvod PQ skupova niski P i Q jeste skup definisan na sledei na~in:

PQ = pq : p∈P , q∈Q.

Kako je λx = xλ =x za svaku nisku x,tako|e va`i:

λP = Pλ = P ,za svaki skup niski P.

Mo`e se definisati i stepen niske i stepen azbuke.Ako je x niska,tada je:

x = λ , x = x , x = xx , . . . , x = xx...x , . . .

Rekurzivno mo`emo definisati , n 0

xx x x , za n 0

xλ =

= = >

.

Tako|e mo`emo definisati stepen azbuke A(ili stepen bilo kog skupa re~i):

A = λ , A = A , A = AA , n > 0 ; ili , n 0

, za n 0

AAA

λ == >

Naravno,nad skupovima se mogu izvoditi i ostale skupovne operacije : unija (∪) , presek (∩) , razlika ( \ ).

Koristei operaciju nadovezivanja i stepena definisati formalno operacije : iteracije A* skupa ( azbuke) A i pozitivne iteracije A :

Page 26: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

A* = A ∪A ∪A ∪ . . . ∪A ∪ . . .

A = [ A* \ λ = A ∪A ∪ . . . .] = A* \ A = A*A = AA* .

Upravo uvedene operacije nad niskama i skupovima omoguuju definisanje regularnih skupova,odnosno,regularnih jezika (vidi odeljak ).Na taj na~in,sintaksu jezika mo`emo specifikovati pomou sistema predstavljanja skupova.Kod kona~nih jezika mogu se ~ak nabrojati niske (re~enice) koje pripadaju jeziku.Me|utim,kod beskona~nih jezika potreban je formalan na~in opisa strukture njihovih re~enica.Tako jezikom skupova mo`emo definisati sintaksu sledeih jezika :

1. J1 = 0 1 | n > 0 , A1 = 0,1

2. J2 = a b | m,n ≥ 0 , A2 = a,b

3. J3 = a b c | n ≥ 0 , A3 = a,b,c

4. J4 = a b c | m = n ili n = p , A4 = a,b,c

5. J5 = x | m-prost broj , A5 = x

6. J6 = a | n ≥ 0 , A6 = a

2.4.1. BEKUSOVA NORMALNA FORMA (BNF)

Ovaj metajezik prvi je predlo`io Homski [56] za opis prirodnih jezika.Sistem zapisa koji opisujemo i koristimo pripada Bekusu [59] , po kome je ovaj metajezik dobio naziv.^esto se koristi termin Bekusova notacija (ili Bekus-Naurova forma to je donekle nepravilno).Ovim metajezikom opisana je nepotpuno sintaksa jezika ALGOL 60.Prema miljenju Homskog,ovaj metajezik je pogodan za opis jednostavnijih (kontekstno-nezavisnih) jezika.Zato su lingvisti pristupili definisanju i korienju monijih metajezika. Bekusova notacija je jednostavan metajezik.Osnovni pojmovi (konstrukcije) u ovom jeziku jesu:metaformula,metaizraz,metaoperacije,metapromenljiva i metakonstanta.Pomou metaformula opisujemo sve sintaksne konstrukcije (pojmove) u izvornom ( programskom ) jeziku.Opiimo sve ove pojmove Bekusove notacije (polazei od najjednostavnijih). Metakonstanta (terminal,terminalni simbol) jeste jedan simbol ili niska simbola azbuke jezika koji opisujemo.Dakle,metakonstanta se na jedinstven na~in zapisuje u metajeziku preuzimanjem iz izvornog jezika.Da bi se to naglasilo (i ako ima potrbe ) metakonstanta se mo`e uokviriti znacima navoda (“) ili apostrofom (‘). Metapromenljiva (neterminal,neterminalni simbol)u Bekusovoj notaciji jeste pojam (sintaksna jedinica) izvornog jezika.Metapromenljiva se mora definisati pomou metaformule,jer se ne mo`e preuzeti iz izvornog jezika na jedan jedini na~in kao metakonstanta.Metapromenljiva se zapisuje kao fraza prirodnog stavljena izme|u ugalstih zagrada( < , > ).Time se u Bekusovoj notaciji imenuje pojam iz izvornog jezika (Npr. <program>,<naredba>,<izraz>,<slovo>). Metaizraz je:

Page 27: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

1. metakonstanta , 2. metapromenljiva ili 3. kona~an niz metakonstanti i / ili metapromenljivih koje su me|usobno

razdvojene metaoperacijama. Metaoperacija mo`e biti operacija spajanja (nadovezivanja,katenacije) ili razdvajanja (izbora,alternacije). Operacija spajanja (nadovezivanja) pie se u obliku αβ i ~ita se “α za kojim sledi β” , gde su α i β metakonstante ili metapromenljive (ili metaizrazi u optem slu~aju sa zagradama ). Operacija razdvajanja (izbora,alternacije) pie se u obliku α|β i ~ita “α ili β”. Simbol operacije razdvajanja “|” je simbol metajezika.Operacija nadovezivanja ima vii prioritet od operacije razdvajanja.Tako zapis αβ|γ predstavlja izbor od dve mogunosti αβ ili γ ,to zna~i da se najpre realizuje spajanje. Metaformula (definiciona jedna~ina,gramati~ko pravilo,(pravilo)produkcija(e),pravilo redukcije,pravilo zamene,itd.) jeste ure|eni par (α,β) , koji se zapisuje u obliku α ::= β , i ~ita “α po definiciji je β” (ili “α to je β”),gde je α metapromenljiva , β metaizraz a metasimbol ::= jeste simbol (operacije) definisanja. Alternativni simboli definisanja mogu biti : → , ← , = , := . Metapromenljiva α na levoj strani metaformule predstavlja pojam (konstrukciju) u izvornom jeziku koji se definie.Metaizraz β definie postupak generisanja ispravne konstrukcije na osnovu jednostavnijih pojmova (metaoperanada) primenjujui operacije izbora i nadovezivanja.Rezultujua vrednost metaizraza jeste metakonstanta (niska terminalnih simbola) koja se mo`e dodeliti (upotrbiti) matapromenljivoj α sa leve strane metaformule. Metaizraz se mo`e upotrebiti za generisanje svih moguih sintaksno korektnih terminalnih niski koje predstavlja pojam α. Metaformule se mogu,dakle,upotrebiti kao gramati~ka pravila za gra|enje ispravnih konstrukcija u izvornom jeziku (potreba programera).Druga njihova uloga je da se mogu koristiti za proveru sintaksne korektnosti prethodno napisanih terminalnih niski (potreba prevodilaca). Primer 1 : Opisati pojam celog broja u programskom jeziku.

1. <ceo broj> ::= <znak broja> <ceo broj bez znaka> | <ceo broj bez znaka> 2. <znak broja> ::= + | − 3. <ceo broj bez znaka> ::= <cifra> <ceo broj bez znaka> | <cifra> 4. <cifra> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 .

Primer 2 : Opis sintakse jezika J1 = 0 1 | n ≥ 0 sadr`i sledee metaformule: 1. <rec> ::= 0 <rec> 1 2. <rec> ::= λ

ili skraeno 1. <rec> ::= 0 <rec> 1 | λ . U oba primera videli smo rekurzivne definicije (rekurzivna pravila) pojmova jer se definiu pomou metaizraza koji sadr`e te iste pojmove (<ceo broj bez znaka> i <rec>).

Page 28: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

• Proirena Bekusova Normalna Forma (PBNF) U literaturi se za opis sintakse razli~itih jezika koriste i neki drugi na~ini zapisa (varijante Bekusove notacije).Ukazaemo na neka korisna proirenja koja olakavaju i skrauju zapis (metaformula).Ovakve nove mogunosti imaju istu mo kao i Bekusova normalna forma,ali su pogodnije za korienje.Proirenja uvode ( male , srednje i velike ) zagrade kao i neke druge mogunosti.

1. Male zagrade

Ukazali smo da operacija spajanja (nadovezivanja) ima vii prioritet od operacije razdvajanja.Ukoliko `elimo da promenimo ovaj prioritet tada mo`emo upotrebiti male zagrade kao u aritmeti~kom izrazu.Tako izraz α ( β | γ ) zna~i izbor αβ ili αγ , ( za razliku od zapisa αβ | γ ).Na taj na~in mo`emo rei da je operacija spajanja distributivna u odnosu na operaciju razdvajanja.Obrnuto ne va`i jer je (αβ) | γ = αβ | γ zbog uvedenog prioriteta. Male zagrade mo`emo upotrebiti kao metasimbole u cilju skraivanja zapisa (faktorizacije) u sledeem slu~aju. Metaformulu α ::= xy | xz | . . . | xt mo`emo zapisati u obliku α::= x ( y | z | . . . | t ) to je mnogo preglednije.I ovo je primena distribucije prema razdvajanju. Zagrade se mogu i dalje umetati,na sli~an na~in kao kod aritmeti~kih izraza.Na primer,ako je y = f y1 , z = f z1 , tada mo`emo zapisati α ::= x ( f ( y1 | z1 ) | . . . | t ).

2. Srednje zagrade

Srednje zagrade koristimo kada `elimo da uka`emo na opcionu (fakultativnu) nisku (konstrukciju).To zna~i da se takva niska mo`e ali ne mora upotrebiti.Tako u opisu celog broja znak broja je opciona konstrukcija pa mo`emo pisati: < ceo broj > ::= [ < znak >] < ceo broj bez znaka > . U optem slu~aju mo`emo pisati : [ α ] = λ | α .

3. Velike zagrade

Pomou rekurzije (rekurzivnih pravila) u Bekusovoj normalnoj formi mo`emo definisati (opisati) listu (spisak,niz) proizvoljno mnogo elemenata.Tako mo`emo pisati

( 1 ) < ceo broj bez znaka > ::= < cifra > < ceo broj bez znaka > | < cifra > ( 2 ) < spisak imena > ::= < ime > | < ime > , < spisak imena > .

Page 29: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Velike zagrade mo`emo upotrebiti kao metasimbole da bi ukazali da se niska uokvirena velikim zagradama mo`e ponoviti proizvoljan broj puta i da se mo`e izostaviti.U tom slu~aju gornja pravila mo`emo napisati na sledei na~in: ( 1’ ) < ceo broj bez znaka > ::= < cifra > < cifra >

( 2’ ) < spisak imena > ::= < ime > , < ime > . Za proizvoljnu konstrukciju (nisku) α mo`emo pisati α = λ | α | αα | ααα | . . . To zna~i da zapis α predstavlja drugi na~in zapisa za iteraciju α*= A* jednoelementnog skupa A=α,i piemo α*= λ∪α ∪α ∪α ∪ . . . = λ∪α∪α∪ααα∪ . . . . Zato umesto α mo`emo pisati i α*.Tako|e zapis α za proizvoljnu iteraciju mo`emo upotrebiti umesto α|αα|ααα|... . Pomou gornjuh i donjih indeksa mo`emo zadati maksimalni i minimalni broj ponavljanja neke konstrukcije.Tako mo`emo zapisati α = αα ... α | αα ... α | ... | αα ... α , za i ≤ j . Simboli~ko ime (identifikator) mo`emo opisati pomou sledeeg pravila: < identifikator > ::= < slovo > ( < slovo > | < cifra > ) . Sreu se i sledei zapisi za kona~ne liste elemenata koji se ponavljaju pomou tri ta~ke: e1 , e2 , ... , en ili za beskonanu listu : e1 , e2 , ... , en ili sledea modifikacija e [ ,e ] ... [ Parezanovi ] . • Upotreba metasimbola kao terminalnih simbola Postoje slu~ajevi kada treba opisati konstrukcije u jeziku koje sadr`e terminalne simbole u obliku metasimbola (npr. | , ( , ) , [ , ] , , , ::= ).U tom slu~aju terminalne simbole treba staviti izme|u apostrofa (ili izme|u znakova navoda).Tada se apostrof javlja kao metasimbol.Ukoliko je tada potreban apostrof kao terminalni simbol on se zadaje sa ~etiri apostrofa [ Gris ]. Na kraju,mo`emo navesti neke modifikacije Bekusove normalne forme koje se ti~u druga~ijeg zapisa neterminalnih simbola.Tako se mogu upotrebiti pojedina~ni simboli ili niske (sa ili bez indeksa) ali tako izabrani da se razlikuju od terminalnih simbola.Simbol definisanja ::= mo`e se zameniti simbolima → , = , := . Tako mo`emo pisati : 1) Naredba dodele : p := i , p – identifikator , i – izraz 2) IF naredba : IF u THEN n1 [ ELSE n 2 ] , u – logi~ki izraz , n1 n2 – naredba 3) REPEAT naredba : REPEAT N1;

Page 30: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

N2; . . . Nm UNTIL u , u – logi~ki izraz , N1,...,Nm – naredbe 1.4.2. SINTAKSNI DIJAGRAMI

Sintaksni dijagrami su jedna vrsta grafi~kog metajezika jer koriste grafi~ke simbole za opis sintakse jezika.Zato su oni pregledniji i ~itljiviji od Bekusove notacije.Ovaj jedinstven metajezik je ekvivalentan sa Bekusovom normalnom formom.I proirene Bekusove normalne forme se lako realizuju pomou sintaksnih dijagrama. Sintaksni dijagram je imenovani orijentisani graf sa jednim ulazom i jednim izlazom sa ~vorovima grafa koji predstavljaju terminalne ili neterminalne simbole. Svaki prolaz kroz sintaksni dijagram od ulaza prema izlazu generie jednu sintaksno pravilnu konstrukciju jezika.Linije (sa strelicama) koje spajaju ~vorove grafa realizuju metaoperacije nadovezivanja i razdvajanja (izbora) na prirodan na~in. Za terminalni simbol t koristimo grafi~ki simbol kru`nog ili elipsoidnog oblika ,kada imamo nisku terminalnih simbola.Za neterminalne simbole predvi|en je pravougaoni simbol ,gde nt predstavlja ime pojma (konstrukcije) u jeziku. Metaoperacija iz Bekusove notacije i proirenja (upotreba zagrada) se realizuju na jedostavan na~in.U nastavku navodimo ekvivalentne realizacije operacija u oba metajezika.

1. Spajanje (nadovezivanje) :

α1α2 . . . αn ⇔ → α1 → α2 → . . . → αn →

2. Razdvajanje (izbor) :

α1 | α2 | . . . | αn ⇔ α1

α2

Page 31: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

αn

ili α1 α2 . . . αn

3. Iteracija (pozitivna iteracija) :

α* ⇔ α = λ | α | αα | . . . α ⇔ α | αα | ααα | . . .

4. Opciona konstrukcija :

[ α ] = λ | α

5. Ograni~eno ponavljanje : α = λ | α | αα | . . . | αα ... α α = α | αα | . . . | αα ... α 6. Ponavljanje ta~no n puta : αα ... α = α = α 7. Faktorizacija (male zagrade) : α ( β | γ | . . . | δ )

Na kraju navodimo nekoliko primera opisa konstrukcija pomou sintaksnih dijagrama. Primer : 1. ceo broj cifra

Page 32: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

2. realan broj cifra cifra E cifra 3. slovo simboli~ko ime slovo cifra 4. IF naredba IF uslov THEN naredba ELSE naredba 5. REPEAT naredba REPEAT naredba UNTIL uslov 2.5. FORMALNE GRAMATIKE I JEZICI • FORMALNA DEFINICIJA GRAMATIKE I ( PROGRAMSKIH ) JEZIKA Pod formalnom definicijom (programskog) jezika podrazumevamo ( ta~an i ) potpun opis njegove sintakse i semantike polazei od azbuke jezika.Sintaksa se obi~no definie pomou ( pojma ) gramatike.Pri tome definisane su razli~ite klase gramatika i drugi formalizmi koji se mogu upotrebiti za strogi ( formalan ) opis sintakse programskih jezika.Opis semantike je mnogo slo`eniji problem tako da se naj~ee realizuje pomou prirodnog jezika ( iako postoje i formalne definicije ). Postoje dva osnovna razloga zbog kojih je potrebna formalna definicija programskih jezika: 1. zbog potreba programera u cilju pisanja korektnih programa ;

2. zbog izgradnje prevodilaca,koji treba da raspoznaju i realizuju predvi|ene mogunosti jezika.

Prvi pokuaj formalne definicije programskog jezika imao je Bekus (1959). Pomou Bekusove normalne forme i kontekstno-slobodne gramatike on je delimi~no opisao sintaksu jezika ALGOL 60. Za opis sintakse slo`enijih progreamskih jezika definisane su nove vrste gramatika koje su pogodne za opis sintakse ma kog programskog jezika [ Hanter ]. Za opis programskog jezika ALGOL 68 imamo definiciju W gramatika ( A. Van Vijagaarden 1975. ) i atributske gramatike ( D. Knut 1968. i Simone 1977.). Za opis sintakse programskog jezika PL/1 imamo poznatije metode: Wienna Definition language ( Lukas,Walk 1969. ) i sistemi produkcija ( Ledgard ).A u oblasti veta~ke inteligencije i TN i ATN gramatike. Drugi na~in definisanja sintakse programskih jezika omoguen je pomou pojma raspoznavaoca. Raspoznavaoc je ure|aj ( automat ili maina ) [ vidi sledei odeljak ] koji raspoznaje ( prihvata ) sintaksno pravilne ( ispravne ) programe na programskom jeziku posle kona~no mnogo koraka.

Page 33: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Programski jezik je skup programa koji kao pravilne raspoznaje odgovarajui raspoznavalac. Sintaksa jezika definie skup pravilnih programa koji pripadaju jeziku.Me|utim semantika jezika definie zna~enje ( smisao ) pravilnih programa.Definisanje ( a posebno formlno definisanje ) semantike jezika je te`i problem,koji u potpunosti nije reen ( npr. za prirodne jezike ).Formalne definicije semantike programskih jezika sreemo u radovima Stila (1966. Steel L.B.),Engelera ( 1971. Z. Eugeler ),D. Knuta (1968),Lukaa i Bloka (1969),i dr. . Mogua su tri pristupa u definiciji semantike jezika (Aho Ulman). Prvi pristup se sastoji u pridru`ivanju svakom pravilnom programu ( ili konstrukcijama programa ) smisla ( zna~enja ) programa ( neke re~enice ~iji smisao razumemo ).Smisao programa je iskazan na ekvivalentan na~in u nekom jeziku koji je razumljiv za ~oveka ( npr. prirodni jezik,jezik matemati~kih formula,operacija itd. ) . Drugi na~in definisanja ( semantike ) smisla programa sastoji se u definisanju apstraktne maine ( automata,ra~unara ).Tada se smisao programa izra`ava u dejstvima koja maina izvrava.U tom slu~aju apstraktna maina predstavlja interpretator programa na datom jeziku. Trei pristup definisanja semantike ( smisla ) programa vezan je za rad pervodioca datog jezika.Prevodioc raspoznaje pravilne programe i generie ekvivalentne mainske programe,~ime prevodilac sam definie smisao izvornog programa. U literaturi nailazimo na tri vrste semantika:operaciona,denotaciona i aksiomatska ( Agafonov ).Semantika se mo`e zadati semanti~kim mre`ama. U nastavku definiemo na formalan na~in gramatiku i ( programski ) jezik izveden na osnovu pravila gramatike.Ovaj pristup se koristi u Teoriji formalnih jezika i gramatika.U prethodnom odeljku definisali smo sintaksu ( programskog ) jezika polazei od kona~ne azbuke pomou gramati~kih metaformula ( pravila zamene ) i sintaksnih dijagrama kojima opisujemo strukturu svih pojmova ( konstrukcija ) u jeziku,polazei od osnovnog pojma koji nazivamo startni ( po~etni ) neterminal ( ili aksioma ). Startni neterminal programskih jezika jeste pojam program. def. 1: Gramatika G[S] jeste ure|ena ~etvorka G[S] = ( Vt , Vn , P , S ) gde su : S – startni neterminal ( osnovni pojam u jeziku ) ; Vt – kona~na azbuka terminalnih simbola ( ili terminala ) ; Vn – kona~na azbuka neterminalnih simbola ( ili neterminala ) ,pri ~emu je Vt ∩ Vn = ∅ i V= Vt ∪ Vn – azbuka terminalnih i neterminalnih simbola; P – kona~an skup pravila zamene ( metaformula,produkcija ) oblika (α,β), gde je α∈ Vn i β∈V*. Pravilo zamene ( gramati~ko ) pravilo mo`e se zadati u obliku α ::= β , α → β ili α = β ,u obliku sintaksnog dijagrama,grafa kona~nog automata ili ~ak u obliku strukture stabla ili mre`e.

Page 34: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

Ukoliko su pravila gramatike u vidu sintaksnog dijagrama ili grafa kona~nog automata govorimo o dijagramnim gramatikama. Ovako definisana gramatika se naziva konteksno-nezavisna ( slobodna ) gramatika i slu`i za definisanje ( izvo|enje,generisanje ) kontekstno-nezavisnih jezika. Gramati~ka pravila mogu biti jo optija,gde leva strana pravila α mo`e biti oblika ( u optem slu~aju ) α = θpϕ , gde su θ,ϕ∈V* a p∈ Vn (ili druga~je zapisano α∈V* VnV* , ili jo optije α∈V ). Gramatika jezika J0 = 0 1 | n ≥ 0 , jeste G0[S] = ( Vt , Vn , P , S ) , gde su Vt = 0 , 1 , Vn = S , P = S → 0S1 , S→λ . Ako je data gramatika,poka`imo kako definiemo jezik koji odgovara datoj gramatici.Postavlja se pitanje ta je pravilna re~enica ( ili program ) u tom jeziku. Definiemo najpre simbole ⇒ , ⇒+ i ⇒∗ . Mi neformalno piemo v→w ukoliko iz v mo`emo izvesti w,zamenjujui neterminalni simbol iz v sa odgovarajuom desnom stranom nekog pravila. def. 2 : Neka je G data gramatika.Ka`emo da se niska w neposredno izvodi iz v i ozna~avamo v⇒w,ukoliko za neke niske x i y mo`emo pisati v=xUy , w=xuy , gde je U→u ( U::=u ) pravilo gramatike G. Mi mo`emo tako|e rei da je w neposredno izvodiva iz v ili da se w neposredno izvodi ( redukuje ) na v. Sledei primer daje neposredne izvode na osnovu gramatike G0. S ⇒ 0S1 ⇒ 00S11 ⇒ 000S111 ⇒ 000111. def. 3 : Ka`emo da niska v generie nisku w ili da se niska w svodi ( redukuje ) na v ukoliko postoji niz neposrednih izvoda

v = u0 ⇒ u1 ⇒ u2 ⇒ . . . ⇒ un = w pri ~emu ako je n > 0 zapisujemo v ⇒+w , a ako je n≥0 tada piemo v ⇒∗w . def. 4 : Neka je G[S] gramatika.Niska x terminalnih i netreminalnih simbola naziva se sentencijalnom (re~eni~nom) formom , ukoliko je x izvodljiva iz po~etnog simbola S,tj. ukoliko va`i S ⇒∗x.Re~enicom nazivamo sentencijalnu formu koja se sastoji od terminalnih simbola. def. 5 : Jezik L( G[S] ) , definisan gramatikom G[S] jeste skup re~enica izvedenih iz startnog simbola gramatike,a simboli~ki mo`emo zapisati : L( G[S] ) = x | S ⇒∗ x ∧ x∈Vt * . Na taj na~in,jezik definisan datom gramatikom G[S] jeste podskup skupa svih terminalnih niski u azbuci Vt.Struktura re~enica jezika zadaje se gramatikom jezika. Jezik J0,definisan gramatikom G0, predstavlja sledei skup re~enica: J0 = λ , 01, 0011, . . . , 0 1 , . . . . Gramatika G0 opisuje beskona~an jezik,jer jezik J0 sadr`i beskona~no mnogo re~enica oblika 0 1 .Mo`e se pokazati da je jezik beskona~an,ukoliko je njegova

Page 35: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

gramatika rekurzivna.Gramatika je rekurzivna po neterminalu u ukoliko va`i u⇒+xUy ( x,y∈V* ).Gramati~ko pravilo je rekurzivno ukoliko je oblika u::=xUy. Nekoliko razli~itih gramatika mogu definisati ( generisati ) jedan isti jezik.U tom slu~aju govorimo o ekvivalentnim gramatikama.Tako gramatike G1 = Vt , S , A , B , P1 , S i G2 = Vt , S , Y , P2 , S , gde je Vt = a,b , P1 = S → AB , A → aA , A → λ , B → bB , B → λ , P2 = s → aS , S → a , S → b , S → bY , Y → b , Y → bY , S → λ ,

jesu ekvivalentne jer generiu isti jezik J1 = n ma b | n , m ≥ 0 .

Napomena: Gornja definicija gramatike i jezika bazirana je na gramati~kim pravilima koja su data Bekusovom notacijom ili sintaksnim dijagramima. Optije definicije i klasifikacije imamo u sledeem poglavlju. 2.6. KLASIFIKACIJA HOMSKOG GRAMATIKA I JEZIKA • FORMALNE GRAMATIKE I KLASIFIKACIJA HOMSKOG Homski je definisao ~etiri osnovne klase gramatika i na osnovu njih ~etiri klase odgovarajuih jezika (hijerarhija Homskog).On je osniva~ teorije formalnih jezika i gramatika. Gramatika G(S) jeste ure|ena ~etvorka (Vt,Vn,P,S),gde su:

1) Vt – azbuka terminalnih simbola (termainala) ; 2) Vn – azbuka neterminalnih simbola (neterminala) i V= Vt ∪Vn – azbuka (ili

re~nik) svih simbola,uz uslov Vt ∩Vn =∅ ; 3) P jeste (kona~an) skup (gramati~kih) pravila zamene oblika (α,β) , gde je

α∈V + ,β∈V* ; 4) S – po~etni simbol (aksioma) , s∈Vn .

Napomena: U monografiji [Aho-Ulman] imamo ograni~enje za α da sadr`i neterminal ,tj. α∈V* VnV*.Pravilo zamene (α,β) mo`emo zapisivati α→β ili α::=β ,ili sli~no. Fomalni jezik,definisan (izveden) gramatikom G,jeste skup treminalnih niski koje mo`emo izvesti iz S,na osnovu pravila zamene iz P. Razlike izme|u klasa gramatike zavise od oblika pravila zamene dopusitvih u skupu P. def.1 : Gramatika G (po Homskom) jeste gramatika tipa 0 ili gramatika sa fraznom strukturom , ukoliko pravila zamene imaju oblik (1) α::=β , gde je α∈V + i β∈V* (ili α→β) I leva i desna strana pravila zamene mogu biti niske simbola (terminalnih i neterminalnih), s tim to desna strana mo`e biti i prazna niska.To bi bio slu~aj najoptijih gramatika,pomou kojih definiemo i najiru klasu programskih jezika.Ako

Page 36: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

uvedemo ograni~enja na ovaj oblik pravila zamene dobiemo sledee tri klase gramatika i jezika. def. 2 : Gramatika G jeste gramatika tipa 1 ili kontekstno–zavisna (osetljiva) gramatika ako su pravila zamene oblika (2) xαy::=xβy , gde je α∈Vn , β∈V* , x,y∈V* (ili optije |α|≤|β| , α∈V*, β∈V* ). Termin kontekstno–zavisna odra`ava ~injenicu da se neterminal α mo`e zameniti niskom u samo u kontekstu x...y.Dalje ograni~enje na oblik pravila dovodi do pravila koje smo susretali u Bekusovoj notaciji. def. 3 : Gramatika G jeste gramatika tipa 2 ili kontekstno–slobodna (nezavisna) gramatika ako pravila zamene imaju oblik (3) α::=β , gde je α∈Vn i β∈V* . Ova klasa se naziva kontekstno–slobodna zato to neterminal α mo`emo zameniti sa u bez obzira na kontekst u kome se α nalazi.Pravila zamene mogu biti i oblika α::=λ . def. 4 : Gramatika G jeste gramatika tipa 3 ili regularna gramatika ako pravila zamene imaju oblik (4) α::=t ili α::=tβ , gde je α∈Vn ,β ∈Vn

,t∈ tV , n 0

, za n 0

AAA

λ == >

;

[(4’) α::=t ili α::=βt ] . Regularne gramatike igraju osnivnu ulogu u teoriji jezika i automata.Skup niski koje su izvedene regularnom gramatikom (tj. regularni jezik ) mo`e se generisati (ili raspoznavati) pomou maine koju nazivamo kona~nim automatom.Na taj na~in,regularne gramatike mo`emo definisati u terminima automata i nazivamo ih automatnim gramatikama (A–gramatikama) . O~igledno je da gramatke tipa i (i=3,2,1) jesu istovremeno i gramatike tipa j (j=i–1,...,0). Hijerarhiji gramatika odgovara hijerarhija jezika.Jezik,generisan gramatikom tipa i (i=0,1,2,3),naziva se jezikom tipa i .Tako imamo : jezike sa fraznom strukturom (tipa 0) , kontekstno–zavisne jezike (tipa 1) , kontekstno–slobodne jezike (tipa 2) i regularne jezike (tipa 3).Specijalno,regularne gramatike nazivamo i regularnim skupovima. Tako|e je jasno da klasa jezika i (i=0,1,2) sadr`i kao pravi podskup klasu jezika j vieg tipa (j=i+1,...,3).Obrnuto,postoje jezici tipa i (i=0,1,2) koji nisu tipa i+1. Poznato je da,ako su L1 i L2 regularni skupovi (jezici) tada su regularni i sledei skupovi : L1∪L2 , L1∩L2 , L1−L2 , L1⋅L2=xy|x∈L1,y∈L2 i L1 =λ∪L1∪L1 ∪L1 ∪... . Me|utim,uvodi se i pojam regularnog izraza kao jo jedan na~in definisanja regularnih jezika,odnosno regularnih skupova. U azbuci A,terminalnih i neterminalnih simbola,regularni izrazi jesu:

Page 37: ELEMENTI TEORIJE ALGORITAMA - pmf.ni.ac.rs · PDF file1. ELEMENTI TEORIJE ALGORITAMA 1.1. INTUITIVNA DEFINICIJA ALGORITMA . Algoritam jeste jedan od osnovnih pojmova matematike i ra~unarstva.Prve

1) simboli azbuke A (ili praza niska) ; Ako su P i Q regularni izrazi tada su regularni i izrazi :

2) P|Q (P ili Q) ; 3) PQ (P za kojim sledi Q) ; 4) P =λ|P|PP|... .

Mo`e se pokazati da gramatike tipa 3 generiu sve regularne izraze ( Aho , Ulman ,2 ) ,a da regularni izrazi generiu regularne skupove (jezike) . Primer 1 : Regularni izraz S(S|C)* ,gde je S slovo a C cifra opisuje identifikator i mo`e se upotrebiti za generisanje pravilnih identifikatora. Primer 2 : Jezik koji se sastoji od niski otvorenih “(‘ i zatvorenih “)” zagrada (i prazne niske) , koji ispunjava uslove 1. i 2. nije regularan jezik .Pokazati: Uslov 1’. Pri ~itanju niske sleva udesno broj zatvorenih zagrada nije vei od broja otvorenih zagrada. Uslov 2 . U svakoj zagradi jezika broj otvorenih jednak je broju zatvorenih zagrada. Gramatika ovog jezika je kontekstno–slobodna i ima oblik :

1. S ::= ( S ) 2. S ::= SS 3. S::= λ

Na kraju uka`imo na ekvivalenciju prethodno definisanih klasa jezika i njima odgovarajuih maina (automata). (Vidi Hopkroft–Ulman =27 Hoter) Mo`e se uo~iti,da univerzalnija (optija) klasa upotrebljene gramatike , omoguuje ire mogunosti definisanog jezika.Isto tako,to je optija klasa gramatike,to je potrebna slo`enija maina (ili automat,program) za raspoznavanje odgovarajueg jezika. Tako mo`emo rei da se regularni jezik mo`e raspoznati (ili definisati) pomou kona~nog automata (automata sa kona~no mnogo stanja). Za raspoznavanje kontekstno–slobodnog jezika potreban je kona~ni automat sa magacinskom memorijom ( sa stekom ). Kontekstno–zavisni jezik mo`e se raspoznati pomou Tjuringove maine sa kona~nom trakom (odn. linearnog automata sa ograni~enjima). Na kraju,jezik tipa 0(sa fraznom strukturom) mo`e se raspoznati pomou Tjuringove maine sa beskona~nom trakom.To su najoptiji (programski) jezici koji su ekvivalentni sa pojmom algoritma (Tjuringa) u prethodnom smislu.Drugim re~ima,svaki program na jeziku tipa 0 ekvivalentan je nekom algoritmu (Tjuringa).