tablahash(marialuisa)

507 views
470 views

Published on

Presentacion sobre tablas hash,la funcion matematica y su implementacion

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
507
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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]

×