9 - Binarna stabla pretrazivanja

Embed Size (px)

Citation preview

ALGORITMIISTRUKTUREPODATAKA Predavanje21/12/2009 9.Binarnastablapretraivanja

http://www.riteh.hr/zav_katd_sluz/zr/nastava/asp

Prolapredavanja

Ponavljanje:pokazivaiuCu Analizaalgoritama Osnovnitipovipodataka

ADT:lista,stog,red

Rekurzijaiiteracija Sortiranjepodataka Stabla

Stabla zatostabla? definicija terminologija primjeri Binarnastabla definicija svojstva primjer:aritmetikiizrazi obilazakbinarnihstabala Implementacija pokazivaima poljem Gomila(Heap) Heapsort Prioritetnired

Sadrajpredavanja

Binarnastablapretraivanja Balansiranabinarnastabla AVLstabla

Binarnastablapretraivanja (binarysearchtrees)

Ponavljanje

Nekeoperacijelinearnihstrukturapodatakakaopoljeili vezanalistanisuuinkovite.Koje?

A B zadnji C

A

B

C

Vezanalistamaxlength

Polje

Binarnastablapretraivanja(BST)definicija

Binarnostablopretraivanjajebinarnostabloukojemu:

svakivorimaklju kljusvakogvorajeveiodkljuevavorovalijevog podstablaimanjiodkljuevavorovadesnogpodstabla (tzv.svojstvobinarnogstablapretraivanja)48 25 17 5 21 32 28

89 65 96

Binarnastablapretraivanja(BST)primjeriH B G E 12 8 13 9

L I M

Da

Ne

4 3

11 10

Binarnastablapretraivanja(BST)

BSTubrzavaoperacijupretraivanja.Zato? KakotraimoelementpokljuuuBST? UkojemsluajupretraivanjeBSTnijeuinkovitijeod pretraivanjaliste?48 25 17 5 21 32 28

89 65 96

Binarnastablapretraivanja(BST)

Dvabinarnastablapretraivanjasaistimskupom elemenata:17 89 32 96 48 32 25 89 96

48 25 17

ProsjenadubinavorajelogN,anajgorajeN1

Binarnastablapretraivanjaoperacije

empty():vraatrueakoBSTnemavorova findkey(keyk):traivorsakljuemk.

akojestablopraznovraafalse akogapronaepostavljacurrentnavorivraatrue akoganepronaepostavljacurrentnavorgdjebisenovi elementmoraododatikaodijeteivraafalse stablonesmijebitipuno akovepostojikljukvraafalse usuprotnomubacujenovielementipostavljacurrent

insert(keyk,typeval):ubacujenovielement

retrieve():akostablonijeprazno,vraapodatkevorana kojipokazujecurrent delete(keyk):brievorsakljuemk

akostablonijepraznopostavljacurrentnakorijen

findkey

pretraivanjepokljuuprimjer:23

Tleft

Tright

akotraimoklju23,ondasmogotovi akotraimoklju23ondatraimodesnopodstablo

findkey

Primjer:traimo28

usporedi28i48(korijen),idilijevo; usporedi28i25,ididesno; usporedi28i32,idilijevo; usporedi28i28,bingo!48 25 17 5 21 32 28 43

89 65 96

najmanjiinajveielement

findmin:vraanajmanjielementustablu

poniodkorijenaiidilijevosvedokimadjece poniodkorijenaiididesnosvedokimadjece

findmax:vraanajveielementustablu

48 25NAJMANJI ELEMENT

89 32 28 65 96NAJVEI ELEMENT

17 21

Kojajesloenostoperacijafindminifindmax?

InorderobilaenjeBSTstabla

inorderobilaenjestablaispieelementesortiranepo kljuu48 25 17 21 32 28 65 89 96

Inorder:17,21,25,28,32,48,65,89,96

insert

poneistokaoifindKey

sputasenizstablotraeielementsakljuemk akoganepronaeondaubacinovielementnazadnje mjestogdjejestao48 25 17 21 32 28 43 65 89 96

Primjer:ubaci43

sloenostoperacijejeistakaoizafindkey,findmin, findmax: O(visinastabla)

delete

operacijadeletejenajsloenija

moraseznatitouinitisadjecompobrisanogvora vorsa0djecesejednostavnopobrie kodvorasa1djetetom,dijetesepromoviranapoziciju pobrisanogvora

brisanjevorasa0ili1djetetomjelako:

kadavorima2djecemorasepazitidanakonbrisanja stablozadrisvojstvobinarnogstablapretraivanja

nemoesejednostavnopromoviratijednodijete

vorkojisebriesezamijenisasvojimsljednikom (successor)

natajnainsezadravasvojstvobinarnogstabla pretraivanja.Zato?

deleteprimjeri

Pobrii32:48 25 17 21 32 28 17 21 25 32 28 48

deleteprimjeri

Pobrii25:

zamijenigasanajmanjimelementomdesnogpodstabla (sljednik)tepobriisljednika

sljednikilinemadjece,iliimasamodesnodijete.Usuprotnombi dijetebilomanjeibilobiizabranokaosljednikod25 48 25 28 32 28 29 17 21 28 29

48

17 21

32

Balansiranastabla

Balansiranabinarnastabla

UnajgoremsluajuvisinabinarnogstablapretraivanjajeN1

toznaidajevrijemepotrebnozaizvravanjeveineoperacija moebitiO(N)unajgoremsluaju

Idealnobibiloimatitoniestablo Moemoodravativisinustablatakodasloenostoperacija ostajeO(logN)? Da,takvastablasezovubalansiranabinarnastabla pretraivanja Primjeribalansiranihbinarnihstabala:

AVLstabla Crvenocrnastabla

Balansiranjebinarnihstabala

Prvipokuaj:

zahtjevatidalijevoidesnokorijenovopodstabloimajuistu visinu48 25 17 28 32 21 29

moeibolje

Balansiranjebinarnihstabala

Drugipokuaj:

zahtjevatidasvakivorimalijevoidesnopodstabloistevisine

48 25 17 29 32 28 21

previerestriktivno

Balansiranjebinarnihstabala

Treipokuaj:

zahtjevatidasevisinalijevogidesnogpodstablasvakogvora razlikujuzanajvie148 25 32 21 25 17 48 32 28 21 17 da da

48 25 17 17 ne 32 28

17

AVLstabla

AVLstablo

AVLstablojebinarnostablopretraivanjaukojemu:

sevisinalijevogidesnogpodstablasvakogvorarazlikujuza najvie1 akoubacivanjeilibrisanjevoraporemetiravnoteustabla, rebalansiranjesemoeodmahizvriti

akoseporemetiravnoteadijelastabla,rebalansiranjesemoe vritilokalno

rebalansiranjesepostie"rotacijama"stablaY X X

C BPrijerotacije

Y

A

BPoslijerotacije

C

A

Ubacivanje(insert)

Problem:

pronaivorPkojemuseravnotea(balancefactor)primijenila nakonubacivanjanovogvora

TraenjevoraP:

penjisepremakorijenuodpozicijenovogvoraiprovjeravaj ravnoteu(aurirasebalancefactor)odvorovanaputu prvivorkojemubalancefactorpostane+/2jekorijen podstablakojemutrebaponovnouspostavitiravnoteu

Ubacivanjevora(insert)

sluaj1:vorseubacujeupodstabloA AVLsvojstvovienevrijediuvorux

rjeenje:jednostrukarotacijasalijevimdjetetom

Ubacivanjevora(insert)

sluaj2:vorseubacujeupodstabloC AVLsvojstvovienevrijediuvorux

rjeenje:jednostrukarotacijasadesnimdjetetom

Ubacivanjevora(insert)primjer7 x 9 6 2 5 3 2

7 5 3

Ubaci23

5 y 6B A

9C

rotirajxiy7

6

9

Ubacivanjevora(insert)

sluaj1:vorseubacujeupodstabloB1iliB2 AVLsvojstvovienevrijediuvorux

rjeenje:dvostrukarotacijasalijevimdjetetom

Ubacivanjevora(insert)

sluaj2:vorseubacujeupodstabloB1iliB2 AVLsvojstvovienevrijediuvorux

rjeenje:dvostrukarotacijasadesnimdjetetom

Ubacivanjevora(insert)primjer8 x 9 7

8 5 3

Ubaci63A

5 y 7 6B z

9C

7 5 3

rotirajx,yiz8

6

9

Ubacivanjevora(insert)

Kompletanprimjerstvaranja AVLstablanaploi:

3,2,1,4,5,6,7,16,15,14

AVLstablozakljuak

AVLstablaodravajubinarnostablopretraivanjau ravnoteiprilikomnjegovogstvaranjakadasevorovi ubacuju Postojiialternativanpristup(neemogavidjetiuovim predavanjima)ukojemusestablarebalansirajuneprilikom ubacivanjaelemenataveprilikompristupanjaistim(splay trees).