You are on page 1of 7

Algoritmi i strukture podataka ispitna pitanja

1. ta podrazumijevamo pod tipom podatka?


Pod tipom podataka podrazumjeva se skup nekih vrijednosti zajedno sa skupom operacija koje su dozvoljene nad tim vrijednostima. Definisanje logickog modela podataka i njegova realizacija na racunaru obuhvata sledece elemente: nacin na koji su entiteti problema modelirani kao apstraktni matematicki objekti; skup dozvoljenih operacija koji je definisan nad ovim matematickimobjektima; nacin na koji su ovi matematicki objekti predstavljeni u memorijiracunara; algoritme koji se koriste za programsku realizaciju dozvoljenih operacija nad ovim matematickim objektima

2. Koje elemente obuhvata definisanje logikog modela podataka i njegova realizacija na raunaru?
(1) (2) (3) (4)

3. ta podrazumijevamo pod raunarskim problemom?


Pod (racunarskim) problemom se podrazumeva zadatak koji treba izvriti na racunaru. Takav zadatak se opisuje preciznom specifikacijom eljenog ulazno-izlaznog odnosa kojim se izraava priroda problema.

4. Pojam i osobine algoritma


Algoritam je tacno definisana racunarska procedura koja pretpostavlja neke podatke kao ulaz i proizvodi neke podatke kao izlaz. Ovo prvenstveno znaci da se algoritam sastoji od jasne i nedvosmislene specifikacije niza koraka koji se mogu mehanicki izvriti na racunaru

5. Koja tri koraka obuhvata postupak dobijanja dobrog algoritma?


Algoritam mora biti postupak koji se sastoji od kona cno mnogo koraka koji se mogu izvriti na racunaru. Algoritam mora biti postupak po kojem je nedvosmisleno odredjen svaki sledeci korak za izvravanje. Algoritam mora biti ispravan (korektan) postupak. To prvenstveno zna ci da se za svaku instancu problema na ulazu algoritma mora dobiti njeno odgovarajuce reenje na izlazu algoritma. Ali to obuhvata i uslov, koji cemo podrazumevati da je ispunjen, da za ulaz algoritma koji nije instanca problema, izlaz algoritma nije bitan, ali se izvravanje algoritma mora zavriti u svakom slu caju.

6. Dizajn algoritma
Kreativni proces pisanja algoritama kojim se dolazi do nedvosmislenih instrukcija od kojih se sastoji jedan algoritam naziva se dizajn algoritma.

7. Analiza algoritma
Odredjivanje velicine racunarskih resursa koje neki algoritam koristi tokom izvravanja se naziva analiza algoritma. Dva najvrijednija resursa su vrijeme i memorija

8. Iterativni algoritmi primjer


Iterativni algoritmi su algoritmi koji ne pozivaju samog sebe ved se oslanjaju na konstrukte poput petlji i dodatne strukture podataka kao to je stog ili red da bi rijeili problem // Ulaz: realan broj x, ceo broj n 0 // Izlaz: broj xn algorithm power1(x, n) y = 1; for i = 1 to n do y = x * y; return y;

9. Rekurzivni algoritmi primjer rekurzije


Rekurzivni algoritam je algoritam koji poziva samog sebe sve dok se ne postigne odreen uslov. // Ulaz: realan broj x, ceo broj n 0 // Izlaz: broj xn algorithm power2(x, n) if (n == 0) return 1; else return x * power2(x,n-1);

10. Sortiranje niza bubble sort (objasniti na proizvoljnom primjeru)


Bubble sort je jednostavan algoritam za sortiranje koji radi tako to vie puta prolazi kroz niz koji treba da bude sortiran i uporeuje se svaki par susednih elemenata. Elementi zamenjuju mesta ako su napisani pogresnim redom. Prolaz kroz niz se ponavlja se dok se ne izvre sve potrebne zamene, to ukazuje da je niz sortiran.

11. Sortiranje niza insertion sort (objasniti na proizvoljnom primjeru)


Ovaj metod se sastoji od n iteracija, pri cemu se u istoj iteraciji umece element ai na njegovo pravo mesto izmedju prvih i 1 najmanjih elemenata prethodno vec uredjenih u rastucem redosledu.

12. Sortiranje niza selection sort (objasniti na proizvoljnom primjeru)


Algoritam radi tako to prolazi kroz niz i trai najmanji element. Kada nae najmanji element zamijeni taj element sa poetnim. Dalje se posmatra ostatak niza bez poetnog elementa i ponavlja se isti postupak.

13. Pretraga niza


Algoritam sekvencijalne pretrage se sastoji u tome da se redom provjerava svaki element niza A sve dok se ne doe do kraja niza ili se ne doe do elementa ija je vrijednost jednaka x. SeqSearch(A,x) j = 0; i = 1; 0) do if A(i) = x then j = i; i = i + 1; return j;

14. Asimptotsko vrijeme izvravanja


Za vreme izvravanja nekog algoritma uzimamo jednostavnu funkciju koja za velike vrednosti njenog argumenta najbolje aproksimira tacnu funkciju vremena izvravanja tog algoritma. To priblino vreme izvravanja se naziva asimptotsko vreme izvravanja.

15. Jednostruko povezana lista osobine i kreiranje prazne liste


Jednostruko povezane liste podravaju pretraivanje elemenata samo u jednom smjeru. Kod implementacija liste pomodu pokazivaa i dinamike memorije, svaki element sadri po tano jedan pokaziva koji pokazuje na sljededi element u listi. Najede se koriste u situacijama kada je jednosmjerno pretraivanje dovoljno za dati problem. Iako ograniene jednim smjerom, one imaju utedu od po jednog pokazivaa po elementu to, u sluajevima sa velikim brojem elemenata, moe biti znaajno.

16. Dodavnje elemenata u jednostruko povezanu listu


Ako je dat pokaziva na element x i pokaziva na element p liste L, sljededi algoritam dodaje novi element x u L iza elementa p. Vidimo da element koji je bio sljedbenik elementa p postaje sljedbenik elementa x, a element x postaje novi sljedbenik elementa p. ListInsert(L,x,p) next(x) = next(p); next(p) = x; return; Sljededi algoritam dodaje neki element na poetak liste: ListHeadInsert(L, x) next(x) = head(L); head(L) = x; return;

17. Uklanjanje elemenata iz jednostruko povezane liste


Sljededa dva algoritma pokazuju kako se brie element x liste L koji se nalazi iza elementa p i kako se brie poetni element liste. Uklanjanjem elementa x, element koji je bio sljedbenik elementa x postaje novi sljedbenik elemnta p. Procedura za uklanjanje elemnta iz liste vrada pokaziva na u klonjeni element kako bi se oslobodili resursi koje taj elemnt zauzima. ListDelete(L,p) x = next(p) next(p) = next(x) return x; ListHeadDelete(L) x = head(L); head(L) = next(x); return x;

18. Pretraga jednostruko povezane liste


Algoritam za pretragu jednostruko povezane liste pronalazi prvi element sa kljuem k u listi i vrada pokaziva na taj element. Ako nije pronaen element sa kljuem k u listi vrada se pokaziva NIL.

19. Dvostruko povezana lista osobine


Dvostruko povezanu listu prelazimo u oba smjera. U dvostruko povezanoj listi svaki element ima ima polje kljua key i dva pokazivaka polja prev i next. Za element x prev(x) pokazuje na njegovog prethodnika, a next(x) na njegovog sljedbenika. Ako je prev(x)=NIL, x nema prethodnika i to je prvi element liste. Ako je L dvostruko povezana lista head(L) pokazuje na glavu liste.

20. Dodavanje elemenata u dvostruko povezanu listu


Za razliku od jednostruko povezane liste u kojoj smo novi element x mogli dodti samo iza elementa p, u dvostruko povezanoj listi novi element x moemo dodati i iza i ispred elementa p. Dodavanje elementa x iza elementa p u listu L ListInsertAfter(L,p,x) prew(x) = p; next(x) = next(p); if next(p)=NIL then Last(L) = x else prev(next(p)) = x; next(p) = x; return; Dodavanje elementa x ispred elementa p u listu L ListInsertBefore(L, x, p) prev(x) = prev(p); next(x) = p; if prev(p) = NIL then head(L) = x else next(prev(p))=x; prev(p) = x; return; Dodavanje elementa na poetak liste prethodno provjeravajuci da li je lista prazna ListInsertBeginning(L, x) if head(L) = NIL head(L) = x last(L) = x prev(x) = NIL next(x) = NIL else ListInsertBefore(L, head(L), x); return;

21. Uklanjanje elemenata iz dvostruko povezane liste


ListDelete(L ,x) if prev(x) = NIL head(L) = next(x) else next(prev(x))=next(x); if next(x) = NIL last(L) = prev(x) else prev(next(x))=prev(x)

22. Stack
Stack je specijalna vrsta liste kod koje se dodavanje i uklanjanje elemenata vre na jednom kraju koje se naziva vrh. Poredak elemenata po kojem se oni uklanjaju sa steka je obrnut poretku po kojem su ti elementi dodati na stek.

23. Red za ekanje QUEUE


Red za cekanje (engl. queue) je druga specijalna vrsta povezane liste kod koje se elementi dodaju na jednom kraju liste i uklanjaju sa drugog kraja liste. Mesto na kojem se elementi dodaju logicki predstavlja kraj reda, a mesto gde se elementi dodaju oznacava pocetak reda.

24. Korjenska stabla osnovne definicije


Korensko stablo se sastoji od skupa elemenata koji se nazivaju cvorovi, kao i skupa uredjenih parova razlicitih cvorova povezanih linijama koje se nazivaju grane.

25. Binarna stabla osobine


Binarno stablo je stablo u kojem nijedan vor nema vie od dvoje djece. Ta djeca se zovu lijevo i desno dijete. Drugim rijeima, binarno stablo je stablo u kojem svaki vor ili nema djecu, ili ima lijevo dijete, ili ima desno dijete, ili ima i lijevo i desno dijete. Binarno stablo je povezana struktura podataka u kojoj je svaki vor predstavljen jednim objektom koji ima polje key, koje sadri klju vora, kao i dva pokazivaka polja left i right, koja pokazuju na objekte koji predstavljaju lijevo i desno dijete vora.

26. Binarna stabla pretrage osobine


Binarno stablo pretrage (BSP) je binarno stablo u kojem svaki vor x ima osobinu da su svi vorovi u lijevom podstablu vora x imaju kljueve koji su manji od kljua vora x , a svi vorovi u desnom podstablu vora x imaju kljueve koji su vedi od kljua vora x.

27. Binarba stabla pretrage algoritam za traenje vora

28. Dodavanje vora u binarno stablo pretrage (objasniti na proizvoljnom primjeru)


Ako je T prazno stablo , ono postaje stablo koje se sastoji samo od novog vora x. Ako stablo T nije prazno , a njegov korijen ima klju jednak kljuu vora x , tada se x ved nalazi u stablu i u tom sluaju ne dodajemo duplikat. Ako stablo T nije prazno i njegov korijen nema isti klju kao vor x, vor x dodajemo u lijevo podstablo korijena ako je njegov klju manji od kljua korijena, odnosno u desno podstablo ako je njegov klju vedi od kljua korijena. BSPInsert(t,x) if t = NIL then t = x; else if key(x) < key(t) then left (t) = BSPInsert(lef(t), x) else if key(x) > key(t) then right(t) = BSPInsert(right(t),x); else return t;

29. Uklanjanje vora iz binarnog stabla pretrage (objasniti na proizvoljnom primjeru)


Treba da uklonimo vor x iz stabla T. Posmatrademo sluajeve kada je vor x list stabla i kada se vor x nalazi u unutranjosti stabla. U sluaju da je vor x list stabla, moemo jednostavno ukloniti taj list.

Ako je x unutranji vor stabla razlikujemo dva sluaja. Ako vor x ima samo jedno dijete, vor x moemo zamijeniti tim djetetom.

U drugom sluaju , ako vor x ima dvoje djece, naemo najmanji vor y u desnom podstablu vora x i zamjenjujemo vor x vorom y i uklanjamo vor y iz desnog podstabla.

30. B stabla osobine


B drvo reda n +1 je struktura sa slijededim karakteristikama: 1. Svaki vor u B-drvetu ima najvie n kljueva i n+1 djece. 2. Svaki vor (osim korijena) ima najmanje n div 2 kljueva. 3. vor sa k djece sadri k-1 klju

31. Ubacivanje podataka u B stabla (objasniti na proizvoljnom primjeru)


Uvijek se ubacivanje novog podatka vri u list. Prvo se prona dje stranica u kojoj bi, da postoji, taj podatak nalazio. U sluaju da je broj podataka manji od n tada se jednostavno ubacivanje vri tako da se novi podatak ubaci u list na mjesto gdje po vrijednosti kljua pripada. Primjer: Ubacimo u prethodno drvo podatak 58. Vidimo da klju 58 moemo ubaciti samo u list D izme dju kljueva 55 i 60.

U sluaju da je broj podataka jednak n (vor je pun) tada se vri djeljenje vora na dva vora a srednji podatak se ubacuje u vor na viem nivou. Ubacimo u prethodno dobijeno stablo na slici klju 62. On bi po pravilu trebalo da dodje u vor D. No medjutim, vor D je pun pa dolazi do njegovog cijepanja na dva vora D1 i D2, a srednji klju 60 prelazi u korijen A.

32. Uklanjanje podataka iz B stabla (objasniti na proizvoljnom primjeru)


Mogude je nekoliko sluajeva: 1. Brie se klju iz lista a pri tome broj vorova u listu ostaje vedi ili jednak n div 2, klju se jednostavno izbrie iz lista i to je najjednostavniji sluaj. 2. Brie se klju iz lista ali u listu ostaje manje n div 2 kljueva. U ovom sluaju ispitu jemo lijevog i desnog brata. Ako brat sadri vie od n div 2 kljueva tada se klju iz vora oca koji razdvaja dva lista brata spusti u vor iz koga se prethodno izbaci eljeni klju, a klju brata (prvi ako uzimamo klju iz desnog brata, zadnji ako uzimamo klju iz lijevog brata) se prebacuje u vor oca. Brie se klju iz vora koji nije list. Tada se iz lijevog postabla uzima najvedi klju ili se iz desnog podstabla uzima najmanji klu i prenosi se u vor iz kojeg se brie klju. Nakon toga se ispituje da li je popunjenost vora lista iz kojeg je uzet klu manji od n div 2 i ako jeste vri se spajanje ili prelijevanje podataka.

You might also like