Presentation laddar. Vänta.

Presentation laddar. Vänta.

Övning 5 www.nada.kth.se/~mhj/tilda. Hashning Textsökning KMP-automat Hemtal Bilarna.

Liknande presentationer


En presentation över ämnet: "Övning 5 www.nada.kth.se/~mhj/tilda. Hashning Textsökning KMP-automat Hemtal Bilarna."— Presentationens avskrift:

1 Övning 5 www.nada.kth.se/~mhj/tilda

2 Hashning Textsökning KMP-automat Hemtal Bilarna

3 Hashning

4 BjörnAgnethaBennyAnni-Frid first BjörnBenny firstA AgnetaAnni-Frid firstB Agneta Björn Benny Anni-Frid table [ ] Iden med hashning hash betyder: hackmat, röra 0 1 2 3

5 Benny Björn Anni-Frid Agnetha table [ ] 0 1 2 3 f( ) = 2 + 10 + 29 + 18 + 14 = 73 mod 4 1 f( ) = 1 + 7 + 14 + 5 + 20 + 7 + 1 = 55 mod 4 3 f( ) = 2 + 5 + 14 + 14 + 25 = 60 mod 4 0 f( ) = 1 + 14 + 14 + 9 + 30 + 6 + 18 + 9 + 4 = 105 mod 4 1 Insättning (put) hashfunktiontabellstorlek Björn Agnetha Benny Anni-Frid

6 Benny Björn Anni-Frid Agnetha table [ ] 0 1 2 3 f( ) = 2 + 5 + 14 + 14 + 25 = 60 mod 4 0 f( ) = 2 + 10 + 29 + 18 + 14 = 73 mod 4 1 f( ) = 13 + 1 + 18 + 9 + 5 = 46 mod 4 2 Sökning (get) Björn Benny Björn f( ) = 2 + 15 = 17 mod 4 1 Bo Marie Anni-Frid Björn

7 Benny Anni-Frid Agnetha table [ ] 9999 Tabellstorlek Björn f(Björn) = 73 f(Agnetha) = 55 f(Benny) = 60 f(Anni-Frid) = 105 105 73 60 55 0 ….. 73 55 60 105 mod 10000

8 Benny Anni-Frid Agnetha table [ ] Tabellstorlek Björn 6 4 2 0 1 3 5 7 1 7 4 1 f(Björn) = 73 f(Agnetha) = 55 f(Benny) = 60 f(Anni-Frid) = 105 mod 8 Tumregel: 50% luft

9 Benny Anni-Frid Agnetha table [ ] 9999 Tabellstorlek Björn 105 73 60 55 0 …..

10 Hashfunktion god spridning snabb att beräkna public static void main(String [] args) { String s1 = ”hej”; int code = s1.hashCode(); System.out.println(code); } f(s) = s[0] * 31 (n-1) + s[1] * 31 (n-2) +... + s[n-1] Hashning av strängar i Java: f(s1) = 104 * 31 2 + 101 * 31 + 106 = 103181 103181

11 Krockhantering med ”linear probing” Benny Agnetha table [ ] 6 4 2 0 1 3 5 7 1 7 4 1 f(Björn) = 73 f(Agnetha) = 55 f(Benny) = 60 f(Anni-Frid) = 105 mod 8 Anni-Frid Björn 2 Krock! kluster

12 Krockhantering med ”quadratic probing” Benny Agnetha table [ ] 6 4 2 0 1 3 5 7 1 7 4 1 f(Björn) = 73 f(Agnetha) = 55 f(Benny) = 60 f(Anni-Frid) = 105 mod 8 Björn 2 2 = 4 Krock! 3 2 = 9 Krock! Anni-Frid mod 8 1 4 2 = 16 mod 8 0

13 Perfekt hashfunktion 0 false 1 7 23 false 32 false 50 false 51 false ….. Spara kort som dragits ur en kortlek. klöver = 0, ruter = 1, hjärter = 2, spader = 3 f(färg, nr) = 13 * färg + nr-1 f(klöver, 8) = 13 * 0 + 8-1 = 7 f(hjärter, 7) = 13 * 2 + 7-1 = 32 f(ruter, knekt) = 13 * 1 + 11-1 = 23 ess = 1, knekt = 11, dam = 12, kung = 13 true klöver 8: hjärter 7: ruter knekt: …..

14 Bloomfilter 0 false 1 70012 false 103181 false 143229 false 59999 false 60000 false ….. Stavningskontrollprogram: true ….. f(”hej”) = 103181 mod 60000 43181 …………… true 50 % att ett felstavat ord, t.ex. ”heej”, godkänns. 179999 180000 f1(”hej”) = 103181 mod 180000 103181 f2(”hej”) = 430012 mod 180000 70012 f3(”hej”) = 1043229 mod 180000 143229 …………… 43181 12.5 % att ett felstavat ord, t.ex. ”heej”, godkänns. fortsätt med samtliga ord… true I Viggos Stava används 14 hashfunktioner 0.006 %

15 Textsökning KMP-automat

16 FYRTIOTVÅ, SA DJUPATANENK TTTTTTTTTVVVVVVVVVÅÅÅÅÅÅÅÅÅ TTTTTTTT TVVÅ FYRTIOTVÅ VÅT m n Komplexitet: O(nm)

17 AT CAAAGAATAACACTAAG AAGAA TT A AAC AACAAC AA CAACAAC AACAAC

18 KMP automat: O(n) MorrisPratt Knuth

19 ,SADJUPATANENKFYRTIOTVÅ TVÅ i 0123 next[i] 011 VÅT

20 ADAM i 0124 012 MDAA 3 0 ADADAM

21 ADAM i 0124 012 3 0 1. next[1] = 0 2. Om ingen upprepning: next[i] = 1 3. Om j>0 bokstäver är upprepade: next[i] = j+1 Optimering: Men om bokstav i är samma som första bokstaven: next[i]=0 Optimering: Men om dessutom bokstav i och j+1 är samma: next[i]=next[j+1] MDAA


Ladda ner ppt "Övning 5 www.nada.kth.se/~mhj/tilda. Hashning Textsökning KMP-automat Hemtal Bilarna."

Liknande presentationer


Google-annonser