Junior
Aký je princíp fungovania hash tabuľky?
sobes.tech AI
Odpoveď od AI
Hash tabuľka (alebo asociatívny poľ) ukladá páry "kľúč-hodnota". Princíp fungovania je založený na použití hash funkcie, ktorá premieňa kľúč na číselný index (hash), ktorý ukazuje miesto uloženia hodnoty v poli (koš).
Kroky:
- Výpočet hashu: Pre daný kľúč sa vypočíta hash.
<?php $key = "example"; $hash = crc32($key); // Príklad jednoduchej hash funkcie - Určenie indexu: Hash sa prevedie na index poľa, zvyčajne pomocou operácie modulo veľkosti poľa.
<?php $arraySize = 10; $index = $hash % $arraySize; - Prístup do koša: Prístup k príslušnému košu v poli pomocou vypočítaného indexu.
- Riešenie kolízií: Pretože rôzne kľúče môžu mať rovnaký hash (kolízia), koš môže obsahovať viacero "kľúč-hodnota" párov. Na riešenie kolízií sa používajú rôzne metódy:
- Reťazenie (separate chaining): V každom koši sa uchováva zoznam (napríklad spojený zoznam) párov "kľúč-hodnota", ktorých hashe sa zhodujú.
- Otvárané adresovanie (open addressing): Pri kolízii sa vykonáva opakované hľadanie voľnej bunky v poli podľa určitého pravidla (lineárne, kvadratické, dvojité hashovanie).
Operácie:
- Vkladanie: Vypočíta sa hash kľúča, určí sa index, a pár "kľúč-hodnota" sa umiestni do príslušného koša. Pri kolízii sa pridá do zoznamu (reťazenie) alebo sa hľadá voľné miesto.
- Hľadanie: Vypočíta sa hash kľúča, určí sa index. V príslušnom koši sa hľadá hodnota podľa kľúča. Pri metóde reťazenia prechádzame prvky zoznamu; pri otvorenom adresovaní sa vykonáva sekvenčné hľadanie.
- Odstránenie: Vypočíta sa hash kľúča, určí sa index. V príslušnom koši sa nájde a odstráni pár podľa kľúča.
Výhody:
- Rýchly prístup k prvkom (v priemere O(1)).
- Efektívne využitie pamäti.
Nevýhody:
- Výkon sa môže zhoršiť pri veľkom počte kolízií.
- Veľkosť tabuľky môže vyžadovať úpravu (rehashing) na udržanie efektívnosti.