Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Övning 5 www.nada.kth.se/~mhj/tilda."— Presentationens avskrift:

1 Övning 5

2 Hashning Textsökning Hemtal
KMP-automat Hemtal Bilarna

3 Hashning

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

5 Insättning (put) f( ) = 2 + 10 + 29 + 18 + 14 = 73 Björn 1
hashfunktion tabellstorlek f( ) = = 73 Björn mod 4 1 f( ) = = 55 Agnetha mod 4 3 f( ) = = 60 Benny mod 4 f( ) = = 105 Anni-Frid mod 4 1 table [ ] Benny Anni-Frid Björn Björn 1 2 Agnetha 3

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

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

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

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

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

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

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

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

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

15 Textsökning KMP-automat

16 F F Y Y R R T T I I O O T T V V Å Å , S A D J U P A T A N K E N T T T
m Komplexitet: O(nm)

17 A A G A A T A A C A T C A A A A G C T A A G A A T T A A A C A A C A A C A A A A A C A C C A A C A A C

18 KMP automat: O(n) Morris Pratt Knuth

19 F Y R T I O T V Å , S A D J U P A T A N K E N i 1 2 3 next[i] 1 1 T T
1 2 3 next[i] 1 1

20 A D A D A M A A D D A A M M i 1 2 3 4 next[i] 1 2

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


Ladda ner ppt "Övning 5 www.nada.kth.se/~mhj/tilda."

Liknande presentationer


Google-annonser