Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)

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 Ikke søketre - bryter ordningsregelen Søketre Alle noder i venstre undertre er mindre og alle noder i høyre undertre er større enn verdien i en gitt node Søketre eller ikke søketre?

4 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

5 find Fire muligheter T er tom T er den vi søker Den vi søker er mindre enn T - sjekk venstre Den vi søker er større enn T - sjekk høyre Hale-rekursjon Er rekursjon i siste statement i en rutine Kan og bør alltid erstattes med loop, men ikke her fordi rekursjon gir enklere algoritme uten kostnadssprekk O(log N)

6 findMax, findMin Fortsett mot høyre (venstre) så lenge det går og returnere ytterste node.

7 insert Gjør som ved find Hvis funnet - oppdater, ellers sett inn ny node Duplikathåndtering bare lagre en og telle antall (øker plassbehov) legge duplikater inn i treet (kan gi dype trær) hvis elementet er en større struktur: liste eller tre

8 Innsetting

9 remove Vanskeligste operasjon Når noden er funnet: er noden en blad-node, kan den slettes har noden ett barn, overlates barnet til nodens forelder har noden to barn - erstatt nodens data med minste data i høyre undertre, som deretter må slettes. Lazy deletion Merket slettet Fordel ved duplikattelling Rimelig

10 sletting ett barn

11 sletting av node med to barn

12 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.

13 Tilfeldig generert tre

14 Tre etter N 2 tilfeldige sett inn- og slett- operasjoner

15 Binærtre som er balansert i rota

16 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?


Laste ned ppt "INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google