Domanda

Sto leggendo gli algoritmi 4a edizione di Robert Sedgewick e sono sconcertato da un problema particolare. A pagina 460 del libro l'autore sta descrivendo una tecnica per le stringhe di hash e usa i numeri primi per hashing modulare. A partire dalla quarta riga:

 If R is greater than any character value, this computation would
 be equivalent to treating the String as an N-digit base-R integer, 
 computing the remainder that results when dividing that number by M.

Dove si è utilizzato l'algoritmo per hash una corda lunga n-character:

int hash = 0;
for (int i = 0; i < s.length(); i++)
   hash = (R * hash + s.charAt(i)) % M;

In che modo l'algoritmo di cui sopra si traduce in un numero intero di base-R?

Qui m e r sono numeri interi (casuali) e s è la stringa di lunghezza N.

Suppongo che con il "calcolo sopra" l'autore significhi il calcolo all'interno delle parentesi => r*hash + s.charat (i)

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top