Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s,...

15
Hashing Inhoud • Hashing • Hashtable • Hash function • Collision • Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Transcript of Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s,...

Page 1: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hashing

Inhoud

• Hashing

• Hashtable

• Hash function

• Collision

• Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Page 2: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hashing

Hashing is een methode om een sleutelwaarde

van een object af te beelden op de positie in

een tabel.

Dit leidt tot een flitsend snelle methode om

objecten op te slaan en op te zoeken.

Page 3: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hashtable

• Een hashtable is bijv. een array.

• De objecten bevinden zich verspreid in het array.

• Hashing is alleen snel indien slechts een gedeelte van het array wordt gebruikt. Vuistregel niet meer dan 50%. (boek 10 %)

Page 4: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hash function

Hash function berekent voor een object

de index van het array-element.

Probleem: aantal mogelijke sleutelwaarden

groter dan het aantal array-elementen.

Page 5: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hash function

Type hash functions:

• MappingBijv. sleutel f(12345678) = 678

• FoldingBijv. f(12345678) = 123 + 456 + 78

• ShiftingBijv. f(12345678) = 123 * 4 + 456 * 2 + 78

Page 6: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hash function

Vrijwel altijd wordt de modulo-operatie

toegepast.

Voorbeeld: array bevat 1000 locaties.

index = berekendeWaarde % 1000.

Page 7: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hash function

Gewenste eigenschap:

veel voorkomende waarden met grote overeenkomsten worden op verschillende indices afgebeeld.

Voorbeelden: Jansen, Janssen, Janse

Page 8: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Collision

Indien twee verschillende sleutelwaarden

worden afgebeeld op één index dan is er

sprake van collision.

Oplossingen:

• Hashing using buckets / chaining

• Lineair probing

Page 9: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Open hashing / Closed hashing

Open addressing is het vinden van een open/niet gebruikte lokatie in de hashtable.

Open hashing:

De hashtable bevat de objecten.

Page 10: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Open hashing enBuckets/Chaining/Closed hashing

Closed Hashing

A

bD

X X

b D

A

OpenHashing

Page 11: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Lineair probing

A

bD

X

Leidt tot clustering.

Alternatief: rehashing

Page 12: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Hashing using buckets

Het boek vermeldt dat een bucket een

onbeperkte capaciteit heeft.

Gebruikelijk is een beperkte capaciteit.

De overloop bucket heeft onbeperkte

capaciteit.

Page 13: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Toepassing 4.4

t c gag t c gag

Probleem: bepaal of een patroon met melementen meer dan één keer voorkomt

Aantal array elementen bevat enkele tien-duizenden elementen.

m is 5 á 10.

Page 14: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Toepassing

Oplossingen:

• 3 geneste for-statementsruntime : enkele dagen

• Sorteer x1 x2 … xm

x2 x3 … xm+1

… … … ….

xn-m … … xn -1

xn –(m-1) … xn-1 xn

Page 15: Hashing Inhoud Hashing Hashtable Hash function Collision Toepassing van klassieke ADT’s, algoritmes en runtime overwegingen.

Toepassing

Maak gebruik van hashing:

• Aan elke string van m karakters wordt een hashwaarde toegekend.

• Bij een collison wordt onderzocht of strings identiek zijn.

Runtime minder dan een dag.