Nuria Vecino - Pablo Herreruela

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

    Nuria Vecino - Pablo Herreruela - Presentation Transcript

    1. Función de dispersión
      • EDI práctica-
      • Nuria Vecino Muñiz
      • Pablo Herreruela Fuentes
    2. Funciones de dispersión
        • RSHash
        • JSHash
        • BKDRHash
        • DJBHash
        • SDBMHash
        • Pearson
      • 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 (I)
      • Función hash creada por Robert Sedgwicks.
      • Simple.
      • Poco eficiente
        • Usa 2 multiplicaciones para cada iteración.
      • Diseñada para cadenas de caracteres.
      • 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 (II)
      • Siendo:
      • a,b : pesos.
      • hash : posición de la tabla.
      • str : cadena recibida
    6. JSHash
      • Función hash creada por Justin Sobel.
      • Utiliza desplazamiento de bits
      • Diseñada para cadenas de caracteres
      • 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. BKDRHash (I)
      • 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 (unos y treses).
      • Diseñada para cadenas de caracteres.
      • Similar al modelo de función hash visto en clase (regla de Horner y pesos).
    8. BKDRHash (II)
      • 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.
    9. 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 Daniel J. Bernstein.
      • Diseñada para cadenas de caracteres
      • Una de las mas eficaces.
      • Siendo:
      • hash : posición en la tabla.
        • 5381 : tamaño del array, escogido por el autor por beneficios al programarlo en C.
      • str : cadena recibida.
    10. Pearson
      • Función hash creada para ordenadores antiguos.
        • Sin capacidad hardware para:
          • Xor
          • Desplazamiento de bits
        • Apoyándose en el uso de un array auxiliar.
    11. Comparativa (I)
      • A partir de la cadena:
        • “ abcdefghijklmnopqrstuvwxyz1234567890”
      • Realizamos 15000 búsquedas de clave por cada función.
      • Observamos la eficacia en base al tiempo de ejecución.
    12. Comparativa (II)
      • Menor eficiencia (~ 50ms):
        • RSHash (2 multiplicaciones / iteración).
      • Eficiencia media (~ 30ms):
        • JSHash (2 desplazamientos / iteración).
        • SDBMHash (2 desplazamientos / iteración).
        • BKDRHash (1 multiplicación / iteración).
      • Eficacia alta (~ 20ms):
        • DJBHash (1 desplazamiento / iteración).

    + edi.dsaedi.dsa, 3 years ago

    custom

    1265 views, 0 favs, 0 embeds more stats

    Funciones de dispersion EDI

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1265
      • 1265 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 17
    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?