Algoritmer och datastrukturer 2012, fo rela sning 8

Relevanta dokument
Föreläsning 9 Datastrukturer (DAT037)

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

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer. föreläsning 10. Maps 1

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

Algoritmer och datastrukturer 2012, föreläsning 6

Föreläsning 9 Innehåll

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

Föreläsning Datastrukturer (DAT036)

Föreläsning 14 Innehåll

Föreläsning Datastrukturer (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer. föreläsning 10. Maps 1

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

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)

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

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

Algoritmer och datastrukturer

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

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

Föreläsning 10 Datastrukturer (DAT037)

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

Lösningsförslag till exempeltenta 1

Föreläsning 10 Innehåll

Seminarium 13 Innehåll

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

Träd Hierarkiska strukturer

Datastrukturer. föreläsning 9. Maps 1

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

13 Prioritetsköer, heapar

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

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Lösningar Datastrukturer TDA

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

Tentamen Datastrukturer för D2 DAT 035

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 6. Maps 1

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Interfacen Set och Map, hashtabeller

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

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

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Föreläsning 10 Innehåll

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

Föreläsning 9 Innehåll

Föreläsning 13. Träd

Diskutera. Hashfunktion

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Föreläsning 5 Datastrukturer (DAT037)

Trädstrukturer och grafer

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

Inlämningsuppgift och handledning

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Länkade strukturer, parametriserade typer och undantag

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

Datastrukturer. Föreläsning 5. Maps 1

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

Föreläsning 11 Innehåll

Teoretisk del. Facit Tentamen TDDC (6)

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

Programkonstruktion och. Datastrukturer

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

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

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 8. Mängd, Avbildning, Hashtabell

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 8. Mängd, Avbildning, Hashtabell

Symboliska konstanter const

Föreläsning Datastrukturer (DAT037)

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen TEN1 HI

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

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

Fredag 10 juni 2016 kl 8 12

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

Föreläsning 3 Datastrukturer (DAT037)

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen Datastrukturer D DAT 035/INN960

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 13 Innehåll

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

Transkript:

lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till stor del av hur många noder som man behöver besöka innan man hittar rätt i trädet Naturligtvis går det mycket snabbare om vi har ett så platt träd som möjligt Det sämsta som kan inträffa är att sökträdet degenererar till en lista Detta kan hända om man lägger till data som redan är sorterat efter nyckeln Om trädet är bra balanserat så blir komplexiteten O(log n) och om det har degenererat till en lista blir komplexiteten O(n) VL-träd I så kallade VL-träd så ändrar man i träden om de börjar bli obalanserade Man säger att ett träd är balanserat om skillnaden i höjd mellan vänster och höger underträd är maximalt 1 för alla noder i trädet Höjden av ett null-träd sätter man till -1 Exempel I trädet till vänster så gör det vänstra barnet till roten att det inte är balanserat Höjden på dess vänstra underträd är 1 och höjden på höger underträd (som är ett null-träd ) är -1, så skillnaden är dvs större än 1 Detta träd är balanserat! Kolla själv att alla noderna har underträd som uppfyller villkoret Detta träd är inte balanserat Inget av rotens barn uppfyller villkoret Man kan visa att i ett VL-träd så är höjden ungefär 1,44*log n där n är antalet noder i trädet När man lägger till eller tar bort noder så finns ju alltid risken att trädet blir

obalanserat För VL-träd finns det operationer som rebalanserar träd Hur detta går till visas i figurerna nedan Vi börjar med detta träd Underträden, och har samma höjd men eftersom noden finns mellan roten och och så ligger och djupare än Efter en insättning av en nod så ökar djupet hos med 1 Detta medför att trädet blir obalanserat Observera att ordningen mellan noderna i trädet är <<<< När vi ändrar trädet så att det blir balanserat så måste denna ordning fortfarande gälla, annars har vi inte längre ett binärt sökträd! Här är vi flyttat om i trädet så att det är balanserat och så att ordningen fortfarande stämmer Detta sätt att flytta om noderna fungerar inte om man i stället lägger till en nod i underträd så att trädet blir obalanserat Då måste vi göra på ett annat sätt Det visas på figurerna nedan:

Vi börjar med samma träd som i exemplet ovan Nu stoppar vi dock in en nod i underträd så att det blir för djupt Då fungerar rebalanseringen i exempelt ovan inte, prova själv! För att kunna rebalansera trädet så ritar vi det så att man ser den översta noden i underträd Det finns ju minst en nod där eftersom vi ju faktiskt stoppade in en nod i det underträdet! Z 1 Z Därefter placerar vi nod Z överst och arrangerar om de andra noderna och underträden så att ordningen i trädet fortfarande är bevarad 1 Interfacet Map Ofta behöver man koppla ihop två värden med varandra I matematiken använder man funktioner eller som det ibland kallas avbilidningar (eng map) för att göra detta ntag att vi har två mängder Den ena mängden(kalla den ) innehåller nycklar (keys) och den andra mängden (kalla den ) innehåller värden (values) Om vi drar pilar från alla elementen i till precis ett element i så säger vi att vi har en avbildning eller funktion från till Det kan till exempel se ut som i följande figur:

1 3 c b a d Det gör ingenting att två pilar går till samma element i - mängden Det gör heller ingenting att det finns element i -mängden till vilka det inte går några pilar Det som däremot inte får förekomma är att det går två pilar från ett element i -mängden till två olika element i -mängden För att kunna beskriva avbildningar finns det ett interface i Java som kallas Map Det ser ut så här: public interface Map<K,V>{ boolean containskey(k key); //Finns key? V get (K key); V put(k key, V value); V remove(k key); int size(); // Här finns fler metoder! } Ett exempel på en klass som implementerar detta interface är TreeMap Man kan använda denna klass på följande sätt: TreeMap<Integer, String> reg = new TreeMap<Integer, String>(); regput(1345, Nisse ); regput(3456, nnika ); String name = regget(1345); if (name!= null) Systemoutprintln(name); TreeMap implementeras av en slags binära sökträd som kallas röd-svarta träd Varje nod är färgad med röd eller svart färg och det finns tre regler som måst uppfyllas för att det ska vara ett röd-svart träd: 1 Roten är svart Om en nod är röd så är alla dess barn svarta 3 Varje väg från roten till en null-länk ska innehålla samma antal svarta noder Om ett träd uppfyller reglerna så är det relativt väl balanserat Om någon regel inte följs efter insättning så måste man ändra i trädet så att reglerna följs igen Detta görs genom att både färga om noder och bygga om trädet

Generaliserade sökträd Man kan låta noderna i ett sökträd ha mer än ett barn Det ger grundare träd så att man inte behöver söka så länge innan man hittar en nod Läsanvisningar i nya boken 71-7, Läsanvisningar i gamla boken 193, 194, 195 (bara det före avsnitt 1951), 68, http://downloadoraclecom/javase/14/docs/api/java/util/dictionaryhtml