Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14."— Presentationens avskrift:

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

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

3 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20033 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

4 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20034 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

5 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20035 Facksortering 1 2 3 4 5 6 7 8 9 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)

6 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20036 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

7 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20037 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

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

9 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 20039 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

10 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200310 ”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

11 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200311 ”Straight” Radix Sort 010 000 101 100 001 111 011 110 010 000 100 111 110 101 001 011 00 10 10 11 00 01 11 01 0 0 1 1 1 0 0 1 00 00 01 11 01 10 10 11 0 1 0 0 1 0 1 1

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

13 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200313 ”Straight” Radix Sort, med basen 10 032 224 016 123 015 031 169 252 031 032 252 016 123 224 015 169 01 01 12 25 22 03 03 16 5 6 3 2 4 1 2 9 01 01 03 22 03 12 16 25 5 6 1 4 2 3 9 2

14 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200314 ”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….

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

16 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200316 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

17 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200317 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

18 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200318 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

19 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200319 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)

20 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200320 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 

21 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200321 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

22 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200322 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 j012345 P[j]ABABAC f(j)001230

23 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200323 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

24 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200324 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

25 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200325 KMP exempel abacaabaccabacabaaaaaa abacababacababacababacababacab 0 1 2 3 4 5 j012345 P[j]abacab f(j)001012 j i

26 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200326 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

27 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200327 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

28 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200328 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-2 +...+ t[i+M-1]

29 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200329 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-2 +...+ 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

30 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200330 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

31 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200331 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

32 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200332 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

33 Datastrukturer och algoritmer VT 2003 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 200333 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…


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

Liknande presentationer


Google-annonser