Datastrukturer och algoritmer

Relevanta dokument
Datastrukturer och algoritmer

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

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

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Datastrukturer. föreläsning 3. Stacks 1

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

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

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

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

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

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

Föreläsning 2 Datastrukturer (DAT037)

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

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

Datastrukturer och algoritmer (Python) Algoritmer och listor

Länkade strukturer. (del 2)

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

Tommy Färnqvist, IDA, Linköpings universitet

Abstrakta datastrukturer

Föreläsning Datastrukturer (DAT036)

Datastrukturer och algoritmer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Datastrukturer och algoritmer

Föreläsning 3. Stack

Tentamen i Algoritmer & Datastrukturer i Java

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

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

Föreläsning 4 Innehåll

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

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

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

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

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

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

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 14 Innehåll

Föreläsning 3. Stack

Tentamen Datastrukturer för D2 DAT 035

Innehåll. Föreläsning 10. Specifikation. Mängd. Specifikation. Konstruktion av mängd. Mängd Lexikon Hashtabell

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

Objektorienterad programmering

3 Listor. 3.1 Envägslistor

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

Länkade listor, stackar och köer

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

Övning 1 - Abstrakta datatyper

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

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

Föreläsning Datastrukturer (DAT036)

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Föreläsning 5: Dynamisk programmering

Träd Hierarkiska strukturer

Lösning av några vanliga rekurrensekvationer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 9 Innehåll

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...

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.

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

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

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

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

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

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

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

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

maxlist-1. Indexerad lista Länkad lista

Algoritmer och datastrukturer TDA Fredrik Johansson

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

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

Tentamen Datastrukturer (DAT036)

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

Datastrukturer. föreläsning 6. Maps 1

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

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

Tentamen Datastrukturer (DAT036)

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

Kurskod D0010E Datum Skrivtid 5tim

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 035/INN960

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Lösningar Datastrukturer TDA

Datastrukturer. Föreläsning 5. Maps 1

Algoritmer och datastrukturer TDA143

2 Pekare och dynamiska variabler.

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Abstrakta datatyper Laboration 2 GruDat, DD1344

Föreläsning 9 Innehåll

Vad har vi pratat om i kursen?

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

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

Facit Tentamen TDDC (7)

Transkript:

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 fält organiserat som rätblock Tillåts innehålla odefinierade elementvärden Statisk typ Specifikation Måste bestämma i förväg Datatypen för elementvärdena Antal dimensioner fältet Datatyp för varje koordinataxel 27 28 Ingående operationer Gränsyta Konstruktorer Create, Set-value Inspektorer Inspect-value, Has-value, Low, High Gränsyta till Fält Array(val,index)! Create (lo,hi:index) -> Array(val,index) Set-value(i:index,v:val,a:Array(val,index)) ->Array(val,index) Low (a:array(val,index)) -> index High (a:array(val,index)) -> index Has-value (i:index,a:array(val,index))-> Bool Inspect-value (i:index,a:array(val,index))-> val 29 30

Konstruktion av Fält Fysisk datatyp i många språk N-dim Fält som 1-dim Fält vecklar ut fältet Matriser lagras radvis Fält som Lista Vektorer kan konstrueras som Lista Inte så effektiv Matris kan konstrueras som Lista av listor 31 32 Gles matris Gles matris stort antal element är odefinierade eller har värdet noll Implementeras som Vektor av tabell Sparar utrymme Sparar tid Tillämpningar Fält Tekniska beräkningar Geometriska transformationer Rotation, translation, skalning Linjära ekvationssystem Kantdetektering i bilder Spelmatriser 33 34 Länk Gränsyta till Länk Referens, pekare Objekt som refererar till annat objekt Konstrueras oftast som index i fält (kursor) Billigare kopiera länkar till objekt än objekten själva Abstract datatype! Make Nil Isnil Follow Equal Link (obj) (x : obj) -> Link (obj) ( ) -> Link (obj) (l : Link (obj)) -> Bool (l : Link (obj)) -> obj (l1,l2 : Link (obj)) -> Bool 35 36

Dynamiska resurser Gränsyta till 1Cell Skapar dataobjekt för tillfälliga behov Kill- lösgör resurser Jämför med i free C Create - reserverar resurser jämför med malloc, calloc, osv i C Vålnader minne som är avallokerat, men som vi fortfarande refererar till Sophämtning 1Cell(val)! Create () -> 1Cell(val) Set-value(v:val,c:1Cell(val)) -> 1Cell(val) Set-Link (l:link(1cell(val)),c:1cell(val)) -> 1Cell(val) Inspect-value (c:1cell(val))-> val Inspect-link (c:1cell(val))-> Link(1Cell(val)) Kill (c:1cell(val)) 37 38 1Cell i C typedef struct Cell{ DATA data struct Cell *next } Cell; Modell Specialisering av Lista Begränsningar på operationer Linjärt ordnad struktur 39 40 FIFO First In First Out Insättning i slutet av kön Borttagning i början av kön Gränsyta för 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 41 42

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 Cirkulär Lista med 1-celler Länken i slutet av kön pekar på fronten Cirkulär vektor + Inga omflyttningar - Maximal storlek - Outnyttjat utrymme - Problem skilja en tom kö från en full 43 44 Tillämpningar Buffert Skrivarkö Bredden-först-traversering Modell Papperstrave Specialisering av datatypen Lista Begränsningar på operationer Linjärt ordnad struktur Före / efter relation 45 46 LIFO Last In First Out Insättning, borttagning, avläsning i toppen av stacken Informell specifikation till 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 inte stacken är tom) Pop(s) avlägsnar det översta elementet från stacken (förutsatt att inte stacken är tom) Isempty(s) testar om stacken är tom 47 48

Formell specifikation Uppsättning axiom Beskriver relationer mellan typens olika operationer Axiom kan användas för att göra formella härledningar i datatypen Formell specifikation till 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 49 50 Gränsyta till (val)! Empty () -> (val) Push (v:val,s:(val)) -> (val) Top (s:(val)) -> val Pop (s:(val)) -> (val) Isempty (s:(val)) -> Bool Lista Toppen av stacken = början av listan Lista som fält Komplexitet 51 52 Fält Botten i slutet en läggs i slutet av fältet» Push och Pop!(1)» Inga stora dataomflyttningar Botten i början Möjlighet att ha två stackar i samma fält Länkad Lista Riktad lista med 1-celler Uteslutningar och specialiseringar av operationer!(1) tidskomplexitet 53 54

Tillämpningar Avbryter bearbetning som senare kanske återupptas Återspårning (backtracking) Till senaste gjorda valet Tillämpningar Rekursion Fakultet n! factorial(n)!! if (n<=1) then return 1;!! else return n*factorial(n-1); Evaluering av uttryck 55 56