Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

tablahash(marialuisa)

791 views

Published on

Presentacion sobre tablas hash,la funcion matematica y su implementacion

  • Be the first to comment

  • Be the first to like this

tablahash(marialuisa)

  1. 1. Tablas Hash Maria Luisa Pereira Diaz 71768976-Y Grupo L
  2. 2. ¿Podemos utilizar Object para los elementos de la tabla Hash? * Una tabla hash se puede ver como un conjunto de entradas. Cada una de estas entradas tiene asociada una clave única, y por lo tanto, diferentes entradas de una misma tabla tendrán diferentes claves. Esto implica, que una clave identifica a una unica entrada en una tabla hash. *Necesitamos un método publico que devuelva una clave cadena para cada elemento *No podemos usar Object porque no tiene ese método, tiene el método hashcode que devuelve un numero entero, pero no una cadena OVIEDO MIERES GIJON AVILES LLANES 0 1 2 3 4
  3. 3. Función matemática <ul><li>Permite asociar el elemento almacenado en una entrada con la clave de dicha entrada. </li></ul><ul><li>Devuelve un número entero que será la posición en la tabla en la que se encuentra el objeto buscado o en el que éste ha de insertarse </li></ul><ul><li>Para aumentar el rango de la función de conversión y disminuir el número de colisiones habrá que hacer k = longitud (cadena).El coste computacional de la función Conversión aumenta debido a un mayor número de multiplicaciones Para reducirlo se emplea un peso igual a 32 en lugar de 27. </li></ul><ul><li>A nivel binario, multiplicar por 32 consiste en realizar un desplazamiento de 5 bits, mucho más barato que una operación de multiplicación. </li></ul><ul><li>32 = 2 5 . </li></ul><ul><li>Se aplica el equivalente mediante la regla de Horner: </li></ul><ul><li>C =((k 1 )* 32 + k 2 )* 32 + k 3 (se optimizan las potencias de 32). </li></ul><ul><li>Cifras tan elevadas pueden causar un overflow durante el proceso de cálculo para ello C=(((k1*32+k2)%B)*32+k3)%B </li></ul>
  4. 4. Implementación <ul><li>private int funcionDispersion (String clave) { </li></ul><ul><li>int x = 0; </li></ul><ul><li>for (int i=0; i<clave.length(); i++) { </li></ul><ul><li>x = (x * 32 + clave.charAt(i)) % B; </li></ul><ul><li>} </li></ul><ul><li>return x; </li></ul><ul><li>} </li></ul>- oviedo - - 0 1 2 3 funcionDispersion(‘oviedo’):1 funcionDispersion(clave): [0..4]

×