INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.

Slides:



Advertisements
Liknende presentasjoner
Skedsmo 12. november 2009 Tonje Hilde Giæver
Advertisements

@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Kap 04 Lister. Listestrukturer Listestrukturer hensiktsmessige ved såkalte flyktige tabeller (tabeller med relativt mye innsetting/sletting)
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Service i ordnede former Servicebedriftenes Landsforening Lagrede personopplysninger i Bemanningsbransjen Anbefalte rutiner for sletting.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang
Ulike sorteringsmetoder Kompleksitet av dem
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
Forelesning nr.2 INF 1411 Elektroniske systemer
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Klargjøring fra forrige gang
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Kap 02 Tabeller / Tabelloperasjoner. Enkeltvariable Les inn nedbørmengde for årets 12 måneder: Les n1 Les n2 … Les n12 n1 n2 n12.
Kap 10 Graf.
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 1 - kapittel 1 Introduksjon Hans F. Nordhaug (Ola Bø) (Ketil Danielsen, 2007)
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 4 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 2 - kapittel 1 Hans F. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
INF 4130 Eksamen 2008 Gjennomgang.
1 INF5110 – 23. april, 2013 Svar på noen oppgaver til kap. 8 Beklager noe trykkfeil og rot på forelesningene Håper dette er bedre (lagt ut 24/4) Nå fredag.
Kap 09 Tre.
INF3100 – – Ellen Munthe-Kaas Indeksering UNIVERSITETET I OSLO © Institutt for Informatikk Utvalgte animerte lysark: lysark nr. 7, 8, 9, 10,
Eksempel: Sletting ved tynn indeks Slett post med a = 60 –Ingen endring nødvendig i indeksen. Slett post med a = 40 –Den første posten i blokken er blitt.
Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
INF 295 Algoritmer og datastrukturer Forelesning 5 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Ortering Mål: Se på forskjellige måter for sortering.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Routing Indices For P2P Systems TDT2 – Avanserte Distribuerte Systemer Lars-Erik Bjørk.
INF 295 Algoritmer og datastrukturer Web-spider Oblig 3 Hans Fr. Nordhaug (Ola Bø)
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
Stian Grønning Master i samfunnsøkonomi Daglig leder i Recogni.
Iterator i Java boolean hasNext() E next() void remove()
Utvalgte animerte lysark: lysark nr. 7, 8, 9, 10, 26, 28, 30, 33, 35
فصل هفتم شاخص گذاری.
Utskrift av presentasjonen:

INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug

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

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

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.

Tilfeldig generert tre

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

Binærtre som er balansert i rota

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?

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.

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

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

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