Problema
This presentation is the property of its rightful owner.
Sponsored Links
1 / 8

Problema PowerPoint PPT Presentation


  • 70 Views
  • Uploaded on
  • Presentation posted in: General

Pedro. 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 = 10 10 -1

Download Presentation

Problema

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Problema

Pedro

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)


Otra soluci n

Pedro

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!


Resoluci n de colisiones

Resolución de Colisiones

  • Usar encadenamiento

    -Configurar listas de elementos con el mismo índice

  • Complejidad O(n/N)


De llaves a indices

De Llaves a Indices

  • La proyección de llaves a índices de una tabla hash se llama funcionhash

  • 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


Proyecci n de c digos hash

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


Proyecci n de compression comunes

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


Tratamiento de colisiones

Tratamiento de Colisiones

  • Encadenamiento

  • Direccionamiento abierto

    -Doble Hashing

    -Prueba lineal


  • Login