Kako se definiu dimenzioni broj primjerka n, vremenska slozenost
T(n) i prostorna slozenost S(n) jednog programa, u sluaju Tjuringove maine? Razmotrimo jednu odreenu tablicu ili program Tjur maine. Definiimo sloenost tog programa. U trenutku putanja u rad maine, na traci je zapisan ulazni podatak. Def. najprije veliinu ili dimenzioni broj n tog ulaznog podatka. Smatramo upotrebljenim sva polja koja sadre znak razliit od blanko. Smatramo upotrebljenim i pocetno radno polje. Polje se smatra upotrebljenim i kada desno od njega ima bar jedno upotrebljeno polje. Ukupan broj upotrebljenih polja i jeste n. Vidimo da ima vie poetnih pozicija ili vie primjeraka zadatka kojima odgovara jedan te isti dimenzioni broj n. Neka maina izbroji svoje. Mi izbrojimo koliko je koraka ili taktova izvela. Uoimo maksimum broja koraka po svim ulazima veliine n. Uoenu brojnu vrijednost oznaimo sa T(n) i nazovimo je vremenskom sloenou. Posmatramo za razne n, pa imamo funkciju vremenske sloenosti n- >T(n) odreenog programa. Recimo, ako je poetna pozicija ]a1a0a0a0a0 onda je n=4. Postoje i druge poetne pozicije kojima odgovara n=4. Neka broj izvrenih koraka za razne poetne pozicije sa n=4 iznosi jednom 20, jednom 18, jednom 14 i sl. Tada e biti T(4) = 20. Dakle, ako postoji bar jedan ulaz veliine n takav da maina sa tim ulaznim podatkom radi vjeno, onda se za to n stavlja da je T(n) = +. Ako Tjuringova maina ija se sloenost razmatra slui za raunanje f-je od jedne promjenljive onda je njen ulazni podatak neka rije . Formalna definicija. Neka niz( ) bude niz konfiguracija maine u sluaju da je u poetnoj poziciji upisana na kanonski nain rije Neka je l(niz( )) bude duina niza. Imamo: | | ( ) Osim vremenske sloenosti T, definise se i prostorna sloenost S jednog konkretnog programa. Za poetnu poziciju n mi izbrojimo koliko je polja upotrebljeno tokom rada maine odnosno koliko se najvie tokom rada maine glava trake pomjerila udesno. Maksimalni broj upotrebljenih polja, po svim ulazima veliine n oznaimo sa S(n). Ako postoji bar jedan ulaz velicine n takav da se glava neogranieno pomijera udesno onda se za to n stavlja da je S(n)= +.
2. Kako se definiu obim ulaza n, vremenska sloenost T(n) i prostorna
sloenost S(n) odreenog programa za raunar? Obim ulaza n je broj bitova potrebnih da se izraze ili da se zapiu ulazni podaci programa. Za definisanje vremenskog troka gleda se broj izvrenih taktova tokom rada programa. Dakle T(n) je maksimum broja izvrenih taktova, po svim ulazima veliine n. Za definisanje prostornih zahtjeva, gleda se broj bajta ili broj memorijskih rijei potrebnih za podatke (potrebnih za ulazne podatke, meurezultate i rezultate). 3. ta su to dobar i rav algoritam (efikasan i neefikasan)? ta je to lak, odnosno teak zadatak? Navedite primjere. Ako je funkcija T = T(n) polinom onda se kae da je algoritam efikasan. Na primjer, T(n) = n2. Isto se kae i u sluaju da se funkcija T povinuje nekom polinomu, tj. u sluaju da postoji polinom p=p(n) takav da je T(n)p(n), za svako n. Nasuprot tome, razmotrimo algoritam cija je funkcija slozenosti takva da se ne povinuje nikojem polinomu (takva da ne postoji polinom kome bi se ta funkcija povinovala). Za takav polinom se kae da je rav ili neefikasan. Na primjer, T(n) = 2n. Za rjeavanje jednog zadatka, razni programeri predloie razne programe, ija je sloenost razliita. Ako je predloeni algoritam neefikasan onda to samo po sebi jo uvijek ne znai da je i sami zadatak teak. Prirodno je za sloenost zadatka proglasiti sloenost najboljeg (najefikasnijeg) algoritma od svih moguih algoritama koji slue za njegovo rjeavanje. Za zadatak se kae da je lak ili da je lako rjeiv ako za njega postoji bar jedan algoritam ija je sloenost polinomska. U suprotnom sluaju za zadatak se kae da je teak ili da je teko rjeiv ili da je eng. intractable. Primjeri: 1) Da lie diofantska jednaina ima cjelobrojno rjeenje (nerjeiv); 2) Zadatak o poluproirenom regularnom izrazu, da li odgovarajui jezik ima prazan komplement (teak) 3) Zadatak o podjeli ili o particiji ili o kameniima. Ima nekoliko kamenia ije su teine cijeli brojevi. Mogu li se rasporediti na dva tasa vage tako da onda vaga bude u ravnotei (algoritamski rjeiv, ne zna se teina). 4) Zadatak o Ojlerovoj marruti (lak).
4. Zadatak o podjeli (o particiji) i kako se definie dimenzioni broj
primjerka n? Kojoj klasi pripada taj zadatak? Zadatak o podjeli ili o particiji ili o kameniima. Ima nekoliko kamenia ije su teine cijeli brojevi. Mogu li se rasporediti na dva tasa vage tako da onda vaga bude u ravnotei. Ili: mogu li se dati prirodni brojevi x1,x2,...,xn podijeliti u dvije grupe tako da zbir svih lanova prve grupe bude jednak zbiru svih lanova druge grupe. Moe da se rijei pregledanjem svih mogunosti. Upravo, svakoj podjeli odgovara jedan podskup skupa od n lanova. Tako da ima 2 n mogunosti za prvu grupu odnosno za podjelu. Za svaku mogunost, ispitati da li zadovoljava. Predloeno rjeenje je neefikasno, odnosno, ono ima eksponencijalnu sloenost. Ilustrovaemo pojam primjerka zadatka i pojam dimenzionog broja ili veliine primjerka n, na primjeru zadatka o podjeli. Jedan mogui primjerak je: zadata su tri prirodna broja, i to upravo x1=10, x2=14 i x3=4. Za ovaj primjerak, odgovor na postavljleno pitanje je da. Mogui primjerak: 1,1,1,1,1,1,2,2,2,2. Odgovor je da. Mogui primjerak: 11,13,17,100. Odgovor je ne.
5. Grubi opis maine RAM: dvije trake, memorija, registri AC i LC
RAM je maina sa sluajnim pristupom, tj. maina sa proizvoljnim pristupom registrima. RAM rauna sa cijelim brojevima ija veliina nije ograniena. Program po kome se rauna ne mijenja se tokom svog izvravanja, tako da se moe rei da se program nalazi smjeten van memorije. Sastavljena je od programa, memorije i dvije trake ulazne i izlazne. Memorija se sastoji od neogranienog broja registara (lokacija). Pojedini registar moe da uva proizvoljno veliki cio broj. Ulazna traka je neograniena i ima svoju glavu, izlazna traka takoe. Ulazna traka je niz kvadrata, svaki kvadrat sadri jedan cio broj. Kada se proita vrijednost iz jednog kvadrata onda se glava trake pomjeri za jedno mjesto udesno. Izlazna traka je takoe podijeljena na kvadrate, koji su u poetku svi prazni. Kada se u jedan kvadrat upie neka vrijednost onda se glava trake pomjeri za jedno mjesto udesno. Maina RAM
modelira kompjuter koji je jedno-akumulatorski i u kome nije dozvoljeno da
program mijenja samog sebe. Kada se kae jedno-akumulatorski kompjuter onda to znai da postoji jedan poseban registar (akumulator) koji se koristi kada treba da se izvede neka aritmetika operacija. Budui da nije dozvoljeno da naredbe (djelovanjem programa) budu izmijenjene, to se obino kae da program za RAM nije smjeten u memoriji. Raunanja se obavljaju u poetnom registru r0. Za r0 se kae da je akumulator, skraeno ac. AC moe da sadri ma koji cio broj (kao uostalom i svaki drugi memorijski registar). Neka se program P izvrava. elimo da sagledamo trenutno stanje njegovog izvravanja. To stanje odreuju dvije veliine c i LC. Za c elimo da sagledamo trenutni sadraj svih registara. Neka c(i) oznaava sadraj i-tog memorijskog registra (registra ri, registra i); tako da je i0 i c(i) D. Tako da je c preslikavanje, c:N0 D. Za c se kae da je memory map (memorijska karta). LC je skracenica za location counter (ukaziva poloaja, programski broja). LC odreuje koja naredba se sljedea izvrava.
6. Model RAM: tri vrste operanda ( =i, i i *i) i vrijednosti operanada
v(a). Argument operacije moe da bude zadat na jedan od tri naina. 1)Neposredno. 2)Adresom registra u kome se uva argument. 3)Adresom registra u kome se uva adresa registra koji sadri argument: adresa adrese. Drugim rijeima, operand u naredbi moe da bude =i ili i ili *i. 1) =i znai prosto i; ovdje je i cio broj. 2) i upuuje na i-ti registar tj. i znai sadraj i-tog registra; ovdje je i 0. 3) *i znai sadraj j-tog registra, gdje je j cio broj koji se uva u i-tom registru; ovdje je i U oznaci v(a), a je operand, v(a) je vrijednost operanda a. Znamo da a moe da bude =i ili i ili *i. Po definiciji je i 0. Ako je i 0 onda se maina zaustavlja.
7. 12 vrsta naredbi i njihov smisao
8. Definisati vremensku sloenost programa za RAM po kriterijumu
uniformne cijene, odnosno po kriterijumu logaritamske cijene Vremenska sloenost programa za RAM je jedna funkcija f: N N. Brojna vrijednost f(n) jednaka je maksimumu, preko svih ulaza velicine n, zbira vremena potroenih od svake naredbe koja je izvrena. Vremenska sloenost oekivanog sluaja jednaka je srednjoj vrijednosti, preko svih ulaza veliine n, tog istog zbira. Ako se umjesto vrijeme koje se potroi za svaku izvrenu naredbu kae prostor koji se upotrebi za svaki odnosni registar onda se dobija definicija prostorne sloenosti programa za RAM. U sluaju kriterijuma uniformne cijene imamo sljedee. 1) Izvravanje jedne bilo koje naredbe za RAM zahtijeva ili potroi jednu vremensku jedinicu (jednu mili-sekundu). 2) Svaki registar zahtijeva jednu prostornu jedinicu. Drugi kriterijum je kriterijum logaritamske cijene. Za pripremu, definie se tzv. cjelobrojna logaritamska funkcija, u oznaci l, gdje je l: D D. Sljedea relacija definie tu funkciju:
9. Kako se definie veliina primjerka zadatka?
10. Model RASP
11.Apstrakcije maine RAM: pravolinijski programi
12.Apstrakcije maine RAM: bit po bit
13. Apstrakcije maine RAM: drveta odluivanja
14. Primjer programa za model M: rad sa nizom
15. Primjer programa za model M: rad sa potprogramom
16. ta je to bazna adresa potprograma i ta je to relokacija potprograma?