INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

Like dokumenter
INF2220: Forelesning 2

INF2220: Forelesning 2

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Balanserte binære søketrær

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

INF2220: Forelesning 3

Trær. En datastruktur (og abstrakt datatype ADT)

Selv-balanserende søketrær

Definisjon av binært søketre

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Definisjon: Et sortert tre

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Notater til INF2220 Eksamen

Lars Vidar Magnusson

Flerveis søketrær og B-trær

Object [] element. array. int [] tall

Binære trær: Noen algoritmer og anvendelser

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

INF2220: Forelesning 1

Kap.12. Flervegssøketre. Studerer 2-3 og 2-4 trær. Sist oppdatert

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

INF2220: Forelesning 1

Eksempel: Uttrykkstrær I uttrykkstrær inneholder bladnodene operander (konstanter, variable,... ), mens de interne nodene inneholder operatorer.

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

INF Algoritmer og datastrukturer

Lars Vidar Magnusson

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Et eksempel: Åtterspillet

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

UNIVERSITETET I OSLO

INF Algoritmer og datastrukturer

EKSAMEN med løsningsforslag

INF Algoritmer og datastrukturer

INF1010 Binære søketrær ++

Algoritmer og datastrukturer Kapittel 9 Delkapittel 9.2

IN Algoritmer og datastrukturer

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 7

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Binær heap. En heap er et komplett binært tre:

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

INF2220: Time 4 - Heap, Huffmann

Kap 9 Tre Sist oppdatert 15.03

Uke 5 Disjunkte mengder

KONTINUASJONSEKSAMEN

INF2220: Time 12 - Sortering

KONTINUASJONSEKSAMEN

PG 4200 Algoritmer og datastrukturer Innlevering 2

Magnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon

Generelle trær BINÆRTRÆR. Binærtrær

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Datastrukturer for rask søking

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

INF1010 siste begreper før oblig 2

Løsningsforslag til INF110 h2001

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Obligatorisk oppgave 1 INF1020 h2005

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer IAI 21899

Løsnings forslag i java In115, Våren 1998

Binære Søketre. Egenskap. Egenskap : Grafisk. Egenskap : Kjøretid. Egenskap : Kjøretid. Egenskap : Oppsumering. Binære Søketre

Løsnings forslag i java In115, Våren 1996

UNIVERSITETET I OSLO

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

INF Algoritmer og datastrukturer

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Algoritmer og datastrukturer Eksamen

Disjunkte mengder ADT

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

KONTINUASJONSEKSAMEN

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Transkript:

INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

REPETISJON: BINÆRE SØKETRÆR 2

Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre gjelder: Alle verdiene i venstre subtre er mindre enn verdien i noden selv. Alle verdiene i høyre subtre er større enn verdien i noden selv.

Binære søketrær Metode for å sjekke om et binærtre er et binært søketre (antar unike int-elementer): // Kall: bst(rot, -UENDELIG, +UENDELIG) boolean bst(binnode n, int min, int max) { if (n == null) return true; if (n.element < min n.element > max) return false; } return ( bst(n.venstre, min, n.element - 1) && bst(n.hoyre, n.element + 1, max) );

Gjennomsnitts-analyse Intuitivt forventer vi at alle operasjonene som utføres på et binært søketre vil ta O(log n) tid siden vi hele tiden grovt sett halverer størrelsen på treet vi jobber med. Det kan bevises at den gjennomsnittlige dybden til nodene i treet er O(log n) når alle innsettingsrekkefølger er like sannsynlige (se kap. 4.3.5). 5

Oppgave 4.5 Vis at et binærtre med høyde h har maksimalt 2 h+1 1 noder. 6

Worst-case analyse I verste fall brukes bare venstre- (eller høyre-) pekerne i treet, og det binære søketreet blir i praksis lik en enkel liste. Vi får da worst-case O(n) tid for innsetting, søking, sletting osv. 1 2 3 4 Ubalanserte trær kan for eksempel skyldes: spesiell innsettingsrekkefølge (som i Vildanden) ujevn sletting 7

Balanserte trær Eksempel på perfekt balansert tre: 8 4 2 6 12 10 14 1 3 5 7 9 11 13 15 8

Balanserte trær Det finnes ulike mekanismer for å sikre mest mulige balanserte trær. Felles er at de er basert på en invariant. AVL-trær: For alle indre noder er høydeforskjellen mellom barna max 1. Utfordringen er å opprettholde invarianten under innsetting og sletting. Generell metode: Gjør innsetting/sletting som vanlig. Gjenopprett balansen ved rotasjoner som restrukturerer treet. Vi skal se på rød-svarte trær. 9

RØD-SVARTE TRÆR 10

Rød-svarte trær Et rød-svart tre er et binært søketre der hver node er farget enten rød eller svart slik at: 1. Roten er svart. 2. Hvis en node er rød, må barna være svarte. 3. Enhver vei fra en node til en null-peker må inneholde samme antall svarte noder. Disse reglene sikrer at høyden på et rød-svart tre er maksimalt 2*log 2 (N+1)!

Oppgave Farg nodene i følgende tre slik at det blir et rød-svart tre: 9 4 36 1 25 49 16 Sett inn tallet 64 på riktig plass og med riktig farge. Forsøk så å sette inn tallet 81. 12

Innsetting i rød-svart tre Innsetting er ikke noe problem hvis forelder-noden er svart: Den nye noden kan settes inn som rød, og antall svarte noder på veien til null-pekerne blir som før. Hvis forelder-noden er rød: Den nye noden kan ikke være rød (krav 2). Den nye noden kan ikke være svart (krav 3). Treet må endres ved hjelp av rotasjoner og omfarging. 13

Zig rotasjon P G S X A B C + symmetrisk tilfelle 14

Zig-zag rotasjon P G S X C A B1 B2 + symmetrisk tilfelle 15

Innsetting i rød-svart tre 1. Gjør innsetting som i vanlig binært søketre, der den nye noden N farges rød. 2. La P og G være forelder og besteforelder til N, og U søsken til P. 3. Hvis P er svart: Alt ok, innsetting ferdig. 4. Hvis P er rød: a. Hvis N og P begge er venstre (høyre) barn: Gjør zig rotasjon med nødvendige fargeendringer. b. Hvis N er venstre og P høyre barn eller motsatt: Gjør zig-zag rotasjon med nødvendige fargeendringer. c. Sett N til å være den nye roten i det roterte subtreet. d. Hvis N nå er roten i selve treet: Farg denne svart. Ellers: Gjenta fra steg 2. 16

Case 1: The current node N is at the root of the tree 17

Case 2: The current node's parent P is black, so property 4 (both children of every red node are black) is not invalidated. In this case, the tree is still valid 18

Case 3: Both the parent P and the uncle U are red 19

Case 4: The parent P is red but the uncle U is black; also, the current node N is the right child of P, and P in turn is the left child of its parent G. 20

Case 5: The parent P is red but the uncle U is black, the current node N is the left child of P, and P is the left child of its parent G. 21

B-TRÆR 22

B-trær En annen type søketrær. Brukes først og fremst når ikke hele treet får plass i internminnet. Har stor bredde (hver node har mange barn). Er balansert. De øverste nivåene lagres i internminnet, resten på disk. Brukes særlig i databasesystemer. Merk: Lærebokens (og våre) B-trær kalles vanligvis B + -trær. Tradisjonelle B-trær har data(pekere) i alle noder.

B-trær: eksempel 22 16 41 58 8,11,12 16,17 22,23,31 41,52 58,59,61 Dette treet har M=3 pekere fra hver indre node og L=3 dataelementer i hver løvnode. 24

B-trær: forenklet tegning Indre noder: oval Løvnoder: firkanter 22:- 16:- 41:58 8,11,12 16,17 22,23,31 41,52 58,59,61 25

Definisjon: B-trær av orden M 1. Alle data (eller pekere til data) er lagret i løvnodene. 2. Interne noder lagrer inntil M-1 nøkler for søking: nøkkel i angir den minste verdien i subtre i+1. 3. Roten er enten en løvnode eller har mellom 2 og M barn. 4. Alle andre indre noder har mellom M/2 og M barn. 5. Alle løvnoder har samme dybde. 6. Alle løvnoder har mellom L/2 og L dataelementer (eller datapekere). 26

Søking etter element x 1. Start i roten. 2. Så lenge vi ikke er i en løvnode: La nøkkel-verdiene bestemme hvilket barn vi skal gå til. 3. Let etter x i løvnoden. 27

Innsetting av element x 1. Let etter riktig løvnode for x (som for søking). 2. Dersom det er plass, sett inn x og oppdater nøkkelverdiene langs veien vi gikk. 3. Dersom løvnoden er full, deler vi den i to og fordeler de L+1 nøklene jevnt på de to nye løvnodene. 4. Dersom splittingen medfører at foreldernoden får for mange, må den også splittes (osv oppover i treet). 5. Dette kan medføre at vi til slutt må splitte roten i to (dersom roten får M+1 barn). Merk: Dette er det eneste som gjør at et B-tre vokser i høyden! 28

Sletting: eksempel Fjern først 17, deretter 23 fra dette treet: 22:- 16:- 28:- 59:- 8,11,12 16,17 22,23 28,31 41,52,58 59,61,70 29

Sletting av element x 1. Finn riktig løvnode N for x ved søking. 2. Hvis N har minst L/2+1 elementer, kan vi enkelt slette x. 3. Hvis ikke, må N kombineres med en av nabosøsknene: a. Hvis venstre (høyre) søsken har minst L/2+1 elementer, flytter vi det største (minste) elementet over til N. b. Hvis søsken har akkurat L/2 elementer, slår vi de to nodene sammen til en node (med L eller L-1 elementer). 4. Gjenta punkt 3 dersom foreldernoden nå har ett barn. 5. Til slutt: Hvis roten bare har ett barn, slettes denne og barnet blir ny rot. (Treet krymper nå ett nivå.) 6. Husk å oppdatere nøkkelverdiene underveis! 30

Tidsforbruk Vi antar at M og L er omtrent like. Siden hver indre node unntatt roten har minst M/2 barn, er dybden til B-treet maksimalt log M/2 N. For hver node må vi utføre O(log M) arbeid (binærsøk) for å avgjøre hvilken gren vi skal gå til. Dermed tar søking O(log M * log M/2 N) = O(log N) tid. Ved innsetting og sletting kan det hende at vi må gjøre O(M) arbeid på hver node for å rydde opp (for eksempel flytte alle nøkkelverdiene i tabellen en plass til venstre). Innsetting og sletting kan dermed ta O(M log M/2 N) = O((M/log M) log N) tid. 31

Hvor stor bør M være? Hvor mange barn skal en indre node ha lov til å ha? 32

Try algorithm visualizations HERE 33

Neste forelesning: 7. september MAPS OG HASHING 34