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

Relevanta dokument
Datastrukturer och algoritmer

Datastrukturer och algoritmer

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

Datastrukturer. föreläsning 3. Stacks 1

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

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

Föreläsning 2 Datastrukturer (DAT037)

Datastrukturer och algoritmer

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Föreläsning Datastrukturer (DAT036)

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

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Länkade strukturer. (del 2)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Tommy Färnqvist, IDA, Linköpings universitet

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning Datastrukturer (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Abstrakta datastrukturer

Föreläsning 2. Stackar, köer och listor TDDC91,TDDE22,725G97: DALG. Innehåll. 1 ADT stack. 1.1 Tillämpningar

Tommy Färnqvist, IDA, Linköpings universitet

Länkade listor, stackar och köer

Datastrukturer. föreläsning 6. Maps 1

Tentamen Datastrukturer för D2 DAT 035

Tentamen i Algoritmer & Datastrukturer i Java

Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Tentamen Datastrukturer D DAT 035/INN960

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

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Datastrukturer och algoritmer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 3. Stack

Föreläsning 3 Datastrukturer (DAT037)

Lösningsförslag till exempeltenta 2

Abstrakta datatyper Laboration 2 GruDat, DD1344

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

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

Datastrukturer och algoritmer

Föreläsning 4 Innehåll

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

Lösning av några vanliga rekurrensekvationer

Programkonstruktion och Datastrukturer

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

Algoritmer och datastrukturer TDA Fredrik Johansson

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

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

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

Datastrukturer och algoritmer

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

Vad har vi pratat om i kursen?

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Föreläsning Datastrukturer (DAT037)

Föreläsning 3. Stack

Träd Hierarkiska strukturer

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Övning 1 - Abstrakta datatyper

Datastrukturer. föreläsning 8. Lecture 6 1

Fredag 10 juni 2016 kl 8 12

Tentamen Datastrukturer, DAT037 (DAT036)

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Objektorienterad programmering

Föreläsning 14 Innehåll

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Föreläsning Datastrukturer (DAT036)

Algoritmer och datastrukturer TDA143

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Rekursion och induktion för algoritmkonstruktion

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

Datastrukturer och algoritmer

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

Föreläsning 5: Dynamisk programmering

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

Datastrukturer. Föreläsning 5. Maps 1

Föreläsning 3 Datastrukturer (DAT037)

Mål Förklaring av termer

Stackar, köer, iteratorer och paket

Datastrukturer. föreläsning 10. Maps 1

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Algoritmer, datastrukturer och komplexitet

Datastrukturer i Haskell

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

Mål Förklaring av termer

Lösningsförslag till tentamen Datastrukturer, DAT037,

Föreläsning 8 Datastrukturer (DAT037)

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 5 Innehåll

Transkript:

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 olika faser i utvecklingen. Från specifikation av problemet tills dess att den färdiga produkten har installerats och börjat användas hos kund. I denna kurs kommer vi ge en introduktion till testning av mindre mjukvarukomponenter - enhetstestning. 3

Syfte med testning Syftet är att hitta och identifiera fel så att dessa kan identifieras och åtgärdas så tidigt som möjligt i utvecklingsprocessen. Mycket dyrare att åtgärda fel om vi hittar det i ett senare skede. 4

Enhetstestning Målet med enhetstestning är att testa en mjukvarukomponent (klass, funktion eller metod) isolerat från resten av programmet Man kan på så vis övertyga sig om att komponenten fungerar korrekt innan man använder sig av den i ett större program. Enhetstestet funkar också som ett kontrakt som koden måste följa. Tex om man ändrar något i implementationen. Görs ofta av programmeraren som skriver/ska skriva koden 5

Testa en datatyp Vad testa? - Börja med de enklaste testerna. - Testa gränsfall - Fundera över vad som kan ställa till problem. - Viktigt att täcka in alla operationer... -... och att täcka in de olika fall som finns i operationerna. Genom att vi noga tänker efter vilka tester vi gör så kan vi minska antalet tester. Försök testa så lite som möjligt i varje test - hjälper till att identifiera vad som går fel. Skriv varje test i en egen funktion. 6

Stack Modell Papperstrave Specialisering av datatypen Lista Begränsningar på operationer Linjärt ordnad struktur Före / efter relation 7

Stack LIFO Last In First Out Insättning, borttagning, avläsning i toppen av stacken 8

Informell specifikation till Stack Empty konstruerar tom stack Push(v,s) lägger (ett element med värdet) v överst på stacken Top(s) är värdet av det översta elementet på stacken (förutsatt att stacken inte är tom) Pop(s) avlägsnar det översta elementet från stacken (förutsatt att stacken inte är tom) Isempty(s) testar om stacken är tom 9

Formell definition Uppsättning axiom Beskriver relationer mellan typens olika operationer Axiom kan användas för att göra formella härledningar i datatypen 10

Formell specifikation till Stack Ax 1: Isempty(Empty) Ax 2: Isempty(Push(v,s)) Ax 3: Pop(Push(v,s)) = s Ax 4: Top(Push(v,s)) = v Ax 5: Isempty(s) => Push(Top(s), Pop(s)) = s 11

Gränsyta till Stack abstract datatype Stack(val) Empty() -> Stack(val) Push(v:val,s:Stack(val)) -> Stack(val) Top(s:Stack(val)) -> val Pop(s:Stack(val)) -> Stack(val) Isempty(s:Stack(val)) -> Bool 12

Stack Konstruktion Lista Toppen av stacken = början av listan 13

Komplexitet Relativ komplexitet: Tittar bara på ytan hur många list-operationer som behövs per stack-operation Antalet listoperationer är inte beroende av antalet element i stacken Absolut komplexitet: Multiplicerar alla relativa komplexiteter ned till fysiska datatyper. Dvs tittar även på hur listan är konstruerad. 14

Stack konstruerad som Lista Lista som fält Tidskomplexiteten Push och Pop förväntas vara oberoende av stackens storlek Toppen av stacken början eller slutet av listan? Lista som Riktad lista med 1-celler Uteslutningar och specialiseringar av operationer O(1) tidskomplexitet 15

Stack Konstruerad som fält - Botten i slutet - Stacken läggs i slutet av fältet Push och Pop Ο(1) Inga stora dataomflyttningar - Botten i början - Två stackar i samma fält 16

Stack Tillämpningar Avbryter bearbetning som senare kanske återupptas Återspårning (backtracking) Till senaste gjorda valet Traversera i andra datatyper (grafer och träd) 17

Stack Tillämpningar Rekursion Fakultet n! factorial(n) if (n<=1) then return 1; else return n*factorial(n-1); Evaluering av uttryck 18

Kö Modell Kö Specialisering av Lista Begränsningar på operationer Linjärt ordnad struktur 19

Kö FIFO First In First Out Insättning i slutet av kön Borttagning i början av kön 20

Gränsyta för kö abstract datatype Queue(val) Empty () Queue(val) Enqueue (v:val,q:queue(val)) Queue(val) Front (q:queue(val)) val Dequeue (q:queue(val)) Queue(val) Isempty (q:queue(val)) Bool 21

Kö - konstruktion Lista Fronten på kön = början av listan Listan som Fält Komplexiteten Riktad lista med 1-celler Första köelementet länkar till det andra osv 22

Kö Konstruktion Cirkulär struktur med 1-celler Länken i slutet av kön pekar på fronten Cirkulär vektor Fördelar Inga omflyttningar Nackdelar Maximal storlek Outnyttjat utrymme Problem skilja en tom kö från en full 23

Kö Tillämpningar Buffert Routrar Skrivarkö Bredden-först-traversering 24