SlideShare una empresa de Scribd logo
1 de 23
Hashing María Luisa Velasco Ramírez
El origen de los algoritmos de hash es la ambición de los científicos por encontrar una forma más rápida de encontrar la información: O(1) Las técnicas de búsqueda basadas en comparaciones, tal como los enfoques secuénciales no son muy eficientes en velocidad y recuperación de información.
En ese caso HASHING (también conocido como método de dispersión) es una metodología altamente eficiente para estas operaciones.  Hashing consiste en una transformación matemática de una clave k con una función h(k) que da como resultado la posición de k en una tabla (llamado también transformación key-to-address o KAT).
El verbo en inglés 'to hash' significa cortar o mezclar, analógicamente en recuperación de la información hashing significa cortar una parte de la clave y utilizarla como base de la búsqueda.  La función hash h(k) toma como entrada una clave k y produce como resultado un valor entero distribuido uniformemente en un rango determinado. Este valor se usa como índice para la búsqueda o inserción de un dato en un arreglo llamado también ' tabla de hash ' o también 'tablas dispersas'.
Por ejemplo:  Para un número 31, su transformación de clave por medio de sumas (tipo de técnica de transformación de claves) nos genera una dirección 4, por lo tanto se va a colocar el número 31 en la Posición 4.
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.
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, y 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.
Números a insertar: 31, 41, 13:
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.  null   0 null   1 null   2 null   3   4 45 null   5   6
Función Modulo(por división) Consiste en tomar el residuo de la clave entre el número de componentes del arreglo. Si se tiene un arreglo de N elementos y sea K la clave del dato a buscar o a almacenar. La función hash queda definida como:    H(k) = (K % N) +1  Para tener una mejor uniformidad en la distribución, N debe ser un número primo o divisible por muy pocos números. Por lo tanto dato N, si éste no es un número primo se tomará el valor primo más cercano.
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.
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+0012345678 --> 657=123+456+7871140205 --> 118 --> 1118=711+402+0513602499 --> 259=136+024+9925000009 --> 259=250+000+09
Métodos de tratamiento de colisiones Ejemplo, aplicando la función módulo para determinar la dirección de  la clave: H(k) = (K % N) +1
Prueba cuadrática
Doble hash Lo que se hace es aplicar una segunda función de dispersión a la clave, y luego se prueba a distancias h2(x), 2h2(x), ...   Usar una segunda función de hash,  diferente de la primera, para determinar el incremento que usar para repartir las llaves. Es muy importante la buena elección de h2(x) y, además, nunca debe ser cero. Si  se  elige la función:  h2(x) = R - (x MOD R)  con R un número primo menor que MAX_T, funcionará bien. Utilizando como segunda función hash  7-(clave%7) el ejemplo quedaría de la siguiente manera:
[object Object],[object Object]
Prueba o Exploración Lineal: La primera colisión se presenta con el número 23, la segunda colisión con el número 34 , tercera colisión con el 27 y cuarta con el 14.
Doble hash La primera colisión se presenta con el 23, con la segunda función hash, los incrementos a partir de la dirección que causó la colisión son de 5 en 5; la  segunda colisión sucede con el elemento 27, con la 2ª función hash le corresponde los incrementos de 1 en 1, la cuarta colisión sucede con el número 14, con la 2ª función le corresponde los incrementos de 7 en 7, se debe incrementar  a partir de la dirección en dónde se creó la colisión 7 posiciones más y así sucesivamente hasta que encuentre una posición vacía.
Ejercicio: Dado un arreglo de tamaño  13; inserta los siguientes datos:  19, 24, 15, 28, 37, 26, 52, 27, 40, 50 Indicando qué datos tienen colisión Teniendo como función hash (dato % tamañoArreglo) Manejando las colisiones por: Exploración lineal. Exploración cuadrática Doble hash. Teniendo como segunda función hash : 7-(dato%7).
Fuentes Bibliográficas Métodos de tratamiento de colisiones, consultado el 20 de febrero de 2009, disponible en:http://www.itnuevolaredo.edu.mx/maestros/sis_com/takeyas/Apuntes/Administracion_Archivos/Apuntes/Colisiones.PDF Hayet,J.B(2008)Tablas Hash, consultado el día 20 de febrero 2009 Disponible en: http://www.cimat.mx/~jbhayet/CLASES/PROGRAMACIONII/clase19.pdf Capítulo 7. Tablas de Hash, consultado el día 20 de febrero de 2009, disponible en:http://profesores.elo.utfsm.cl/~tarredondo/info/datos-algoritmos/c7.pdf Algoritmos Computacionales: Introducción al análisis y diseño  Sara Baase, Allen Van Gelder.  Editorial Addison Wesley ISBN 9702601428
Hashing O(1) búsqueda información

Más contenido relacionado

La actualidad más candente

BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por HashAngie Suarez
 
Slideshare Serie de Taylor
Slideshare Serie de TaylorSlideshare Serie de Taylor
Slideshare Serie de TaylorJoseLopiccolo
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)Cristina Lopez
 
Teoría y propiedades de la función logarítmica 291014 (4to)
Teoría y propiedades de la función logarítmica 291014    (4to)Teoría y propiedades de la función logarítmica 291014    (4to)
Teoría y propiedades de la función logarítmica 291014 (4to)norkamendezcelis
 
Matematicas expo funciones
Matematicas expo funcionesMatematicas expo funciones
Matematicas expo funcionesCris Chagüezá
 
Funciones
Funciones Funciones
Funciones d3101
 
Funciones
Funciones Funciones
Funciones d3101
 
Universidad tecnica luis vargas torres
Universidad tecnica luis vargas torresUniversidad tecnica luis vargas torres
Universidad tecnica luis vargas torresAlejandro Guagua
 
Calculo tarea 13
Calculo tarea 13Calculo tarea 13
Calculo tarea 13CLEMENTE8
 
Historia de la Derivadas
Historia de la Derivadas  Historia de la Derivadas
Historia de la Derivadas ricardo linarez
 

La actualidad más candente (16)

BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
Slideshare Serie de Taylor
Slideshare Serie de TaylorSlideshare Serie de Taylor
Slideshare Serie de Taylor
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)
 
Funciones (parte ii) 1
Funciones (parte ii) 1Funciones (parte ii) 1
Funciones (parte ii) 1
 
Funciones (parte ii)
Funciones (parte ii)Funciones (parte ii)
Funciones (parte ii)
 
2.algoritmos
2.algoritmos2.algoritmos
2.algoritmos
 
Teoría y propiedades de la función logarítmica 291014 (4to)
Teoría y propiedades de la función logarítmica 291014    (4to)Teoría y propiedades de la función logarítmica 291014    (4to)
Teoría y propiedades de la función logarítmica 291014 (4to)
 
Matematicas expo funciones
Matematicas expo funcionesMatematicas expo funciones
Matematicas expo funciones
 
Funciones
Funciones Funciones
Funciones
 
Funciones
Funciones Funciones
Funciones
 
Universidad tecnica luis vargas torres
Universidad tecnica luis vargas torresUniversidad tecnica luis vargas torres
Universidad tecnica luis vargas torres
 
Calculo tarea 13
Calculo tarea 13Calculo tarea 13
Calculo tarea 13
 
Apuntes de-logaritmo
Apuntes de-logaritmoApuntes de-logaritmo
Apuntes de-logaritmo
 
Hashing
HashingHashing
Hashing
 
Historia de la Derivadas
Historia de la Derivadas  Historia de la Derivadas
Historia de la Derivadas
 
Power logaritmos
Power logaritmos Power logaritmos
Power logaritmos
 

Destacado

Destacado (9)

1ª Convención CECMAVI 2008
1ª Convención CECMAVI 20081ª Convención CECMAVI 2008
1ª Convención CECMAVI 2008
 
DESPEDIDA
DESPEDIDADESPEDIDA
DESPEDIDA
 
Colores de Caracas
Colores de CaracasColores de Caracas
Colores de Caracas
 
El Siglo De Los Mercados Emergentes
El Siglo De Los Mercados EmergentesEl Siglo De Los Mercados Emergentes
El Siglo De Los Mercados Emergentes
 
Hardware Y Redes Ruben
Hardware Y Redes RubenHardware Y Redes Ruben
Hardware Y Redes Ruben
 
Cambiando Senderos
Cambiando SenderosCambiando Senderos
Cambiando Senderos
 
Ee4 Bautismo
Ee4   BautismoEe4   Bautismo
Ee4 Bautismo
 
Ayuda Escolar Anual
Ayuda Escolar AnualAyuda Escolar Anual
Ayuda Escolar Anual
 
Final Report v2
Final Report v2Final Report v2
Final Report v2
 

Similar a Hashing O(1) búsqueda información

Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedarehoscript
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
Hash Mª del Mar LLorente- Jueves a las 16:00
Hash Mª del Mar LLorente- Jueves a las 16:00Hash Mª del Mar LLorente- Jueves a las 16:00
Hash Mª del Mar LLorente- Jueves a las 16:00edi.euitio
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de BúsquedaPedro Avaria
 
Tablas de dispersion
Tablas de dispersionTablas de dispersion
Tablas de dispersionPrivada
 
Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASHSykrayo
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modularvvillegass
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)edi.euitio
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Carlos A. Iglesias
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hashUDG
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJohnfornerod
 
RAÍCES DE ECUACIONES
RAÍCES DE ECUACIONESRAÍCES DE ECUACIONES
RAÍCES DE ECUACIONESJenny López
 
Dipersion
DipersionDipersion
DipersionUDG
 

Similar a Hashing O(1) búsqueda información (20)

Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Hash Mª del Mar LLorente- Jueves a las 16:00
Hash Mª del Mar LLorente- Jueves a las 16:00Hash Mª del Mar LLorente- Jueves a las 16:00
Hash Mª del Mar LLorente- Jueves a las 16:00
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
Tabla HASH
Tabla HASHTabla HASH
Tabla HASH
 
Tablas de dispersion
Tablas de dispersionTablas de dispersion
Tablas de dispersion
 
Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASH
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hash
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Hash
HashHash
Hash
 
RAÍCES DE ECUACIONES
RAÍCES DE ECUACIONESRAÍCES DE ECUACIONES
RAÍCES DE ECUACIONES
 
Dipersion
DipersionDipersion
Dipersion
 

Más de María Luisa Velasco (20)

Respaldando bd
Respaldando bdRespaldando bd
Respaldando bd
 
Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Ejercicios normalización
Ejercicios normalizaciónEjercicios normalización
Ejercicios normalización
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Modulos sgbd
Modulos sgbdModulos sgbd
Modulos sgbd
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Proyecto final de algoritmica
Proyecto final de algoritmicaProyecto final de algoritmica
Proyecto final de algoritmica
 
Ejercicios arreglos4
Ejercicios arreglos4Ejercicios arreglos4
Ejercicios arreglos4
 
Ejercicios arreglos2
Ejercicios arreglos2Ejercicios arreglos2
Ejercicios arreglos2
 
Seguridad bd
Seguridad bdSeguridad bd
Seguridad bd
 
Ejercicios3parte
Ejercicios3parteEjercicios3parte
Ejercicios3parte
 

Hashing O(1) búsqueda información

  • 1. Hashing María Luisa Velasco Ramírez
  • 2. El origen de los algoritmos de hash es la ambición de los científicos por encontrar una forma más rápida de encontrar la información: O(1) Las técnicas de búsqueda basadas en comparaciones, tal como los enfoques secuénciales no son muy eficientes en velocidad y recuperación de información.
  • 3. En ese caso HASHING (también conocido como método de dispersión) es una metodología altamente eficiente para estas operaciones. Hashing consiste en una transformación matemática de una clave k con una función h(k) que da como resultado la posición de k en una tabla (llamado también transformación key-to-address o KAT).
  • 4. El verbo en inglés 'to hash' significa cortar o mezclar, analógicamente en recuperación de la información hashing significa cortar una parte de la clave y utilizarla como base de la búsqueda. La función hash h(k) toma como entrada una clave k y produce como resultado un valor entero distribuido uniformemente en un rango determinado. Este valor se usa como índice para la búsqueda o inserción de un dato en un arreglo llamado también ' tabla de hash ' o también 'tablas dispersas'.
  • 5. Por ejemplo: Para un número 31, su transformación de clave por medio de sumas (tipo de técnica de transformación de claves) nos genera una dirección 4, por lo tanto se va a colocar el número 31 en la Posición 4.
  • 6. 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.
  • 7. 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.
  • 8.
  • 9. 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, y 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.
  • 10. Números a insertar: 31, 41, 13:
  • 11. 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. null 0 null 1 null 2 null 3 4 45 null 5 6
  • 12. Función Modulo(por división) Consiste en tomar el residuo de la clave entre el número de componentes del arreglo. Si se tiene un arreglo de N elementos y sea K la clave del dato a buscar o a almacenar. La función hash queda definida como:   H(k) = (K % N) +1 Para tener una mejor uniformidad en la distribución, N debe ser un número primo o divisible por muy pocos números. Por lo tanto dato N, si éste no es un número primo se tomará el valor primo más cercano.
  • 13. 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.
  • 14. 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+0012345678 --> 657=123+456+7871140205 --> 118 --> 1118=711+402+0513602499 --> 259=136+024+9925000009 --> 259=250+000+09
  • 15. Métodos de tratamiento de colisiones Ejemplo, aplicando la función módulo para determinar la dirección de la clave: H(k) = (K % N) +1
  • 17. Doble hash Lo que se hace es aplicar una segunda función de dispersión a la clave, y luego se prueba a distancias h2(x), 2h2(x), ... Usar una segunda función de hash, diferente de la primera, para determinar el incremento que usar para repartir las llaves. Es muy importante la buena elección de h2(x) y, además, nunca debe ser cero. Si se elige la función: h2(x) = R - (x MOD R) con R un número primo menor que MAX_T, funcionará bien. Utilizando como segunda función hash 7-(clave%7) el ejemplo quedaría de la siguiente manera:
  • 18.
  • 19. Prueba o Exploración Lineal: La primera colisión se presenta con el número 23, la segunda colisión con el número 34 , tercera colisión con el 27 y cuarta con el 14.
  • 20. Doble hash La primera colisión se presenta con el 23, con la segunda función hash, los incrementos a partir de la dirección que causó la colisión son de 5 en 5; la segunda colisión sucede con el elemento 27, con la 2ª función hash le corresponde los incrementos de 1 en 1, la cuarta colisión sucede con el número 14, con la 2ª función le corresponde los incrementos de 7 en 7, se debe incrementar a partir de la dirección en dónde se creó la colisión 7 posiciones más y así sucesivamente hasta que encuentre una posición vacía.
  • 21. Ejercicio: Dado un arreglo de tamaño 13; inserta los siguientes datos: 19, 24, 15, 28, 37, 26, 52, 27, 40, 50 Indicando qué datos tienen colisión Teniendo como función hash (dato % tamañoArreglo) Manejando las colisiones por: Exploración lineal. Exploración cuadrática Doble hash. Teniendo como segunda función hash : 7-(dato%7).
  • 22. Fuentes Bibliográficas Métodos de tratamiento de colisiones, consultado el 20 de febrero de 2009, disponible en:http://www.itnuevolaredo.edu.mx/maestros/sis_com/takeyas/Apuntes/Administracion_Archivos/Apuntes/Colisiones.PDF Hayet,J.B(2008)Tablas Hash, consultado el día 20 de febrero 2009 Disponible en: http://www.cimat.mx/~jbhayet/CLASES/PROGRAMACIONII/clase19.pdf Capítulo 7. Tablas de Hash, consultado el día 20 de febrero de 2009, disponible en:http://profesores.elo.utfsm.cl/~tarredondo/info/datos-algoritmos/c7.pdf Algoritmos Computacionales: Introducción al análisis y diseño Sara Baase, Allen Van Gelder. Editorial Addison Wesley ISBN 9702601428