SlideShare una empresa de Scribd logo
HashingMarí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.
Hashing
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  0null  1null  2null  3  445null  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 colisionesEjemplo, aplicando la función módulo para determinar la dirección de  la clave:H(k) = (K % N) +1
Prueba cuadrática
Doble hashLo 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:
Si observan, a partir de la segunda función hash, se realizan los incrementos dados de acuerdo a la dirección obtenida, es decir si la dirección obtenida en la segunda función es 4, a partir de la dirección que causó la colisión se realizan incrementos de 4 en 4 hasta encontrar una celda vacía .Otro EjemploTeniendo un arreglo de N=10 elementos, para facilidad del cálculo, pero recuerden que preferentemente N debe ser primo.Insertar en una tabla Hash cuya función H(k)= clave% N los elementos 3,7,23,34,50,27,14,12Manejar las colisiones por:Exploración lineal.Exploración cuadráticaDoble hash. Teniendo como segunda función hash : 7-(dato%7).
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 hashLa 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, 50Indicando qué datos tienen colisiónTeniendo como función hash (dato % tamañoArreglo)Manejando las colisiones por:Exploración lineal.Exploración cuadráticaDoble hash. Teniendo como segunda función hash : 7-(dato%7).
Fuentes BibliográficasMé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.PDFHayet,J.B(2008)Tablas Hash, consultado el día 20 de febrero 2009 Disponible en: http://www.cimat.mx/~jbhayet/CLASES/PROGRAMACIONII/clase19.pdfCapí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.pdfAlgoritmos Computacionales: Introducción al análisis y diseño Sara Baase, Allen Van Gelder. Editorial Addison Wesley ISBN 9702601428
Hashing

Más contenido relacionado

PPTX
Graphs in data structure
PPT
Chapter 5 Graphs (1).ppt
PPTX
Método de ordenamiento por selección (selection sort
DOCX
Cuadro comparativo algoritmos de busqueda
DOCX
Aplicaciones de los árboles y grafos
PPTX
Programación 3: árboles binarios y ordenados
PPTX
Ordenamiento en C++
PPTX
Threaded Binary Tree.pptx
Graphs in data structure
Chapter 5 Graphs (1).ppt
Método de ordenamiento por selección (selection sort
Cuadro comparativo algoritmos de busqueda
Aplicaciones de los árboles y grafos
Programación 3: árboles binarios y ordenados
Ordenamiento en C++
Threaded Binary Tree.pptx

La actualidad más candente (20)

PPT
Graph-theory.ppt
PPS
Unit vi
PDF
Number system
PPTX
Desigualdades segundo grado [autoguardado]
PPTX
Métodos de bisección
PPTX
Listas de adyacencia
PDF
Tree terminology and introduction to binary tree
PPT
Tema numeros complejos
PPTX
Cuadro comparativo algoritmos de ordenamiento
PDF
Regula Falsi (False position) Method
PPTX
Isomorphic graph
PPTX
Metodo de newton raphson-ANTONIO ZEGARRA
PDF
Function of several variables
PPTX
Búsqueda Primero el Mejor
PPTX
Interpolacion en el Analisi Numerico.
PPT
Funciones Presentacion
DOC
Longitud de una curva
PPS
1.5 serie de taylor
Graph-theory.ppt
Unit vi
Number system
Desigualdades segundo grado [autoguardado]
Métodos de bisección
Listas de adyacencia
Tree terminology and introduction to binary tree
Tema numeros complejos
Cuadro comparativo algoritmos de ordenamiento
Regula Falsi (False position) Method
Isomorphic graph
Metodo de newton raphson-ANTONIO ZEGARRA
Function of several variables
Búsqueda Primero el Mejor
Interpolacion en el Analisi Numerico.
Funciones Presentacion
Longitud de una curva
1.5 serie de taylor
Publicidad

Destacado (8)

PPT
Seguridad bd
PPT
Normalizacion
DOC
Plandeclase2011
PPT
Algebra relacional
PPT
Tutorial p seint
PDF
Tema 2: Competitividad Destinos
PDF
Guia eejerciciospracticos
Seguridad bd
Normalizacion
Plandeclase2011
Algebra relacional
Tutorial p seint
Tema 2: Competitividad Destinos
Guia eejerciciospracticos
Publicidad

Similar a Hashing (20)

DOC
Unidad 8 metodos_de_busqueda
PPTX
hashing y colisiones
PPTX
Función Hash: metodos de división y de medio Cuadrado.
PPT
Hash Mª del Mar LLorente- Jueves a las 16:00
PDF
Metodos de Búsqueda
PPT
Tabla HASH
PDF
Tablas de dispersion
PPTX
Busqueda por HASH
PPTX
Hashing
PDF
Aritmética Modular
PDF
Informe aritmetica modular
PDF
Aritmetica Modular
PPT
hashing.ppt
PPT
tablahash(marialuisa)
PDF
Tema 2 Diccionarios. Tablas Hash.
PPTX
Dipersion hash
 
PDF
Algoritmos de busqueda
PDF
Algoritmos de busqueda
Unidad 8 metodos_de_busqueda
hashing y colisiones
Función Hash: metodos de división y de medio Cuadrado.
Hash Mª del Mar LLorente- Jueves a las 16:00
Metodos de Búsqueda
Tabla HASH
Tablas de dispersion
Busqueda por HASH
Hashing
Aritmética Modular
Informe aritmetica modular
Aritmetica Modular
hashing.ppt
tablahash(marialuisa)
Tema 2 Diccionarios. Tablas Hash.
Dipersion hash
 
Algoritmos de busqueda
Algoritmos de busqueda

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

DOCX
Respaldando bd
PDF
Guia eejerciciospracticos
PPTX
Ejercicios normalización
PPT
Normalizacion
PDF
Guia eejerciciospracticos
PDF
Guia eejerciciospracticos
PPT
Modulos sgbd
PDF
Guia eejerciciospracticos
DOC
Induccion fundbd2012
DOC
Induccion fundbd2012
PDF
Guia eejerciciospracticos
PPTX
Paradigmas de programación
DOCX
Proyecto final de algoritmica
DOCX
Ejercicios arreglos4
DOCX
Ejercicios arreglos2
DOCX
Ejercicios3parte
DOCX
Ejercicio privilegios
DOCX
Ejercicios2parte
Respaldando bd
Guia eejerciciospracticos
Ejercicios normalización
Normalizacion
Guia eejerciciospracticos
Guia eejerciciospracticos
Modulos sgbd
Guia eejerciciospracticos
Induccion fundbd2012
Induccion fundbd2012
Guia eejerciciospracticos
Paradigmas de programación
Proyecto final de algoritmica
Ejercicios arreglos4
Ejercicios arreglos2
Ejercicios3parte
Ejercicio privilegios
Ejercicios2parte

Último (12)

PDF
Reunion 31 Hipodromo La Rinconada 170825.pdf
PPTX
Exposición sobre el Boxeo y sus fundamentos.pptx
PPTX
EL GESTOR DEPORTIVO Y SU IMPORTANCIA EN LA EFICIENCIA DE LOS SERVICIOS DEPORT...
PPTX
TALLER 1 - PRACTICAS DEPORTIVAS INCLUSIVAS.pptx
PPTX
Competencias digitales.pptxTECNOLOGIAWSEEMANA2
DOCX
Flowviu es la mejor iptv para netiptv.docx
PDF
Los juegos tradicionales son actividades lúdicas que han sido practicadas dur...
PDF
Reunion 16 Hipodromo Nacional de Valencia 160825.pdf
PPTX
Depilación Corporal. (Linea de Belleza).
PPTX
Tactica y estrategia para jugadores iniciantes
PPTX
Lesiones en futbol y futsal - Marco Teorico
PDF
Los 10 Momentos Más Épicos de los Mundiales de Fútbol
Reunion 31 Hipodromo La Rinconada 170825.pdf
Exposición sobre el Boxeo y sus fundamentos.pptx
EL GESTOR DEPORTIVO Y SU IMPORTANCIA EN LA EFICIENCIA DE LOS SERVICIOS DEPORT...
TALLER 1 - PRACTICAS DEPORTIVAS INCLUSIVAS.pptx
Competencias digitales.pptxTECNOLOGIAWSEEMANA2
Flowviu es la mejor iptv para netiptv.docx
Los juegos tradicionales son actividades lúdicas que han sido practicadas dur...
Reunion 16 Hipodromo Nacional de Valencia 160825.pdf
Depilación Corporal. (Linea de Belleza).
Tactica y estrategia para jugadores iniciantes
Lesiones en futbol y futsal - Marco Teorico
Los 10 Momentos Más Épicos de los Mundiales de Fútbol

Hashing

  • 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.
  • 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 0null 1null 2null 3 445null 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 colisionesEjemplo, aplicando la función módulo para determinar la dirección de la clave:H(k) = (K % N) +1
  • 17. Doble hashLo 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. Si observan, a partir de la segunda función hash, se realizan los incrementos dados de acuerdo a la dirección obtenida, es decir si la dirección obtenida en la segunda función es 4, a partir de la dirección que causó la colisión se realizan incrementos de 4 en 4 hasta encontrar una celda vacía .Otro EjemploTeniendo un arreglo de N=10 elementos, para facilidad del cálculo, pero recuerden que preferentemente N debe ser primo.Insertar en una tabla Hash cuya función H(k)= clave% N los elementos 3,7,23,34,50,27,14,12Manejar las colisiones por:Exploración lineal.Exploración cuadráticaDoble hash. Teniendo como segunda función hash : 7-(dato%7).
  • 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 hashLa 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, 50Indicando qué datos tienen colisiónTeniendo como función hash (dato % tamañoArreglo)Manejando las colisiones por:Exploración lineal.Exploración cuadráticaDoble hash. Teniendo como segunda función hash : 7-(dato%7).
  • 22. Fuentes BibliográficasMé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.PDFHayet,J.B(2008)Tablas Hash, consultado el día 20 de febrero 2009 Disponible en: http://www.cimat.mx/~jbhayet/CLASES/PROGRAMACIONII/clase19.pdfCapí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.pdfAlgoritmos Computacionales: Introducción al análisis y diseño Sara Baase, Allen Van Gelder. Editorial Addison Wesley ISBN 9702601428