Este documento describe dos métodos de hashing dinámico: expansiones totales y expansiones parciales. En las expansiones totales, el número de cubetas se duplica cuando se supera la densidad de ocupación, mientras que en las expansiones parciales el número de cubetas aumenta en un 50%. También describe listas invertidas y multilistas como métodos de organización de datos que permiten búsquedas eficientes basadas en atributos clave.
0 calificaciones0% encontró este documento útil (0 votos)
263 vistas6 páginas
Este documento describe dos métodos de hashing dinámico: expansiones totales y expansiones parciales. En las expansiones totales, el número de cubetas se duplica cuando se supera la densidad de ocupación, mientras que en las expansiones parciales el número de cubetas aumenta en un 50%. También describe listas invertidas y multilistas como métodos de organización de datos que permiten búsquedas eficientes basadas en atributos clave.
Este documento describe dos métodos de hashing dinámico: expansiones totales y expansiones parciales. En las expansiones totales, el número de cubetas se duplica cuando se supera la densidad de ocupación, mientras que en las expansiones parciales el número de cubetas aumenta en un 50%. También describe listas invertidas y multilistas como métodos de organización de datos que permiten búsquedas eficientes basadas en atributos clave.
Este documento describe dos métodos de hashing dinámico: expansiones totales y expansiones parciales. En las expansiones totales, el número de cubetas se duplica cuando se supera la densidad de ocupación, mientras que en las expansiones parciales el número de cubetas aumenta en un 50%. También describe listas invertidas y multilistas como métodos de organización de datos que permiten búsquedas eficientes basadas en atributos clave.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 6
HASHING DINMICO: Bsqueda dinmica por transformacin de claves
LA principal caracterstica del Hashing dinmico es su dinamismo para variar el
nmero de cunetas en funcin de su densidad de ocupacin. Se comienza a trabajar con nmero determinado de cubetas, y a medida que stas se van llenando se asignan nuevas cubetas. Existen bsicamente dos formas de trabajar con el Hashing dinmico: Por medio de expansiones totales Por medio de expansiones parciales
Mtodo de las expansiones totales Consiste en duplicar el nmero de cubetas en medida en que ests superan la densidad de ocupacin previamente establecida. As por ejemplo, si el nmero inicial de cubetas es N, y se hace una expansin total, el nuevo nmero de cubetas ser 2N, si se hace una nueva expansin total ser de 4N el nmero de cubetas, y as sucesivamente. Tambin es aplicable en sentido contrario, es decir, que si la densidad de ocupacin de las cubetas disminuye, se reduce el nmero de estas, as se aplica el dinamismo en cuanto a que se puede aumentar el espacio de almacenamientos, como tambin se puede reducir si la demanda del espacio as lo indica. Densidad de ocupacin: La densidad de ocupacin se calcula como el cociente entre el nmero de registros ocupados y el nmero de registros disponibles. Suponiendo que se tiene un archivo organizado en dos cubetas (N=2), y se ha fijado una densidad de ocupacin del 80%, cada cubierta tiene 2 registros, y la funcin hash que transforma claves en direcciones se define de la siguiente manera: Ejemplo: Los valores 42, 24, 15 y 53 son las claves de los registros que se desea almacenar. Inicialmente el archivo est vaco. H(K) = K MOD Nmero de cubetas
Se muestra como quedan las cubetas despus de haber almacenado las 3 primeras claves, pero al almacenar la clave 53, se supera la densidad de ocupacin puesto que quedara con 100% ocupado, por lo que se procede a expandir y reasignar los registros considerando que ahora el nmero de cubetas es igual a 2N.
Porcentaje de ocupacin para expansin: 50%
Mtodo de expansiones parciales Consiste en incrementar un 50% el nmero de cubetas, haciendo de esta forma que dos expansiones parciales equivalgan a una total. As, por ejemplo, si el nmero inicial de cubetas es N, y se hace una expansin parcial, el valor resultante ser N*(N/2). Si se hacen otras expansiones parciales se obtendr 2N, luego #N, y as sucesivamente. Ejemplo: Los valores 42, 24, 15 y 53 son las claves de los registros que se desea almacenar. Inicialmente el archivo est vaco. Suponiendo que hasta el momento solo se han insertado las 3 primeras claves, cuando se quiere insertar la clave 53, el nmero de registros supera el mximo permitido ya que la densidad de ocupacin supera el 80%; por tal razn se realiza una expansin parcial.
Porcentaje de ocupacin para Expansin: 66.66%
Observe que en este caso el valor N no fue muy adecuado para distribuir uniformemente los registros a travs de las cunetas. En la cubeta 0 se tiene una colisin, mientras que en la cubeta 1 permanece vaca.
Suponiendo ahora que se desea incorporar los registros con claves 21, 12, 14, 18, 49, 128, 22 y 23.
Al insertar el registro con clave 21 se supera la densidad de ocupacin, por lo que se deben expandir nuevamente las cubetas y reasignar los registros. Se inserta a continuacin el registro con clave 14, otra vez se supera el porcentaje de ocupacin permitido. Se vuelven a expandir las cubetas y a reasignar los registros. El resultado final, luego de insertar todas las claves se muestra a continuacin: Porcentaje de ocupacin para expansin: 75%
LISTAS INVERTIDAS Las listas invertidas trabajan sobre algunos de los atributos campos- de los registros. Los atributos pueden estar o no invertidos; es decir, pueden ser o no campos claves. Los atributos invertidos generan listas ordenadas de registros, lo cual facilita las bsquedas que se hagan en ellas. Los atributos no invertidos generan el universo, o sea para encontrar un determinado elemento registro-, se deber realizar una bsqueda secuencial. Las listas invertidas son muy recomendables cuando se trabaja sobre combinaciones de campos clave. Cuando se requiere una combinacin de atributos de atributos en la bsqueda, este mtodo resulta muy conveniente, ya que con una secuencia ptima de operadores AND y OR la bsqueda se puede llevar a cabo de forma eficiente. La desventaja del mtodo es que requiere de una estructura muy complicada para operar. Bsicamente trabaja sobre rboles B+ con prefijo. Suponiendo que se tiene un archivo el cul almacena la siguiente informacin: Nombre, profesin y edad y se tienen los datos de 6 personas: NOMBRE PROFESIN EDAD Juan Matemtico 32 Daniel Fsico 40 Jos Matemtico 25 Pascual Ingeniero 38 Felipe Abogado 35
Ejemplo: Considerando que los atributos profesin y edad estn invertidos, a continuacin se presentan algunas operaciones de bsqueda con sus correspondientes resultados, para observar el funcionamiento del mtodo: a) Lista de personas por profesin:
Matemticos [Juan, Jos] Fsicos [Daniel] Ingenieros [Pascual, Miguel] Abogados [Felipe] b) Lista de todas las personas con profesin matemtico o fsico, y con ms de 25 aos de edad: (((profesin = matemtico)OR(profesin=fsico)AND(edad>25))
La lista formada segn el atributo profesin es: [Juan, Jos, Daniel]
Sobre esta lista se aplicar la segunda condicin planteada en la bsqueda, de lo que resulta: [Juan, Daniel]. Ejemplo: Suponiendo que se tienen listas L1, L2, L# de 1000, 5 y 100 elementos, respectivamente. Si se necesita unir lsa 3 listas, el orden en el cual se hiciera la unin sera determinante en cuanto al nmero total de elementos con los cuales se trabaja. 1. (L1 U L2) U L3 = (1000 + 5) U L3 = 1005 + (1005 + 100) = 2110 2. (L1 U L3) U L2 = (1000 + 100) U L2 = 1100 + (1100 + 5) = 2205 3. (L2 U L3) U L1 = (5 + 100) U L1 = 105 + (105 + 1000) = 1210Es fcil observar que la mejor secuencia es la tercera y el resultado es 1210; y que la peor secuencia es la segunda y el resultado es 2205.
MULTILISTAS Este mtodo de bsqueda multilistas permite acceder a la informacin que se encuentra ordenada utilizando campos clave. A un registro se puede llegar por diferentes caminos. Cada camino se establece en funcin del campo clave sobre el cual se haga la bsqueda.
La forma ms eficiente de representar multilistas es utilizando listas. Ejemplo: Suponiendo que se tiene un archivo en el cual cada registro almacena la siguiente informacin: Nombre, profesin, categora.
NOMBRE PROFESIN CATEGORIA Juan Matemtico 1 Daniel Fsico 2 Jos Matemtico 2 Pascual Ingeniero 3 Miguel Ingeniero 1 Felipe Abogado 2
En este caso la informacin de cada individuo puede ser accesada por medio de su profesin y de su categora, que son justamente los atributos que permiten realizar bsqueda directa en el archivo. Como se puede observar en la figura se tiene una lista por profesin y otra por categora. En general, las multilistas son recomendables cuando la bsqueda se hace sobre un solo atributo. En caso de necesitarse una combinacin de atributos es preferible usar listas invertidas.