Come faccio a capire la mappa di Hilbert in questo risposta ? L'autore della risposta ha mappato il valore hash (numero intero) di alcune stringhe in un'immagine 2D. Capisco che la curva di Hilbert è una tecnica per 1D < = > Trasformazione 2D che preserva la localizzazione dei punti.
La mia domanda è, cosa posso dedurre da questa immagine 2D sui diversi algoritmi di hashing? Capisco che due stringhe con valori hash vicini vengano trasformati in punti vicini nell'immagine (ma il contrario non è vero). Ma quali informazioni mi dice questo? Dicono qualsiasi informazione sulle collisioni? Se sì, come?
NOTA: Il cooment dell'autore nella sua risposta nel link: presumo tu intenda le immagini però. Per la mappa "lineare" ho creato una bitmap quadrata di dimensione nxn, (dove n = Ceil (sqrt (hashTable.Capacity))). Piuttosto che semplicemente nero per la voce della lista è occupato e bianco per la voce della lista è vuoto, ho usato una funzione HSLtoRGB, dove la tonalità variava da 0 (rosso) a 300 (magenta). Il bianco è ancora una "cella di lista vuota". Per la mappa di Hilbert ho dovuto cercare wikipedia per l'algoritmo che trasforma un indice in una (x, y) coordinata. - Ian Boyd
- Capisco perché l'autore della risposta utilizza n = Ceil (sqrt (hashTable.Capacity)) (la mia ipotesi: grandezza dell'area del image = lunghezza della tabella hash)
- Capisco che il colore bianco dice che nessuna stringa è stata sottoposta a hash a quelli posizioni. Ma cosa dicono i colori rimanenti?