Datastrukturer och algoritmer Frelsning 3 Datastrukturer och algoritmer

  • Slides: 27
Download presentation
Datastrukturer och algoritmer Föreläsning 3

Datastrukturer och algoritmer Föreläsning 3

Datastrukturer och algoritmer Innehåll u Fält u Att 2 och Tabell läsa: Kapitel 5

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

Datastrukturer och algoritmer Fält 3 u Modell Ø Schackbräde u Organisation Ø n-dimensionellt fält

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

Datastrukturer och algoritmer Fält 4 u Är en statisk datatyp Ø Hela strukturen är

Datastrukturer och algoritmer Fält 4 u Ä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 o Kompilatorn upptäcker om man av misstag försöker avläsa värden som är odefinierade De 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 Specifikation 5 u Måste bestämma i förväg Ø Datatypen för elementvärdena

Datastrukturer och algoritmer Specifikation 5 u 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 Gränsyta till Fält 6 abstract datatype Array(val, index) Create (lo, hi:

Datastrukturer och algoritmer Gränsyta till Fält 6 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 u Notera att inga operationer på index syns (det är indextypens ansvar)

Datastrukturer och algoritmer Formell specifikation 8 u Uppsättning axiom u Beskriver relationer mellan typens

Datastrukturer och algoritmer Formell specifikation 8 u Uppsättning axiom u Beskriver relationer mellan typens olika operationer u Axiom kan användas för att göra formella härledningar i datatypen u Kan bevisa att det vi tänkte göra med operationerna faktiskt också händer

Datastrukturer och algoritmer Formell specifikation för Fält 9 Bild från sidan 95 i Janlert

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

Datastrukturer och algoritmer Övning 5. 4 -5. 5 sid 98 10 u 5. 4:

Datastrukturer och algoritmer Övning 5. 4 -5. 5 sid 98 10 u 5. 4: Härled värdet av Low(d) u 5. 5: Härled värdet av Inspect-value((2), d) u 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 Konstruktion av Fält 11 u Fysisk datatyp i många språk Ø

Datastrukturer och algoritmer Konstruktion av Fält 11 u 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 u N-dim Därför viktigt hur man konstruerar ADT i fält. Fält som 1 -dim Fält Ø ”vecklar” ut fältet Ø Matriser lagras radvis

Datastrukturer och algoritmer Konstruktion av Fält 12 u Fält som Lista Ø Vektorer kan

Datastrukturer och algoritmer Konstruktion av Fält 12 u Fält som Lista Ø Vektorer kan konstrueras som Lista Ø Matris kan konstrueras som Lista av listor u Fält som Lista är inte så effektivt! Varför?

Datastrukturer och algoritmer Konstruktion av Fält 13 u Gles matris – stort antal element

Datastrukturer och algoritmer Konstruktion av Fält 13 u 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 u Konstrueras som Vektor av Tabell Ø Sparar utrymme Ø Sparar tid

Datastrukturer och algoritmer Tillämpningar Fält 14 u Tekniska beräkningar Ø Geometriska transformationer o Rotation,

Datastrukturer och algoritmer Tillämpningar Fält 14 u Tekniska beräkningar Ø Geometriska transformationer o Rotation, translation, skalning Ø Linjära ekvationssystem Ø Kantdetektering i bilder Ø Spelmatriser u Sidorna 104 -116 beskriver tillämpningar

Datastrukturer och algoritmer Tabell 15 u Modell Ø Uppslagsbok bestående av ett uppslagsord (nyckel)

Datastrukturer och algoritmer Tabell 15 u Modell Ø Uppslagsbok bestående av ett uppslagsord (nyckel) och tillhörande text (översättning/förklaring/synonymer). u Organisation Ø Ändlig avbildning (mappning) av argument (nycklar) på värden Ø Behöver inte ha ordnade element u Dynamisk datatyp

Datastrukturer och algoritmer Gränsyta till Tabell 16 abstract datatype Table(arg, val) Empty() → Table(arg,

Datastrukturer och algoritmer Gränsyta till Tabell 16 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 Kommentarer till gränsytan 17 u Insert(x, y, t) – utökar eller

Datastrukturer och algoritmer Kommentarer till gränsytan 17 u Insert(x, y, t) – utökar eller omdefinierar tabellen t så att x avbildas på värdet y u 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)

Datastrukturer och algoritmer Insättningar 18 u Två huvudalternativ Ø Sätt in det nya paret

Datastrukturer och algoritmer Insättningar 18 u 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 u Dubbletthantering måste alltid göras. . . u Antingen vid insättning eller borttagning

Datastrukturer och algoritmer Fält vs Tabell u Likheter Ø Index svarar mot elementvärde i

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

Datastrukturer och algoritmer Konstruktion av tabell som. . . 20 u Fält u Lista

Datastrukturer och algoritmer Konstruktion av tabell som. . . 20 u Fält u Lista av par Ø <arg 1, värde 1>, <arg 2, värde 2>, . . . , <arg. N, värde. N> Ø Riktad Lista u Hashtabell u Binärt sökträd

Datastrukturer och algoritmer Konstruktion – Fält 21 u Tabell kan konstrueras som Fält om:

Datastrukturer och algoritmer Konstruktion – Fält 21 u 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 Tabell (Övning 12 sid 125) 22 u Jämför Fält- respektive Lista

Datastrukturer och algoritmer Tabell (Övning 12 sid 125) 22 u Jämför Fält- respektive Lista som parkonstruktionen Ø Insättningskostnad Ø Avläsning Ø Borttagning u När väljer man vad?

Datastrukturer och algoritmer Tillämpningar 23 u Ofta använd datatyp t ex Ø Representera samband

Datastrukturer och algoritmer Tillämpningar 23 u Ofta använd datatyp t ex Ø Representera samband mellan objekt Ø Benämna objekt Ø Associera egenskaper hos ett objekt med motsvarande värden u Kompilatorer u Fält som Tabell

Datastrukturer och algoritmer Tippel, Post, Relation 24 u Associerar argument med värden u Tippel

Datastrukturer och algoritmer Tippel, Post, Relation 24 u Associerar argument med värden u Tippel består av element (koordinater) Ø Heterogen datatyp u Post (record, struct) är som abstrakt datatyp sett samma sak som Tippel. u 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 Inför OU 2: Jämförelser i Java 25 jämför objektens minnesadresser inte

Datastrukturer och algoritmer Inför OU 2: Jämförelser i Java 25 jämför objektens minnesadresser inte de faktiska värderna i objekten u equals en metod som ärvs från Object u == Ø jämför objekt men om man inte omdefinierar den så gör den bara ==! en metod i interfacet Comparable, jämför <, =, > u compare. To

Datastrukturer och algoritmer compare. To, equals 26 Object key; Comparable c. Key = Comparable

Datastrukturer och algoritmer compare. To, equals 26 Object key; Comparable c. Key = Comparable (key); while ((current. Node != null)&& c. Key. compare. To(current. Node. getkey())>0) { … } … if ((current. Node !=null) && key. equals(current. Node. getkey())) { … }

Datastrukturer och algoritmer equals – krav på omdefinering Från Javas API: 27 u Indicates

Datastrukturer och algoritmer equals – krav på omdefinering Från Javas API: 27 u 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 compare. To – krav på omdefinering Från Javas API: 28 u

Datastrukturer och algoritmer compare. To – krav på omdefinering Från Javas API: 28 u u 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. compare. To(y)) == -sgn(y. compare. To(x)) for all x and y. (This implies that x. compare. To(y) must throw an exception iff y. compare. To(x) throws an exception. ) The implementor must also ensure that the relation is transitive: (x. compare. To(y)>0 && y. compare. To(z)>0) implies x. compare. To(z)>0. Finally, the implementer must ensure that x. compare. To(y)==0 implies that sgn(x. compare. To(z)) == sgn(y. compare. To(z)), for all z. It is strongly recommended, but not strictly required that (x. compare. To(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. "