Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertEmilie Larssen Endret for 8 år siden
1
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug
2
Søketre - ADT Binære søketrær Binærtrær kan brukes til å implementere effektiv søking I binære søketrær gjelder denne egenskapen for enhver node med verdi x i treet: Alle noder i venstre undertre av noden har lavere verdi og alle noder i høyre undertre har høyere verdi Forutsetter at elementene som lagres i treet kan ordnes på en eller annen måte
3
Operasjoner på binære søketrær Lages gjerne rekursivt Ettersom dybden på treet er O(log N) trenger vi ikke å bekymre oss for at stakken flyter over For å sikre at treet kan ordnes implementerer vi Comparable og følgelig int compareTo() find findMin, findMax insert remove printTree Separasjon av ekstern "driver" og intern rekursiv rutine
4
Analyse av gjennomsnittstilfellet Det kan vises at indre path-length er O(NlogN) Da er gjennomsnittsdybden O(log N) Sletterutinen er ikke symmetrisk Treet blir ubalansert ved et stort antall innsettinger/slettinger Gjennomsnittsdybden nærmer seg rota av N ved N 2 innsetting/sletting Ved høyere antall blir det mer balansert igjen Hva blir så gjennomsnittet? I praksis kjøretid på algoritmene O(log N) Spesialtilfelle: Ferdig sortert input - gir O(N 2 ) fordi binærtreet da degenererer til en kostbar lenket liste.
5
Tilfeldig generert tre
6
Tre etter N 2 tilfeldige sett inn- og slett- operasjoner
7
Binærtre som er balansert i rota
8
Balanserte trær Et balansert tre sikrer kontroll med hvor dypt nodene kommer Mange mulige algoritmer Mer komplisert Lenger kjøretid i gjennomsnitt for oppdateringer AVL-trær Alternativ - selvjusterende trær Hvorfor bruke balanserte trær?
9
AVL-trær Et AVL-tre (Adelson-Velskii og Landis) er et binært søketre med balansebetingelse: For hver node i treet må høyden på høyre og venstre undertre ikke være mer enn 1 i forskjell. Høyden er ca 1.4 log(N). Vi bevarer balansen ved innsetting ved hjelp av rotasjoner.
10
Rotasjoner To typer: Enkel rotasjon Dobbel rotasjon (venstre-høyre / høyre-venstre) Fire tilfeller av ubalanse ved innsetting: Venstre undertre av venstre barn Høyre undertre av venstre barn Venstre undertre av høyre barn Høyre undertre av høyre barn
11
Rotasjoner Pga symmetri er det logisk kun to tilfeller: Enkel rotasjon fikser tilfelle 1 og 4. Dobbel rotasjon fikser tilfelle 2 og 3. Demonstrasjon Java applet som viser R-B, Splaying og AVL
12
Splaytre Selvbalanserende tre hvor: En node som er aksessert, er raskt tilgjengelig. Hver tilgang halverer dybden på tilgangsstien. God tilgang gir dårlig rotasjon og omvendt. To situasjoner: Zig-zag – utfør dobbel rotasjon (som AVL). Zig-zig – utfør to enkle rotasjoner samme vei. (Se eksempel forrige slide.)
Liknende presentasjoner
© 2023 SlidePlayer.no Inc.
All rights reserved.