You are on page 1of 6

9.

4 Hash Extendido
En la seccin 9.3 se mencionaron varias tcnicas relacionadas con Hash y el manejo de colisiones, dichas tcnicas se basan en una estructura esttica, es decir, se calcula un cierto nmero de posiciones posibles (registros) y en base a este supuesto se ampla el espacio de direcciones y en consecuencia se disminuyen las colisiones. Desafortunadamente este esquema "esttico" no es muy adecuado para la mayora de las aplicaciones ya que normalmente no se tiene un estimado del nmero de registros que se almacenarn, de manera que se requiere una estructura tambin basada en Hash pero que sea ms dinmica de modo que permita "crecer" y adecuarse a cualquier nmero de elementos; as surge el Hash Extendido. El algoritmo de Hash Extendido se basa en una estructura de recuperacin conocida como "trie", la cual se encuentra dentro del grupo de bsquedas por radio, esto debido a que se presenta un rbol donde cada rama presenta un radio de posibilidades hacia donde moverse. en la figura 9.9 tenemos un radio de 26 que son las letras del alfabeto.

Figura 9.9 De manera que el "radio" definir el nmero de ramas posibles desde cada nodo, en la figura 9.10 el radio es igual a 10 ya que nicamente emplea nmeros.

Figura 9.10 Para el caso del hash extendido, el trie que se emplea es de radio 2, utilizando como valores posibles el 1 y el 0, significando un bit. De manera que las decisiones de "a qu rama moverse" se definir como una decisin bit por bit. As, si buscamos alguna llave cuyo hash produce una direccin empieza con "11" entonces recuperaremos la "cubeta C".

Figura 9.11 Como se puede observar le "trie" es una estructura en forma de rbol, pero si tratamos de manejarlo como tal tendremos un caso similar al indexamiento tradicional resultando la mejor solucin en un B-Tree. As

que para poder aprovechar los beneficios del trie lo que se hace es representarlo a manera de arreglo de registros (cubetas en la mayora de los casos) contiguos, al cual se le conoce como "directorio". Para convertir el trie a directorio lo primero que se debe hacer es representar el rbol como una estructura completa donde existan al mismo nivel el mximo nmero de hojas posible (Figura 9.12a), posteriormente elaboramos el arreglo en un archivo de manera que utilicemos todo el rango de direcciones posibles (00,01,10,11) donde cada direccin contendr un apuntador a la cubeta correspondiente.

Figura 9.12

Manejando el overflow La gran ventaja de esta estructura es que permite de una manera muy sencilla manejar el overflow en las cubetas, supongamos que existe un overflow en "A", gracias a que de antemano tenamos reservada una direccin extra (la rama adicional del rbol) simplemente usamos esa direccin para apuntar hacia la nueva cubeta "D".

Figura 9.13 Por otro lado supongamos que el overflow ahora ocurre en "B", a diferencia del ejemplo anterior aqu no tenemos una direccin extra para relacionar a la nueva cubeta "D". De manera que dinmicamente el trie deber crecer ahora a 3 bits de profundidad (figura 9.14a). Nuevamente completamos el rbol de 3 niveles para tener todas las hojas completas (figura 9.14b) y para formar el directorio debemos hacer un "ajuste" de manera que ahora el rango de direcciones ir de 000 hasta 111 (Figura 9.14c).

Figura 9.14 En esta seccin se omiten los detalles de implementacin, pero cabe mencionar algunos de ellos:

Las direcciones obtenidas por el hash suelen leerse de derecha a izquierda, ejemplo: o Supongamos que vamos a ingresar la llave 45 y su hash nos da 000 0010 1110 0011, naturalmente a la izquierda siempre tendremos muchos 0s as que tendramos muchas colisiones para esos valores as que se opta por empezar a la derecha,

de modo que tendramos 1100 0111 0100 0000, y por lo tanto la llave se almacenara en la cubeta "C" Para la eliminacin lo que se debe hacer es "colapsar" el directorio de registros, buscando aquellas cubetas que sean vecinas.

Concluyendo:

El concepto de Hash es un caso ideal en la recuperacin de informacin O(1) El Hash tradicional es muy eficiente pero tiene 2 problemas principales: colisiones y el hecho de ser esttico El Hash extendido es una estructura relativamente moderna que promete ser mejor que el B-Tree, desafortunadamente existen algunas deficiencias que lo limitan, entre ellas: o No se tienen algunas mtricas importantes acerca de la capacidad de cada cubeta o Al igual que el BTree la estructura crece dinmicamente y permite bsquedas de alta velocidad; pero para el acceso secuencial (B+Tree) es una ventaja que sigue ganando la competencia.

You might also like