He oído que, por ejemplo, MurmurHash2 no es "incremental", pero MurmurHash3 es incremental. ¿Qué significa esto? ¿Y por qué es útil?¿Qué significa que una función hash sea incremental?
Respuesta
funciones hash incrementales adecuadas para situaciones en las que si un mensaje previamente hash, H está ligeramente modificada en un nuevo mensaje, M *, entonces debe ser bastante rápida para calcular el valor hash del mensaje actualizado , METRO*. Esto se hace calculando el nuevo hash, m *, del antiguo valor hash , m, en contraste con las funciones hash convencionales que tienen que volver a calcular el nuevo hash, m * desde cero, lo que lleva más tiempo.
http://www.cs.berkeley.edu/~daw/papers/inchash-cs06.pdf
son útiles debido al hecho de que son más fáciles de calcular y por lo tanto menos costoso en términos de potencia y tiempo de cálculo.
Sin embargo, no son adecuados para cada situación. Ese documento de Berkeley tiene algunos buenos ejemplos de cuándo pueden ser útiles en la sección Introducción.
No soy un experto en esto, pero creo que MurmurHash3 no es incremental en el sentido que describe tommarshall.
Cuando las personas lo describen como incrementales que probablemente significa que se puede calcular de hash de una corriente en O (1) de memoria, es decir, puede tener una API que le permiten hacer lo siguiente (en pseudocódigo):
x = Hasher()
x.add("hello ")
x.add("world!")
x.get_hash()
y que produciría un hash de cadena "hello world" sin mantener todo el hilo en la memoria en cualquier momento.
En particular, el paquete imurmurhash-js javascript parece utilizar la palabra 'incremental' en ese sentido.
El mismo significado parece ser utilizado en MetroHash documentos.
Tal vez debería llamarse "transmisión de flujo". – CMCDragonkai
- 1. En PHP, ¿qué significa que una función sea binaria segura?
- 2. ¿Qué significa que una función de C++ esté en línea?
- 3. ¿Qué es "vinculación incremental"?
- 4. ¿Qué es una buena función hash?
- 5. ¿Qué significa `* &` en una declaración de función?
- 6. "newing" una función en JavaScript, ¿qué significa?
- 7. ¿Qué significa un doble hash (##) en una macro?
- 8. ¿Qué función hash usa Ruby?
- 9. ¿Cómo crear un hash que sea similar para entradas similares?
- 10. Construyendo una función hash/tabla hash
- 11. Función hash para una cadena
- 12. ¿Tiene una buena función hash para una tabla hash C++?
- 13. ¿Hay una función hash circular?
- 14. Buscando una rápida función hash
- 15. ¿Qué hace que una declaración SQL sea sargable?
- 16. ¿Qué función/algoritmo hash usa Perl?
- 17. Localidad que conserva la función hash
- 18. ¿Función hash perfecta?
- 19. ¿Qué es una buena función hash para palabras en inglés?
- 20. procesando un seq hasta que una función pred sea verdadera
- 21. ¿Qué significa * & en un parámetro de función
- 22. ¿Qué significa const después de una firma de función/método?
- 23. ¿Qué significa seguir una función con (jQuery, ventana, documento); ¿media?
- 24. ¿Qué significa esto "(function() {});", una función entre paréntesis, en javascript?
- 25. ¿Qué significa exactamente la función google.setOnLoadCallback (initialize)?
- 26. ¿función vacía de Javascript? Qué significa eso?
- 27. Lectura del código Zend Engine API: ¿Qué significa ## (double hash)?
- 28. ¿Qué significa la función de MySQL 'ELT'?
- 29. ¿Qué significa "..." en una declaración de función C?
- 30. ¿Qué significa (interactivo) en una función Emacs Lisp?
Gracias! El ejemplo del virus es genial (del papel). –
Estoy confundido por esta respuesta. La pregunta pregunta específicamente en qué sentido MurmurHash3 es incremental, pero no creo que sea incremental en el sentido descrito en la respuesta. Quizás no estoy viendo cómo. – Rotsor