1 / 21

Hashing

Hashing. Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14. - Übersicht -. Hashingfunktionen Ein einfaches Hashing -Schema Kollisionen Ein einfacher Hashing -Algorithmus Progressiver Overflow Buckets Löschen von Datensätzen. Hashfunktionen.

lesa
Download Presentation

Hashing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

  2. - Übersicht - • Hashingfunktionen • Ein einfaches Hashing-Schema • Kollisionen • Ein einfacher Hashing-Algorithmus • Progressiver Overflow • Buckets • Löschen von Datensätzen

  3. Hashfunktionen produzieren immer dann eine Adresse, wenn ein Schlüssel gegeben wird

  4. Ein einfaches Hashing-Schema • h(k) = a • Bsp: LOWELL • Name ASCII (2 B.) Productaddress LOWELL 76 79 76 x 79 = 6004 004 • h(LOWELL) = 4 • homeaddress = 4

  5. Ein einfaches Hashing-Schema

  6. Kollisionen LOWELL Adresse = 4 OLIVER Adresse = 4  Synonyme

  7. Kollisionen

  8. Kollisionen (Vermeidung) Eine perfekte Hash-Funktion Kollisionen reduzieren: • Verteilen der Datensätze • Extra Speicher verwenden • mehr als einen Datensatz einer einzelnen Adresse zuweisen

  9. Ein einfacher Hash-Algorithmus • Schritt 1: LOWELL = 76 79 87 69 76 76 32 32 32 32 32 32 L O W E L L |<- Blanks ->|

  10. Ein einfacher Hashing-Algorithmus • Schritt 2: 76 79 | 87 69 | 76 76 | 32 32 | 32 32 | 32 32 7679 + 8769 + 7676 + 3232 + 3232 + 3232 = 33820 Bsp: Grenze von 19937: 7679 + 8769 -> 16448 -> 16448 mod 19937 -> 16448 16448 + 7676 -> 24124 -> 24124 mod 19937 -> 4187 4187 + 3232 -> 7419 -> 7419 mod 19937 -> 7419 7419 + 3232 -> 10651 -> 10651 mod 19937 -> 10651 10651 + 3232 -> 13883 -> 13883 mod 19937 -> 13883

  11. Ein einfacher Hashing-Algorithmus • Schritt 3: Bsp: 100 Adressen (0-99) a = s mod n a = 13883 mod 100 a = 83

  12. Progressiver Overflow

  13. Progressiver Overflow

  14. Buckets Adresse mit mehr als einem Datensatz Überlauf von Datensätzen  viel seltener

  15. Aufbau eines Buckets

  16. Löschen von Datensätzen

  17. Löschen von Datensätzen • Irgendwann sehr viele Tombstones • Idee: Algorithmus überprüft, ob die DS, die nach einem Tombstone kommen, nicht doch in ihre Home-Addresse passen.  Auch die Suchlänge verkürzt sich

  18. Andere Techniken zur Vermeidung von Kollisionen Double Hashing

  19. Noch Fragen?!

  20. Vielen Dank für die Aufmerksamkeit!

  21. Bsp: einfacher Hash-Algorithmus int Hash (char key[12], intmaxAddress) { int sum = 0; for (int j = 0; j < 12; j += 2) sum = (sum * 100 * key[j] * key[j+1]) % 19937; returnsum % maxAddress; } Die Funktion hash verwendet die foldingand prime numberdivision, um eine hash Adresse für einen 12 char string.

More Related