Ivan Garcia Boto, Jaime Rodriguez Muñiz

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

    Ivan Garcia Boto, Jaime Rodriguez Muñiz - Presentation Transcript

    1. Funciones de dispersión Iván García Boto Jaime Rodríguez Muñiz
    2. Selección de dígitos
      • Se calcula la posición a partir de varios dígitos
      • Ejemplo con el 1º y último dígito del DNI.
      • Problemas:
        • No es inyectiva.
        • f(788888888) = f(711111118).
        • Si la primera cifra de todas las claves es baja (o alta) los objetos tienden a agruparse en la parte baja (o alta ) de la tabal hash  se desperdicia una parte importante de la tabla.
    3. Selección de dígitos - Código
      • Int funcionDispersion( string clave){
        • int posi = 1º nº de la clave concatenado con en último.
        • Return posi %B;
        • }
        • Ejemplo:
        • B=3;
        • Clave = 71545555
        • posi = 75%B = 0
    4. Plegado
      • Se calcula la posición a partir de la suma de dígitos de la clave.
      • Al igual que la selección de dígitos no es una función inyectiva.
        • F(345) = f(543)
      • Ejemplo:
        • Clave = 33565
        • Posi = 22
        • %B = 0
    5. Plegado - Mejora
      • Agrupando las cifras de la clave (de 2 en 2, o de 3 en 3), el rango de posiciones incrementa.
    6. dbj2
      • Por cada carácter de la cadena, se coje su valor numérico y se suma al valor acumulado hasta el momento multiplicado por 33:
        • (hash * 33 + c)=(((hash << 5) + hash)+c)
      • Al final se devuelve el valor acumulado resultante de la operacion.
    7. Dbj2 - Código
      • unsigned long hash(unsigned char *str){
      • unsigned long hash = 5381;
      • int c;
      • while (c = *str++ )
      • hash = ((hash << 5) + hash) + c; /*hash * 33 + c */
      • return hash%B;
      • }
    8. Dbj2 - Ventajas
      • Sencilla de implementar.
      • Es una función rápida.
      • Amplio rango cubierto al codificar, usamos todos los caracteres de la cadena.

    + edi.dsaedi.dsa, 3 years ago

    custom

    771 views, 0 favs, 0 embeds more stats

    Ejemplos de funciones de dispersión.

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 771
      • 771 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 15
    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