280 likes | 570 Views
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 :
E N D
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Abstrakta datatyper Hashtable –kollisioner och ett sätt att lösa 729G04
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
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
Vad ska jag läsa hemma? • Kursbok, s. 154-156 • Utskrifter (delas ut) • Wikipedia, leta efter ” List of data structures” i Google. 729G04