© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.

Slides:



Advertisements
Liknande presentationer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Sökning och sortering Linda Mannila
DAB752: Algoritmteori Leif Grönqvist
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.
Algoritmer och datastrukturer
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
© 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.
Algoritm analys och rekursiva metoder kap 5,7
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning l5 Abstrakta datatyper och algoritmdesign.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Logikprogrammering och Prolog
Vektorer (klassen Vector) Sortering
Listor En lista är en föränderlig ordnad samling objekt.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Bredden-först exempel ABCD EFGH IJKL MNOP = Obesökt.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 11 Trie, Sökning och Sökträd.
Datastrukturer och algoritmer
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16.
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.
Datastrukturer och algoritmer VT08 P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A R B F C D E G
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 10.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Datastrukturer och algoritmer
Digitalteknik 7.5 hp distans: Talsystem och koder 1.3.1
Föreläsning2 Operativsystem.
© 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.
1 Övning6 Läsning från fil till java objekt Sökning Sortering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
Datastrukturer och algoritmer
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8-9 Relationer, prioritetsköer, grafer och grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Relationer, prioritetsköer, grafer och grafalgoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20032

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Innehåll  Mer om sortering  Heapsort O(N*log(N))  Facksortering O(N+M)  Radixsort O(b*N)  Sökning i strängar/mönstermatching  Naiv sökning (Brute force)  Knuth Morris Pratt  Booyer moore’s

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Det att sortera snabbare än O(nlog(n))  För att göra det måste vi veta mer om objekten vi vill sortera  Gå att avbilda på heltalen  Största värdet & minsta värdet o[V min …V max ]  O(N*M) där N är antalet element och M är V max -V min

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Facksortering M (3,k) (1,a) (9,j) (1,e) (3,i) (1,m) (2,h) (8,s) (2,o) (9,w) (7,q) (2,y) (4,p) (3,k) (1,a) (2,h) (9,j) (3,i) (2,o) (8,s) (1,e) (7,q) (4,p) (2,y) (9,w) (1,m) N (1,a) (1,e) (2,h) (3,i) (2,o) (9,w) (1,m) (3,k) (2,y) (9,j) (4,p) (8,s) (7,q)

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Radix Sort  Radix ≈ bas  Tittar på strukturen hos nycklarna  Antag att talen är representerade i basen M, tex.  M=2 binära talsystemet 9 =  M=10 decimala talsystemet  Sorterar genom att jämföra siffror/bitar i samma position 1001

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Radix Exchange sort  Titta på bitarna från vänster till höger 1.Sortera fältet på den vänstraste biten 2.Dela fältet i två delar toppen & botten 3.Rekursion  Sortera toppen rekursivt, ignorera vänstraste biten  Sortera botten rekursivt, ignorera vänstraste biten O(bN) där b är antalet bitar och N antalet tal

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Radix Exchange Sort Toppen Botten

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Radix Exchange Sort  Bygger på samma idé som inplace quicksort, för att dela upp i två delar (toppen och botten) repeat scan top-down to find a key starting with 1; scan bottom-up to find a key starting with 0; exchange keys; until scan indices cross

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”Straight” Radix Sort  Jämföra från höger till vänster…  Kräver stabil sortering av fältet for i<-0 to b-1 do Sortera fältet på ett stabilt sätt, med avseende på i:e biten

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”Straight” Radix Sort

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”Straight” Radix Sort  Funkar den?  På grund av stabilitet, så förändras inte den relativa ordningen mellan två nycklar med samma värde

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”Straight” Radix Sort, med basen

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”Straight” Radix Sort O(bN) for i<-0 to b-1 do sortera fältet på ett stabilt sätt, med avseende på i:e biten  Antag att vi kan sortera fältet stabilt på O(N) => O(bN)  Hur gör vi det?  Facksortering….

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Strängsökning…  Att hitta en delsträng i en sträng  Ett antal algoritmer  Naiv  Knuth Morris Pratt  Booyer Moore  Rabin-Karp

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Naiv Strängsökning  Brute force  Jämför ett tecken i taget tills två olika eller hittad delsträng  Vid två olika flytta fram ett tecken i huvudsträngen och börja om från början i mönstret  Kan hitta första delsträngen eller alla

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Exempel Jag vet inte vart min cykel finns vet Jag vet inte vart min cykel finns vet Jag vet inte vart min cykel finns vet Jag vet inte vart min cykel finns vet Jag vet inte vart min cykel finns vet

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Tidskomplexitet  Bästa fallet om mönstret finns AAAAAAAAAAAAAAAA AAAAA  O(M) där M är längden på mönstret  Bästa fallet om mönstret inte finns AAAAAAAAAAAAAAAA OAAAA  O(N) där N är längden på strängen

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Tidskomplexitet  Värsta fallet om mönstret finns AAAAAAAAAAAAAAAB AAAAB AAAAAAAAAAAAAAAB AAAAB  O(M*N) där M är längden på mönstret och N längden på strängen  Värsta fallet om mönstret inte finns??  O(M*N)

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Vad kan vi göra bättre?  Utnyttja kunskap om sökmönstret för att:  Unvika att behöva börja om från början  Hoppa längre steg 

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Knuth Morris Pratt  Utnyttjar en felfunktion som berättar hur mycket av mycket av den senaste jämförelsen man kan återanvända om man felar  f är definierat som det längsta prefixet i P[0,...,j] som också är suffix av P[1,...,j]  f visar hur mycket av början av strängen matchar upp till omedelbart före felet

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Felfunktion exempel  Om jämförelsen felar på position 4, så vet vi att a,b i postion 2,3 är identiska med position 0,1 j P[j]ABABAC f(j)001230

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, KMP-algoritmen f <- KMPfailureFunction(P) i <- 0 j <- 0 while i < n do if P[j] = S[i] then if j = m-1 then return i-m-1 i <- i+1 j <- j+1 else if j > 0 ingen match then j <- f(j-1) j index just efter matchande prefix else i <- i+1 return ingen matchning av delsträngen P i S

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, KMP-felfunktionen i <- 1 j <- 0 while i < m-1 do if P[j] = S[i] then f(i)<- j+1 i <- i+1 j <- j+1 else if j > 0 ingen match then j <- f(j-1) //j index efter pref som match. prefix else //ingen matchning f(i) <- 0 i <- i+1

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, KMP exempel abacaabaccabacabaaaaaa abacababacababacababacababacab j P[j]abacab f(j) j i

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Rabin-Karp  Beräkna ett hashvärde för mönstret och för varje delsträng av texten som man ska jämföra med  Om hashvärdena är skilda, beräkna hashvärdet för det nästa M tecknen i texten  Om hashvärdena är lika, utför en brute-force jämförelse mellan P och delsträngen

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Rabin-Karp exempel Hashvärdet för AAAAA = 37 Hashvärdet för AAAAH = 100 AAAAAAAAAAAAAAAA AAAAH 100 <> 37 AAAAAAAAAAAAAAAA AAAAH 100 <> 37 AAAAAAAAAAAAAAHA AAAAH 100 = 100

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Rabin-Karp hashfunktionen  Vilken? Den får inte kosta för mycket....  Betrakta M som ett M-siffrigt tal i basen b, där b är antalet bokstäver i alfabetet  Textsekvensen t[i..i+M-1] avbildas på talet x(i) = t[i]b M-1 + t[i+1]b M t[i+M-1]

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Rabin-Karp hashfunktionen  Billigt att beräkna x(i+1) från x(i) x(i+1) = t[i+1]b M-1 + t[i+2]b M t[i+M]  x(i+1) = x(i)b skifta ett vänster, -t[i]bM ta bort den vänstraste termen +t[i+M] lägg till den nya högertermen  Behöver inte räkna om hela talet

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Hash-värdet fortsättning  Om M är stort blir blir (b*M) enormt därför så hashar man med mod ett stort primtal  h(i) = ((t[i]b M-1 mod q) + (t[i+1]b M-2 mod q)+...+ (t[i+M-1] mod q)) mod q  h(i+1) = (h(i)b mod q- (t[i]b M mod q)+ (t[i+M] mod q) mod q

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Algoritm hash_M <- Beräkna hashvärdet för M hash_S <- Beräkna hashvärdet för den första delsträngen do if (hash_M = hash_S) then Bruteforce jämförelse av M och S hash_S + 1 tecken beräknas while end of text or match

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Komplexitet  Om det är tillräckligt stort primtal q för hashfunktionen så kommer hashvärdet från två mönster vara distinkta  I detta fall så tar sökningen O(N) där N är antalet tecken i strängen  Men det finns alltid fall som ger i närheten av värsta fallet O(N*M) om primtalet är för litet

Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Booyer-Moore  Liknar KMP  Har en förskjutningstabell som talar om den högraste förekomsten av varje bokstav i mönstret  men man matchar mönstret baklänges…