Numero massimo di elementi mappati sulla stessa posizione in hashmap

1

Ho una domanda su hashmaps. Se hai questa hashmap con m slot, e devi mappare n elementi ad essa, e n > m. Ci saranno sicuramente collisioni. Ma supponendo che ci sia assunzione di hashing uniforme semplice , ciò significa che la quantità massima di collisioni in qualsiasi punto è la fattore di carico giusto? Il fattore di carico è n / m. Ma il load factor probabilmente sarà un decimale, significa che è un limite massimo di n / m? Quindi se n = 6 e m = 5, allora load factor è 1.2, e il ceiling è 2, quindi significa che le collisioni massime in un punto sono 2. È giusto?

    
posta omega 06.03.2013 - 03:52
fonte

1 risposta

4

No, il numero massimo di collisioni è il numero di elementi hash da inserire nell'hash.

Dal link wikipedia su Presupposto di hashing uniforme semplice :

Moreover, each item to be hashed has an equal probability of being placed into a slot, regardless of the other elements already placed.

La parola chiave è "probabilità" - è possibile che tutti abbiano l'hash nello stesso punto, e quindi la collisione massima è la dimensione. È anche possibile che eseguano l'hash in modo uniforme, nel qual caso sarebbe il limite massimo del fattore di carico.

Particolarmente rilevante per questo è:

Collision chain length Under the assumption of uniform hashing, the load factor A and the average chain length of a hash table of size m with n elements will be A = n/m

Dove n è il numero di elementi e m è la dimensione dell'hash. La frase chiave è di nuovo la lunghezza media della catena, non la lunghezza massima della catena.

Continuando a leggere l'articolo, si noteranno frasi come "in media" usate regolarmente - si tratta della probabilità di un hash uniforme - non la garanzia di tale.

Un esempio di tale algoritmo di hash sarebbe mod hashSize su interi. Se la dimensione dell'hash era 5%, ilhash(x) = x % 5 sarebbe un hash che si adatta a questo requisito - che ogni hash del valore ha la stessa probabilità di essere inserito in un determinato spazio.

Tuttavia, se uno di questi hash in questa hash di dimensione 5 i numeri: 5, 10, 15, 20, 25, 30 uno avrebbe quindi tutto hash nella stessa posizione.

    
risposta data 06.03.2013 - 04:01
fonte

Leggi altre domande sui tag