Presentation laddar. Vänta.

Presentation laddar. Vänta.

TILLÄMPAD DATALOGI (TILDA) Övning 4 www.nada.kth.se/~mhj/tilda.

Liknande presentationer


En presentation över ämnet: "TILLÄMPAD DATALOGI (TILDA) Övning 4 www.nada.kth.se/~mhj/tilda."— Presentationens avskrift:

1 TILLÄMPAD DATALOGI (TILDA) Övning 4

2 Hashning Sortering

3 Listor: O(n) Binärträd: O(log n) Kan vi söka ännu snabbare?

4 Hashning

5 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

6 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

7 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

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

9 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

10 Benny Anni-Frid Agnetha table [ ] 9999 Tabellstorlek Björn …..

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

12 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

13 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

14 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: …..

15 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 %

16 Sortering

17 Quicksort pivot Komplexiteten blir i allmänhet O(n log n) pivot 1 2 Komplexiteten blir O(n 2 ) om redan sorterad

18 Röster för fred :7 Körledaren förvarar sina noter sorterade i en tjock pärm. Till varje repetition plockar han ut några noter och efteråt sorteras de in i pärmen igen med quicksort. Som pivotelement väljs elementet längst till höger i varje delvektor. I kören finns en tildaelev som påpekar att det går att göra mycket enklare och effektivare. Hur då? Ange komplexiteten då m noter plockas ut från den n tjocka pärmen? m Komplexitet: O(m log m + n)

19 Dokusåpan :7 En populär kanadensisk dokusåpa söker deltagare. Flera (243 personer) vill vara med och arrangörerna sorterar de sökande i en lång rad efter näslängd. När programledaren öppnar dörren för att släppa in den första sökanden får en handfull av dem som står först i kön syn på honom och blir så skraja att de springer och gömmer sig i kön. Beskriv en smart algoritm för att sortera om kön. Antag att det visade sig vara tre personer som blev skrämda, hur många näsjämförelser behövs det då med din algortitm för att sortera om kön? Antal jämförelser: (10-1) + (2 + 1) = 12Antal jämförelser: (243-1) + (2 + 1) = 245


Ladda ner ppt "TILLÄMPAD DATALOGI (TILDA) Övning 4 www.nada.kth.se/~mhj/tilda."

Liknande presentationer


Google-annonser