Middle
Mi az a hash ütközés és milyen módszerek léteznek a megoldására?
sobes.tech MI
Válasz az MI-től
Hash ütközés akkor fordul elő, amikor két különböző bemeneti érték ugyanazt a hash-függvény értékét adja. Ez elkerülhetetlen, mivel a lehetséges bemenetek halmaza általában nagyobb, mint a lehetséges hash-értékek halmaza.
Az ütközések megoldására szolgáló módszerek:
- Nyitott címzés — ütközés esetén a következő szabad cellát keressük egy meghatározott sorrendben (lineáris, kvadratikus, dupla hasholás).
- Láncolás — minden hash-tábla cellában egy összekapcsolt lista tárolódik az összes ugyanazzal a hash-értékkel rendelkező elemről.
- Újra hash-elés — ütközés esetén másik hash-függvényt alkalmazunk.
Python példával a láncolás:
hash_tábla = [[] for _ in range(10)]
def beszúr(kulcs, érték):
index = hash(kulcs) % 10
hash_tábla[index].append((kulcs, érték))
beszúr('alma', 1)
beszúr('pma', 2) # lehetséges ütközés