Datastrukturer och algoritmer Föreläsning 3. Datastrukturer och algoritmer VT08 Innehåll  Fält och Tabell  Att läsa: Kapitel 5-6.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Algoritmer och data strukturer -Länkade listor
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Logikprogrammering Ons, 25/9
Abstrakta datatyper Moduler nr 12
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 11 Arrayer.
PROCESSPROGRAMMERING
Programmering B PHP Lektion 2
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Arv.
Programmeringsteknik för Media1 & K1
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Datastrukturer och algoritmer
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
System arbetssystem informationssystem
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Digitalitet.
Föreläsning 11 Logik med tillämpningar Innehåll u Generell resolution u Kapitel i Ben-Ari.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 16 Logik med tillämpningar Innehåll u Information kring kursvärdering och tentagenomgång u Genomgång av övningstenta 2.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 10.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Mathematics 1 /Matematik 1
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

Datastrukturer och algoritmer Föreläsning 3

Datastrukturer och algoritmer VT08 Innehåll  Fält och Tabell  Att läsa: Kapitel 5-6

Datastrukturer och algoritmer VT08 Fält  Modell  Schackbräde  Organisation  n-dimensionellt fält organiserat som rätblock  Elementen oalla elementen värden har samma datatyp otillåts innehålla odefinierade elementvärden  Koordinaterna (index) oär en n-tippel om fältet har n dimensioner otypen måste vara diskret linjärt ordnad –oftast heltal osamma typ på alla ”axlar”

Datastrukturer och algoritmer VT08 Fält  Är en statisk datatyp  Hela strukturen är fixerad inte bara storleken oElementen 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 oKompilatorn upptäcker om man av misstag försöker avläsa värden som är odefinierade oDe flesta programspråk tillåter helt eller delvis tomma Fält  Elementvärdet kan vara vilken datatyp som helst inklusive en Länk.

Datastrukturer och algoritmer VT08 Specifikation  Måste bestämma i förväg  Datatypen för elementvärdena  Antal dimensioner i fältet  Datatyp för varje koordinataxel

Datastrukturer och algoritmer VT08 Gränsyta till Fält 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)

Datastrukturer och algoritmer VT08 Kommentarer till gränsytan  Create – lo och hi är motstående ”hörn” i fältet, närmast origo och längst ifrån  Set-value – står ej i specifikationen vad som händer om index ligger utanför arrayen  Has-value – saknas ofta i fysiska fälttyper  Inspect-value – står ej i specifikationen vad som händer om index ligger utanför arrayen eller om värdet odefinierat

Datastrukturer och algoritmer VT08 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  Kan bevisa att det vi tänkte göra med operationerna faktiskt också händer

Datastrukturer och algoritmer VT08 Formell specifikation för Fält Bild från sidan 95 i Janlert L-E., Wiberg T., Datatyper och algoritmer, Studentlitteratur, 2000

Datastrukturer och algoritmer VT08 Övning 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))))

Datastrukturer och algoritmer VT08 Konstruktion av Fält  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 oDä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

Datastrukturer och algoritmer VT08 Konstruktion av Fält  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?

Datastrukturer och algoritmer VT08 Konstruktion av Fält  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

Datastrukturer och algoritmer VT08 Tillämpningar Fält  Tekniska beräkningar  Geometriska transformationer oRotation, translation, skalning  Linjära ekvationssystem  Kantdetektering i bilder  Spelmatriser  Sidorna beskriver tillämpningar

Datastrukturer och algoritmer VT08 Tabell  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

Datastrukturer och algoritmer VT08 Gränsyta till Tabell 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)

Datastrukturer och algoritmer VT08 Kommentarer till gränsytan  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 Has- value och Inspect-value till en operation.  Lookup är dyr operaration och svårt motivera en dubblering av detta ( has-value+inspect-value)

Datastrukturer och algoritmer VT08 Insättningar  Två huvudalternativ  Sätt in det nya paret först i listan oUtökning  Kolla om det finns par med samma argument oModifiering  Dubbletthantering måste alltid göras...  Antingen vid insättning eller borttagning

Datastrukturer och algoritmer VT08 Fält vs Tabell  Likheter  Index svarar mot elementvärde i ett fält  Argumentet/nyckeln svarar mot tabellvärde i en tabell  Skillnader  Tabell oHar inga krav på argument/nyckeltypen oÄr en dynamisk datatyp  Fält oIndex måste vara diskret linjärt ordnad oÄr en statisk datatyp

Datastrukturer och algoritmer VT08 Konstruktion av tabell som...  Fält  Lista av par ,,...,  Riktad Lista  Hashtabell  Binärt sökträd

Datastrukturer och algoritmer VT08 Konstruktion – Fält  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

Datastrukturer och algoritmer VT08 Tabell (Övning 12 sid 125)  Jämför Fält- respektive Lista som par- konstruktionen  Insättningskostnad  Avläsning  Borttagning  När väljer man vad?

Datastrukturer och algoritmer VT08 Tillämpningar  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

Datastrukturer och algoritmer VT08 Tippel, Post, Relation  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

Datastrukturer och algoritmer VT08 Inför OU2: Jämförelser i Java  == 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

Datastrukturer och algoritmer VT08 compareTo, equals Object key; Comparable cKey = Comparable (key); while ((currentNode != null)&& cKey.compareTo(currentNode.getkey())>0) { … } … if ((currentNode !=null) && key.equals(currentNode.getkey())) { … }

Datastrukturer och algoritmer VT08 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.

Datastrukturer och algoritmer VT08 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."