Sobes.tech
Junior

Mi a hash-tábla működési elve?

sobes.tech MI

Válasz az MI-től

Hash-tábla (vagy asszociatív tömb) párokat "kulcs-érték" tárol. A működési elv egy hash függvény használatán alapul, amely a kulcsot numerikus indexre (hash) alakítja, jelezve az érték tárolási helyét a tömbben (kosár).

Lépések:

  1. Hash számítása: Egy adott kulcs esetén a hash érték számítása.
    <?php
    $key = "example";
    $hash = crc32($key); // Egyszerű hash függvény példája
    
  2. Index meghatározása: A hash értékét általában a tömb méretének modulo műveletével alakítjuk át indexre.
    <?php
    $arraySize = 10;
    $index = $hash % $arraySize;
    
  3. Kosárhoz való hozzáférés: A számított index segítségével hozzáférünk a tömb megfelelő kosarához.
  4. Ütközések kezelése: Mivel különböző kulcsok ugyanazt a hash értéket kaphatják (ütközés), a kosár több "kulcs-érték" párt is tartalmazhat. Az ütközések megoldására különböző módszerek léteznek:
    • Láncolás (Separate Chaining): Minden kosárban egy lista (pl. összekapcsolt lista) tárolja a "kulcs-érték" párokat, amelyek hash értékei egyeznek.
    • Nyitott címzés (Open Addressing): Ütközés esetén ismételt keresést végzünk egy szabad cella után a tömbben egy meghatározott szabály szerint (lineáris, kvadratikus, dupla hash).

Műveletek:

  • Beszúrás: A kulcs hash értékét kiszámítjuk, meghatározzuk az indexet, és a "kulcs-érték" párt a megfelelő kosárba helyezzük. Ütközés esetén hozzáadjuk a listához (láncolás) vagy keresünk szabad helyet.
  • Keresés: A kulcs hash értékét kiszámítjuk, meghatározzuk az indexet. A megfelelő kosárban a kulcs alapján keressük az értéket. Láncolás esetén végigiterálunk a listán; nyitott címzésnél szekvenciális keresést végzünk.
  • Törlés: A kulcs hash értékét kiszámítjuk, meghatározzuk az indexet. A megfelelő kosárban megtaláljuk és töröljük a párt a kulcs alapján.

Előnyök:

  • Gyors hozzáférés az elemekhez (átlagosan O(1)).
  • Hatékony memóriahasználat.

Hátrányok:

  • Nagy ütközésszám esetén a teljesítmény romolhat.
  • A táblázat mérete igényelhet beállítást (rehashing) a hatékonyság fenntartása érdekében.