Föreläsning 7. Splay-träd. Prioritetsköer och heapar. Union/Find TDDC70/91: DALG. Innehåll. Innehåll. 1 Splay-träd

Relevanta dokument
Magnus Nielsen, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet. 2 Hashtabeller Kollisionshantering Att välja hashfunktion... 10

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

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

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 Prioritetsköer Heapar Tillämpning... 3

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

Datastrukturer. föreläsning 10. Maps 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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Föreläsning 9 Datastrukturer (DAT037)

Datastrukturer. Föreläsning 5. Maps 1

Tentamen Programmeringsteknik II Skrivtid: Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper.

Träd Hierarkiska strukturer

Föreläsning 5 Datastrukturer (DAT037)

Operativsystemets uppgifter. Föreläsning 6 Operativsystem. Skydd, allmänt. Operativsystem, historik

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

Listor = generaliserade strängar. Introduktion till programmering SMD180. Föreläsning 8: Listor. Fler listor. Listindexering.

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT036)

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

Föreläsning 4 Datastrukturer (DAT037)

Lösningar Datastrukturer TDA

Magnus Nielsen, IDA, Linköpings universitet

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

Datastrukturer. föreläsning 9. Maps 1

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

Föreläsning 10 Datastrukturer (DAT037)

Seminarium 13 Innehåll

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

13 Prioritetsköer, heapar

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

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

Datastrukturer. föreläsning 10. Maps 1

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

Föreläsning 4 Datastrukturer (DAT037)

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

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

Sidor i boken

Induktion LCB 2000/2001

Trigonometri. 2 Godtyckliga trianglar och enhetscirkeln 2. 3 Triangelsatserna Areasatsen Sinussatsen Kosinussatsen...

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

1 e x2. lim. x ln(1 + x) lim. 1 (1 x 2 + O(x 4 )) = lim. x 0 x 2 /2 + O(x 3 ) x 2 + O(x 4 ) = lim. 1 + O(x 2 ) = lim = x = arctan x 1

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Finita automater, reguljära uttryck och prefixträd. Upplägg. Finita automater. Finita automater. Olika finita automater.

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

SF1625 Envariabelanalys

Föreläsning 3: Strängmatchning

Föreläsning Datastrukturer (DAT036)

Finaltävling den 20 november 2010

Algoritmer och datastrukturer 2012, fo rela sning 8

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

Informationsteknologi Tom Smedsaas 19 augusti 2016

Föreläsning 13 Innehåll

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Föreläsning 9 Innehåll

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

Algoritmer och datastrukturer 2012, föreläsning 6

TMV151/TMV181. Fredrik Lindgren. 19 november 2013

Så här gör du? Innehåll

Associativa lagen för multiplikation: (ab)c = a(bc). Kommutativa lagen för multiplikation: ab = ba.

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd

Tentamen TEN1 HI

SLING MONTERINGS- OCH BRUKSANVISNING

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

Tommy Färnqvist, IDA, Linköpings universitet. 1 Sortering Heap-sort Merge-sort Sammanfattning... 10

1. (6p) (a) Använd delmängdskonstruktionen för att tillverka en DFA ekvivalent med nedanstående NFA. (b) Är den resulterande DFA:n minimal? A a b.

MEDIA PRO. Introduktion BYGG DIN EGEN PC

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

Ekvivalensrelationer

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 10 Innehåll

Föreläsning 7: Trigonometri

6 Formella språk. Matematik för språkteknologer (5LN445) UPPSALA UNIVERSITET

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tentamen i ETE115 Ellära och elektronik, 25/8 2015

Datastrukturer. föreläsning 9. Maps 1

Appendix. De plana triangelsatserna. D c

Magnus Nielsen, IDA, Linköpings universitet

DAI2 (TIDAL) + I2 (TKIEK)

Facit Tentamen TDDC kl (6)

SF1625 Envariabelanalys

x = x = x = x=3 x=5 x=6 42 = 10x x + 10 = 15 x = = 20 x = 65 x + 36 = 46

Gör slag i saken! Frank Bach

Gauss och Stokes analoga satser och fältsingulariteter: källor och virvlar Mats Persson

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Tentamen i Analys B för KB/TB (TATA09/TEN1) kl 08 13

XIV. Elektriska strömmar

Skriv tydligt! Uppgift 1 (5p)

Tillämpning - Ray Tracing och Bézier Ytor. TANA09 Föreläsning 3. Icke-Linjära Ekvationer. Ekvationslösning. Tillämpning.

Sfärisk trigonometri

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

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 5-7.

Kvalificeringstävling den 2 oktober 2007

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Transkript:

Föreläsning 7 Sply-träd. rioritetsköer oh hepr. Union/Find TDDC70/1: DALG Utskriftsversion v föreläsning i Dtstrukturer oh lgoritmer 7 septemer 01 Tommy Färnqvist, IDA, Linköpings universitet 7.1 Innehåll Innehåll 1 Sply-träd 1 rioritetsköer Hepr 4 Union/Find 7. 1 Sply-träd Binär sökträd är inte unik Kom ihåg det inär sökträdet: Enkelt tt sätt in oh t ort element, men... lnsen estäms v ordningen på insättningr oh orttgningr. Kominer med heuristiken håll nyligen nvänd element först för listor? Oft nvänd element ör finns när roten! insert: 1,,4,, insert:,,1,4, 7. Opertionen sply(k) Utför en norml sökning efter k, kom ihåg nodern vi psserr... Märk den sist noden vi undersöker med Om k finns i T, finns k i noden, nnrs är förälder till ett tomt träd Återvänd till roten oh gör en rottion vid vrje nod för tt flytt uppåt i trädet... ( fll) 7.4 1

Opertionen sply(k) zig: prent() är roten: roter kring 7. Opertionen sply(k) zig-zig: oh prent() är ägge vänsterrn (eller ägge högerrn): utför två rottioner för tt flytt upp d R R d R d 7. Opertionen sply(k) zig-zg: En v oh prent() är ett vänsterrn oh den ndr är ett högerrn eller vie vers: utför två rottioner i olik riktningr R d d R Oserver tt dess rottioner kn ök trädets höjd! 7.7

find oh insert funtion FIND(k, T ) SLAY(k,T ) if KEY(ROOT(T )) = k then return (k, v) else return null funtion INSERT(k, v, T ) sätt in (k,v) som i ett inärt sökträd SLAY(k,T ) 7. Exempel: insättning v 14 7. Exempel: insättning v 14

7. Exempel: insättning v 14 7. Exempel: insättning v 14 4

7.1 Exempel: insättning v 14 7.1 Exempel: insättning v 14

7.14 delete funtion DELETE(k, T ) if k finns i ett löv then gör SLAY på föräldern till lövet else if k finns i en intern nod then ersätt noden med dess föregångre i inorder gör SLAY på föräldern till föregångren Det går förstås tt nvänd efterföljren i inorder okså. 7.1 Exempel: orttgning v 7.1

Exempel: orttgning v 7.17 Exempel: orttgning v 7.1 restnd Vrje opertion kn ehöv utförs på ett totlt olnsert träd lltså ingen grnti för tid O(logn) i värst fllet Amorterde tiden är logritmisk vrje sekvens v m opertioner, utförd på ett initilt tomt träd, tr totlt O(mlogm) tid 7

lltså är den morterde kostnden/tiden för en opertion O(logn) även om enskild opertioner kn ete sig myket värre 7.1 rioritetsköer rioritetsköer En vnligt förekommnde sitution: Väntelist (johntering på flernvändrdtorer, simulering v händelser) Om en resurs lir ledig, välj ett element från väntelistn Vlet är sert på någon prtil/linjär ordning: ADT prioritetskö joet med högst prioritet sk körs först, vrje händelse sk inträff vid en viss tidpunkt; händelsern sk erets i tidsordning Linjärt ordnd mängd K v nyklr Vi lgrr pr (k,v) (som i ADT Ditionry), fler pr med smm nykel är tillåtet en vnlig opertion är tt hämt pr med miniml nykel Opertioner på en prioritetskö : mkeempty() isempty() size() min(): hitt ett pr (k,v) som hr minimlt k i ; returner (k,v) insert(k,v): sätt in (k,v) i removemin(): t ort oh returner ett pr (k,v) i med minimlt k; error om är tom 7.0 7.1 Implementtion v prioritetsköer Vi kn t.ex. nvänd (sorterde) länkde listor, BST eller Skip-listor En nnn idé: nvänd ett fullständigt inärt träd där roten i vrje (del)träd T innehåller det minst elementet i T Det här är ett prtiellt ordnt träd, okså kllt hep! 7. Hepr Att uppdter en hepstruktur Med sist lövet menr vi den sist noden i en trversering i levelorder removemin() // t ort roten Ersätt roten med sist lövet Återställ den prtiell ordningen genom tt yt noder nedåt down-hep uling insert(, k, v) Sätt in ny nod (k,v) efter sist lövet Återställ den prtiell ordningen genom up-hep uling 7.

Egenskper size(), isempty(), min(): O(1) insert(), removemin(): O(logn) Kom ihåg rryrepresentionen v BST Ett fullständigt inärt träd... Kompkt rryrepresenttion Bule-up oh ule-down hr sn implementtioner 7.4 Exempel: ule-up efter insert(4,1) 7. Hepvrinter Olik prtilordningr minst nykeln i roten (minhep) störst nykeln i roten (mxhep) Olik rryrepresenttioner numrering frmåt i levelorder (med örjn från 0 eller 1) numrering kåt i levelorder (med örjn från 0 eller 1) 7. 4 Union/Find rtitioneringr med Union/Find-opertioner mkeset(x): Skp en mängd enrt innehållnde elementet x oh returner positionen som lgrr x den ny mängden. union(a,b): Returner mängden A B, förstör de gml A oh B. find(p): Returner mängden som innehåller elementet i position p. 7.7

Exempel: Dynmisk konnektivitet Fråg: finns det en stig melln p oh q? ixlr i ett digitl foto Dtorer i ett nätverk Vänner i ett soilt nätverk Trnsistorer på ett dtorhip Element i en mtemtisk mängd Vrielnmn i ett dtorprogrm Metllisk delr v ett kompositsystem 7. Listserd implementtion Vrje mängd lgrs som en sekvens representerd v en länkd list Vrje nod lgrr ett ojekt innehållnde ett element oh en referens till mängdens nmn 7. Anlys v listserd representtion När union utförs, flytt lltid element från den mindre mängden till den större mängden Vrje gång ett element flytts hmnr det i en mängd som är åtminstone duelt så stor som den gml mängden

Alltså, ett element kn flytts mx O(logn) gånger Totl tid för tt utför n union- oh find-opertioner är O(nlogn) 7.0 Trädserd implementtion Vrje element lgrs i en nod som innehåller en pekre till ett mängdnmn En nod v vrs pekre pekr på nod v är okså ett mängdnmn Vrje mängd är ett träd, rott i en nod med själreferernde mängdnmnspekre T.ex. mängdern 1, oh : 1 4 7 1 7.1 Opertioner För tt utför union, låt r roten v ett träd pek på roten v det ndr

För tt utför find, följ mängdnmnspekrn från strtnoden till en självreferernde nod träffs på! 1 1 7. En heuristik Union vi storlek: När union utförs, låt roten i det mindre trädet pek på roten i det större Medför O(nlogn) tid för tt utför n union- oh find-opertioner: Vrje gång vi följer en pekre kommer vi till ett delträd som är åtminstone duelt så stort som det förr delträdet Alltså kommer vi tt som mest följ O(logn) pekre för någon find 1 7. En till heuristik Stigkomprimering: Efter tt find utförts komprimer ll pekre på stigen som preis trverserts så tt de ll pekr på roten 1 1 Medför O(nlog n) tid för tt utför n union- oh find-opertioner. 7.4 1