1 / 18

Dvojiška in iskalna drevesa

Dvojiška in iskalna drevesa. Programiranje 1 Univerza v Ljubljani , FMF, 2013. Dvojiško drevo. Sestavljeno iz vozlišč , vsako vozlišče ima lahko vsebino , levega in/ ali desnega sina ( t.j. določen vrstni red sinov ! ) Dvojiško drevo je: p razno , ali

dean
Télécharger la présentation

Dvojiška in iskalna drevesa

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dvojiška in iskalnadrevesa Programiranje 1 Univerza v Ljubljani, FMF, 2013

  2. Dvojiškodrevo • Sestavljenoizvozlišč, vsakovozliščeimalahkovsebino, levega in/alidesnegasina(t.j.določenvrstni red sinov!) • Dvojiškodrevo je: • prazno, ali • sestavljenoizvozlišča (korena) z nekovsebino, pričemerstalevi in desni sin spetdvojiškidrevesi (poddrevesi). • Pazi: rekurzivnadefinicijapodatkovnestrukture!

  3. Primeri Opomba: praznihnavideznihvozlišč ne bomorisali 2 3 1 5 1 8 6 5 7 1 2 3 4

  4. Iskalnodvojiškodrevo • Dvojiškodrevo z dodatnostrukturo • Vozliščavsebujejopodatkeizlinearnourejenemnožice (npr. celaštevila) • Iskalnodvojiškodrevo je: • prazno, ali • sestavljenoizvozlišča (korena), kivsebujenekpodatekxter: • levo in desnopoddrevostaiskalnidvojiškidrevesi, • vsipodatki v vozliščihlevegapoddrevesa so manjšialienakix in • vsipodatki v vozliščihdesnegapoddrevesa so večji od x.

  5. Primeri 1 2 2 1 3 6 5 8 2 10 1 3 6 12

  6. Iskanjeelementa x • Rekurzivno: išči(koren, x): • vrnevozlišče (enoizmed) s podatkomx v drevesu s korenomkoren, sicervrneNone • če je drevoprazno -> vrniNone • sicer, če je x v korenu -> vrnikoren • sicer, če je xmanjšialienak od korena -> išči(koren.levi, x) • sicer -> išči(koren.desni, x) • Premisliiterativnorazličico z zanko! • Časovnazahtevnost – O(globina)

  7. Primeri Iščimo: 3, 4 4 ≤ 5 3 ≤ 5 5 5 4 > 2 3 > 2 2 2 10 10 3 = 3 4 > 3 6 12 6 12 3 3 1 1 Praznovozlišče – elementani v iskalnemdrevesu

  8. Vstavljanjepodatkov • Rekurzivno • Podobnokotiskanje – konaletimona (navidezno) praznovozlišče, dodamo novo vozlišče • Časovnazahtevnost – O(globina)

  9. Primer Vstavimo: 7, 6, 20 6 > 5 7 > 5 20 > 5 5 5 5 6 ≤ 10 7 ≤ 10 20 > 10 2 10 2 10 2 10 6 ≤ 6 7 > 6 20 > 12 6 12 3 1 6 12 3 1 6 12 3 1 6 7 7 6 7 20

  10. Odstranjevanjepodatkov • Odstranimoenopojavitevvozlišča s podatkomx v drevesu • Najdemovozliščevs podatkomx (čeobstaja, sicerkončamo) – algoritemzaiskanje • Če je vozliščev list (ima le praznesinove), gaodstranimo (nadomestimo s praznimdrevesom) • Čeimavozliščeveneganepraznegasinas, potemočetavozliščavprevežemonasinas. • Sicerimavozliščevdvanepraznasinova. Najbo u najboljdesnovozlišče v levempoddrevesu s korenomv. Vozliščeunimadesnegasina. Podatek v vozliščuuvpišemo v vozliščev in vozliščeuzbrišemo. • Časovnazahtevnost – O(globina)

  11. Primer Brišimo: 3, 12, 10, 5 10 imaobasinova. Najboljdesni sin levegadrevesa je 7. Prestavimo 7 v 10 in “prevežemo” list 7 (navirtualnopraznovozlišče), t.j.zbrišemo list. 12 imaenegasina - prevežemo 3 je list - brišemo 10 > 5 12 > 5 3 ≤ 5 5 5 5 3 > 2 10 = 10 12 > 10 2 2 2 10 10 10 3 = 3 12 = 10 6 6 12 6 12 20 1 3 1 1 6 7 6 7 20 6 7 20 5 imaobasinova. Najboljdesni sin levegapoddrevesa je 2. Prestavimo 2 v 5 in prevežemo 2. 5= 5 5= 5 5 2 2 7 1 7 6 20 1 6 20 6 6

  12. Kolikšna je lahkoglobinaiskalnihdreves? • Najbonšteviloelementov v drevesu • V najslabšemprimeru O(n) – npr. vstavljanjeelementovpovrsti (nekakšenseznam) • V najboljšemprimeruimamoporavnanodrevo, globina O(log n) • Kakoohranitičimboljporavnano/uravnoteženodrevoprioperacijahvstavi in odstrani, ki pa ne smejopostatiprezahtevne?

  13. AVL drevo • Iskalnodvojiškodrevo, kistremi k uravnoteženimlevim in desnimpoddrevesom • AVL kraticedvehsovietskihavtorjev: G.M. Adelson-Velskii in E. M. Landis • Vsakovozliščepolegvsebinevsebuješefaktorravnotežja: f(v) = globina(l.levi) – globina(l.desni) • Zavsakovozlišče v v AVL drevesumoraveljati |f(v)| < 2

  14. AVL - vstavljanje • Izvedemoklasičnovstavljanjekotpriiskalnemdrevesu • Izračunamofaktorjeravnotežja, ki se spremenijopopoti od korena do lista, kamorvstavimo • Ob predpostavki, da gledamonajglobljepoddrevo, kjer se porušifaktorravnotežja, se zgodijonatanko 4 možnosti • Z enimpopravkomv času O(1) v najglobljempoddrevesu s porušenimfaktorjemravnotežjadosežemo, da drevo z vstavljenimelementompostane AVL drevo • Kotpopravkeuporabljamorotacije LL, LD, DD, DL (L-levo, D-desno)

  15. Rotacija LL (DD simetrično) A B • Predpostavka: A je najglobljevozlišče, prikaterem se porušifaktorravnotežja (postanepo abs. vrednostivečji od 1) • Premislimo: zgoditise moranatankotakšnasituacija, kot je nalevemdeluslike • rdečkvadratek je dodanovozlišče, kipovečaglobinopoddrevesa B za1 • globinipoddreves D in E predvstavljanjemstaenaki in zaenavečji od globine C (sicer bi prišli v protislovje s predpostavko *) • Vstavljanje je biloizvedeno v drevo D, ki je levo-levo (LL) gledena A • Izvedemoprevezavokotnadesnemdeluslike(rotacija LL), kirazrešisituacijo in novo dobljenodrevoje enakoglobokokotprejšnje in je iskalnodrevo B D C A E C D E 1 2 3

  16. Rotacija LD (DL simetrično) A E B B C A • Predpostavka: A je najglobljevozlišče, prikaterem se porušifaktorravnotežja (postanepo abs. vrednostivečji od 1)* • Zgoditi se moranatankotakšnasituacija, kot je nalevi, pričemerstadveizključujoči se možnosti: ali je prišlo do vstavljanja v poddrevo F (rdečkvadratek) ali v poddrevo G (zelenkvadratek). Dodanovozliščepovečaglobinopoddrevesa B za 1. • Globinipoddreves F in G predvstavljanjemstaenaki, najglobjielementi v poddrevesu D pa so naistiglobinikotnajglobljielementi v F in G (sicerkonflikt s predpostavko) • Vstavljanje je biloizvedeno v poddrevo F ali G, v obehprimerih je to levo-desno (LD) gledenaA, torej v poddrevo E. • Izvedemoprevezavonadesni (rotacija LD), kirazrešisituacijo in novo dobljenopoddrevopostaneenakoglobokokotprej. E F C D D G F G 1 2 3

  17. Analiza • Izslikprimerov, lahkonatančnodoločimoprevezave in novefaktorjeravnotežja! • Rotacijese izvedejo v O(1) časa • Dovolj je enarotacija (v najglobljempoddrevesu s porušenimfaktorjemravnotežja) • Vstavljanje se izvede v O(globina) • Odstranjevanje: • začetek: enakkotpriiskalnemdrevesu; • čeje hglobinaelementa, kigabrišemo, potem se da pokazati, da je poterebnoizvestikvečjemohrotacijpopoti od korena do odstranjenegaelementa • Torej: preostanenam, da dokažemo, da je globina AVL drevesa z nvozlišči O(log n)

  18. Globina AVL drevesa Nh – minimalno število vozlišč v AVL drevesu globine h Nh> Nh-1 + Nh-2 + 1 > 2Nh-2 + 1 >> 1 + 2(1 + 2Nh-4) = 1 + 2 + 22N h-4 > 1 + 2 + 22 + 23N h-2*3 ... > 1 + 2 + 22 + 23 + ... + 2h/2 N h-2*h/2 = 2h/2 - 1 Torej: 2h/2 - 1 < n h/2 < log(n + 1) h < 2 log(n + 1)

More Related