Datastrukturer och algoritmer

Relevanta dokument
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. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Datastrukturer och algoritmer

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

12. Relationer och funktioner

12. Relationer och funktioner

Grammatik. BNF-grammatik

Föreläsning 9 Innehåll

Interfacen Set och Map, hashtabeller

Föreläsning 14 Innehåll

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

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

Datastrukturer. föreläsning 3. Stacks 1

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

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

Datastrukturer och algoritmer

TDDD78 Viktiga begrepp, del 2

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

Föreläsning 10 Innehåll

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Föreläsning 3. Stack

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

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

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

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Pre-Test 1: M0030M - Linear Algebra.

Diskutera. Hashfunktion

Föreläsning 11 Innehåll

Länkade strukturer. (del 2)

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

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

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Datastrukturer. föreläsning 6. Maps 1

Magnus Nielsen, IDA, Linköpings universitet

Inlämningsuppgift och handledning

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

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

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

Grundläggande datalogi - Övning 4

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

Föreläsning 12. Länkade listor

Datastrukturer och algoritmer

Föreläsning 3. Stack

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Repetition av OOP- och Javabegrepp

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Repetition av OOP- och Javabegrepp

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 8. Mängd, Avbildning, Hashtabell

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

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT036)

Generiska konstruktioner. Kursbokens kapitel 13

Övning 1 - Abstrakta datatyper

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Tentamen Datastrukturer, DAT037 (DAT036)

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

Lösningsförslag till exempeltenta 1

Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Dugga Datastrukturer (DAT036)

Föreläsning 2 Datastrukturer (DAT037)

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

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

Tentamen Datastrukturer D DAT 036/DIT960

Sökning och sortering

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

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

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

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Föreläsning Datastrukturer (DAT036)

Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki

Föreläsning 2 Datastrukturer (DAT037)

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd

Föreläsning 2 Innehåll

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 4 Innehåll

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 2 Innehåll

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TDDE44 Programmering, grundkurs

Att skriva till och läsa från terminalfönstret

Algoritmer och datastrukturer

Transkript:

Innehåll Föreläsning 3 Fält och Tabell Att läsa: Kapitel 5-6 Fält Fält Modell Schackbräde Organisation n-dimensionellt fält organiserat som rätblock Elementen o alla elementen värden har samma datatyp o tillåts innehålla odefinierade elementvärden Koordinaterna (index) o är en n-tippel om fältet har n dimensioner o typen måste vara diskret linjärt ordnad oftast heltal o samma typ på alla axlar Är en statisk datatyp Hela strukturen är fixerad inte bara storleken o Elementen har bestämd plats och flyttas inte, spelar ingen roll om man tar bort eller sätter in element Kan ha odefinierade elementvärden, fyller på strukturen eftehand o Kompilatorn upptäcker om man av misstag försöker avläsa värden som är odefinierade o De flesta programspråk tillåter helt eller delvis tomma Fält Elementvärdet kan vara vilken datatyp som helst inklusive en Länk. Specifikation Gränsyta till Fält Måste bestämma i förväg Datatypen för elementvärdena Antal dimensioner i fältet Datatyp för varje koordinataxel abstract datatype 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 Notera att inga operationer på index syns (det är indextypens ansvar)

Formell specifikation Formell specifikation för Fält Uppsättning axiom Beskriver relationer mellan typens olika operationer Axiom kan användas för att göra formella härledningar i datatypen Kan bevisa att det vi tänkte göra med operationerna faktiskt också händer Bild från sidan 95 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000 Övning 5.4-5.5 sid 98 5.4: Härled värdet av Low(d) 5.5: Härled värdet av Inspect-value((2), d) d är fältet [, 4, 2] som man får via operationssekvensen d = Set-value((3), 2, Set-value((2), 4, Create((1),(3)))) Fysisk datatyp i många språk Enkelt eftersom traditionella datorer har minnet organiserat som ett 1-dimensionellt fält I många äldre språk den enda mer avancerade datatypen o Därför viktigt hur man konstruerar ADT i fält. 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 Matris kan konstrueras som Lista av listor Fält som Lista är inte så effektivt! Varför? Gles matris stort antal element är odefinierade eller har värdet noll Mycket vanligt inom teknisk-vetenskapliga beräkningar Kan vara så stora att det är omöjligt att lagra hela matrisen i minnet Konstrueras som Vektor av Tabell Sparar utrymme Sparar tid

Tillämpningar Fält Tabell Tekniska beräkningar Geometriska transformationer o Rotation, translation, skalning Linjära ekvationssystem Kantdetektering i bilder Spelmatriser Sidorna 104-116 beskriver tillämpningar Modell Uppslagsbok bestående av ett uppslagsord (nyckel) och tillhörande text (översättning/förklaring/synonymer). Organisation Ändlig avbildning (mappning) av argument (nycklar) på värden Behöver inte ha ordnade element Dynamisk datatyp Gränsyta till Tabell Kommentarer till gränsytan abstract datatype Table(arg,val) Empty() Table(arg,val) Insert(x:arg,y:val,t:Table(arg,val)) Table(arg,val) Isempty (t:table(arg,val)) Bool Lookup (x:arg, t:table(arg,val)) (Bool,val) Remove (x:arg, t:table(arg,val)) Table(arg,val) Insert(x,y,t) utökar eller omdefinierar tabellen t så att x avbildas på värdet y Lookup(x, t) om argumentet/nyckeln finns i tabellen returneras sant och det tillhörande värdet annars returneras falskt. I fält motsvaras detta av att man slår ihop Hasvalue och Inspect-value till en operation. Lookup är dyr operaration och svårt motivera en dubblering av detta (has-value+inspect-value) Insättningar Fält vs Tabell Två huvudalternativ Sätt in det nya paret först i listan o Utökning Kolla om det finns par med samma argument o Modifiering Dubbletthantering måste alltid göras... Antingen vid insättning eller borttagning Likheter Index svarar mot elementvärde i ett fält Argumentet/nyckeln svarar mot tabellvärde i en tabell Skillnader Tabell o Har inga krav på argument/nyckeltypen o Är en dynamisk datatyp Fält o Index måste vara diskret linjärt ordnad o Är en statisk datatyp

Konstruktion av tabell som... Konstruktion Fält Fält Lista av par <arg1, värde1>, <arg2, värde2>,...,<argn,värden> Riktad Lista Hashtabell Binärt sökträd Tabell kan konstrueras som Fält om: nyckeltypen är diskret linjärt ordnad det går att hitta en konstant av fältets elementvärdestyp som kan symbolisera ett odefinierat tabellvärde nycklarna är relativt väl samlade och inte utspridda Tabell (Övning 12 sid 125) Tillämpningar Jämför Fält- respektive Lista som parkonstruktionen Insättningskostnad Avläsning Borttagning När väljer man vad? Ofta använd datatyp t ex Representera samband mellan objekt Benämna objekt Associera egenskaper hos ett objekt med motsvarande värden Kompilatorer Fält som Tabell Tippel, Post, Relation Inför OU2: Jämförelser i Java Associerar argument med värden Tippel består av element (koordinater) Heterogen datatyp Post (record,struct) är som abstrakt datatyp sett samma sak som Tippel. Relation är en egenskap definierad för en grupp av objekt (Mer om detta i kap 16.) Ett relationsobjekt innehåller en mängd n-tippler 2-ställig relation liknar tabell men är mer generell == jämför objektens minnesadresser inte de faktiska värderna i objekten equals en metod som ärvs från Object jämför objekt men om man inte omdefinierar den så gör den bara ==! compareto en metod i interfacet Comparable, jämför <, =, >

compareto, equals Object key; Comparable ckey = Comparable (key); while ((currentnode!= null)&& ckey.compareto(currentnode.getkey())>0) { } if ((currentnode!=null) && key.equals(currentnode.getkey())) { } equals krav på omdefinering Från Javas API: Indicates whether some other object is "equal to" this one. The equals method implements an equivalence relation on non-null object references: It is reflexive: for any non-null reference value x, x.equals(x) should return true. It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true. It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true. It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified. For any non-null reference value x, x.equals(null) should return false. compareto krav på omdefinering Från Javas API: Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object. In the foregoing description, the notation sgn(expression) designates the mathematical signum function, which is defined to return one of -1, 0, or 1 according to whether the value of expression is negative, zero or positive. The implementor must ensure sgn(x.compareto(y)) == -sgn(y.compareto(x)) for all x and y. (This implies that x.compareto(y) must throw an exception iff y.compareto(x) throws an exception.) The implementor must also ensure that the relation is transitive: (x.compareto(y)>0 && y.compareto(z)>0) implies x.compareto(z)>0. Finally, the implementer must ensure that x.compareto(y)==0 implies that sgn(x.compareto(z)) == sgn(y.compareto(z)), for all z. It is strongly recommended, but not strictly required that (x.compareto(y)==0) == (x.equals(y)). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."