Algoritmi i strukture podataka – I kolokvijum (NE ZABORAVITE DA OKRENETE STRANU!!!)

1. Vreme izvršavanja T(n) nekog algoritma zadovoljava za n>1 rekurentnu relaciju T(n)= 3*T([n/4]) + n. Odredite asimptotsko ponašanje (ma kojom metodom) ako T(1)=1 .

RESENJE:

Teorema: Asimpototsko ponašanje niza T(n), rešenja difrencne jednačine

T(n)=a T(n/b) + c nk, a, b, c, k >=0, b !=0 i zadato je T(1) dato je sa:

c=1, k=1, b=4, a=3, 3 < 4 => T(n)=O(n)

2. Na dati niz 1,4,3,7,6,5,8,2 primeniti algoritam brzog sortiranja (quicksort). Rešenje prikazati stanjem niza posle svakog koraka algoritma. Dovoljno je u svakoj vrsti prikazati samo brojeve sa kojima se trenutno radi.

RESENJE:

1 4 3 7 6 5 8 2 pivot: 6

1 4 3 7 6 5 8 2 trampa: 7,2

1 4 3 2 6 5 8 7

1 4 3 2 5 6 8 7

1 4 3 2 5 6 8 7 pivot: 3, 8

1 2 3 4 5 6 7 8, trampa: 4,2 8,7

KRAJ











3. Nacrtati binarno stablo za koje INORDER obilazak daje zstoipd, a PREORDER obilazak iosztpd. Ključ čvora je slovo engleske abecede.



4. Konstruisati algoritam ubaci(Q,x) koji ubacuje element x u prioritetni red Q. Kolika je vremenska složenost algoritama ako se prioritetni red realizuje implicitno predstavljenim binarnim hipom? Smatrati da je u hipu ključ svakog cvora manji od ključeva sinova.

typedef struct pq_elem { /* element prioritetnog reda */

int key; /* ključ za postavljanje prioriteta */

void *val; /* vrednost elementa (bilo šta) */

} elemT;



typedef struct pq {

int kapacitet; /* kapacitet prioritetnog reda*/

int N; /* broj umetnutih elemenata */

elemT *elementi; /* niz elemenata reda */

} PQueue, *PQUEUE;



Ako želimo dodati element u prioritetni red možemo ga dodati na kraj niza. To je ekvivalentno dodavanju krajnjeg desnog lista u stablu. Ta operacija ima za

posledicu da se N uveća za jedan, ali i da možda stablo ne zadovoljava pravilo hipa. Da bi se zadovoljilo pravilo hipa koristi se postupak opisan u sledećem algoritmu:

Algoritam: Umetanje

1. Element iza krajnjeg elementa niza se tretira kao prazan (to je sledeći krajnji desni list stabla). Podrazumeva se da je kapacitet niza veći od broja elemenata u nizu.

2. Ako je ključ roditelja praznog čvora manji od ključa elementa x, tada se element x

upisuje u prazni čvor. Time je postupak završen.

3. Ako je ključ roditelja praznog čvora veći od ključa elementa x, tada se element roditelja

kopira u prazni čvor, a čvor u kojem je bio roditelj se uzima kao prazni čvor. Postupak

se ponavlja korakom 2.

/* Funkcija insert() umeće element u red
* Argumenti: pQ - red
* x - element koji se umeće
*/
void insert(PQUEUE pQ, elemT x)
{
int i;
assert(pQ);
/* proveri kapacitet reda i povećaj ga ako je N>=kapacitet*/
if ( pQ->N >= pQ->kapacitet-1 ) {
pQ->kapacitet *= 2; /*udvostruci kapacitet hipa*/
pQ->elementi = (elemT *) realloc(pQ->elementi,sizeof(elemT)*pQ->kapacitet);
if(!pQ->elementi) exit(1);
}

/* umetni element x i povećaj N */
i = pQ->N++;
while (i) {
int otac = (i-1)/2;
if (x.key > pQ->elementi[otac].key) break; /*pravilo 2 algoritma */
pQ->elementi[i].key = pQ->elementi[otac].key;
i = otac;
}
pQ->elementi[i] = x;
}










5. Dat je usmeren graf G=(V,E), na slici tako da V={A, B, C, D, E, F, G}. Za početni poziv DFS(A) (DFS-pretraga grafa u dubinu), konstruisati odgovarajuce DFS stablo. Navedite grane stabla, kao i direktne, povratne i poprečne grane. Pretpostavlja se da su grane (v,w) koje izlaze iz čvora v uređene leksikografski prema čvorovima w. OKRENITE!!!



Grane stabla su: AB, BF, BE, FC, FG, ED

Direktne: AD

POPRECNE: GC, FE

Povratne: DB


6. Zaokružite slovo ispred tačnog tvrđenja. Netačna tvrđenja obrazložiti (u zavisnosti od tvrđenja: primerom, tačnim tvrđenjem,...).

A Poredak posecivanja cvorova grafa BFS algoritmom je tipican primer FIFO (First In First Out) discipline pristupa.

B Matrica povezanosti kojom se predstavlja neusmereni graf simetrična je u odnosu na sporednu dijagonalu.

TACNO JE: GLAVNU DIJAGONALU

C Uklanjanje elementa sa steka obavlja se po FILO principu (First In Last Out).

D log n!= Ω(n!)

TACNO JE log n!= Ω(n log n), videti poglavlje o donjoj granici slozenosti sortiranja

E Usmereni graf ima ciklus ako i samo ako u odnosu na DFS stablo grafa nema povratnu granu

TACNO: moze da ima

F Donja granica složenosti algoritama za sortiranje zasnovanih na upoređivanju elemenata je Ω(n)

TACNO Ω(n log n)

G Heap sort u početnoj fazi generisanja hipa zapravo generiše kompletno binarno stablo pretrage.

TACNO: kompletno ili delimicno kompletno binarno stablo, hip

I Umetanje i uklanjanje elementa iz reda se obavlja sa istog pristupnog kraja, tj. vrha reda.

TACNO: skida se sa kraja reda

J Na osnovu izlaza iz PREORDER i POSTORDER algoritma obilaska binarnog stabla može se na jedinstven način nacrtati to stablo

TACNO: inorder i preorder, inorder i postorder




BODOVANJE 7 + 8 + 8 + 8 + 9 + 10