Metodo de Dispersion

16
  Universidad Nacional de Trujillo Facultad de Ciencias Físicas y Matemáticas Escuela de Ingeniería Informática METODO DE DISPERSION  AUTORES:  Castillo Gallardo, Pedro  Flores Aguilar, Diego  Bermudes Jara, Guillermo  ASESOR: Jorge Gutierres Gutierres Trujillo, Perú 2011

description

Metodo de dispersion Universidad Nacional de Trujillo

Transcript of Metodo de Dispersion

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 1/16

 

 

Universidad Nacional de Trujillo

Facultad de Ciencias Físicas y Matemáticas

Escuela de Ingeniería Informática

METODO DE DISPERSION 

 AUTORES:

  Castillo Gallardo, Pedro

  Flores Aguilar, Diego  Bermudes Jara, Guillermo

 ASESOR:

Jorge Gutierres Gutierres

Trujillo, Perú

2011

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 2/16

 

CONTENIDO 1. Introducción: ...........................................................................................................................................................

2. Objetivos: ................................................................................................................................................................

3.  Desarrollo del tema: ..................................................................................................................................................

3.1. Orígenes del termino hash: .............................................................................................................................

3.2. Definición: ...........................................................................................................................................................

3.3. Conceptos de hashing: .......................................................................................................................................

4. Administración de las Colisiones ................................................................................................................................

4.1. Organización de Archivo ......................................................................................................................................

4.2. Técnicas de Manejo de Colisiones .......................................................................................................................

5. Consideraciones de Diseño del método Hashing: ......................................................................................................

5.1. Eficiencia ..............................................................................................................................................................

5.2 Inicialización ...........................................................................................................................................................

5.3 Mantenimiento.......................................................................................................................................................

5.4 Criterios ..................................................................................................................................................................

6. Aplicaciones: ..............................................................................................................................................................

6.1 Tendencias Tecnológicas ........................................................................................................................................

6.2 Ejemplos de Aplicaciones .......................................................................................................................................

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 3/16

 

METODO DE DISPERSION

(HASHING)

1.  Introducción:

En esta documentación lo que se busca es dar a conocer a los estudiantes deinformática, y a los que les guste la programación,Como es que funciona y en que consiste el método hashing en la organizaciónde archivos, en esta documentación se les mostraran ejemplos y documentaciódetallada sobre hashing.

2.  Objetivos:

- Se busca dar a conocer la información necesaria sobre el métodohashing (estructura y funcionamiento), a los alumnos de informática.

- Plantear este método como un método viable para la organización dearchivos

3.  Desarrollo del tema: 

3.1.  Orígenes del término hash:

El término hash proviene, aparentemente, de la analogía con el significado estánda(en inglés) de dicha palabra en el mundo real: picar y mezclar . Donald Knuth cree

que H. P. Luhn, empleado de IBM, fue el primero en utilizar el concepto en un

memorándum fechado en enero de 1953. Su utilización masiva no fue hasta despu

de 10 años.

En el algoritmo SHA-1, por ejemplo, el conjunto de partida de la función es dividido

palabras que son mezcladas entre sí utilizando funciones matemáticas seleccionad

especialmente. Se hace que el rango de valores que puede devolver la función sea

longitud fija: 160 bits utilizando la adición modular

3.2. Definición:

Es un método que permite encontrar, con el mínimo esfuerzo, una clave dada dentde un conjunto de elementos. También se denomina método de "transformaciónclaves", "direccionamiento calculado", "direccionamiento asociativo" o de"dispersión".En la técnica de hashing se aplican cálculos o transformaciones aritméticas sobre l

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 4/16

 

clave para producir directamente una dirección en una tabla o archivo de accesodirecto. Por ejemplo: 

El método de direccionamiento por hashing tiene las siguientes característicasgenerales:

Buena velocidad de búsqueda sin necesidad de tener los datos ordenados El tiempo de búsqueda es prácticamente independiente de la cantidad de datos Dentro del espacio de direccionamiento, hay posiciones vacías

3.3. Conceptos de hashing:

a)  Clave  La clave contiene el valor que permite ubicar, mediante la función Hash, la posicióo registro que contiene el resto de información asociada. Normalmente la clave escampo que identifica en forma única la información. Por ejemplo:

Cédula de Identidad Registro de Información Fiscal Placa o Matrícula de Vehículo

b) Función Hash  Es un algoritmo o transformación que, aplicado a la clave, devuelve la posición dedestino en donde podemos ubicar o recuperar el elemento que contiene dicha clavNormalmente consta de tres partes:

1. Transformación: Si la clave no es numérica se convierte en un número. Con frecuense utiliza el valor ASCII de cada carácter y luego se aplican operaciones matemáticaspara obtener un número entero.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 5/16

 

2. Generación: El número generado se procesa con un algoritmo que trata deuniformizar la distribución de las claves en el rango de direcciones.

3. Compresión: Se comprime el número obtenido multiplicándolo por un factor paraadecuarlo a la capacidad de almacenamiento disponible.

La función Hash debe definirse al momento de diseñar el sistema y su selección tiene granincidencia en rendimiento del sistema. Una buena función Hash debe tener las siguientescaracterísticas:

  Sencilla, de manera que sea fácil de codificar y minimice el tiempo de cálculo.

  Distribución Uniforme de las direcciones tratando que la generación distribuyen forma aleatoria las claves y evite agrupamientos.

  Dispersión, dadas las claves X, Y, Z tal que X < Y < Z, no necesariamente

Hash(X) < Hash (Y) < Hash (Z).Para elegir una función de hashing, entonces, hay que tomar en cuenta: Rango o espacio de direcciones Tipo de clave (alfanumérica o numérica) Semántica de la clave (cómo se presente la clave, simple o compuesta y

variabilidad de sus valores)La idea es seleccionar una función que permita obtener una distribución con el mayorgrado de uniformidad posible para evitar colisiones.

a. Ejemplos de Función Hash  

Se presentan a continuación algunas funciones Hash y ejemplos.a. Truncamiento: Se ignora una parte de la clave y se usa la parte restante directamente comoíndice. El truncamiento es un método veloz, pero con frecuencia no logra distriblas claves uniformemente. Por ejemplo:Si se tienen 800 posiciones y la clave es numérica de 8 dígitos, se toman encuenta solo 3 dígitos y se aplica un factor de compresión de 0.8:

Posición resultante: 394*0.8=315

b. Módulo: Consiste en tomar el residuo de la división de la clave entre el número decomponentes del arreglo. La función Hash queda definida por la siguiente fórmulaHash (K) = (K mod N) + 1 Se recomienda que N sea el número primo inmediato inferior al número total deelementos.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 6/16

 

 

c. Función Centro de Cuadrados: Consiste en elevar al cuadrado la clave y tomar los dígitos centrales como direccióEl número de dígitos a tomar queda determinado por el rango del índice. La funcióHash que definida por la siguiente fórmula:Hash (K) = digitos_centrales (K²) + 1 

d. Plegamiento: Consiste en dividir la clave en partes de igual número de dígitos (la última puedetener menos dígitos) y operar con ellas, tomando como dirección los dígitos menossignificativos. La operación entre las partes puede hacerse por medio de sumas omultiplicaciones.Por ejemplo:

Un entero de 8 dígitos puede dividirse en grupos de 3, 3 y 2 dígitos, se suman logrupos y se trunca si es necesario:

Alternativa A62538194 = 625 + 381 + 94 = 1100 110

Alternativa BY luego

38194 80526 49780794 4

Esta técnica realiza una mejor dispersión que el truncamiento

e. Multiplicación: Hash (k) = int (M * fracc (k*Phi)) Dónde:M es el número primo inmediatamente menor que el tamaño de la zonaprimaria. int (x) es el mayor entero que es menor o igual a xfracc (x) = x – int (x)

Phi = 0.618034 => número de oro Phi = [√(5)  – 1] / 2

Ejemplo para M = 593

Hash (5) = int (593 * fracc (5 * 0.618034)) Hash (2) = int (593 * fracc (2 * 0.618034))= int (593 * (3.090670 – 3)) = int (593 * (1.236068))= int (593 * 0.90670) = int (593 * 0.236068)= 537 = 139

Hash (15) = 160, Hash (20) = 213, Hash (25) = 267, Hash (30) = 320

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 7/16

 

b. colisión  Es posible que al aplicar el algoritmo de hashing o de transformación a dos valoresdiferentes, dé como resultado el mismo número de posición, resultando en una

colisión. Se dice que las claves que generan la misma posición son sinónimas.Los algoritmos para manejar las operaciones de Agregar, Buscar, Eliminar y Modificadeben prever el caso de una colisión:

Al AGREGAR, se debe verificar que la posición resultante del algoritmo dehashing, no esté ocupada por otra clave.

Al BUSCAR, se debe verificar que la posición resultante del algoritmo dehashing contiene el valor buscado.

Al MODIFICAR la CLAVE, cambia la posición, entonces se debe Eliminar elvalor anterior y Agregar el nuevo valor.

c. Zonas Primaria y Secundaria  Para manejar las colisiones, se deben prever donde se van a guardar las claves queprodujeron colisiones. Generalmente se consideran dos zonas:

ZONA PRIMARIA ZONA SECUNDARIA

d. Factor de Carga  El Factor de Carga o Densidad Primaria, es la proporción entre la cantidad deregistros de la zona primaria que están ocupados dividida por el número total deregistros en la zona primaria.

Al diseñar el tamaño de la zona primaria en función del número máximo deregistros que se esperan registrar, el Factor de Carga estimado debe estar entre0,5 y 0,8. A mayor tamaño de la zona primaria, disminuye el Factor de Carga pero se

desperdicia espacio. Un menor tamaño de la zona primaria aumenta el Factor de Carga pero se

aumenta la probabilidad de que ocurran colisiones.

e. Capacidad de Registro Primario  Es el número de registros lógicos que hay en un registro físico. Al aumentar lacapacidad de los registros físicos, disminuye la tasa de colisiones.

f. Tasa de Colisiones  Es la probabilidad de que al agregar un nuevo registro, se encuentre la dirección enla zona primaria ocupada y haya que registrarlo en la zona de desbordamiento. Alaumentar la tasa de colisiones, disminuye la eficiencia del sistema.El analista de sistemas selecciona el mejor compromiso entre la densidad primariala capacidad de registro primario para obtener la tasa de colisiones deseada.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 8/16

 

4. Administración de las Colisiones

Dos claves K1 y K2 son sinónimas si la dirección calculada por la función Hash es lamisma para ambas. Si K1 es almacenada primero en el archivo y su dirección es Has(K1), entonces se dice que K1 esta almacenada en su dirección de origen. Si luego seva a almacenara K2 , se encuentra que la dirección de origen está ocupada, ocurrienduna colisión.La administración de las colisiones representa el mayor inconveniente del direccionamiento por hashing. A la hora de diseñar el sistema, se deben definir dos aspectopara manejar las colisiones: La organización de archivo y su estructura de datos El método o estrategia para tratar las colisiones 

Ambos aspectos están interrelacionados.

4.1. Organización de Archivo 

Desde punto de vista de la Organización de Archivo, existen varias solucionespara almacenar las colisiones:

  Zona Primaria La solución más sencilla es almacenar las colisiones en la misma zona dedireccionamiento utilizada para almacenar todos los datos. Esta zona se denominaZona Primaria o Principal.

Zona Primaria 

  Zona Secundaria o de Desbordamiento Se define una zona al final de la tabla para almacenar las claves que produjeroncolisión. Esta zona se denomina zona de desbordamiento ("overflow") o zonasecundaria. Cuan- do se produce una colisión en la zona primaria, se utiliza la siguienposición disponible en la zona secundaria.

Zona Primaria 

Zona Desbordamiento

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 9/16

 

 

  Cubetas o "buckets" Esta solución para almacenar las colisiones consiste en colocar más de un registroen una dirección. A diferencia de los casos anteriores donde cada direcciónalmacena únicamente un registro, en este caso, cada registro físico almacena variregistros "lógicos". Este concepto se basa en "buckets" o cubetas de datos en caddirección.

Varios Registros Lógicos 

Registro Físico 

  Zona de Desbordamiento con Cubetas Esta solución para almacenar las colisiones combina las dos organizacionesanteriores, previendo varios registros lógicos por cada registro físico y una zonade desbordamiento que se utiliza cuando todos los registros lógicos estánocupados y ocurre una nueva colisión.

Varios Registros Lógicos 

Registro Físico 

Zona Desbordamiento

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 10/16

 

 

  Otras Estructuras de Datos Existe una infinidad de soluciones mucho más complejas. En general estas

soluciones utilizan estructuras de datos que manejan: Apuntadores Listas Enlazadas o Encadenadas

para relacionar la clave en su dirección de origen con las colisiones en otrasdirecciones ubicadas en la misma zona primaria o en la zona dedesbordamiento.

4.2. Técnicas de Manejo de Colisiones 

Las técnicas para el manejo de colisiones están relacionadas con la

organización de archivo o estructura de datos seleccionada.De acuerdo a la ubicación donde se almacenan las colisiones, se clasifican en:

1. Técnicas de Direccionamiento Abierto en la Zona PrimariaLos sinónimos se ubican en la misma zona de direccionamiento utilizada paalmacenar todos los datos. Esta zona se denomina Zona Primaria o PrincipSe solucionan las colisiones buscando celdas alternativas hasta encontuna vacía dentro de la misma tabla.

2. Uso de Área Separada de Desbordamiento (Overflow)Los sinónimos se ubican fuera del área principal del archivo, en un área

especial de desbordamiento (Zona Secundaria).3. Técnicas de Direccionamiento CerradoLos sinónimos se relacionan mediante una lista que los encadena medianteapuntadores. La ubicación de los sinónimos puede ser en la Zona Primaria oen la Zona Secundaria.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 11/16

 

a) Crear un archivo para guardar las colisiones:Este método consiste en crear otro archivo (con la extensiónque deseemos, ejm: archivo. Col)Para poder almacenar en el todas las colisiones que sucedan,esta técnica lo que hace es mantener el archivo original intacto,

y todas las colisiones que surjan las guarda en el archivo decolisiones, para ello en el archivo original se le adiciona en suestructura un puntero que apunte hacia la posición donde seguardó la colisión, y esta a su vez tiene otro puntero que enlazaa las posteriores colisiones.

De esta manera cuando se desee buscara un dato bastara conbuscarlo en el archivo original y si este tuviera colisiones seríafácil de encontrar y en poco tiempo.

b) Búsqueda Lineal Esta es una técnica de direccionamiento abierto en la ZonaPrimaria. Cuando la dirección original está ocupada (colisión) sebusca una dirección alternativa vacía. Esta técnica es tambiénconocida como método de desbordamiento consecutivo.La búsqueda de un lugar vacío se realiza en forma secuencialcomenzando en la dirección siguiente a la original. El espacio dedirecciones se hace circular. Si en el proceso de búsqueda sellega al final del archivo, se continúa en la primera posición.Por ejemplo: 

Para la búsqueda de un registro por hashing con sondeo lineal,los valores de clave de los registros encontrados en la direcciónde origen, y en las direcciones alcanzadas con el sondeo lineal,deberá compararse con el valor de la clave buscada, para

determinar si el registro objetivo ha sido localizado o no.

El sondeo lineal, aunque es muy sencillo, no es muy eficiente sila tasa de colisiones es alta. Las desventajas que tiene estemétodo son: el tiempo que se tarda en encontrar una celdavacía y la formación de bloques de celdas ocupadas, llamadaefecto agrupamiento prima- rio . A causa de este efecto,cualquier clave que se disperse en un agrupamiento realizará

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 12/16

 

varios intentos para resolver la colisión, y agrandará elagrupamiento.

c) Búsqueda Lineal Extendida Esta técnica es similar a la anterior pero utiliza la Zona

Secundaria. Cuando la dirección original está ocupada(colisión) se busca una dirección vacía en la zona secundaria ode desbordamiento ("overflow"). De esta manera se evita elefecto de agrupamiento primario.Cuando se realiza una búsqueda para recuperar la información,se debe realizar una búsqueda secuencial en la zonasecundaria cuando la clave en la zona primaria no concuerdacon la que estamos buscando.

d) Doble Hashing En esta técnica, cuando se encuentra una colisión al aplicar la

función Hash a la clave, se aplica una segunda función Hashpara combinar la clave original con el resultado de la primerafunción Hash y se aplica luego una operación matemática.Por ejemplo:

Aplicando esta técnica se consiguen buenos resultados,aunque es más compleja y, por lo tanto, más lenta que otrassoluciones. Se recomienda que el tamaño de la Zona Primariasea un número primo.

e) Uso de Cubetas Con el uso de cubetas o "buckets", definiendo varios registroslógicos por cada registro físico, el concepto de colisión siguesiendo el mismo, solo que no es problema mientras haya

registros disponibles en la cubeta. Cuando la cubeta se llenavuelve a aparecer el problema de colisión (desbordamiento) ypodemos utilizar cualquiera de las técnicas mencionadasanteriormente.

En todo caso, el problema de desbordamiento que obliga abuscar espacio en otro registro se da con menor frecuencia alusar una cubeta con tamaño mayor que 1 (uno). El tiempo de

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 13/16

 

búsqueda aumenta en la cubeta pero disminuye el tiempo encomparación con el de acceso a disco.Si llamamos K al número de registros en el archivo, C a lacapacidad de cada cubeta y N la cantidad de datos que sequieren almacenar, se puede calcular la densidad primaria o

factor de carga (DP) como:

Si la densidad de empaquetamiento supera el 70% lascolisiones son demasiado frecuentes. Para calcular el númerode registros de desbordamiento esperados se puede utilizar lafunción de Poisson.

N! 1 1 

Prob(x) = --------------------- (----) (1 - -----)

n-x 

X! (N-x)! M M

Se observa a través de ella que el uso de cubetas disminuyenotablemente el porcentaje de desbordamiento mejorando elrendimiento.

f) Encadenamiento de Sinónimos Una buena manera de mejorar la eficiencia de un archivo queutiliza hashing, es el encadenamiento de sinónimos. Manteneruna lista enlazada de registros, con la misma dirección de

origen, no reduce el número de colisiones, pero reduce lostiempos de acceso para recuperar los registros que no seencuentran en su localidad de origen.El encadenamiento de sinónimos puede emplearse concualquier técnica de solución de colisiones. Cuando un registrodebe ser recuperado del archivo, solo los sinónimos de la claveobjetivo son accesados.Una posibilidad adicional es mantener una lista encadenada delos registros vacíos, que se utiliza cuando se busca unadirección libre para almacenar un sinónimo, en vez de utilizaruna búsqueda lineal.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 14/16

 

5. Consideraciones de Diseño del método Hashing:

5.1. Eficiencia

Los principales factores que afectan la eficiencia y que deben ser

tomados en cuenta por el analista de sistemas son: El tamaño de la cubeta. ¿Cuantos registros lógicos? El factor de carga o densidad de la zona primaria (entre 50% y

80%). El algoritmo utilizado por la función Hash. El método utilizado para manejar las colisiones.

El siguiente gráfico puede ser utilizado para predecir la cantidad decolisiones en función de la capacidad de la cubeta (bucket) y ladensidad primaria.

5.2 Inicialización

La rutina de inicialización del archivo debe realizar lassiguientes funciones:

Inicializar cada registro físico y lógico, marcándolos como vacíoo libre.

Inicializar el apuntador que indica donde empieza la zonasecundaria, si existe.

Inicializar a cero el contador de registros en la zona secundaria.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 15/16

 

 

5.3 Mantenimiento

Luego de muchas inserciones y eliminaciones (altas y bajas) es lógicoesperar cierto deterioro en la performance. Aumentan los registros 'antesusados' los registros sinónimos quedan innecesariamente alejados de sudirección de origen. Una opción posible es realizar una reorganización local (enel bucket o la lista en cuestión) cada vez que se da una baja, para determinar sies posible acortar las búsquedas.

También es posible reorganizar el archivo en su totalidad cuando sellega a una longitud de búsqueda inaceptable o cambiar el método de manejode colisiones.

5.4 Criterios

Los siguientes factores pueden ser tomados en cuenta para decidir si esconveniente el use de direccionamiento por hashing en una aplicación:

Necesidad de ahorrar espacio de almacenamiento Frecuencia de uso Frecuencia de Actualización Tiempo de respuesta requerido Volatilidad de la Información (Vida útil) Crecimiento o capacidad de expansión Vulnerabilidad, Integridad, Recuperación de Fallas Grado de Simplicidad o Complejidad Transportabilidad, Independencia Hardware - Software Requiere reportes con datos ordenados?

6. Aplicaciones:

6.1 Tendencias Tecnológicas

La capacidad de los dispositivos de almacenamiento en línea,tales como unidades de disco duro, aumenta continuamente.Actualmente es posible adquirir en el mercado unidades devarios centenares de Gigabytes.

El costo de almacenamiento de la información disminuyeregularmente, debido a la disminución de costos de lasunidades de almacenamiento debido a la masificación y alaumento en la capacidad de cada una.

5/12/2018 Metodo de Dispersion - slidepdf.com

http://slidepdf.com/reader/full/metodo-de-dispersion 16/16

 

Los requerimientos de almacenamiento de las aplicacionestiende a aumentar pues manejan informaciones más amplias,debido en parte a la globalización de la información. Es normalque una aplicación que maneja información internacionalrequiera varios Terabytes de almacenamiento en línea.

El incremento en el uso de las telecomunicaciones y lasaplicaciones teleinformáticas re- quieren menor tiempo derespuesta a una solicitud.

6.2 Ejemplos de Aplicaciones

En la actualidad, la técnica de direccionamiento aplicandohashing es muy utilizada, especialmente para localizarrápidamente una información cuando la cantidad de datos esmuy grande o el tiempo de respuesta requerido es muy corto.Podemos mencionar algunas de las aplicaciones conocidas enque se aplica de direccionamiento por hashing:

Genoma Humano Direcciones IP en Internet Directorio de Información en CD o DVD Base de Datos de Huellas Digitalizadas Verificación de Firmas Digitales

SQL Server Páginas en Cache de Proxy Server Validación de tarjetas de crédito