Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña...

17
Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A Vidal Trasviña Alejandrin quipo 4 costa Montiel Miguel A. arajas Pineda Diana J. abanillas López Jesús D. urtado Castillo Jacobo

Transcript of Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña...

Page 1: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Estructura de Datos II

Equipo 7

Moreno Ayala IvánTristán Domínguez César A.Vidal Trasviña Alejandrina

Equipo 4

Acosta Montiel Miguel A.Barajas Pineda Diana J.Cabanillas López Jesús D.Hurtado Castillo Jacobo

Page 2: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Búsqueda por transformación de claves(HASH)

Características:

• Velocidad de búsqueda• Tiempo de búsqueda

• Forma de Trabajo

Por lo tanto es importante:

• Elegir una función hash que sea fácil de calcular

• Un método para resolver colisiones

Page 3: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Funciones Hash

• Función Modulo (Por División)

• Función Cuadrado

• Función Plegamiento

• Función Truncamiento

Page 4: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Función Modulo (Por División)

• Consiste en tomar el residuo de la división de la clave entre el numero de componentes del arreglo.

• Suponiendo que hay un arreglo de N elementos y K es la clave del dato a buscar.

H(k)=(K mod. N) + 1

Ejemplo: K1=7259; K2=9359; N =100 H(K1)=(7259 mod. 100) + 1 = 60

H(K2)=(7259 mod. 100) + 1 = 60

*Como H(K1) = H(K2) y K1 diferente que K2 entoces estamos ante una colisión.

H(K1)=(7259 mod. 97) + 1 = 82

H(K2)=(7259 mod. 97) + 1 = 48 *Con N =97 eliminamos la colisión.

Page 5: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Función Cuadrado

• Consiste en elevar al cuadrado la clave y tomar los dígitos centrales como dirección.

• Sea K la clave del dato a buscar .

H(K)= dígitos_centrales (K2) + 1

Ejemplo: K1=7259; K2=9359; N =100

K12=52 693 081 H(K1)= dígitos_centrales (52 693 081) + 1= 94

K22=87 590 881 H(K2)= dígitos_centrales (87 590 881) + 1= 91

* Como el rango de índices en nuestro ejemplo caria de 1 a 100, se toman solamente los dos dígitos centrales del cuadrado de las claves.

Page 6: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Función Plegamiento

• Consiste en dividir la clave en partes de igual numero de dígitos, tomando como dirección los dígitos menos significativos.

• Sea K la clave del dato a buscar.

H(K)= digmensig ((d1…di) + (di+1…dj) + … + (dl…dn)) + 1

Ejemplo: K1=7259; K2=9359; N =100

H(K1)= digmensig ((72) + (59)) + 1= digmensig (131) + 1 = 32

H(K2)= digmensig ((93) + (59)) + 1= digmensig (152) + 1 = 53

* De la suma de las partes se toman solamente dos dígitos porque los índices del arreglo varían de 1 a 100.

Page 7: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Función Truncamiento

• Consiste en tomar algunos dígitos de la claves y formar con ellos una dirección.

• Sea K la calve del dato buscar.

H(K)= elegirdatos (d1, d2, …, dn) + 1

Ejemplo: K1=7259; K2=9359; N =100

H(K1)= elegirdatos (7259) + 1 = 76

H(K2)= elegirdatos (9359) + 1 = 96

* En el ejemplo se toman los datos 1 y 3 de la clave y se unen de izquierda a derecha.

Page 8: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Análisis del método por transformación de claves

• Según Lipschuts, la probabilidad de llevar a cabo una búsqueda con éxito (S) y la probabilidad de llevar a cabo una búsqueda sin éxito (Z), quedan determinadas por las siguientes formulas:

a) Búsqueda con éxito b) Búsqueda sin éxito

S()= (1+1/ (1- ) ) S()= (1+1/ (1- ) ) 2 2

Page 9: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Solución de Colisiones

• Elegir el método correcto para resolver colisiones es tan importante como la elección de una función hash.

• Obtener una misma dirección para dos claves diferentes, es una colisión.

• La manera mas natural de resolver el problema es reservar una casilla por clave.

• Métodos utilizados para resolver Colisiones

Reasignación

Arreglos anidados

Encadenamiento

Page 10: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Reasignación

• Prueba lineal

• Prueba cuadrática

• Doble dirección Hash

• Prueba Lineal

Detectada la colisión hay que recorrer el arreglo secuencialmente a partir del punto de colisión, buscando al elemento, termina cuando el elemento es encontrado o se encuentra una posición vacía.

Page 11: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

• Prueba cuadrática Similar a la prueba lineal, la diferencia consiste en que las direcciones

alternativas se generan como D+1, D+4, D+9 … D+i2.

La principal desventaja es que pueden quedar casillas de arreglo sin visitar.

• Doble Dirección Hash Consiste en una vez detectada la colisión, generar otra dirección aplicando la

función hash a la dirección previamente obtenida.

Page 12: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Arreglos Anidados

• Este método consiste en que cada elemento del arreglo tenga otro arreglo , en el cual se almacenen los elementos colisionados. La solución parece ser sencilla, pero claro que resulta ineficiente.

• Al trabajar con arreglos se depende del espacio que se haya asignado a este, lo cual conduce a un nuevo problema: elegir un tamaño adecuado de arreglo que permita un equilibrio entre el costo de memoria y el numero de valores colisionados que pudiera almacenar.

Page 13: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Encadenamiento

• Consiste en que cada elemento de arreglo tenga un apuntador a una lista ligada, la cual se ira generando e ira almacenando los valores colisionados a medida que se requiera.

• Una desventaja es que se ocupa espacio adicional al de la tabla y que exige manejo de listas ligadas. Además si las listas crecen demasiado se perderá la facilidad de acceso directo del método hash.

Page 14: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Búsqueda por transformación de claves

(HASH) • Los archivos normalmente están organizados en áreas llamadas cubetas. Las cubetas

están formadas por cero, uno o más bloques de registros. Por lo tanto, la función hash, aplicada a una clave. Dará como resultado un valor que hace referencia a una cubeta en la cual puede estar el registro buscado.

• Si el número de bloques a recorrer en una cubeta es grande, el tiempo necesario para ello será significativo y por lo tanto ya no se contará con la ventaja del acceso directo que caracteriza al método por transformación de claves.

• Debe elegirse una función hash que distribuya las claves a través de las cubetas, de tal manera que se evita la concentración de numerosas claves en una cubera mientras otras permanecen vacías.

Page 15: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Funciones HASH

• Al aplicar una función hash a un clave resulta el número de cubeta en la cual puede estar el registro con dicha clave.

• La función debe transformar las claves para que la dirección resultante sea un número comprendido entre los posibles valores de las cubetas.

• Es importante que la función distribuya homogéneamente las claves entre los números de cubetas disponibles.

• Las funciones modulo, cuadrado, plegamiento y truncamiento para búsqueda interna son validas también para búsqueda externa.

• La función modulo es de las que ofrece mayor uniformidad.

Page 16: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Conversión de bases

• Consiste en modificar de manera arbitraria la base de la clave obteniendo un número que corresponda a una cubeta.

Solución de colisiones

• Para evitar las colisiones se debe elegir un tamaño adecuado de cubetas, si se definen muy pequeñas el numero de colisiones aumenta, mientras que si se definen muy grandes se pierde eficiencia en cuanto al espacio de almacenamiento.

a) uso de áreas independientes para colisiones • Consiste en definir áreas separadas (secundarias) de las áreas primarias de almacenamiento,

en las que se guardarán todos los registros que hayan colisionado.

• El área de colisiones puede estar organizada de diferentes maneras. Una alternativa consiste en tener el área común a todas las cubetas.

• Otra forma de organizar el área de colisiones consiste en dividirla en bloques, asociando cada uno de ellos a uno del área primaria

b) uso de áreas de colisiones entre los bloques de almacenamiento primario

Page 17: Estructura de Datos II Equipo 7 Moreno Ayala Iván Tristán Domínguez César A. Vidal Trasviña Alejandrina Equipo 4 Acosta Montiel Miguel A. Barajas Pineda.

Ventajas• Tiempo de búsqueda independiente del numero de elementos

• Su búsqueda es rápida aunque los elementos no estén ordenados

• Las tablas Hash nos van a ser muy útiles cuando necesitemos operaciones de Inserción y Búsqueda en tiempos promedio de orden constante.

• Acceso directo a los datos

Desventajas• Tendremos que elegir sabiamente la función hash que mejor distribuya

nuestros datos.

• Se pueden presentar colisiones en las claves y tenemos que tener un metodo para evitarlas.