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

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

5 Benny Björn Anni-Frid Agnetha table [ ] f( ) = = 73 mod 4 1 f( ) = = 55 mod 4 3 f( ) = = 60 mod 4 0 f( ) = = 105 mod 4 1 Insättning (put) hashfunktiontabellstorlek Björn Agnetha Benny Anni-Frid

6 Benny Björn Anni-Frid Agnetha table [ ] f( ) = = 60 mod 4 0 f( ) = = 73 mod 4 1 f( ) = = 46 mod 4 2 Sökning (get) Björn Benny Björn f( ) = = 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) = … mod 10000

8 Benny Anni-Frid Agnetha table [ ] Tabellstorlek Björn 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 …..

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 * * =

11 Krockhantering med ”linear probing” Benny Agnetha table [ ] 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 [ ] 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 = 16 mod 8 0

13 Perfekt hashfunktion 0 false 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 * = 7 f(hjärter, 7) = 13 * = 32 f(ruter, knekt) = 13 * = 23 ess = 1, knekt = 11, dam = 12, kung = 13 true klöver 8: hjärter 7: ruter knekt: …..

14 Bloomfilter 0 false false false false false false ….. Stavningskontrollprogram: true ….. f(”hej”) = mod …………… true 50 % att ett felstavat ord, t.ex. ”heej”, godkänns f1(”hej”) = mod f2(”hej”) = mod f3(”hej”) = mod …………… % att ett felstavat ord, t.ex. ”heej”, godkänns. fortsätt med samtliga ord… true I Viggos Stava används 14 hashfunktioner %

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 MDAA 3 0 ADADAM

21 ADAM i 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