Datastrukturer och algoritmer

Relevanta dokument
Datastrukturer och algoritmer

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

Datastrukturer och algoritmer

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

Datastrukturer och algoritmer (Python) Algoritmer och listor

Datastrukturer och algoritmer

Datastrukturer. föreläsning 3. Stacks 1

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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ö

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

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

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 11. ADT:er och datastrukturer

Föreläsning 2 Datastrukturer (DAT037)

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

Länkade strukturer. (del 2)

Länkade listor, stackar och köer

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

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT036)

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Övning 1 - Abstrakta datatyper

Abstrakta datastrukturer

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.

Föreläsning 3. Stack

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

Abstrakta datatyper Laboration 2 GruDat, DD1344

Föreläsning 3. Stack

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

Föreläsning 14 Innehåll

Fredag 10 juni 2016 kl 8 12

Föreläsning 4 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

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. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

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

Datastrukturer och algoritmer

Tentamen Datastrukturer för D2 DAT 035

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

Träd Hierarkiska strukturer

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

Föreläsning 4 Datastrukturer (DAT037)

Tommy Färnqvist, IDA, Linköpings universitet

Objektorienterad programmering

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

Datastrukturer och algoritmer

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ö

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

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

Föreläsning Datastrukturer (DAT036)

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

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

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

Föreläsning 9 Innehåll

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

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

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

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

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

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

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

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

Sätt att skriva ut binärträd

Föreläsning 5: Dynamisk programmering

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

Tentamen Datastrukturer (DAT036)

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

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

Tentamen Datastrukturer (DAT036)

Lösning av några vanliga rekurrensekvationer

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

Grundläggande datalogi - Övning 2

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

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning Datastrukturer (DAT036)

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

Föreläsning 8 Datastrukturer (DAT037)

Datastrukturer. Föreläsning 5. Maps 1

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

Föreläsning Datastrukturer (DAT037)

Föreläsning 9 Innehåll

Föreläsning 8: Exempel och problemlösning

Algoritmer och datastrukturer TDA Fredrik Johansson

Dugga Datastrukturer (DAT036)

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Mål Förklaring av termer

Föreläsning 3 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Lösningsförslag till exempeltenta 2

Lösningar Datastrukturer TDA

Föreläsning 1 Datastrukturer (DAT037)

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

Transkript:

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 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 25 26 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 27 28

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 29 30 Dynamiska resurser 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 31 Tippel som består av ett värde n-länkad Cell n stycken länkar Byggmaterial för andra datatyper n-länkad struktur Objekt konstruerade med n-länkade celler Listor, träd 32 Gränsyta till 1Cell 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)) typedef struct Cell{ DATA data; struct Cell *next; } Cell; 1Cell i C 33 34

1-Cell i Python class OneCell: def init (self): self._data = None self._link = None def setvalue(self,data): self._data = data def setlink(self,link): self._link =link Modell Specialisering av Lista Begränsningar på operationer Linjärt ordnad struktur def inspectlink(self): return self._link def inspectvalue(self): return self._data 35 36 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 37 38 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 39 40

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 41 42 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 43 44 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 45 46

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 47 48 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 49 50 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 51 52