Classificazione della funzione hash


9

Su Internet mi sono imbattuto in questa domanda:

Classificare le funzioni di hash in base ai vari metodi con cui viene trovato il valore chiave.

con risposte come

  • Metodo diretto
  • Metodo di sottrazione
  • Metodo Modulo-Division
  • Metodo di estrazione cifre
  • Metodo Mid-Square
  • Metodo pieghevole
  • Metodo pseudo-casuale

che trovo strano. Penso di sapere molto sull'hashish, ma per me questo è chiaramente incomprensibile, qualcuno potrebbe spiegarlo?

Risposte:


4

Sono metodi per trasformare un hashcode in un indice dell'array che contiene i valori. Supponiamo che tu abbia un codice hash di 0x12345678. Un numero molto elevato e difficilmente avrai un array di queste dimensioni. Se lo fai puoi farlo

Value = array[0x12345678];

Ed essere fatto (metodo diretto).

In caso contrario, hai un modo per trasformare questo valore in uno che si adatta alle dimensioni dell'array mentre cerchi di evitare troppe collisioni. I termini usati sono probabilmente noti anche con altri nomi, ma ad esempio potresti semplicemente mascherare i bit più alti dell'hashcode

Value = array[hashcode & 0xffff];

Oppure modifica l'hashcode rispetto alla dimensione dell'array

Value = array[hashcode % array.size()]; // modulo division

Ecc. Ecc

Modifica: questo link può essere d'aiuto


Grazie, tutto qui - il link sembra essere la fonte di questo ***. Non ha ancora senso dato che stanno mescolando molte cose insieme: 1. calcolo dell'hashCode da una chiave (ad es. Piega e aggiungi), 2. miglioramento (= sbavatura) dell'hash (ad es. Mid-square), 3. mappatura l'hash per l'indice (ad es. modulo, "&").
maaartinus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.