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

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

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

Transkript

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

2 FORTSÄTTNING TRÄD

3 RECAP (förra föreläsningen)

4 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier

5 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur

6 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot

7 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder

8 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder Begrepp: Nod, Barn, Löv, Förälder

9 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder Begrepp: Nod, Barn, Löv, Förälder ADT:ns interface och operationer pekare till vänster barn data pekare till höger barn

10 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder Begrepp: Nod, Barn, Löv, Förälder ADT:ns interface och operationer Implementation av en trädnod (BTree) i C pekare till vänster barn data pekare till höger barn

11 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder Begrepp: Nod, Barn, Löv, Förälder ADT:ns interface och operationer Implementation av en trädnod (BTree) i C pekare till vänster barn Kod för InsertSorted - mindre till vänster och större till höger data pekare till höger barn

12 RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta används för att beskriva hierarkier Ett träd är en samling element som sparas i noder, vilka är sammankopplade i en trädstruktur Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot Binära träd En speciell kategori av träd Varje förgrening går till högst två noder Begrepp: Nod, Barn, Löv, Förälder ADT:ns interface och operationer Implementation av en trädnod (BTree) i C Kod för InsertSorted - mindre till vänster och större till höger Traversering av binära träd (preorder, inorder och postorder) pekare till vänster barn data pekare till höger barn

13 RECAP (förra föreläsningen) A: B: C: Toppen på trädet kallas rot och varje träd (delträd) har en ensam rot C utgör roten i ett delträd C: D: D: E: F: E: F:

14 RECAP (förra föreläsningen) TRAVERSERING De metoder som brukar användas kallas: Preorder: behandlar data före besök av barnträden Inorder: behandlar data mellan besöken av barnträden Postorder: behandla data efter att barnträden besökts?

15 TRAVERSERING ÖVNING Hur ser funktionerna för att traversera med dessa tre metoder ut? Preorder: behandla data före besök av barnträden Inorder: behandla data mellan besöken av barnträden Postorder: behandla data efter att barnträden besökts Skriv en funktion för vardera traverseringsmetod Använd rekursion

16 ÖVNING EN LÖSNING PreOrder(BTreeNode root) //root till delträd (första gången - hela trädet) If root!= null then //om ej tomt träd Print(root) //gör något med noden PreOrder(root.left) //gå till vänster barnträd PreOrder(root.right) //gå till höger barnträd end if InOrder(BTreeNode root) If root!= null then InOrder(root.left) Print(root) InOrder(root.right) end if //root till delträd (första gången - hela trädet) //om ej tomt träd //gå till vänster barnträd //gör något med noden //gå till höger barnträd PostOrder(BTreeNode root) //root till delträd (första gången - hela trädet) If root!= null then //om ej tomt träd PostOrder(root.left) //gå till vänster barnträd PostOrder(root.right) //gå till höger barnträd Print(root) //gör något med noden end if

17 REMOVE Ta bort godtycklig nod från det sorterade binära trädet Trädet ska fortfarande vara sorterat efter bortagningen

18 REMOVE Ta bort godtycklig nod från det sorterade binära trädet Trädet ska fortfarande vara sorterat efter bortagningen Tre fall: Ta bort löv Ta bort nod med höger ELLER vänsterbarn Ta bort en nod med höger OCH vänsterbarn

19 REMOVE Ta bort löv root 10 6 Remove( )

20 REMOVE Ta bort löv root 10 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt)

21 REMOVE Ta bort löv root 10 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) Sätt förälderns pekare (som pekar på noden som ska tas bort) till null 6

22 REMOVE Ta bort löv root 10 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) Sätt förälderns pekare (som pekar på noden som ska tas bort) till null Lövet är borttaget 6

23 REMOVE Ta bort löv parent remove root 10 sätt remove till samma som rooten. Låt parent vara NULL 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) Sätt förälderns pekare (som pekar på noden som ska tas bort) till null Lövet är borttaget 6

24 REMOVE Ta bort löv remove parent 8 root 10 Sätt parent till remove och flytta remove till vänster barn - 6 är mindre än Remove( ) Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) Sätt förälderns pekare (som pekar på noden som ska tas bort) till null Lövet är borttaget 6

25 REMOVE Ta bort löv parent root 10 Sätt parent till remove och flytta remove till vänster barn - 6 är mindre än 8 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) 5 remove Sätt förälderns pekare (som pekar på noden som ska tas bort) till null Lövet är borttaget 6

26 REMOVE Ta bort löv root 10 Sätt parent till remove och flytta remove till höger barn - 6 är större än 5 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) 5 parent Sätt förälderns pekare (som pekar på noden som ska tas bort) till null 6 remove Noden är hittad! Lövet är borttaget

27 REMOVE Ta bort löv root 10 6 Remove( ) 8 20 Leta reda på noden som ska tas bort, (se till att komma åt dess förälder på något sätt) 5 parent Sätt förälderns pekare (som pekar på noden som ska tas bort) till null 6 remove sätt parent s högerlänk till NULL - för att länka bort 6 Lövet är borttaget glöm inte att frigöra minnet för remove

28 REMOVE Ta bort nod med ett barn Nu är det fyra saker vi måste testa Noden som skall tas bort kan ha ett vänsterbarn Noden som skall tas bort kan ha ett högerbarn Noden som ska tas bort kan vara ett vänsterbarn Noden som ska tas bort kan vara ett högerbarn

29 REMOVE Ta bort nod med ett barn Generell Algoritm Om noden som ska tas bort har ett vänsterbarn Om noden är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens vänsterbarn Annars (om noden är ett högerbarn) Förälderns högerpekare ska peka på nodens vänsterbarn Annars (om noden har ett högerbarn) Om noden är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens högerbarn Annars (om noden är ett högerbarn) Förälderns högerpekare ska peka på nodens högerbarn

30 REMOVE Ta bort nod med ett barn root 10 5 Remove( )

31 REMOVE Ta bort nod med ett barn root 10 5 Remove( ) 8 20 Har ett högerbarn

32 REMOVE Ta bort nod med ett barn root 10 5 Remove( ) 8 20 Har ett högerbarn Är ett vänsterbarn

33 REMOVE Ta bort nod med ett barn root 10 5 Remove( ) Har ett högerbarn Är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens högerbarn 6

34 REMOVE Ta bort nod med ett barn root parent 10 5 Remove( ) 8 20 Har ett högerbarn Är ett vänsterbarn remove Förälderns vänsterpekare ska peka på nodens högerbarn 6

35 REMOVE Ta bort nod med ett barn root parent 10 5 Remove( ) 8 20 Har ett högerbarn Är ett vänsterbarn remove Förälderns vänsterpekare ska peka på nodens högerbarn glöm inte att frigöra minnet för remove 6

36 REMOVE Ta bort nod med ett barn root 10 8 Remove( )

37 REMOVE Ta bort nod med ett barn root 10 8 Remove( ) 8 20 Har ett vänsterbarn

38 REMOVE Ta bort nod med ett barn root 10 8 Remove( ) 8 20 Har ett vänsterbarn Är ett vänsterbarn

39 REMOVE Ta bort nod med ett barn root Remove( ) Har ett vänsterbarn Är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens vänsterbarn

40 REMOVE Ta bort nod med ett barn parent root 10 remove Remove( ) Har ett vänsterbarn Är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens vänsterbarn

41 REMOVE Ta bort nod med ett barn parent root 10 remove Remove( ) Har ett vänsterbarn Är ett vänsterbarn Förälderns vänsterpekare ska peka på nodens vänsterbarn glöm inte att frigöra minnet för remove

42 REMOVE Ta bort nod med två barn 45 Nod att ta bort

43 REMOVE Ta bort nod med två barn 45 Nod att ta bort Vi kan inte bara flytta delträdet (som vi gjorde när noden har ett barn), vart ska vi då sätta nod 49 med delträd?

44 REMOVE Ta bort nod med två barn 45 Nod att ta bort Hur skulle en algoritm för att ta bort en nod med två barn kunna se ut? Fundera en stund!

45 REMOVE Ta bort nod med två barn Generell Algoritm 1. Hitta det minsta värdet i höger delträd eller det största värdet i vänster delträd 2. Kopiera detta värde till den nod som ska tas bort 3. Ta bort den nod som kopierades

46 REMOVE Ta bort nod med två barn 45 Nod att ta bort

47 REMOVE Ta bort nod med två barn 45 Hitta minsta värdet i höger delträd

48 REMOVE Ta bort nod med två barn Hitta minsta värdet i höger delträd Kopiera

49 REMOVE Ta bort nod med två barn Hitta minsta värdet i höger delträd Kopiera Ta bort

50 REMOVE Ta bort nod med två barn Hitta minsta värdet i höger delträd Kopiera Ta bort 54 Observera att noden som tas bort kan ha ett högerbarn och att vi då måste hantera borttagning av nod med ett barn!

51 REMOVE Ta bort nod med två barn Hitta minsta värdet i höger delträd Kopiera Ta bort 54 Är detta fortfarande ett sorterat binärt träd?

52 REMOVE Ta bort nod med två barn 45 Nod att ta bort 52 Eller

53 REMOVE Ta bort nod med två barn 45 Hitta största värdet i vänster delträd

54 REMOVE Ta bort nod med två barn Hitta största värdet i vänster delträd Kopiera

55 REMOVE Ta bort nod med två barn Hitta största värdet i vänster delträd Kopiera Ta bort 54 Observera att noden som tas bort kan ha ett vänsterbarn och att vi då måste hantera borttagning av nod med ett barn!

56 REMOVE Ta bort nod med två barn Hitta största värdet i vänster delträd Kopiera Ta bort 54 Är detta fortfarande ett sorterat binärt träd? ?

57 HÖJDEN PÅ ETT FULLT TRÄD Höjd = 1, n = 1 Höjd = 2, n = 3 Höjd = 3, n = 7 Höjd = 4, n = 15 Den höjd trädet bör ha om det är balanserat Så att n = 2 h - 1 Eller h = log2(n + 1)

58 BALANSERING Trädets höger och vänster delträd ska vara lika stora (så gott det går) Ej balanserat Balanserat höjd = 3 höjd = 4

59 BALANSERING Hur tar vi reda på om ett träd är balanserat eller inte? Jämför det faktiska nivådjupet med det teoretiska nivådjupet, är det faktiska djupare så är trädet obalanserat. Hur gör vi själva balanseringen? Fundera på hur en algoritm skulle kunna se ut. Tips, använd en array för mellanlagring

60 BALANSERING Algoritm för att balansera ett binärt träd Vi kan använda rotation, om vi hinner hanterar vi detta senare i kursen annars läser ni på själva (AVL träd) En mer hands on algoritm är: Skriv hela trädet till en array i sorterad ordning (inorder). Töm trädet (frigör allt minne och sätt rooten till NULL) Bygg trädet rekursivt från arrayen enligt nedan: Vänster del av arrayen/delarrayen till vänster delträd Höger del av arrayen/delarrayen till höger delträd Tills alla element i arrayen är inlagda i trädet

61 ÖVNING Balansera följande träd med föregående algoritm 10 Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) =

62 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt:

63 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt: 30 root mittersta blir root

64 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: vänster delarray bildar vänster delträd - mittersta i delarrayen blir vänster delträds root root i delträd Bygg upp trädet rekursivt: root

65 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt: 30 root vänster delarray bildar vänster delträd - mittersta i delarrayen blir vänster delträds root root i delträd 5 10

66 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: höger delarray bildar höger delträd - mittersta i delarrayen blir höger delträds root Bygg upp trädet rekursivt: root i delträd 5 20 root

67 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: höger delarray bildar höger delträd - mittersta i delarrayen blir höger delträds root Bygg upp trädet rekursivt: root root i delträd

68 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt: 30 root vänster delarray bildar vänster delträd - mittersta i delarrayen blir vänster delträds root root i delträd

69 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt: 30 root höger delarray bildar höger delträd - mittersta i delarrayen blir höger delträds root root i delträd

70 ÖVNING EN LÖSNING Antal noder = 7 Faktiskt djup/höjt = 6 Teoretiskt djup/höjd = log2(7+1) = 3 Inorder till array: Bygg upp trädet rekursivt: 30 root Hela arrayen är behandlad - Trädet är byggt! ? Sorterat och Balanserat Binärt Träd

71 BINÄRT TRÄD (linjärt minne) Ett binärt träd kan lagras i ett enda sammanhängande minne - t.ex. en array Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index = heltalsdelen av i/2

72 1 H Roten har index 1 2 D 3 K 4 5 B F 6 7 J L A C E G I H D K B F J L A C E G I Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index i/2 (int)

73 LINJÄRT MINNE Sammanhängande minne är ej flexibelt Om trädet inte är fullt reserveras onödigt mycket minne - man måste veta hur stort trädet ska vara från början Borttagning och insättning av noder kan kräva kopiering Effektivt Traversering (goda cache-effekter) Vet man storleken innan och den inte ändras så elimineras problemen...återkommer i samband med sortering

74 INFÖR LABBEN Läs labbspecen noggrant och flera gånger bryt ut vad det är som ska göras samt vilka krav som finns Gör ett interface (på papper eller direkt i datorn) - diskutera med en kompis Skapa noden och själva trädet samt ett enklare huvudprogram Gör en funktion i taget (i den mån det går) - och TESTA! När du tror att du är färdig - läs labbspecen igen...?

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

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index

Läs mer

Träd Hierarkiska strukturer

Träd Hierarkiska strukturer Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden

Läs mer

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

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas

Läs mer

Träd. Rot. Förgrening. Löv

Träd. Rot. Förgrening. Löv Träd Träd Rot Förgrening Löv Exempel: Organisationsschema Rot Överkucku Förgrening Underhuggare Underhuggare Administativ chef Kanslichef Knegare Knegare Knegare Byråchef Löv Intendent Avd. chef Intendent

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

Vad har vi pratat om i kursen?

Vad har vi pratat om i kursen? Vad har vi pratat om i kursen? Föreläsning 1 & 2 Systemminnet och systemstacken Rekursion Abstrakta datatyper Föreläsning 3 ADT:n Länkad lista Föreläsning 4 ADT:n Kö ADT:n Stack Föreläsning 5 Komplexitet

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften

Läs mer

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

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 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 Det är extra mycket

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

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

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:

Läs mer

Lösningar Datastrukturer TDA

Lösningar Datastrukturer TDA Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både

Läs mer

Programkonstruktion och. Datastrukturer

Programkonstruktion och. Datastrukturer Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?

Läs mer

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

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find TDDI16 Datastrukturer och algoritmer Prioritetsköer, heapar, Union/Find Prioritetsköer En vanligt förekommande situation: Väntelista (jobbhantering på skrivare, simulering av händelser) Om en resurs blir

Läs mer

Föreläsning 13. Träd

Föreläsning 13. Träd Föreläsning 13 Träd Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder med pilar emellan.

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

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

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 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 Terminologi - träd Ett träd i datalogi består av en rotnod

Läs mer

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 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 AVL-träd, Multi-Wa -sökträd, B-träd DDD7: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer november 5 omm Färnqvist, IDA, Linköpings universitet. Innehåll Innehåll Binära

Läs mer

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

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31 Programmering i C++ EDA623 Dynamiska datastrukturer EDA623 (Föreläsning 11) HT 2013 1 / 31 Dynamiska datastrukturer Innehåll Länkade listor Stackar Köer Träd EDA623 (Föreläsning 11) HT 2013 2 / 31 Länkade

Läs mer

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

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 Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:

Läs mer

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel

Läs mer

Datastrukturer. Föreläsning 5. Maps 1

Datastrukturer. Föreläsning 5. Maps 1 Datastrukturer Föreläsning 5 Maps 1 Traversering av träd Maps 2 Preordningstraversering Traversera = genomlöpa alla noderna i ett träd Varje nod besöks innan sina delträd Preordning = djupet först Exempel:

Läs mer

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)

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) Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal

Läs mer

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å

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å Binära träd 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å gånger, talar man om binära träd. Sådana

Läs mer

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

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 Föreläsning 6 Sökträd: AVL-träd, Multi-Wa -sökträd, B-träd DDC7/9: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer september omm Färnqvist, IDA, Linköpings universitet 6. Innehåll

Läs mer

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-03-27 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal

Läs mer

Algoritmer och datastrukturer 2012, föreläsning 6

Algoritmer och datastrukturer 2012, föreläsning 6 lgoritmer och datastrukturer 2012, föreläsning 6 Nu lämnar vi listorna och kommer till nästa datastruktur i kursen: träd. Här nedan är ett exempel på ett träd: Båge Rot De rosa noderna är ett exempel på

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som

Läs mer

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

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

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

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet

Läs mer

Föreläsning 10 Innehåll

Föreläsning 10 Innehåll Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet

Läs mer

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

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor

Läs mer

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

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 Seminarium inära sökträd Innehåll inära sökträd inära sökträd Definition Implementering lgoritmer Sökning Insättning orttagning Effektivitet alanserade binära sökträd Eempel på vad du ska kunna Förklara

Läs mer

Algoritmer och datastrukturer 2012, fo rela sning 8

Algoritmer och datastrukturer 2012, fo rela sning 8 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

Läs mer

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

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd Programmeringsmetodik DV1 Programkonstruktion 1 Moment 8 Om abstrakta datatyper och binära sökträd PK1&PM1 HT-06 moment 8 Sida 1 Uppdaterad 2005-09-22 Tabeller En viktig tillämpning är tabellen att ifrån

Läs mer

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Övningsuppgifter #11, Programkonstruktion och datastrukturer Övningsuppgifter #11, Programkonstruktion och datastrukturer Lösningsförslag Elias Castegren elias.castegren@it.uu.se Övningar 1. 1 2. 2 3. Ett binomialträd med rang n har 2 n noder. En binomial heap innehåller

Läs mer

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. Implementering av tabellen. Operationer på tabellen Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabellen att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:

Läs mer

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

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2 Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning

Läs mer

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

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 Översikt Linjär sökning Sökning Binär sökning Hashtabeller Programmering tillämpningar och datastrukturer 2 Linjär sökning Binärt sökträd Undersök ett element i taget tills du hittar det sökta Komplexitet

Läs mer

Föreläsning 5 Datastrukturer (DAT037)

Föreläsning 5 Datastrukturer (DAT037) Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT036/DAT037/DIT960) Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:

Läs mer

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

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 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äsanvisningar och

Läs mer

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

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabeller att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:

Läs mer

Seminarium 13 Innehåll

Seminarium 13 Innehåll Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 12 2 Innehåll Handledning, labbar, samarbete, etc Sökträd Sökning Delar av kapitel 15.4-15.5 i boken + OHbilderna 3 Handledning/labutlämning Ingen labhandledning

Läs mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150112 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***

Läs mer

Träd - C&P kap. 10 speciellt binära sökträd sid. 452

Träd - C&P kap. 10 speciellt binära sökträd sid. 452 Föreläsning 10 Träd - C&P kap. 10 speciellt binära sökträd sid. 452 Dessa bilder finns i PDF-format på http://dsv.su.se/courses/pm2/f10/index.html Jozef Swiatycki DSV Bild 1 förälder Träd allmänt Binär-länkad

Läs mer

729G04: Inlämningsuppgift Diskret matematik

729G04: Inlämningsuppgift Diskret matematik 729G04: Inlämningsuppgift Diskret matematik Instruktioner Dessa uppgifter utgör del av examinationen i kursen 729G04 Programmering och diskret matematik. Uppgifterna ska utföras individuellt och självständigt,

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända

Läs mer

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

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

Programkonstruktion och Datastrukturer

Programkonstruktion och Datastrukturer Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att

Läs mer

Föreläsning 9. Sortering

Föreläsning 9. Sortering Föreläsning 9 Sortering Föreläsning 9 Sortering Sortering och Java API Urvalssortering Instickssortering Söndra och härska Shellsort Mergesort Heapsort Quicksort Bucketsort Radixsort Läsanvisningar och

Läs mer

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Algoritmer och Komplexitet ht 08. Övning 5. Flöden. Reduktioner. Förändrat flöde

Algoritmer och Komplexitet ht 08. Övning 5. Flöden. Reduktioner. Förändrat flöde Algoritmer och Komplexitet ht 08. Övning 5 Flöden. Reduktioner Förändrat flöde a) Beskriv en effektiv algoritm som hittar ett nytt maximalt flöde om kapaciteten längs en viss kant ökar med en enhet. Algoritmens

Läs mer

Föreläsning 14. Träd och filhantering

Föreläsning 14. Träd och filhantering Föreläsning 14 Träd och filhantering Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder

Läs mer

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

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), 2017-01-11 1. Loopen upprepas n gånger. getat på en dynamisk array tar tiden O(1). member på ett AVL-träd av storlek n tar tiden O(log n).

Läs mer

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

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960 Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:

Läs mer

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2 Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.1

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Facit Tentamen TDDC (7)

Facit Tentamen TDDC (7) Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar

Läs mer

TDDC Terminologi Uppdaterad Fö #1

TDDC Terminologi Uppdaterad Fö #1 Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller

Läs mer

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037) Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-07 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c) Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer Tentamen i.. TDDC30/725G63 Objektorienterad programmering i Java, datastrukturer och algoritmer Datum 2012-12-21 Tid 14-18 Provkod DAT1 Institution Institutionen för Datavetenskap (IDA) Jour Johan Janzén

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Grafer och grafalgoritmer Hur implementerar man grafer? Hur genomsöker (traverserar) man grafer? Hur genomsöker man viktade grafer (och hittar kortaste vägen)? Hur beräknar

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-23 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många

Läs mer

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

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4 Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

Föreläsning 11. ADT:er och datastrukturer

Föreläsning 11. ADT:er och datastrukturer Föreläsning 11 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

Algoritmer och datastrukturer

Algoritmer och datastrukturer Algoritmer och datastrukturer Binära sökträd Hash Tabeller Sökning Många datastukturer försöker uppnå den effektivaste sökningen I arrayer - linjer sökning, och binärt sökning när arrayen kan vara sörterad

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer

Läs mer

Informationsteknologi Tom Smedsaas 19 augusti 2016

Informationsteknologi Tom Smedsaas 19 augusti 2016 Informationsteknologi Tom Smedsaas 19 augusti 016 VL-träd Definition Ett VL-träd är ett binärt sökträd där det för varje nod gäller att skillnaden i höjd mellan nodens vänster och höger subträd är högst

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 23 24 Konstruktion av Fält Fysisk datatyp i

Läs mer

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen Datastrukturer D DAT 036/DIT960 Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 25 26 Fält Modell Schackbräde Organisation n-dimensionellt

Läs mer

EN SNABBIS OM DoA. Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet. Pedher Johansson 7 januari 2008

EN SNABBIS OM DoA. Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet. Pedher Johansson 7 januari 2008 EN SNABBIS OM DoA Programmeringsmetodik med Java, HT-07 Kognitionsvetenskapliga programmet Pedher Johansson 7 januari 2008 UMEÅ UNIVERSITY DEPARTMENT OF COMPUTING SCIENCE SE-901 87 UMEÅ SWEDEN Innehållsförteckning

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till

Läs mer

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =

Läs mer

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 Prioritetsköer Heapar Tillämpning... 3 Föreläsning 19 Prioritetskö, Heap, Trie, Union/Find, Geometriska tillämpningar av BST TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 13 november 2015

Läs mer