1 / 28

Föreläsning 1 Diskreta modeller Datatyper

Föreläsning 1 Diskreta modeller Datatyper. Introduktion till kursen, DM delen. 4 föreläsningar 3 lektioner (lärar- och grupparbete) Examination: 1 inlämningsuppgift (sedan redovisas muntligt), U/G, möjlighet till komplettering Betyg G ger 1.5hp Kurslitteratur :

fionan
Download Presentation

Föreläsning 1 Diskreta modeller Datatyper

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 1Diskreta modellerDatatyper 729G04

  2. Introduktion till kursen, DM delen • 4 föreläsningar • 3 lektioner (lärar- och grupparbete) Examination: 1 inlämningsuppgift (sedan redovisas muntligt), U/G, möjlighet till komplettering Betyg G ger 1.5hp Kurslitteratur: • S. Lipschutz, M. Lipson. Discretemathematics. Third edition.ISBN 0-07-151101-6 (e-book). Tillgängling på biblioteket som e-resurs • Utrag ur Introduction to Algorithms av T. H. Cormen et al. • Wikipedia 729G04

  3. Vad är diskret matematik? Diskret matematik (finit matematik) är studiet av matematiska strukturer som är fundamentalt diskreta, i betydelsen att de inte stödjer eller kräver begreppet kontinuitet. Ex. på kontinuerlig matematik: • Differentialekvationer – att beskriva luftströmens beteende (räkna ut flygplanets form, prediktera vädret) 729G04

  4. Vad är diskret matematik? Övning Diskutera i grupper 3 och 3: • Hitta ett exempel där det finns diskreta datastrukturer • Vilket problem behövs det att lösa • *Vilka metoder används (om ni vet) 729G04

  5. Diskret matematik - branscher • Informationsteori (data kodning och säker överföring) • Logik • Mängdlära • Kombinatorik • Grafteorin • Sannolikhetsteori • Operationsanalys (allokera resurser för att maximera vinst, schemaläggning) • Spelteorin (analyserar möjliga utfall av spelet) 729G04

  6. Diskreta modeller och algoritmer För att lösa problemet: • Välja den lämpligaste modellen • Bestäm en algoritm som använder modellen Exempel: Hitta kortaste bilväg mellan Linköping och norrköping. • Faktisk data: Karta med vägar och korsningar • Modellen: • Graf med • Noder=korsningar, rondeller osv. • Bågar=vägsträckor mellan två noder • Associerad värde = avståndet (km) av en given vägsträcka • Algoritmen: Dijkstras algoritm (billigaste vägen algoritm) 729G04

  7. Datatyper Primitiva datatyper • Boolean • Tecken • Tal Abstrakta datatyper (datastrukturer) • Vektorer • Arrayer • Strängar • Mängder • Köer Stackar • Listor • Grafer • Träd • Hashmappar (hastabeller) • … Nära-till-dator (lagring) Abstrakta (strukturen) Frågan: hur ABSTRAKTA DM typer lagras i datorminnet? ( ibland definierar komplexiteten på respektive algoritmer) 729G04

  8. Primitiva datatyper • Boolean =(TRUE, FALSE)=(0, 1) • Operationer: AND, OR, XOR, NOT • Tecken (Character) = ’A’-’Z’, ’a’-’z’, ’0’-’9’, speciella tecken • ANSI tabellen =latinska alfabetet • UNICODE tabellen = +utländska +fler tecken • Tal • Bråktal • Heltal • .. Operationer: +-/*^ 729G04

  9. Abstrakta datatyper • Vektor = en ordnad grupp av objekt, varje objekt har en index • A=[5,6,3]. A(2)=A(2)+1  A(2) blir 7 • I datorn lagras som en segment (plotta..) • Operationer: Få en element ”i”, bestäm ett värde för ”i” • Arrayer • Två eller fler dimensionella. • Varje element har en sammansatt index, t. ex. A(i)(j) • Tvådimensionella arrayer (matris) brukar lagras kolumnvis (plotta…) 729G04

  10. Abstrakta datatyper Mängder (i detaljer: nästa föreläsning) Mängd är en samling av distinkta element • Oordnat • All alla element unika Operationer: • medlem • delmängd • union • snitt • komplement • differens • produkt Exempel: A=(3,5), B=(4,3,9), A snitt B=? 729G04

  11. Abstrakta datatyper • Stack – dynamisk ordnad mängd • Stackens top • LIFO policy • Operationer: • Push • Pop • Stack-empty Används: • Undo operationer i interaktiva program • Rekursiva program 729G04

  12. Abstrakta datatyper Stack – Implementation(usingvector) PUSH • Top(s)=Top(s)+1 • S(Top(s))=x STACK-EMPTY • Iftop[S]=0 then TRUE else FALSE POP • If not STACK-EMPTY(S) • Top(S)=top(S)-1 • Return S(top(S)) WARNING: overflowmayhappen Övning: Se hur PUSH och POP fungerar för S=(1,3), x=2, n=5 729G04

  13. Abstrakta datatyper • Kö -dynamisk ordnad mängd • Köns head och tail • FIFO policy • Operationer: • Enqueue • Dequeue • Stack-empty Används: • Kösystem (skrivare) 729G04

  14. Abstrakta datatyper Kö –implementation (enklaste) ENQUEUE • Q(tail(Q))=x • tail(Q)=tail(Q)+1 DEQUEUE • X=Q(head(Q)) • head(Q)=head(Q)+1 WARNING: Begränsat antal operationer Övning: Se hur ENQUEUE och DEQUEUE fungerar förQ=(1,3), x=2,3,4,5, n=5 729G04

  15. Abstrakta datatyper Listan är en sampling av objekt • ett objekt kan finnas fler än en gång i listan • Varje element hänvisar till nästa element (pointer) Listor • Singellinkad (fält: nyckel,next) • Dubbellinkad (fält: prev,nyckel,next) Operationer: • FIRST • *LAST • SEARCH • INSERT • DELETE 729G04

  16. Abstrakta datatyper Listor-Operationer Om man letar efter en specifik nyckel v SEARCH (L,v) • p=head(L) • WHILEp!=NIL and key(x)!=v DOp=next(p) • RETURN p Om man vill få element# i i listan, L(i) SEARCH1 (L,i) If i=0 RETURN NIL p=head(L) C=1 WHILE C!=i p=next(p) C=C+1 END RETURN p 729G04

  17. Abstrakta datatyper Listor-Operationer (dubbellänkade listor) Sätta in v på plats i INSERT(L,v,i) • P0=SEARCH1(L, i-1); • If P0!=NIL P1=next(P) ELSE P1=head(L) • P=create_cell(v) • IfP0!=NIL next(P0)=P • If P1!=NIL prev(P1)=P • next(P)=P1 • prev(P)=P0 DELETE(L,i) P=SEARCH1(i); P0=prev(P) P1=next(P) If P0!=NIL next(P0)=P1 ELSE next(P0)=NIL If P1!=NIL prev(P1)=P0 ELSE prev(p1)=NIL 729G04

  18. Abstrakta datatyper Om komplexiteten En viktig parameter: n. Hur många steg i värsta fall behövs? O(n) – Antalet steg är mindre än C*n O(n2) – Antalet steg är mindre än C*n2 O(1) – samma (fixerat) antal steg oberoende av n Övning. Analysera: SEARCH, INSERT - O(n) 729G04

  19. Abstrakta datatyper Listor – implementation: 2(3) vektorer (Allokera något minne): • *prev(i) • key(i) • next(i) Pointers hänvisar till index av nästa element. t. ex. next(i)=j Key(j)=35 WARNING: Många INSERT kan leda till att vektorn blir fullsatt 729G04

  20. Abstrakta datatyper Grafer G=(V,E) (i detaljer: senare) • Består av noder (i ∈V) och bågar (i,j) ∈E • Ibland noder eller bågar är associerade med respektive värden • Riktade grafer och oriktade grafer Användning (används mycket!): • T. ex. operationsanalys (t.ex. kortaste väg, fördelning av resurser) 729G04

  21. Abstrakta datatyper Träd (i detaljer: senare) Träd = riktad graf • En rotnod (inga föräldranoder) • Barnnoder (en förälder, flera barn) • Terminalnoder (en förälder, inga barn) Användning (används mycket!): • T.ex. Spamfilter 729G04

  22. Abstrakta datatyper Hashtabeller är en samling av unika nycklar och en samling värden där varje nyckel är associerad med ett värde eller en samling av värden Fördel: • Lagra element eller samlingar av element som snabbt • och enkelt kan hämtas fram eller ändras Begrepp: Nycklar –hashfunktion – värden Exempel: namn - telefonnummer 729G04

  23. Abstrakta datatyper Hashtabeller -iden: Varje nyckel skall bestämma var värdet skall lagras: H(’John Smith’)=’555-44-11’ Tillvägagångssätt 1: Skapa en matris, varje cell H(i,1) motsv. något namn, H(i,2) innehåller värdet. T.ex. H(i,1) = ’Anna Andersson’, H(i,2)=’Annika Arvidsson’… • För att få telefonnummer, skriv ”Telefon=H(’John Smith’)” Problem: • För att lista alla kombinationer namn+efternamn behövs enromt stor matris • Utländska efternamn ”Abdul Nahmederi”?... Slutsats: Tillvägagångssätt 1 funkar inte! 729G04

  24. Abstrakta datatyper Hashtabeller Tillvägagångssätt 2: • Bestäm en hashfunktionh: två första bokstäver förenamn + 1sta bokstäver + en bokstav efternamn. • Varje möjlig värde på h motsvarar en cell i vektorn Exempel h(”John Smith”) =”jos”. H(i,1)=’aaa’, H(i,2)=’aab’…  Matrisen H blir betydligt mindre! 729G04

  25. Abstrakta datatyper Hashtable –kollisioner och ett sätt att lösa 729G04

  26. Abstrakta datatyper Hashtabeller – kommentarer • Hur skulle man välja ”Optimala” hashfunktioner? • Komplexitetet för att få ut värdet om man vet nyckel är nästan O(n) om hashfunktionen är lämplig 729G04

  27. Modelvalet • Analyser problemet • Avgör vilka grundläggande operationer som behövs • Välj datastruktur • Fråga dig: • När kommer insättningar behöva göras? • Är borttagning tillåten? • Finns det någon ordning i databehandlingen? • En väl vald datastruktur kan göra att enklare algoritmer behövs! 729G04

  28. Vad ska jag läsa hemma? • Kursbok, s. 154-156 • Utskrifter (delas ut) • Wikipedia, leta efter ” List of data structures” i Google. 729G04

More Related