SlideShare une entreprise Scribd logo
1  sur  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 elemento 50, cuarta con el 27 y quinta con el 14.
Doble hash La primera colisión se presenta con el 23, con la segunda función hash, le corresponde la posición 5, no hay problema por que se encuentra desocupada, la segunda colisión se presenta con el número 50, con la segunda función hash le corresponde la posición 6,  la tercera colisión sucede con el elemento 27, con la 2ª función hash le corresponde la dirección 1, la cuarta colisión sucede con el número 14, con la 2ª función le corresponde la dirección 7, que se encuentra ocupada, de esa posición debe incrementar 7 posiciones más y así sucesivamente hasta que encuentre una posición vacía. Realizar la
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 2009Disponible 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

Contenu connexe

Tendances

Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datospepelebu1313
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexadoAleizapata
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una colajeffersoncenteno
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTODaniel Guaycha
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 

Tendances (20)

Método por plegamiento Hash
Método por plegamiento HashMétodo por plegamiento Hash
Método por plegamiento Hash
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
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
 
Hashing data
Hashing dataHashing data
Hashing data
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Archivo secuencial-indexado
Archivo secuencial-indexadoArchivo secuencial-indexado
Archivo secuencial-indexado
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una cola
 
Metodos de Ordenamiento Parte 1
Metodos de Ordenamiento Parte 1Metodos de Ordenamiento Parte 1
Metodos de Ordenamiento Parte 1
 
Metodo de busqueda secuencial
Metodo de busqueda secuencialMetodo de busqueda secuencial
Metodo de busqueda secuencial
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 

En vedette

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
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientojaviervilugron
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por HashAngie Suarez
 
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)Angie Suarez
 
Tablas Hash (María Macías Alonso)
Tablas Hash (María Macías Alonso)Tablas Hash (María Macías Alonso)
Tablas Hash (María Macías Alonso)edi.euitio
 
Tablas Hash (Joel Díaz Pousada)
Tablas Hash (Joel Díaz Pousada)Tablas Hash (Joel Díaz Pousada)
Tablas Hash (Joel Díaz Pousada)edi.euitio
 
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...Juan Pablo Gomez
 
Algoritmo De Hash
Algoritmo De HashAlgoritmo De Hash
Algoritmo De HashCamilo Ruiz
 
Algoritmos De Encriptacion
Algoritmos De EncriptacionAlgoritmos De Encriptacion
Algoritmos De Encriptaciondnisse
 
Ejercicios funciones de hash
Ejercicios funciones de hashEjercicios funciones de hash
Ejercicios funciones de hashAmador Aparicio
 
HASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosHASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosAngel Feijo
 
Guía de estudio estrategias
Guía de estudio estrategias Guía de estudio estrategias
Guía de estudio estrategias Hernan Morales
 
Semana 16 usuarios_y_grupos
Semana 16 usuarios_y_gruposSemana 16 usuarios_y_grupos
Semana 16 usuarios_y_gruposepalomino2012
 
Tutorial Access
Tutorial AccessTutorial Access
Tutorial Accessmontefusco
 
Nuevas tecnologias de la educacion
Nuevas tecnologias de la educacionNuevas tecnologias de la educacion
Nuevas tecnologias de la educacionsilvi_IGNACIO
 

En vedette (20)

EXPOSICION HASH
EXPOSICION HASHEXPOSICION HASH
EXPOSICION HASH
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
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.
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamiento
 
Metodologias para el desarrollo de aplicaciones web
Metodologias para el desarrollo de aplicaciones webMetodologias para el desarrollo de aplicaciones web
Metodologias para el desarrollo de aplicaciones web
 
BúSqueda Por Hash
BúSqueda Por HashBúSqueda Por Hash
BúSqueda Por Hash
 
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)
 
Tablas Hash (María Macías Alonso)
Tablas Hash (María Macías Alonso)Tablas Hash (María Macías Alonso)
Tablas Hash (María Macías Alonso)
 
Tablas Hash (Joel Díaz Pousada)
Tablas Hash (Joel Díaz Pousada)Tablas Hash (Joel Díaz Pousada)
Tablas Hash (Joel Díaz Pousada)
 
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...
UCD, UX, Métodos de evaluación de la usabilidad y la experiencia de usuario: ...
 
Algoritmo De Hash
Algoritmo De HashAlgoritmo De Hash
Algoritmo De Hash
 
Algoritmos De Encriptacion
Algoritmos De EncriptacionAlgoritmos De Encriptacion
Algoritmos De Encriptacion
 
Ejercicios funciones de hash
Ejercicios funciones de hashEjercicios funciones de hash
Ejercicios funciones de hash
 
HASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosHASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de Datos
 
Encriptacion hash
Encriptacion hashEncriptacion hash
Encriptacion hash
 
Guía de estudio estrategias
Guía de estudio estrategias Guía de estudio estrategias
Guía de estudio estrategias
 
Sic
SicSic
Sic
 
Semana 16 usuarios_y_grupos
Semana 16 usuarios_y_gruposSemana 16 usuarios_y_grupos
Semana 16 usuarios_y_grupos
 
Tutorial Access
Tutorial AccessTutorial Access
Tutorial Access
 
Nuevas tecnologias de la educacion
Nuevas tecnologias de la educacionNuevas tecnologias de la educacion
Nuevas tecnologias de la educacion
 

Similaire à Hashing

Similaire à Hashing (20)

Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
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
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
Hashing
HashingHashing
Hashing
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
Tablas de dispersion
Tablas de dispersionTablas de dispersion
Tablas de dispersion
 
Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.Tema 2 Diccionarios. Tablas Hash.
Tema 2 Diccionarios. Tablas Hash.
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Tabla HASH
Tabla HASHTabla HASH
Tabla HASH
 
Hash
HashHash
Hash
 
15 Tablas Hash
15 Tablas Hash15 Tablas Hash
15 Tablas Hash
 
Busqueda por HASH
Busqueda por HASHBusqueda por HASH
Busqueda por HASH
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tablas Hash Fash Vmaa
Tablas Hash Fash VmaaTablas Hash Fash Vmaa
Tablas Hash Fash Vmaa
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)
 
Hashing
HashingHashing
Hashing
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 

Plus 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

  • 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 elemento 50, cuarta con el 27 y quinta con el 14.
  • 20. Doble hash La primera colisión se presenta con el 23, con la segunda función hash, le corresponde la posición 5, no hay problema por que se encuentra desocupada, la segunda colisión se presenta con el número 50, con la segunda función hash le corresponde la posición 6, la tercera colisión sucede con el elemento 27, con la 2ª función hash le corresponde la dirección 1, la cuarta colisión sucede con el número 14, con la 2ª función le corresponde la dirección 7, que se encuentra ocupada, de esa posición debe incrementar 7 posiciones más y así sucesivamente hasta que encuentre una posición vacía. Realizar la
  • 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 2009Disponible 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