Sobes.tech
Junior — Middle

Tudja magyarázni a dupla hash módszer elvét a hash-táblák ütközéseinek megoldására?

sobes.tech MI

Válasz az MI-től

A kettős hash módszer egy olyan módszer a hash-táblákban, amely a kollíziók kezelésére szolgál, és amikor kollízió lép fel, egy második hash értéket számítanak ki, és a következő indexet ennek a második hash-nek a segítségével határozzák meg.

Ötlet:

  • Két hash függvény van: h1(key) és h2(key).

  • Egy elem beszúrásakor vagy keresésekor először kiszámítjuk a h1(key) értékét — az első indexet.

  • Ha a pozíció foglalt (kollízió), akkor a következő index a következő képlet szerint számítódik:

    index = (h1(key) + i * h2(key)) mod táblázat_méret, ahol i a próbálkozások száma (0,1,2,...)

Ez lehetővé teszi a kollíziók elkerülését, a táblán való lépkedéssel, amely a kulcstól függ, így csökkentve a klaszterezést a lineáris próbálkozáshoz képest.

Példa Go nyelven:

func doubleHashing(key int, i int, tableSize int) int {
    h1 := key % tableSize
    h2 := 1 + (key % (tableSize - 1))
    return (h1 + i*h2) % tableSize
}

Itt a h2 mindig nem nulla, és garantálja, hogy szükség esetén az egész táblát végigjárjuk.