SlideShare una empresa de Scribd logo
1 de 18
Hashing
Un hash es un valor numérico de longitud fija que identifica datos de forma
unívoca. Los valores hash se utilizan para comprobar la integridad de los datos que
se envían a través de canales no seguros.
Puede compararse el valor hash
de los datos recibidos con el valor
hash de los que se enviaron para
determinar si se alteraron los
mismos.
Funciones Hashing
Una función Hash toma como entrada un
mensaje de cualquier tamaño y, aplicando
una serie de operaciones aritméticas y lógicas
consigue otro mensaje, siempre de igual
tamaño y por lo general muy reducido, 128 o
160 bits.
Por ejemplo. Para que la función hash sea
buena, un mínimo cambio en el mensaje de
entrada, debe producir un notable cambio en
el de salida y por supuesto, debe ser
imposible conocer el mensaje original a partir
del mensaje resumen.
Funciones Hashing
Una función de Hash es una caja negra
que tiene como entrada una llave y como
salida una dirección.
El hashing es similar al indexamiento en
el sentido de asociación entre llaves y
direcciones relativas de registros; pero
difiere de los índices en 2 cosas:
1. La dirección generada por Hash suele ser aleatoria (random).
• No hay una relación aparente entre la llave y la localización del registro
correspondiente
2. El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a
esto se le conoce como "colisión".
Funciones de Hashing más difundidas
FUNCIÓN BITS DESCRIPCIÓN
MD5 128 La codificación del MD5 de 128 bits es representada
típicamente como un número de 32 dígitos
hexadecimal
SHA-1 160 La codificación SHA-1 de 160 bits es representada
típicamente como un número de 40 dígitos
hexadecimal
RIPEMD160 160 Los hashes de 160 bits RIPEMD (también llamados
resúmenes RIPE del mensaje) se representan
típicamente como números en hexadecimal 40 dígitos
Ejemplos de Hashing
Colisiones
• Una importante desventaja de hashing es que el conjunto de posibles claves es
siempre mayor al número de espacios disponibles. Es decir, dos o más claves
pueden asignarse a la misma dirección en la tabla de hash.
• Cuando dos claves se direccionan a la misma dirección o bucket se dice que hay
una colisión, y a las claves se les denomina sinónimos.
Cuando hay colisiones se requiere de un proceso
adicional para encontrar una posición disponible
para la clave. Esto obviamente degrada la eficiencia
del método, por lo que se trata de evitar al máximo
esta situación.
Una función de hashing que logra evitar al 100% las
colisiones es conocida como hashing perfecto.
Colisiones
Colisiones
Ahora bien, cuando se tienen dos números que generan la misma dirección se
tiene una colisión. Por lo tanto se necesita solucionar la colisión. Tenemos dos
tipos de direccionamiento:
• 1) Direccionamiento Abierto.
Este tipo de solución de colisiones consiste en colocar en la siguiente posición
vacía el número que generó la colisión.
Posición 1 2 3 4 5 6
31 41 13
Números a insertar: 31, 41, 13:
Colisiones
2. Direccionamiento Cerrado:
Este tipo de solución de colisiones no se tiene ningún problema con que se
repita la misma dirección, utilizando el uso de listas.
Colisiones
Truncamiento:
• Ignora parte de la clave y se utiliza la parte restante directamente como índice
(considerando campos no numéricos y sus códigos numéricos).
• Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación
tiene mil posiciones, entonces el primero, segundo y quinto dígitos desde la
derecha pueden formar la función de conversión. Ejemplo: 72588495 se convierte
en 895. El truncamiento es un método muy rápido, pero falla para distribuir las
claves de modo uniforme.
Colisiones
Plegamiento:
La técnica de plegamiento consiste en la partición de la clave en diferentes partes y la
combinación de las partes en un modo conveniente ( a menudo utilizando suma o
multiplicación) para obtener el índice.
• Ejemplo:
13000000 --> 130=130+000+00
12345678 --> 657=123+456+78
71140205 --> 118 --> 1118=711+402+05
13602499 --> 259=136+024+99
25000009 --> 259=250+000+09
Colisiones
Tabla Hash
Una tabla hashes una estructura de datos que
asocia llaves o claves con valores. La
operación principal que soporta de manera
eficiente es la búsqueda: permite el acceso a
los elementos almacenados a partir de una
clave generada. Funciona transformando la
clave con una función hash en un hash, un
número que identifica la posición (casilla o
cubeta) donde la tabla hash localiza el valor
deseado.
Funcionamiento Tabla Hash
 Las operaciones básicas implementadas en
las tablas hash son:
• Inserción
• Búsqueda
 Para usar una tabla hash se necesita:
• Una estructura de acceso directo
(normalmente un arreglo).
• Una estructura de datos con una clave
• Una función hash cuyo dominio sea el
espacio de claves y su rango los números
naturales.
Búsqueda Tabla Hash
Para recuperar los datos, es necesario únicamente
conocer la clave del elemento, a la cual se le aplica la
función hash.
El valor obtenido se mapea al espacio de direcciones
de la tabla.
Si el elemento existente en la posición indicada en el
paso anterior tiene la misma clave que la empleada
en la búsqueda, entonces es el deseado. Si la clave es
distinta, se ha de buscar el elemento según la técnica
empleada para resolver el problema de las colisiones
al almacenar el elemento.
Ventajas Tabla Hash
 La principal ventaja de una tabla hash sobre otras
estructuras de datos es su velocidad. Esta ventaja es
mas aparente cuando el numero de entradas es
grande. Las tablas hash son particularmente
eficientes cuando el numero máximo de entradas
puede ser predicho antes, para que el arreglo pueda
ser asignado una vez y nunca mas ser ajustado.
 Comparada con otras estructuras de arreglos
asociadas, las tablas hash son más útiles cuando se
almacenan grandes cantidades de información.
× Aunque las operaciones en una tabla hash toman
un tiempo constante en promedio, el costo de una
buena función hash puede ser significantemente
mayor al de la búsqueda de una lista o árbol
secuencial. Así, las tablas hash no son efectivas
cuando el numero de entradas es pequeño.
× Las tablas hash almacenan la información en
posiciones pseudo-aleatorias, así que el acceso
ordenado a su contenido es bastante lento.
Desventajas Tabla Hash

Más contenido relacionado

La actualidad más candente

Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCristopher Morales Ruiz
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Ana Castro
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJohnfornerod
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Indizacion y operaciones
Indizacion y operacionesIndizacion y operaciones
Indizacion y operacionesfavi_hola
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Rubi Veronica Chimal Cuxin
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 

La actualidad más candente (20)

Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Indizacion y operaciones
Indizacion y operacionesIndizacion y operaciones
Indizacion y operaciones
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
 
Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Indices 1
Indices 1Indices 1
Indices 1
 
Hashing
HashingHashing
Hashing
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 

Similar a hashing y colisiones (20)

Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASH
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Hashing
HashingHashing
Hashing
 
T A B L A D E D I S P E R S I O N (Hash Table)
T A B L A  D E  D I S P E R S I O N (Hash Table)T A B L A  D E  D I S P E R S I O N (Hash Table)
T A B L A D E D I S P E R S I O N (Hash Table)
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas Hash
 
Funcion resumen
Funcion resumenFuncion resumen
Funcion resumen
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Tabla HASH
Tabla HASHTabla HASH
Tabla HASH
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 

hashing y colisiones

  • 1.
  • 2. Hashing Un hash es un valor numérico de longitud fija que identifica datos de forma unívoca. Los valores hash se utilizan para comprobar la integridad de los datos que se envían a través de canales no seguros. Puede compararse el valor hash de los datos recibidos con el valor hash de los que se enviaron para determinar si se alteraron los mismos.
  • 3. Funciones Hashing Una función Hash toma como entrada un mensaje de cualquier tamaño y, aplicando una serie de operaciones aritméticas y lógicas consigue otro mensaje, siempre de igual tamaño y por lo general muy reducido, 128 o 160 bits. Por ejemplo. Para que la función hash sea buena, un mínimo cambio en el mensaje de entrada, debe producir un notable cambio en el de salida y por supuesto, debe ser imposible conocer el mensaje original a partir del mensaje resumen.
  • 4. Funciones Hashing Una función de Hash es una caja negra que tiene como entrada una llave y como salida una dirección. El hashing es similar al indexamiento en el sentido de asociación entre llaves y direcciones relativas de registros; pero difiere de los índices en 2 cosas: 1. La dirección generada por Hash suele ser aleatoria (random). • No hay una relación aparente entre la llave y la localización del registro correspondiente 2. El Hash permite que 2 llaves puedan producir la misma salida --> direcciones iguales, a esto se le conoce como "colisión".
  • 5. Funciones de Hashing más difundidas FUNCIÓN BITS DESCRIPCIÓN MD5 128 La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal SHA-1 160 La codificación SHA-1 de 160 bits es representada típicamente como un número de 40 dígitos hexadecimal RIPEMD160 160 Los hashes de 160 bits RIPEMD (también llamados resúmenes RIPE del mensaje) se representan típicamente como números en hexadecimal 40 dígitos
  • 7. Colisiones • Una importante desventaja de hashing es que el conjunto de posibles claves es siempre mayor al número de espacios disponibles. Es decir, dos o más claves pueden asignarse a la misma dirección en la tabla de hash. • Cuando dos claves se direccionan a la misma dirección o bucket se dice que hay una colisión, y a las claves se les denomina sinónimos.
  • 8. Cuando hay colisiones se requiere de un proceso adicional para encontrar una posición disponible para la clave. Esto obviamente degrada la eficiencia del método, por lo que se trata de evitar al máximo esta situación. Una función de hashing que logra evitar al 100% las colisiones es conocida como hashing perfecto. Colisiones
  • 10. Ahora bien, cuando se tienen dos números que generan la misma dirección se tiene una colisión. Por lo tanto se necesita solucionar la colisión. Tenemos dos tipos de direccionamiento: • 1) Direccionamiento Abierto. Este tipo de solución de colisiones consiste en colocar en la siguiente posición vacía el número que generó la colisión. Posición 1 2 3 4 5 6 31 41 13 Números a insertar: 31, 41, 13: Colisiones
  • 11. 2. Direccionamiento Cerrado: Este tipo de solución de colisiones no se tiene ningún problema con que se repita la misma dirección, utilizando el uso de listas. Colisiones
  • 12. Truncamiento: • Ignora parte de la clave y se utiliza la parte restante directamente como índice (considerando campos no numéricos y sus códigos numéricos). • Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación tiene mil posiciones, entonces el primero, segundo y quinto dígitos desde la derecha pueden formar la función de conversión. Ejemplo: 72588495 se convierte en 895. El truncamiento es un método muy rápido, pero falla para distribuir las claves de modo uniforme. Colisiones
  • 13. Plegamiento: La técnica de plegamiento consiste en la partición de la clave en diferentes partes y la combinación de las partes en un modo conveniente ( a menudo utilizando suma o multiplicación) para obtener el índice. • Ejemplo: 13000000 --> 130=130+000+00 12345678 --> 657=123+456+78 71140205 --> 118 --> 1118=711+402+05 13602499 --> 259=136+024+99 25000009 --> 259=250+000+09 Colisiones
  • 14. Tabla Hash Una tabla hashes una estructura de datos que asocia llaves o claves con valores. La operación principal que soporta de manera eficiente es la búsqueda: permite el acceso a los elementos almacenados a partir de una clave generada. Funciona transformando la clave con una función hash en un hash, un número que identifica la posición (casilla o cubeta) donde la tabla hash localiza el valor deseado.
  • 15. Funcionamiento Tabla Hash  Las operaciones básicas implementadas en las tablas hash son: • Inserción • Búsqueda  Para usar una tabla hash se necesita: • Una estructura de acceso directo (normalmente un arreglo). • Una estructura de datos con una clave • Una función hash cuyo dominio sea el espacio de claves y su rango los números naturales.
  • 16. Búsqueda Tabla Hash Para recuperar los datos, es necesario únicamente conocer la clave del elemento, a la cual se le aplica la función hash. El valor obtenido se mapea al espacio de direcciones de la tabla. Si el elemento existente en la posición indicada en el paso anterior tiene la misma clave que la empleada en la búsqueda, entonces es el deseado. Si la clave es distinta, se ha de buscar el elemento según la técnica empleada para resolver el problema de las colisiones al almacenar el elemento.
  • 17. Ventajas Tabla Hash  La principal ventaja de una tabla hash sobre otras estructuras de datos es su velocidad. Esta ventaja es mas aparente cuando el numero de entradas es grande. Las tablas hash son particularmente eficientes cuando el numero máximo de entradas puede ser predicho antes, para que el arreglo pueda ser asignado una vez y nunca mas ser ajustado.  Comparada con otras estructuras de arreglos asociadas, las tablas hash son más útiles cuando se almacenan grandes cantidades de información.
  • 18. × Aunque las operaciones en una tabla hash toman un tiempo constante en promedio, el costo de una buena función hash puede ser significantemente mayor al de la búsqueda de una lista o árbol secuencial. Así, las tablas hash no son efectivas cuando el numero de entradas es pequeño. × Las tablas hash almacenan la información en posiciones pseudo-aleatorias, así que el acceso ordenado a su contenido es bastante lento. Desventajas Tabla Hash