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

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

Embed Size (px)

Citation preview

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

HashingStreuwertfunktionen

Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Page 2: 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

Page 3: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Hashfunktionen

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

Page 4: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Ein einfaches Hashing-Schema

• h(k) = a• Bsp: LOWELL

• Name ASCII (2 B.) Product addressLOWELL 76 79 76 x 79 = 6004 004

• h(LOWELL) = 4• home address = 4

Page 5: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Ein einfaches Hashing-Schema

Page 6: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Kollisionen

LOWELL Adresse = 4

OLIVER Adresse = 4

Synonyme

Page 7: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Kollisionen

Page 8: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Kollisionen (Vermeidung)

Eine perfekte Hash-Funktion

Kollisionen reduzieren:1. Verteilen der Datensätze2. Extra Speicher verwenden3. mehr als einen Datensatz einer einzelnen

Adresse zuweisen

Page 9: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

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

Page 10: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Ein einfacher Hashing-Algorithmus

• Schritt 2:76 79 | 87 69 | 76 76 | 32 32 | 32 32 | 32 327679 + 8769 + 7676 + 3232 + 3232 + 3232 = 33820

Bsp: Grenze von 19937:7679 + 8769 -> 16448 -> 16448 mod 19937 -> 1644816448 + 7676 -> 24124 -> 24124 mod 19937 -> 41874187 + 3232 -> 7419 -> 7419 mod 19937 -> 74197419 + 3232 -> 10651 -> 10651 mod 19937 -> 10651

10651 + 3232 -> 13883 -> 13883 mod 19937 -> 13883

Page 11: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Ein einfacher Hashing-Algorithmus

• Schritt 3:

Bsp: 100 Adressen (0-99)

a = s mod n a = 13883 mod 100

a = 83

Page 12: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Progressiver Overflow

Page 13: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Progressiver Overflow

Page 14: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Buckets

Adresse mit mehr als einem Datensatz

Überlauf von Datensätzen viel seltener

Page 15: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Aufbau eines Buckets

Page 16: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Löschen von Datensätzen

Page 17: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

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

Page 18: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Andere Techniken zur Vermeidung von Kollisionen

Double Hashing

Page 19: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Noch Fragen?!

Page 20: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Vielen Dank für die Aufmerksamkeit!

Page 21: Hashing Streuwertfunktionen Referat von Kim Schröer – Intelligente Dateisysteme WS13/14

Bsp: einfacher Hash-Algorithmus

int Hash (char key[12], int maxAddress){

int sum = 0;for (int j = 0; j < 12; j += 2)

sum = (sum * 100 * key[j] * key[j+1]) % 19937;return sum % maxAddress;

}

Die Funktion hash verwendet die folding and prime number division, um eine hash Adresse für einen 12 char string.