Pablo Herreruela - Nuria Vecino

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Pablo Herreruela - Nuria Vecino - Presentation Transcript

    1. Función de dispersión
      • EDI práctica-
      • Nuria Vecino
      • Pablo Herreruela
    2. Funciones de dispersión
        • RSHash
        • JSHash
        • PJWHash
        • ELFHash
        • BKDRHash
        • BPHash
        • FNVHash
        • DEKHash
        • DJBHash
        • SDBMHash
      • Entre las más vistas podemos destacar:
    3. SDBMHash
      • Función recursiva:
        • hash(i)=hash(i-1)*65599+str[i];
        • Siendo:
          • Hash(): función que calcula el valor para cada carácter de la cadena.
          • 65599: Tamaño máximo del vector preferentemente primo.
          • Str[i]: carácter de la cadena con la que actualmente operamos.
      • Es buena para cadenas de números decimales o caracteres.
    4. Código
      • Para el código se utiliza desplazamientos de bits:
      • public long hash(String str){
        • long hash=0;
        • for (int i=0; i<str.length(); i++){
        • hash = str.charAt(i) + (hash<<6) + (hash<<16) - hash;
      • }
      • return hash;
      • }
    5. RSHash
      • Función hash creada por Robert Sedgwicks.
      • Simple
      • /*
      • */
      • public long RSHash(String str)
      • {
      • int b = 378551;
      • int a = 63689;
      • long hash = 0;
      • for(int i = 0; i < str.length(); i++)
      • {
      • hash = hash * a + str.charAt(i);
      • a = a * b;
      • }
      • return hash;
      • }
      RSHash
      • Siendo:
      • a,b : pesos.
      • hash : posición de la tabla.
      • str : cadena recibida
      • /* … */
    6. JSHash
      • Función hash creada por Justin Sobel.
      • /* … */
      • public long JSHash(String str)
      • {
      • long hash = 1315423911;
      • for(int i = 0; i < str.length(); i++)
      • {
      • hash ^= ((hash << 5) + str.charAt(i) + (hash >> 2));
      • }
      • return hash;
      • }
    7. PJWHash
      • Función hash creada por Peter J. Weinberger.
      • Recomendada por los creadores de libros acerca de compiladores.
      • /*
      • Implementar código
      • */
    8. ELFHash
      • Función hash basada en la anterior (PJW) pero optimizada para 32bits.
      • Ampliamente usada en sistemas Unix.
      • /*
      • Implementar código
      • */
    9. BKDRHash
      • Función hash creada por los autores del libro “El lenguaje de programación C”.
      • Simple.
      • Basada en una semilla que genera un patrón.
      • Similar al modelo de función hash visto en clase.
    10. BKDRHash
      • public long BKDRHash(String str)
      • {
      • long seed = 131;
      • long hash = 0;
      • for(int i = 0; i < str.length(); i++)
      • {
      • hash = (hash * seed) + str.charAt(i);
      • }
      • return hash;
      • }
      • Siendo:
      • seed: peso.
        • 131: patrón aleatorio de unos y treses.
      • hash: posición en la tabla.
      • str: cadena recibida.
    11. DJBHash
      • public long DJBHash(String str)
      • {
      • long hash = 5381;
      • for(int i = 0; i < str.length(); i++)
      • {
      • hash = ((hash << 5) + hash) + str.charAt(i);
      • }
      • return hash;
      • }
      • Función hash creada por.
      • Una de las mas eficaces.
      • Siendo:
      • hash: posición en la tabla.
        • 5381: /* … */
      • str: cadena recibida.

    + edi.dsaedi.dsa, 3 years ago

    custom

    418 views, 0 favs, 0 embeds more stats

    Funciones de dispersion para tablas Hash

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 418
      • 418 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories