Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

Relevanta dokument
Föreläsning Datastrukturer (DAT036)

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Datastrukturer. föreläsning 10. Maps 1

Självbalanserande AVL-träd Weiss, avsnitt 4.4

Föreläsning 9 Datastrukturer (DAT037)

Algoritmer och datastrukturer 2012, fo rela sning 8

Träd Hierarkiska strukturer

Datastrukturer. föreläsning 10. Maps 1

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Lösningar Datastrukturer TDA

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Föreläsning Datastrukturer (DAT036)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Informationsteknologi Tom Smedsaas 19 augusti 2016

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Föreläsning 7. Träd och binära sökträd

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Föreläsning 5 Datastrukturer (DAT037)

Datastrukturer. föreläsning 9. Maps 1

Föreläsning 13. Träd

Datastrukturer och algoritmer

Trädstrukturer och grafer

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Föreläsning 10 Datastrukturer (DAT037)

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Programkonstruktion och. Datastrukturer

Seminarium 13 Innehåll

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer. Föreläsning 5. Maps 1

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning Datastrukturer (DAT036)

Tentamen TEN1 HI

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

Magnus Nielsen, IDA, Linköpings universitet

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 6. Maps 1

Föreläsning 13 Innehåll

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Fredag 10 juni 2016 kl 8 12

Vad har vi pratat om i kursen?

Föreläsning 9 Innehåll

Föreläsning 13 Datastrukturer (DAT037)

Tentamen TEN1 HI

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Lösningsförslag till tentamen Datastrukturer, DAT037,

Teoretisk del. Facit Tentamen TDDC (6)

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Algoritmer och datastrukturer 2012, föreläsning 6

Föreläsning 9 Innehåll

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Föreläsning 13 Datastrukturer (DAT037)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

TDDC Terminologi Uppdaterad Fö #1

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Lösningsförslag till exempeltenta 1

Länkade strukturer, parametriserade typer och undantag

Datastrukturer. Sammanfattning och Referenshäfte. Guldbrand, Eric Johansson, Algot

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Institutionen för datavetenskap

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning Datastrukturer (DAT036)

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Tentamen i Algoritmer & Datastrukturer i Java

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Sökning och sortering

Lösningsförslag till tentamen Datastrukturer, DAT037,

Ekvivalensrelationer

Föreläsning 3 Datastrukturer (DAT037)

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

DAI2 (TIDAL) + I2 (TKIEK)

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

Övningsuppgifter #11, Programkonstruktion och datastrukturer

729G04: Inlämningsuppgift Diskret matematik

Transkript:

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, 2-3-4-träd Weiss, avsnitt 4.7, 11.5, 12.2, etc. Peter Ljunglöf DAT036, Datastrukturer 30 nov 2012 1

2-3-träd [inte i kursboken] Ett 2-3-träd har två sorters noder: 2-noder och 3-noder En 2-nod är en vanlig binär sökträdsnod: den innehåller ett datafält (d1) och två barn (b1, b2) det första barnets (b1) data är mindre än nodens (d1) det andra barnets (b2) data är större än nodens (d1) En 3-nod har två datafält (d1, d2) och tre barn (b1, b2, b3): det första datafältet (d1) är mindre än det andra (d2) det första barnets (b1) data är mindre än d1 det andra barnets (b2) data ligger mellan d1 och d2 det tredje barnets (b3) data är större än d2 2

2-3-träd Ett exempel på ett 2-3-träd: 3

Ett 2-3-exempel Nu ska vi bygga ett 2-3-träd för orden i The quick brown fox jumps over the lazy dog 4

The The 5

The quick The, quick 6

The quick brown The, brown, quick 7

The quick brown brown The quick 8

The quick brown fox brown The fox, quick 9

The quick brown fox jumps brown The fox, jumps, quick 10

The quick brown fox jumps brown, jumps The fox quick 11

The quick brown fox jumps over brown, jumps The fox over, quick 12

he quick brown fox jumps over the brown, jumps The fox over, quick, the 13

he quick brown fox jumps over the brown, jumps, quick The fox over the 14

he quick brown fox jumps over the jumps brown quick The fox over the 15

uick brown fox jumps over the lazy jumps brown quick The fox lazy, over the 16

k brown fox jumps over the lazy dog! jumps brown quick The dog, fox lazy, over the 17

Analys av 2-3-träd 2-3-träd använder inte rotationer i motsats till AVL-träd istället bubblar noderna uppåt genom trädet Komplexiteten: antal noder n som får plats i ett 2-3-träd med höjd h är mellan 2 h (om alla noder är 2-noder) och 3 h (om alla noder är 3-noder) alltså, höjden h ligger mellan log3 n och log2 n söktiden är O(log n) 18

B-träd [avsnitt 4.7] B-träd är en generalisering av 2-3-träd: i ett B-träd av ordning k, kan varje nod ha upp till k barn B-träd är designade för att lagra index till stora databaser: hårddiskars diskutrymme är uppdelade i block B-trädets ordning är precis sådan att en nod får plats i ett block (detta för att minimera antalet läsningar från hårddisken) 19

Insättning i B-träd Nya element stoppas in i ett passande löv. 20

Insättning i B-träd Blir det för många element i ett löv så delar vi upp det i två. 21

Insättning i B-träd Blir föräldranoden full så delar vi den också. 22

Rödsvarta träd [avsnitt 12.2] I ett rödsvart träd har alla noder en färg : Antingen röd eller svart. Färgerna används för att kunna hålla trädet balanserat, precis som nodbalansen i ett AVL-träd. 23

Rödsvarta träd, invarianter Ett rödsvart träd har följande invarianter: (1) en nod är antingen röd eller svart (2) roten är alltid svart (3) en röd nod har alltid svarta barn (4) tomma barn kallas löv och är svarta (5) antalet svarta noder är alltid samma, i varje stig från roten till ett löv (5) + (3) medför att antalet röda noder i en stig aldrig är fler än antalet svarta därför är trädet balanserat 24

Insättning i ett rödsvart träd Wikipedias artikel om rödsvarta träd är bra! http://en.wikipedia.org/wiki/red black_tree Först söker vi efter insättningspunkten precis som för alla binära sökträd. Det nya elementet ersätter ett löv och ges färgen röd: den nya noden får två svarta löv, så antalet svarta noder i lövstigarna är oförändrat om föräldern är svart, så är vi klara (Wikipedias fall 2) annars behöver vi arrangera om trädet det finns tre möjliga fall som vi måste hantera (Wikipedias fall 3, 4, 5) 25

Insättning, de olika fallen Fall 2 i Wikipedia: föräldern är svart Fall 3 i Wikipedia: både föräldern och dess syskon är röda Fall 4 i Wikipedia: föräldern är röd och dess syskon svart dessutom är noden ett höger-vänsterbarn (eller ett vänster-högerbarn) Fall 5 i Wikipedia: föräldern är röd och dess syskon svart dessutom är noden ett vänster-vänsterbarn (eller ett höger-högerbarn) 26

Insättning, fall 3 Både föräldern (P) och dess syskon (U) är röda: deras förälder (G) måste då vara svart byt färg på dem (P, U) till svart byt färg på deras förälder (G) till röd fortsätt rekursivt uppåt i trädet med G som ny nod 27

Insättning, fall 4 Föräldern (P) är röd och dess syskon (U) är svart: dessutom är noden (N) ett vänster-högerbarn (eller ett höger-vänsterbarn) deras förälder (G) måste vara svart rotera runt P nu är P ett vänster-vänsterbarn (eller högerhögerbarn) och vi kan fortsätta med fall 5 28

Insättning, fall 5 Föräldern (P) är röd och dess syskon (U) är svart: dessutom är noden (N) ett vänster-vänsterbarn (eller ett höger-högerbarn) deras förälder (G) måste vara svart rotera runt G byt färg på P till svart och på G till röd nu är P ny svart lokal rot, och vi är klara! 29

Effektivitet hos rödsvarta träd Höjden på ett rödsvart träd har en övre gräns: maximalt är höjden 2 log2 n + 2, vilket är logaritmiskt, O(log n) precis som med AVL-träd så är det i medeltal mycket bättre än så Javas API har klasserna TreeMap och TreeSet som är implementerade med rödsvarta träd 30

2-3-4-träd [ej i kursboken] 2-3-4-träd är B-träd av ordning 4 Ett exempel på ett 2-3-4-träd: 31

2-3-4-träd rödsvarta träd Ett rödsvart träd är ekvivalent med ett 2-3-4-träd: en 2-nod är en svart nod y 32

2-3-4-träd rödsvarta träd Ett rödsvart träd är ekvivalent med ett 2-3-4-träd: en 4-nod är en svart nod med två röda barn y x z 33

2-3-4-träd rödsvarta träd Ett rödsvart träd är ekvivalent med ett 2-3-4-träd: en 3-nod är en svart nod med ett rött barn x y x y 34