ASP2/K1 2008
Prvi kolokvijum 2008. godine održan je 29. oktobra 2008.
1. zadatak
Postavka
(20p) Posmatra se niz celobrojnih ključeva, implementiran u vidu jednostruko ulančane liste. Ključevi se umeću u proizvoljnom redosledu, ali nije neophodno zadržati poredak. Potrebno je izabrati efikasnu metodu pretrage opisanog niza. Od interesa su sledeći parametri: brzina pretrage, brzina umetanja i brisanja ključa, vreme režije. Razmatraju se sledeći pristupi:
- Binarna pretraga
- Sekvencijalna pretraga sa transpozicijom ključeva
Komentarisati efikasnost ponuđenih metoda prema navedenim parametrima. Za metodu koja se proceni kao bolja skicirati postupak pretrage na jedan ključ.
Rešenje
- Za binarnu pretragu je neophodno čuvati uređenu listu, pa je i umetanje i brisanje ključa iste složenosti, kao i nalaženje ključa, što u slučaju ulančane liste nije dobra složenost (svodi se na sekvencijalnu pretragu).
- Sekvencijalna pretraga sa transpozicijom ključeva ima mnogo bolju složenost za datu strukturu - umetanje je O(1). Brisanje se svodi na nalaženje pa je složenost O(n), a pretraga je takođe O(n), sa mogućim ubrzanjem ukoliko se često pretražuju isti elementi.
2. zadatak
Postavka
(30p) U AVL stablo se redom umeću sledeći ključevi: 30, 12, 15, 14, 22, 35,18, 26, 32, 20, 33, 31, 24, 25, 28, 27. Nakon umetanja se redom brišu ključevi: 22, 15, 32. Prikazati izgled stabla nakon svake od navedenih izmena. Napomena: prilikom brisanja ključeva, menjati im mesta sa prethodnicima.
Rešenje
Ukoliko želite da zadatak proverite korak po korak, to možete uraditi na linku.
3. zadatak
Postavka
(20p) Skicirati i objasniti algoritam određivanja prethodnika zadatog čvora u stablu binarnog pretraživanja. Ilustrovati primerima različite slučajeve.
Rešenje
Ukoliko čvor ima levo podstablo, njegov prethodnik je najdešnji potomak njegovog levog sina, a ukoliko nema levo podstablo, njegov prethodnik je njegov najniži predak čiji je desni sin takođe njegov predak. U primeru ispod, prethodnik od 3 je 1, a prethodnik od 6 je 5.
4. zadatak
Postavka
(30p) Pitanja:
- Objasniti šta su samopodešavajuća stabla, princip na kojem su zasnovana i diskutovati performanse.
- Zašto se uvode 2-3 stabla? Objasniti njihovu organizaciju i glavne osobine.
- Definisati optimalno stablo binarnog pretraživanja i navesti osnovnu osobinu na kojoj se zasniva algoritam za njegovo određivanje.
Rešenje
- Samopodešavajuća stabla su stabla binarnog pretraživanja kod kojih se raspored ključeva zasniva na vremenskoj lokalnosti. To znači da se prilikom svake operacije (umetanje, brisanje i pretraga) traženi ključ, ili njemu najbliži (ukoliko je u pitanju neuspešna operacija) prebaci u koren nizom rotacija zig ili zag tipa. Složenost je O(n) u najgorem slučaju, jer se ne garantuje balansiranost stabla (nemaju nikakav kriterijum balansiranosti).
- [1]
- Optimalno stablo binarnog pretraživanja je ono stablo čija je cena najmanja, gde cenu definišemo kao: , gde su Pi verovatnoće pristupa ključevima Kn...Km, a Qi verovatnoće pristupa eksternim čvorovima. Osobina na kojoj se zasniva algoritam za nalaženje optimalnog stabla binarnog pretraživanja je da su sva podstabla optimalnog stabla pretraživanja takođe optimalna.
Napomene
- ↑ Ovo više nije gradivo K1.