Professional Documents
Culture Documents
SPA Usmeni
SPA Usmeni
SPA Usmeni
1.
2.
3.
4.
Sortiranje nizova:
1. Da su podaci na neki nacin numerisani, tj. da su smestani od prvog do n-tog podatka u niz,
listu,...
2. Da nam je dato totalno uredjenje prema kome zelimo da uredimo elemente. To moze biti
leksikografsko ili neko algebarsko uredjenje
Bubble sort: mali brojevi kao da isplivaju na vrh (na pocetak liste). Polazimo od kraja liste i
uporedjujemo dva elementa pomerajuci manji u levo. Potom manji element uporedimo sa
elementom sa njegove leve strane i ako je manji, zamenimo im mesta. Postupak nastavimo dok ne
dodjemo do krajnjeg levog elementa liste. Sada ponovo postupak ponavlamo sa desne strane dok ne
dodjemo do drugog elementa liste, cime na 2. poziciju izbija 2. najmanji element liste. Proces
nastavljamo sve dok ne sortiramo celu listu.
Problem: kroz listu se prolazi u suprodnom smeru (od poslednjeg ka prvom elementu) i nije
efikasan za velike nizove. Mada kroz listu mozemo krenuti i od prvog elementa ali onda najveci
pomeramo na kraj.
Napomena: kompleksnost algoritma je n^2.
37495261
while ( d > 0 && niz[d] < niz[d-1])
{
t = niz[d];
nizd] = niz[d-1];
niz[d-1] = t;
34795261
34795261
34579261
d--;
23457961
}
}
23456791
12345679
Zavadi pa vladaj: Tehnika razbijanja skupova na osnovne skupove, izvrsavanje operacija nad njima
i njihovo ponovno spajanje.
Najcesce greske:
1. brzi algoritmi su komplikovaniji za razumevanje impleentatori prihvataju sporiji a
jednostavniji algoritam
2. za neki problem koji se sao jednom pokrece utrosi se mnogo vremena za implementaciju I
debagiranje algoritma
Algoritam:
Slozenost kod algoritama se resava uvodjenjem detalja. Detalji se zanemaruju na nekom nivou,
kakko bi se broj koncepata sveo na razumnu meru.
Apstrakcije: opis problema gde su svesno uklonjeni detalji
(Razlicite apstrakcije uklanjaju I prikazuju razlicite stvari; pr. Autobuska mapa)
Konkretizacija: suprotno od apstrakcije. Oznacava detaljisanje.
(Implementacija apstrakcije je njena konkretizacija na nekom nivou)
pr. mapa grada mapa gradskog prevoza mapa nocnog prevoza
Podatak je nosilac informacije.
Informacija je protumaceni podatak.
1. Klasifikacija
Svi objekti istih osobina se klasifikuju u jedan tip kako bi se dodatno smanjio broj koncepata
tj kako bi se umanjila slozenost
Tip podataka je skup vrednosti I operacija nad njima
Prema nacinu implementacije, tipovi podataka se dele na:
1. Fizicki tipovi (tipovi podrzani od strane racunara: int, char, float, )
2. Jezicki (virtuelni) tipovi (podrska od strane jezika: nizovi, zapisi,...)
3. Apstraktni tipovi podataka (ATP)
(Prosirenje skupa tipov: student, radnik,...)
Prema slozenosti:
1. Prosti (primitivni tipovi)
2. Slozeni (strukturni) tipovi : strukture podataka
(Nastaju agregiranjem drugih tipova)
2. Agregacija: agregiranjem vise tipova u slozeniji tip. Objkti u strukturi mogu biti
razlicitog tipa.
3. Generalizacija I specifikacija
Program: opis algoritma koji u nekom programskom jeziku jednoznacno odredjuje sta racunar
treba da uradi.
Rekurzija:
1. Definisemo f-ju za pocetnu vrednost a (a=0 ili a=1)
2. Kada je f-ja definisana za k >= a, mozemo da je definisemo za k+1
pr. n!
pr. Fibonacijev niz
pr. Hanojska kula
BST stablo kod koga za svaki vor vai da se visina njegovog levog i desnog podstabla ne
razlikuje za vie od 1 se naziva visinski balansirano stablo ili AVL stablo
Binarno stablo kod koga je resen problem pretrazivanja I ima efikasnost O(log n)
Rotacije menjaju visinski debalans stabla (Rotacija na levo povecava debalans u korist levog
podstabla, rotacija na desno povecava debalans u korist levog podstabla)
Rotacije se koriste kod ubacivanja elemenata:
Kada se narusi balans I stvori se debalans na jednos strani, koristi se odgovarajuca
rotacija kako bi se balans uspostavio
Rotacija je uvek suprotna debalansu, kako bi se uspostavio balansirano
(ako je debalans levo koristi se desna rotacija I obrnuto)
Ubacivanje u AVL:
1. Ubacuje se cvor na isti nacin kao u BST
2. Za svaki cvor u stablu se proverava njegov debalans tj razlika visina levog I desnog podtabla
3. Ako postoji debalans onda se vrsi odgovarajuca rotacija oko cvora k. Cvor k je najblizi cvor
cvoru koji smo ubacili.
4. Ako je oznaka debalansa deteta vora k suprotna, onda se pre rotacije iz koraka 3, vri
suprotna rotacija oko tog deteta vora k.
(U ovom slucaju se vrse dve rotacije)
Strukture podataka: slozeni tipovi podataka koji nastaju objedinjavanjem vise prostih tipova
podataka. Elementi u strukturi mogu biti prosti i slozeni, a medjusobno mogu biti u nekoj relaciji.
S = (E,p)
E skup elemenata strukture
p binarna relacija kojom je E uredjen (kardinalnost koliko elemenata odgovara jednom elementu
u datoj strukturi)
Svaka struktura podataka se dobija kao kombinacija neke od sledecih strukura podataka.
1. Stack:
2. Queue = red:
Po nacinu implementacije:
1. Staticke strukture (Vektorske)
2. Dinamicke strukture (Ulancane strukture)
1. Staticke strukure:
Definicija liste:
1. Prazna lista je lista
2. Lista se sastoji od 1. elementa tj glave liste i liste ostalih elemenata tj repa liste
3. Svaka lista se dobija primenom pravila 1. i 2. konacan broj puta
Direktno sdresiranje:
Definicija: Za datu hes tabelu T sa m celija koja sadrzi n elemenata definisacemo faktor
opterecenja
a = n / m za tabelu T, koji predstavlja prosecan broj elemenata smestenih u jednu celiju.
Prosecan uspeh hesiranja zavisi od toga koliko uspesno f-ja razvrstava kljuceve u celije.
Pretpostavljamo da je jednaka verovatnoca da kljuc hesira u bilo koju od celija prema definiciji to
je jednostavno uniformno hesiranje.
Teorema:
U he tabeli u kojoj je kolizija izbegnuta formiranjem lanaca, za
bezuspeno traganje ocekivano vreme je O(1 + ), uz pretpostavku
da je u pitanju jednostavno, uniformno heiranje.
Metod deljivosti
Slikamo kljuc k na jedno od m mesta metodom ostatk apri deljenju h(k) = k mod m.
Posto zahteva samo prostu operaciju deljenja, hesiranje deljivoscu je prilicno brzo.
Kada biramo broj m, ne treba da biramo broj 2 (Kaze na slajdu: nije zgodno zbog stepena dvojke)
Metod mnozenja
Metod mnoenja za kreiranje he funkcija obavlja se u dva koraka.
Najpre mnoimo kljuc k konstantom A ranga 0 < A < 1 i izdvajamo mali deo od kA.
Zatim ovu vrednost mnoimo sa m i uzimamo najniu vrednost rezultata, tj. h(k) = [m(kA mod 1)]
Prednost metoda mnoenja je to vrednost za m nije kriticna (za razliku od deljenja ovde bas
praktikujemo da uzimamo stepene dvojke)
Univerzalno hesiranje
Osnovna ideja univerzalnog heiranja je da slucajno izabere he funkciju iz klase funkcija koja je
definisana na pocetku izvodjenja.
Ako zlonameran neprijatelj bira kljuceve koji treba da se heiraju nekom fiksiranom he funkcijom,
on bira n kljuceva koji heiraju u istu celiju za prosecno vreme Q(n). Proizvoljna fiksirana he
funkcija ovako se ponaa na najgori moguci nacin. Jedini efektivan nacin da se situacija popravi je
da se he funkcija izabere slucajno, potpuno nezavisno od kljuceva koji treba da se uskladite.
Ovakav pristup moe da proizvede dobar uspeh bez obzira na kljuceve koje je neprijatelj izabrao.
//Fali glupa definicija sa dokazom slajd 45-46
Teorema:
Neka je he funkcija h izabrana iz uniformne kolekcije he funkcija i neka se koristi za heiranje n
kljuceva u tabelu T velicine m, uz koricenje lanaca da se izbegne kolizija. Ako kljuc k nije u tabeli,
onda je ocekivana duina E[nh(k)] najvie . Ako je k u tabeli, ocekivana duina E[nh(k)] koja
sadri kljuc k je najvie 1 + .
Posledica: Koricenje univerzalnog heiranja u kome se kolizija izbegava pomoc u lanaca u tabeli
T sa m celija, ocekivano vreme je Q(n) za proizvoljan niz od n INSERT, SEARCH i DELETE
operacija koje sadre Q(m) INSERT operacija.
//Vidi slike sa prezentacija