¿Qué es una función hash? Es algo que se usa en todas las ciencias de la computación.
Una función hash es simplemente una función que genera un valor de longitud fija para cada entrada que obtiene.
Muy bien, ¿qué significa eso?
Bueno, tengo aquí un generador de hash modificado llamado cinco que es el tipo de función hash y hay muchos, muchos tipos
de los que quizás haya oído hablar, disparó un tiro a 56 y muchos otros.
Usando esta función hash, veamos qué sucede si lo hago.
¿Hola?
Lo ve de inmediato, y el cinco aplica un hash a esta cadena y la convierte en este galimatías.
Eso es lo que hace una función hash, le damos una entrada y la función genera un patrón aleatorio.
Ahora hay algunos aspectos clave de las funciones hash.
Primero es que es unidireccional.
En el sentido de que si le doy a alguien esto, no tienen idea de cuál fue la entrada y es prácticamente
imposible para mí tener alguna pista sobre cuál es la entrada.
La segunda es que no importa cuántas veces le diga hola, va a ser lo mismo.
Pero tan pronto como cambie una cosa, cambiará por completo la salida.
Si vuelvo a hola y.
Mírame cambiar a H mayúscula, incluso una letra mayúscula, por lo que comienza con cinco D cuatro, si
hago H mayúscula, es completamente diferente de nuevo.
Y mirando esto, al menos podemos decir que, hmm, no sé para qué es útil, pero lo único que sé es
que pase lo que pase, si le doy la misma entrada, va a dar yo el
mismo resultado.
Pero no tengo idea de cómo convertir esto de nuevo en hola.
Esto es lo que llamamos independiente o independiente, hay diferentes pronunciaciones, no estoy realmente seguro de cuáles,
pero es una forma elegante de decir que una función, dada una entrada, siempre genera la
misma salida.
Ahora, el único beneficio y la razón por la que querríamos usar esto y una estructura de datos es
que obtenemos un acceso a los datos realmente rápido porque todo lo que tengo que hacer para encontrar Graps o Baskett DOT Graps es pasar Graps a algo así como un cinco
hash vacío.
Genera este número para mí e inmediatamente sé dónde está en mi memoria en nuestra computadora.
Pero esto no parece una dirección, ¿verdad?
Técnicamente, una función hash que usamos para tablas hash tomará gráficos, generará algún tipo de galimatías
y luego la convertirá en una base de índice o una base de direcciones que tenga basada en este número.
Verá, a diferencia de una carrera en la que acabamos de ordenar índices con tablas hash, todo lo que tenemos que hacer es darle una clave
y sabemos exactamente dónde está ese elemento en nuestra memoria.
Pero es posible que se esté preguntando, esta función hash de caja negra, ¿no ralentiza las cosas?
Porque cada vez que queremos agregar una propiedad.
Y un valor de uvas y diez mil en una tabla hash, tenemos que ejecutarlo a través de la función hash para
poder decidir dónde guardarlo en la memoria.
Y si lo ha notado, buen trabajo, ese es un factor importante.
No quiere que esto tome mucho tiempo porque, bueno, cada vez que agrega una propiedad a la memoria o
recupera una propiedad en la memoria, porque, nuevamente, las dos veces estamos enviando las uvas clave a la función hash
para encontrar de dónde conseguirlo.
Necesitamos que esto sea muy, muy rápido.
Y debajo del capó, recuerde, debido a que las tablas hash existen en todos los idiomas, están implementadas con
una función de hash óptima que es muy, muy rápida.
Como nota al margen.
Las funciones hash, como el tiro al cincuenta y seis, tardan mucho en generar un hash.
Y es una función hash demasiado compleja que se usa mucho en lugares como la criptografía donde desea que
esto tome más tiempo, pero eso está fuera del alcance de este curso.
Si está interesado, le recomiendo que compruebe las diferencias entre estos dos.
Para revisar, tenemos una clave que es graps, la enviamos a través de una función hash que va a hacer hash
de algo realmente, muy rápido y luego mapea lo que sea que el hash resultó ser en una dirección de memoria
donde queremos almacenar nuestro.
Los datos son gráficos 10000.
Y cuando se trata de funciones hash, normalmente lo dejas para cualquier marco
o lenguaje que estés usando, y generalmente asumimos una notación de tiempo, complejidad o bigo de uno, porque esto sucede muy
rápido.
Está bien.
Ahora que entendemos lo que hace esta caja negra, hablemos un poco más sobre las tablas hash, por qué
son útiles y por qué en algunos casos son mejores que iRace.