Ho sentito che, ad esempio, MurmurHash2 non è "incrementale" ma MurmurHash3 è incrementale. Cosa significa questo? E perché è utile?Che cosa significa per una funzione hash essere incrementale?
risposta
funzioni hash incrementali adatti per le situazioni in cui, se un messaggio precedentemente hash, M è leggermente aggiornata in un nuovo messaggio, M *, allora dovrebbe essere abbastanza veloce per calcolare il valore hash del aggiornato messaggio, M *. Questo viene fatto calcolando il nuovo hash, m *, dal vecchio valore di hash , m, in contrasto con le convenzionali funzioni di hash che devono ricalcolare il nuovo hash, m * da zero, che richiede più tempo.
http://www.cs.berkeley.edu/~daw/papers/inchash-cs06.pdf
Sono utili a causa del fatto che sono più facili da calcolare e quindi meno costoso in termini di potenza e tempo di calcolo.
Tuttavia non sono adatti ad ogni situazione. Quel documento di Berkeley ha alcuni buoni esempi di quando possono essere utili nella sezione Introduzione.
Non sono un esperto in questo, ma penso che MurmurHash3 non sia incrementale nel senso descritto da tommarshall.
Quando la gente lo descrivono come incrementale che probabilmente significa che si può calcolare hash di un torrente in O (1) di memoria, cioè si può avere un'API che consentono di eseguire le seguenti operazioni (in pseudocodice):
x = Hasher()
x.add("hello ")
x.add("world!")
x.get_hash()
e che produrrebbe un hash di stringa "ciao mondo" senza mantenere l'intera stringa in memoria in qualsiasi momento.
In particolare, il pacchetto javascript imurmurhash-js sembra utilizzare la parola "incremental" in questo senso.
Lo stesso significato sembra essere utilizzato nei documenti MetroHash.
Forse dovrebbe essere chiamato "stream hashing". – CMCDragonkai
- 1. Che cosa significa una funzione senza corpo?
- 2. Che cosa significa \ u003C?
- 3. Che cosa significa la funzione "sottofunzione ($$)"?
- 4. Che cosa significa "WINAPI" nella funzione principale?
- 5. Che cosa significa quando una funzione membro è volatile?
- 6. C: Che cosa significa per un doppio essere == -0?
- 7. Che cosa significa `_time_independent_equals`?
- 8. Che cosa significa "I componenti della funzione stateless non possono essere referenziati" significa?
- 9. Che cosa significa la funzione GCC suffisso .constprop significa?
- 10. Che cosa significa che REST dovrebbe essere guidato da ipertesto?
- 11. Cosa significa `* &` in una dichiarazione di funzione?
- 12. Che cosa significa __FILE__?
- 13. Cosa significa "isra" per la funzione GCC?
- 14. Funzione hash per una stringa
- 15. Che cosa significa "sys.argv"?
- 16. Che cosa significa%>% significa in R?
- 17. Che cosa significa restituire zero per convenzione?
- 18. Che cos'è una buona funzione hash?
- 19. Che cosa significa _branch_match_id?
- 20. Funzione hash che produce brevi hash?
- 21. Che cosa significa "Remotabile"?
- 22. cosa significa! Funzione in Javascript significa?
- 23. Che cosa significa "monolitico"?
- 24. Che cosa significa scalabilità?
- 25. Che cosa significa "@UIApplicationMain"?
- 26. Che cosa significa * (stella) in Ruby?
- 27. Che cosa significa CultureInfo.InvariantCulture?
- 28. Che cosa significa new()?
- 29. Che cosa significa MEDIA_ERROR_SERVER_DIED?
- 30. Che cosa significa "=>"?
Grazie! L'esempio di virus è ottimo (dalla carta). –
Sono confuso da questa risposta. La domanda chiede specificamente in che senso MurmurHash3 sia incrementale, ma non penso che sia incrementale nel senso descritto nella risposta. Forse non vedo come. – Rotsor