Hashing - PowerPoint PPT Presentation

About This Presentation
Title:

Hashing

Description:

Una Tabla Hash es una soluci n alternativa con un tiempo de consulta esperado de ... Encadenamiento. Direccionamiento abierto -Doble Hashing -Prueba lineal ... – PowerPoint PPT presentation

Number of Views:90
Avg rating:3.0/5.0
Slides: 9
Provided by: pedroco7
Category:
Tags: hashing

less

Transcript and Presenter's Notes

Title: Hashing


1
(No Transcript)
2
Problema
  • Telemóviles, una gran companía de telefonía,
    requiere mejorar la capacidad de identificación
    del usuario que llama
  • dado un número de usuario, devolver el nombre del
    que llama
  • los números de teléfonos están en el rango de 0 a
    R 1010-1
  • n es el número de los números de teléfonos usados
  • se desea realizar esto de la manera más eficiente
  • Conocemos dos formas para diseñar este
    diccionario
  • -un árbol de búsqueda balanceado (AVL,
    red-black) con el número de teléfono como llave
    tiene un tiempo de consulta O(log n) y un espacio
    O(n). Buen uso del espacio y tiempo de búsqueda,
    pero se puede reducir el tiempo de búsqueda a
    constante?
  • -un array indexado por los números de
    teléfonos tiene un tiempo de consulta óptimo de
    O(1), pero requiere una gran cantidad de espacio
    O(n R)

3
Otra Solución
  • Una Tabla Hash es una solución alternativa con un
    tiempo de consulta esperado de O(1) y espacio O(n
    N), donde N es el tamaño de la tabla.
  • Como un array, pero con una función que proyecta
    el rango amplio de llaves en uno más pequeño
  • -e.g., tomar la llave original, mod el tamaño
    de la tabla, y usarlo como indice
  • Insertar telefono (401-863-7639, Pedro) en la
    tabla de tamaño 5
  • -4018637639 mod 5 4, pro tanto
    (401-863-7639, Pedro) se almacena en el cajetin 4
    de la tabla
  • Después de varias inserciones pueden existir
    colisiones!

4
Resolución de Colisiones
  • Usar encadenamiento
  • -Configurar listas de elementos con el mismo
    índice
  • Complejidad O(n/N)

5
De Llaves a Indices
  • La proyección de llaves a índices de una tabla
    hash se llama funcion hash
  • Una función hash usualmente es la composición de
    dos proyección, una hash code map y otra
    compression map.
  • Un requerimiento esencial de una función hash es
    proyectar llaves iguales al mismo índice
  • Una función hash buena minimiza la probabilidad
    de colisiones
  • Java tiene un mértodo hashCode() para la clase
    Object, que normalmente retorna la dirección de
    32-bit de memoria del objeto.
  • Este código hash trabaja mal para objetos Integer
    y String

6
Proyección de códigos Hash
  • Integer cast para tipos numéricos de 32 bits or
    less,
  • suma de Componentes para tipos numéricos
  • acumulación Polynomica en cadenas, combinar los
    valores (ASCII or Unicode) a0a1 ... an-1 como
    coeficientes de un polinomio
  • a0 a1x ... xn-1an-1
  • -Se usa la regla de Horner para evaluar para
    un valor fijo de x
  • a0 x (a1 x (a2 ... x
    (an-2 x an-1) ... ))
  • -Si x 33, 37, 39, o 41produce como mucho 6
    colisiones para un vocabulario de 50,000 palabras

7
Proyección de Compression comunes
  • Division h(k) k mod N
  • N 2k es mala
  • el tamaño de la tabla N se escoge como número
    primo
  • Multiplicar, Sumar, y Dividir (MSD) h(k) ak
    b mod N

8
Tratamiento de Colisiones
  • Encadenamiento
  • Direccionamiento abierto
  • -Doble Hashing
  • -Prueba lineal
Write a Comment
User Comments (0)
About PowerShow.com