Föreläsning 13 Datastrukturer (DAT037)

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

Föreläsning Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT037)

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 5 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Datastrukturer. Sammanfattning och Referenshäfte. Guldbrand, Eric Johansson, Algot

Föreläsning 11 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 14 Innehåll

Föreläsning Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Föreläsning 6 Datastrukturer (DAT037)

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

Sökning och sortering

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 3 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 035/INN960

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

Föreläsning Datastrukturer (DAT036)

Föreläsning 7 Datastrukturer (DAT037)

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

Föreläsning Datastrukturer (DAT036)

Lösningar Datastrukturer TDA

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Länkade strukturer, parametriserade typer och undantag

Datastrukturer. föreläsning 3. Stacks 1

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

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 8 Datastrukturer (DAT037)

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

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

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

Datastrukturer. föreläsning 10. Maps 1

Lösningsförslag till tentamen Datastrukturer, DAT037,

Föreläsning Datastrukturer (DAT036)

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

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

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

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

DAI2 (TIDAL) + I2 (TKIEK)

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Datastrukturer D DAT 036/INN960

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

Seminarium 13 Innehåll

Tentamen kl Uppgift 4. Uppgift 5

Vad har vi pratat om i kursen?

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

Datastrukturer. föreläsning 9. Maps 1

Föreläsning 13 Innehåll

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

Tentamen Datastrukturer D DAT 036/DIT960

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

Dugga Datastrukturer (DAT036)

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

Datastrukturer. föreläsning 6. Maps 1

Tentamen Datastrukturer för D2 DAT 035

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

Tentamen i Algoritmer & Datastrukturer i Java

Datastrukturer. föreläsning 9. Maps 1

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Exempeltenta GruDat 2002/2003

Föreläsning 9. Sortering

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Programmering för språkteknologer II, HT2014. Rum

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

Föreläsning 9 Innehåll

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 5: Grafer Del 1

Föreläsning 5 Innehåll

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

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

Algoritmer, datastrukturer och komplexitet

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

Algoritmer och datastrukturer 2012, fo rela sning 8

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

Programmering för språkteknologer II, HT2014. Rum

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 11 Innehåll

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Fredag 10 juni 2016 kl 8 12

Transkript:

Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 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 1

Sammanfattning 2

Modeller 3 Vi har använt förenklade modeller av verkligheten för att analysera våra datastrukturer och algoritmer, i första hand den uniforma kostnadsmodellen. Modellerna har begränsningar.

Ordonotation 4 Ordonotation gör det möjligt att dölja irrelevanta men även relevanta detaljer. Definition (O, Ω, Θ). Tänk på att dessa representerar mängder av funktioner, även om man skriver f(n) = O(g(n)). Regler.

Ordonotation 5 Exempel på regler: Polynom i n av grad k = O(n k ) log(n k ) = O(log n) f(n) + g(n) = O(max(f(n), g(n))) log(n!) = O(n log n) O(1) < O(log n) < O(n) < O(n log n) <

Komplexitetsanalys 6 Tidskomplexitet Utgår från att elementera operationer tar konstant tid, O(1). Lägg ihop de asymptotiska tiderna för alla operationer som exekveras. if-satser: Max-tiden av de två alternativen om inte en mer sofistikerad analys kan göras. loopar: Hur många gånger upprepas loopen. För nästlade loopar, håll koll på hur många gånger inre loopar upprepas beroende på indexens värden yttre loopar.

Komplexitetsanalys 7 Tidskomplexitet Ibland kan man få en snävare uppskattning genom att lyfta ut inre loop i analysen, exempelvis för graf-algoritmer och antalet bågar. Rekursiva metoder: Hur många gånger anropas metoden för olika storlek på data. Lyft ut rekursiva anropen vid analys. Även något om utrymmeskomplexitet för datastrukturer och extra minnesanvändning hos algoritmer.

Komplexitetsanalys 8 För funktioner där tiden beror på annat än indatas storlek Värsta- och bästafallskomplexitet. Medel- och amorterad komplexitet. Medelkomplexiteten är ofta komplicerad att räkna ut, eftersom den beror på den statistiska fördelningen av indata.

Amorterad tidskomplexitet 9 Abstraktion som gör det lättare (?) att analysera vissa datastrukturer. Man kan låta tidiga, billiga operationer betala för dyra, sena.

Amorterad tidskomplexitet 10 Bokföringsmetoden: Spara mynt i datastrukturen. Amorterad tidskomplexitet = faktisk tidskomplexitet + värdet av nya mynt värdet av sparade mynt som används. Om vi börjar med noll mynt: Total amorterad tidskomplexitet övre gräns för total faktisk tidskomplexitet.

Pseudokod 11 Blandning av programmeringsspråk, matematisk notation och naturligt språk. Mål: Fokusera på det viktiga, undvik onödiga detaljer. Ibland kan det vara bra med fler detaljer, ibland färre.

Abstrakt datatyp/datastruktur 12 Abstrakt datatyp: Matematisk abstraktion. I java: gränssnitt. Datastruktur: Implementation. I java: klass.

Generics 13 Gör implementeringar så universella som möjligt. Generics i java: typvariabler, extends. Ibland behöver typen ha vissa egenskaper (hashcode, equals, Comparable, )

Invarianter, assertions, testning 14 Invarianter för datastrukturer, pre och postconditions för metoder bidrar till dokumentation och underlättar förståelse och testning. Assertions i java.

Några (klasser av) abstrakta datatyper 15 Listor. Stackar. FIFO-köer. Prioritetsköer. Mängder. Avbildningar ( maps ). Grafer.

Tips: Återanvänd kod 16 Ofta behöver man inte implementera datastrukturer själv. Utgå från standarddatatyper. Om man någon gång behöver det kan man ändå dra nytta av existerande standarddatastrukturer.

17 2012/08:2 Uppgiften är att konstruera en datastruktur som representerar dubbelriktade maps (bijektioner mellan ändliga mängder): insert(s,t), target(s), source(t).

18 public class Bijection<S, T> { private Map<S, T> to; private Map<T, S> from; public Bijection() { to = new HashMap<S, T>(); from = new HashMap<T, S>(); } public void insert(s s, T t) { if (to.containskey(s) from.containskey(t)) { throw new IllegalArgumentException(); } to.put(s, t); from.put(t, s); } public T target(s s) { return to.get(s); } } public S source(t t) { return from.get(t); }

Listor 19 ADT med olika implementationer. Länkade listor: Långsam indexering. Snabb insättning (exkl sökning) i mitten. Vaktposter? Enkellänkade, dubbellänkade? Pekarjonglering. Testa! Invarianter. Dynamiska arrayer: Snabb indexering. Snabb insättning sist. Amorterad tidskomplexitet (bokföringsmetoden).

Stackar, FIFO-köer 20 Enkla implementationer med (olika sorters) listor. Cirkulära arrayer.

Träd 21 Begrepp, ex. höjd, djup. Genomlöpningar.

Prioritetsköer 22 Binära heapar: Heapordnade kompletta binära träd. Trädet representeras ofta av en array. Bubbla upp/ned. Leftistheapar: Heapordnade träd med leftistinvarianten: vänstra barnets högerryggrad högra barnets. Effektiv merge.

Mängder, avbildningar 23 Hashtabeller: Hashfunktioner. Kollisioner. Kedjning, öppen adressering. Lastfaktor.

Mängder, avbildningar Olika sorters sökträd: Obalanserade binära sökträd: Långsamma vid insättning av sorterad sekvens. Trädrotationer Höjdbalanserade. AVL-träd (invariant, hur insättning går till) Rödsvarta träd (invariant) B-träd (principen för icke-binära sökträd) Självbalanserade: Splay-träd (splaying, hur standardoperationerna går till) För de olika träden enligt : tidskomplexitet (O(log n) för balanserade, O(log n) amorterat för splay-träd) 24

25 Mängder, avbildningar Prefixträd: Nycklar: Strängar av tecken.. a. p r. a o g... r.. m.

26 Mängder, avbildningar Skipplistor: Insättning: Randomiserad algoritm. Förväntad tidskomplexitet.. 0 1 2 3 4 5 6 7 8

Grafer 27 ADT: G = (V, E). Begrepp: riktad, viktad, cyklisk, Datastrukturer: Grannlistor, grannmatriser.

Kortaste vägen 28 s 1. 4 2 2 t 0 För grafer utan vikter: Bredden först-sökning. Med ickenegativa vikter: Dijkstras algoritm.

Minsta uppspännande träd 29 10 11 9 1 8 3 7 4. 2 5 6 Prims algoritm: Liknar Dijkstras. Kruskals algoritm: Hanterar osammanhängande grafer.

30 Djupet först-sökning Graf: 1. 0 2 4 En möjlig uppspännande skog: 3 5 0. 1 4 2 5 3

Topologisk sortering 31 a d b c a, b, d, c, e eller a, b, c, d, e. ė. Några algoritmer: Djupet först-sökning, gå igenom skogen i preordning, från höger till vänster. Kö med noder vars virtuella ingrad är 0.

Starkt sammanhängande komponenter 32. En algoritm: Två djupet först-sökningar.

Starkt sammanhängande komponenter 32. En algoritm: Två djupet först-sökningar.

Sortering 33 Undre gräns: Ω(n log n). Urvalssortering: O(n 2 ). Insättningssortering: O(n 2 ). Mergesort: O(n log n). Quicksort: O(n log n) (medel). Heapsort: O(n log n). Hinksortering: O(N + n) (N: antalet hinkar). Radixsortering: O(d(N + n)) (N: talbasen, d: största antalet siffror ). Stabil? Adaptiv? In-place?

34 700 600 500 400 300 200 100 0 0 20 40 60 80 100 log₂ n n n log₂ n n²

Diverse 35 Iteratorer Java Collections Framework Rekursion Giriga algoritmer Divide and conquer

Skillnader från gamla tentor 36 Vissa saker har utgått ur kursinnehållet, men återfinns bland uppgifterna i gamla tentor. - Datastrukturer i funktionella språk, persistens - Potentialmetoden