Ignacio Cerdeira Rabanal, J 15:00-16:00

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

    Ignacio Cerdeira Rabanal, J 15:00-16:00 - Presentation Transcript

    1. Ignacio Cerdeira Rabanal Tablas Hash
      • 71521163-H
      • UO181292
      • Jueves 15:00 - 16:00
    2. ¿Podemos utilizar Object para los elementos de la tabla hash?
      • NO
      • Utilizar un interface que se llame Hasheable y que implemente el método getClave()
      • Todos los elementos de la tabla hash deben implementar este interface
      • Regla de Horner en el método getClave():
      • Función de dispersión: fórmula X % B donde B es el tamaño de la tabla hash.
      • La posición en la que insertar de la tabla hash será el resultado de la fórmula
      Función matemática de dispersión (((‘A’ * 32 + ‘V’) *32 + ‘I’) *32 + ‘O’) *32 + ‘N’ = X AVION
    3. Gestionar las colisiones
      • Tabla hash abierta (memoria dinámica):
        • En cada celda de la tabla hash con elementos sinónimos una estructura de datos: lista, árbol, montículo con los sinónimos
      • Tabla hash cerrada (memoria estática):
        • Exploración lineal
        • Exploración cuadrática
    4. ¿TH abierta o TH cerrada?
      • TH cerrada:
        • Ventaja  Gran velocidad en tiempos de acceso
        • Desventaja  Redispersiones, gran consumo de memoria
      • TH abierta:
        • Ventaja  Con poca memoria es la mejor elección
        • Desventaja  Tiempos de acceso ligeramente más bajos
    5. Como implemento las colisiones
      • Exploración cuadrática:
      • Condición: FC <= 0,5 y B primo
      public void insertar(Hasheable a){ int posicion=a.getClave(); for(int i=0;tablaHash[posicion]!=null || !tablaHash[posicion].estaBorrado();i++){ posicion=funcionDispersion(a.getClave()+(i * i)); } tablaHash[posicion]=a; }
    6. hashCode de Strings en Java
      • La clase String en Java implementa el método hashCode()
      • Devuelve un entero y utiliza la siguiente fórmula:
      • s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
      AVION ‘ A’*31^4 + ‘V’*31^3 + ‘I’*31^2 + ‘O’*31^1 + ‘N’*31^0

    + edi.dsaedi.dsa, 2 years ago

    custom

    364 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 364
      • 364 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?