Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
DispersiónEstructuras de Datos         Vicente García Díaz – garciavicente@uniovi.es                           Universidad...
2Tabla de contenidos1.   Conceptos básicos2.   Protección activa3.   Protección pasiva4.   Redispersión5.   Ejercicios6.  ...
3Conceptos básicos
4Conceptos básicos    La idea…     • Tener una estructura de datos con una       complejidad temporal de O(1) en el acceso...
5Conceptos básicos    Función hash     • Es una operación que consiste en transformar       una clave en una posición dent...
6Protección activaCuando se evitan las colisionesdiseñando buenas funciones hash
7Protección activa. Función hash básica    Función hash para claves enteras      • Buena opción: f(c) = c % B, siendo c la...
8Protección activa. Función hash para cadenas I    Función hash básica para claves cadena      • Hay que convertir la cade...
9Protección activa. Función hash para cadenas I    Función hash básica para claves cadena   Ejercicio 3: Si se introduce u...
10Protección activa. Función hash para cadenas II Asignación de pesos para incrementar el rango      • Una ponderación típ...
11Protección activa. Función hash para cadenas III Asignación de pesos para incrementar el rango      • Se puede optimizar...
12Protección activa. Función hash para cadenas IV Asignación de pesos para incrementar el rango      • Se puede minimizar ...
13Protección pasivaCuando varios elementos necesitancompartir la misma posición dentrode la tabla
14Protección pasiva. Tablas hash abiertas    Concepto      • Varios elementos comparten la misma posición de la tabla     ...
15Protección pasiva. Tablas hash abiertas   Ejercicio 7: Suponiendo que tenemos una tabla hash abierta (cada   posición de...
16Protección pasiva. Tablas hash cerradas    Concepto      • Cada posición sólo tiene cabida para un        elemento      ...
17Protección pasiva. Tablas hash cerradas    Exploración lineal      • Se modifica la función de dispersión         ▫ f(c)...
18Protección pasiva. Tablas hash cerradas    Exploración lineal      • La existencia de agrupamientos provoca problemas   ...
19Protección pasiva. Tablas hash cerradas    Exploración lineal – borrado perezoso      • No eliminar un elemento hasta qu...
20Protección pasiva. Tablas hash cerradas    Exploración cuadrática      • Se modifica la función de dispersión         ▫ ...
21Protección pasiva. Tablas hash cerradas    Dispersión doble      • Se modifica la función de dispersión         ▫ f(c) =...
22RedispersiónCuando se aumenta o disminuye eltamaño de la tabla dinámicamente enfunción de los elementos que existen
23Redispersión    Concepto     • Aumentar el tamaño en función del FC        ▫ Tablas hash abiertas  rendimiento decrece ...
24Redispersión inversa    Ejercicio 12: Suponiendo que tenemos una tabla hash cerrada de 23 elementos, y que    Concepto  ...
25Ejercicios
26Ejercicios      Ejercicio 13: Realiza el pseudocódigo de una clase “TablaHash” que:      1) Ofrezca una buena protección...
27Bibliografía • WEISS, Mark Allen; (2000) Data Estructures & Problem Solving Using Java.   Addison Wesley. ISBN 03-2154-1...
Prochain SlideShare
Chargement dans…5
×

Dispersión y tablas hash

12 203 vues

Publié le

Estructuras de datos: dispersión y tablas hash.

  • El Truco "Raro" #1 para ponerte DURO COMO EL ACERO (úsalo esta noche) ♥♥♥ https://tinyurl.com/y5mdnxjv
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Este secreto chino ancestral, totalmente natural te pone "DURO COMO EL ACERO" en la cama... ♣♣♣ http://ishbv.com/edrevspan/pdf
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Dispersión y tablas hash

  1. 1. DispersiónEstructuras de Datos Vicente García Díaz – garciavicente@uniovi.es Universidad de Oviedo, 2011
  2. 2. 2Tabla de contenidos1. Conceptos básicos2. Protección activa3. Protección pasiva4. Redispersión5. Ejercicios6. Bibliografía
  3. 3. 3Conceptos básicos
  4. 4. 4Conceptos básicos La idea… • Tener una estructura de datos con una complejidad temporal de O(1) en el acceso a los datos ▫ Insertar Tablas Hash ▫ Buscar ▫ Borrar • Las demás operaciones pueden ser O(n) ▫ Recorrer ▫ Comparar ▫…
  5. 5. 5Conceptos básicos Función hash • Es una operación que consiste en transformar una clave en una posición dentro de la tabla Hash ▫ Enteros 0 elemento1 ▫ Cadenas de texto 1 elemento2 2 elemento3 f(clave): 3 elemento4 4 elemento5 ¿Cuál es el problema? Que es posible que diferentes claves apunten a la misma posición de la tabla provocando COLISIONES
  6. 6. 6Protección activaCuando se evitan las colisionesdiseñando buenas funciones hash
  7. 7. 7Protección activa. Función hash básica Función hash para claves enteras • Buena opción: f(c) = c % B, siendo c la clave y B el tamaño de la tabla • Colisiones: n / B, siendo n el número de elementos y B el tamaño de la tabla Ejercicio 1: ¿Cuál podría ser un buen tamaño para una tabla hash cuyos elementos van a tener las siguientes claves? 2, 3, 1, 0
  8. 8. 8Protección activa. Función hash para cadenas I Función hash básica para claves cadena • Hay que convertir la cadena a un valor numérico y luego aplicarle la función hash para claves enteras ▫ P.e., utilizando el código ASCII de cada carácter Ejercicio 2: Si la clave utilizada en una tabla hash tiene una longitud de 10 caracteres codificados en código ASCII extendido, ¿cuál es el rango de valores que puede tener la clave numérica de la función f? ¿Cuál es el problema?
  9. 9. 9Protección activa. Función hash para cadenas I Función hash básica para claves cadena Ejercicio 3: Si se introduce una clave “Puerta”, utilizando la tabla de códigos ASCII anterior, ¿cuál sería la clave numérica correspondiente? Ejercicio 4: Para una tabla hash de tamaño 8009 (nº primo), ¿en qué posición de la tabla se colocaría el elemento de clave “Puerta”?
  10. 10. 10Protección activa. Función hash para cadenas II Asignación de pesos para incrementar el rango • Una ponderación típica es 272 i • siendo i la posición del carácter en la cadena Letra Código ASCII Código ponderado P 80 80 * 272 = 58320 u 117 117 * 271 = 3159 ¿Cuál es el problema? e 101 101 * 270 = 101 r 114 t 116 a 97 TOTAL: 625 61580
  11. 11. 11Protección activa. Función hash para cadenas III Asignación de pesos para incrementar el rango • Se puede optimizar la multiplicación utilizando como peso 32 Letra Código ASCII Código ponderado Código ponderado (32) P 80 80 * 272 = 58320 80 * 325 = 2684354560 u 117 117 * 271 = 3159 117 * 324 = 122683392 e 101 101 * 270 = 101 101 * 323 = 3309568 r 114 114 * 322 = 116736 t 116 116 * 321 = 3712 a 97 97 * 320 = 97 TOTAL: 625 61580 2810468065
  12. 12. 12Protección activa. Función hash para cadenas IV Asignación de pesos para incrementar el rango • Se puede minimizar el nº de multiplicaciones utilizando la Regla de Horner P*325 + u*324 + e*323 + r*322 + t*321 + a*320 Ejercicio 5: ¿Cómo se representaría el polinomio correspondiente al código ponderado con peso 32 para convertir la clave “Puerta” mediante la Regla de Horner?
  13. 13. 13Protección pasivaCuando varios elementos necesitancompartir la misma posición dentrode la tabla
  14. 14. 14Protección pasiva. Tablas hash abiertas Concepto • Varios elementos comparten la misma posición de la tabla hash ▫ P.e., cada posición de la tabla es a su vez una lista o un árbol • Factor de carga (Load Factor) = n / B, siendo n el número de elementos y B el tamaño de la tabla ▫ Lo recomendable es que FC <= 1 Ejercicio 6: ¿Cuál es el factor de carga de la siguiente tabla hash?
  15. 15. 15Protección pasiva. Tablas hash abiertas Ejercicio 7: Suponiendo que tenemos una tabla hash abierta (cada posición de la tabla es una lista) de 13 elementos, muestra gráficamente cómo evolucionaría la tabla si se introducen en ella elementos con las siguientes claves: 1, 10, 15, 20, 7, 13, 3, 2, 4, 6, 8, 18, 11, 12, 14, 26, 65, 39, 40 ¿Cuál es el factor de carga de la tabla? ¿Es bueno?
  16. 16. 16Protección pasiva. Tablas hash cerradas Concepto • Cada posición sólo tiene cabida para un elemento ▫ Si se detecta una colisión, se buscan posiciones próximas • Técnicas de búsqueda de posiciones próximas ▫ Exploración lineal ▫ Exploración cuadrática ▫ Dispersión doble
  17. 17. 17Protección pasiva. Tablas hash cerradas Exploración lineal • Se modifica la función de dispersión ▫ f(c) = c % B pasa a ser f(c) = (c + i) % B, siendo i = 0, 1, 2, 3, 4,… Ejercicio 8: Suponiendo que tenemos una tabla hash cerrada de 7 elementos, muestra gráficamente cómo evolucionaría la tabla si se introducen en ella elementos con las siguientes claves: 4, 10, 12, 3, 17, 15, 14 ▫ Lo recomendable es que FC <= 0,5 debido a los agrupamientos
  18. 18. 18Protección pasiva. Tablas hash cerradas Exploración lineal • La existencia de agrupamientos provoca problemas ▫ Cuando se busca un elemento que está en un agrupamiento hay que recorrer todos los elementos del agrupamiento hasta que se encuentra ▫ Lógicamente, cuando se encuentra una posición vacía no se sigue buscando (podría ser una complejidad O(n)) y se detiene el algoritmo Buscando elemento con clave 17 0 17 1 15 (17 + 0) % 7 = 3 2 14 (17 + 1) % 7 = 4 3 10 (17 + 2) % 7 = 5 4 4 (17 + 3) % 7 = 6 5 12 6 3 (17 + 4) % 7 = 0 …pero, ¿y si se hubiera borrado algún elemento del agrupamiento?
  19. 19. 19Protección pasiva. Tablas hash cerradas Exploración lineal – borrado perezoso • No eliminar un elemento hasta que se introduce otro • Simplemente, se marca ▫ Para insertar se considera que la posición está libre ▫ Para buscar se considera que la posición está ocupada
  20. 20. 20Protección pasiva. Tablas hash cerradas Exploración cuadrática • Se modifica la función de dispersión ▫ f(c) = (c + i) % B pasa a ser f(c) = (c + i2) % B, siendo i = 0, 1, 2, 3, 4,… Ejercicio 9: Suponiendo que tenemos una tabla hash cerrada de 7 elementos, muestra gráficamente cómo evolucionaría la tabla si se introducen en ella elementos con las siguientes claves (exploración cuadrática): 4, 10, 12, 17, 3 ▫ Soluciona el problema de los agrupamientos primarios pero…
  21. 21. 21Protección pasiva. Tablas hash cerradas Dispersión doble • Se modifica la función de dispersión ▫ f(c) = (c + i2) % B pasa a f(c) = (c + i * h2(c)) % B, siendo i = 0, 1, 2, 3, 4,… ▫ h2(c) es la función de cálculo de salto. Se recomienda h2(c) = R – c % R, siendo R el número primo antecesor de B Ejercicio 10: Suponiendo que tenemos una tabla hash cerrada de 7 elementos, muestra gráficamente cómo evolucionaría la tabla si se introducen en ella elementos con las siguientes claves (dispersión doble): 4, 10, 12, 17, 3, 5, 7 ▫ Soluciona los agrupamientos y el nº de intentos es bajo pero…
  22. 22. 22RedispersiónCuando se aumenta o disminuye eltamaño de la tabla dinámicamente enfunción de los elementos que existen
  23. 23. 23Redispersión Concepto • Aumentar el tamaño en función del FC ▫ Tablas hash abiertas  rendimiento decrece si FC > 1 ▫ Tablas hash cerradas  se paraliza si FC > 0,5 • Se busca un nuevo valor B ▫ El primo inmediatamente superior al tamaño doble del original ▫ Se recorren los elementos y se añaden a la nueva tabla Ejercicio 11: Suponiendo que tenemos una tabla hash cerrada de 5 elementos, muestra gráficamente cómo evolucionaría la tabla si se introducen en ella elementos con las siguientes claves: 4, 10, 21, 9, 15, 3, 17, 1, 8, 26 Utiliza dispersión doble para insertar elementos y exploración cuadrática en caso que sea necesario redispersar elementos en función del FC
  24. 24. 24Redispersión inversa Ejercicio 12: Suponiendo que tenemos una tabla hash cerrada de 23 elementos, y que Concepto inicialmente en la tabla hay los elementos con clave: 1, 2, 10, 11, 12, 13, 15, 16, 17, 19, muestra gráficamente cómo evolucionaría la tabla (y el FC) si se produce lo siguiente: -Se saca el elemento con clave: 2 • Reducir el tamaño en función del FC para ahorrar memoria -Se saca el elemento con clave: 13 -Se saca el elemento con clave: 19 ▫ el elemento con clave: 16 -Se saca Tablas hash abiertas  si FC < 0,33 -Se saca el elemento con clave: 10 ▫ Tablas hash cerradas  -Se introduce el elemento con clave: 21 si FC < 0,16 -Se introduce el elemento con clave: 9 • Se busca un nuevo valor B -Se introduce el elemento con clave: 33 -Se saca El elemento con clave: 1 ▫ el primo inmediatamente superior la mitad del tamaño del original -Se saca el elemento con clave: 33 ▫ el recorren secuencialmente los elementos y se añaden a la nueva -Se saca Seelemento con clave: 21 -Se saca tabla el elemento con clave: 9 -Se saca el elemento con clave: 11 -Se introduce el elemento con clave: 3 -Se introduce el elemento con clave: 9 -Se introduce el elemento con clave: 4 -Se saca el elemento con clave: 12 -Se saca el elemento con clave: 17 -Se saca el elemento con clave: 15 -Se saca el elemento con clave: 4 Utiliza dispersión doble para insertar elementos y exploración cuadrática en caso que sea necesario redispersar elementos en función del FC
  25. 25. 25Ejercicios
  26. 26. 26Ejercicios Ejercicio 13: Realiza el pseudocódigo de una clase “TablaHash” que: 1) Ofrezca una buena protección activa 2) Permita elegir entre trabajar con la aproximación abierta o cerrada como protección pasiva 3) Cuando se trabaja con la aproximación cerrada deberá permitir elegir entre exploración lineal con borrado perezoso, exploración cuadrática, o dispersión doble 4) Realice redispersión y redispersión inversa en función del factor de carga que se tenga en un determinado momento
  27. 27. 27Bibliografía • WEISS, Mark Allen; (2000) Data Estructures & Problem Solving Using Java. Addison Wesley. ISBN 03-2154-140-5. • JAIME SISA, Alberto; (2002) Estructuras de Datos y Algoritmos con énfasis en programación orientada a objetos. Pearson Educación. ISBN 958-699-044-3. • JOYANES AGUILAR, LUIS (2007) Estructuras de Datos en Java. McGraw Hill. ISBN: 9788448156312. • STANDISH, Thomas A (1998). Data structures in Java. Addison Wesley ISBN 0-201- 30564-X. • WEISS, Mark Allen; (2000) Estructuras de Datos en Java. Addison Wesley. ISBN 84- 7829-035-4. • WIRTH, Niklaus (1992). Algoritmos + Estructuras de Datos = Programas. Prentice- Hall. ISBN: 84-219-0172-9.

×