DISPERSIÓN HASH Funciones HASH Colisiones

Anuncio
Es común al crear estructuras de datos y luego
trabajar sobre las mismas, tener la necesidad de
realizar búsquedas en forma más frecuente que la
necesidad de realizar inserciones. Por ejemplo si
tenemos una lista de personas podríamos querer
saber si cierta persona está ingresada, o saber
información acerca de la misma. Para estos casos
en que queremos realizar consultas sobre la
estructura de datos puede ser útil trabajar con una
estructura de datos que permita realizar búsquedas
rápidas (de orden pequeño).
DISPERSIÓN: Es transformar una llave K en una dirección, la cual se usa como
base para buscar y para almacenar registros.
ÍNDICE: Es una estructura de datos que permite recuperar las filas de una
tabla de una forma más rápida, además de proporcionar una ordenación
distinta a la de la tabla.Se define sobre una columna o sobre un grupo de
columnas, y las filas se ordenarán según los valores contenidos en esas
columnas.
INDEXAMIENTO:Es hacer un índice en donde puedas buscar más rápido y te
referencie en que pagina esta la información que buscas sin tener que leer
todo.
FUNCIÓN DE DISPERSIÓN:Es la elección de una clave para el funcionamiento
de una estructura.
FUNCIÓN HASH: Se le llama así al cálculo que se realiza para obtener una
dirección a partir de una llave.
MÉTODO HASH: Nos permite encontrar directamente el registro buscado.
Son estructuras usadas para manejar una secuencia de
elementos donde cada elemento tendrá un valor clave
que pertenece a un rango de valores.
Tiene como finalidad buscar,insertar o eliminar un
registro complejo, donde su forma de organizar será
mediante índices y campos llave.
Permiten el acceso directo a un elemento de una
secuencia indicando la posición que ocupa.
Lo básico de este método es aplicar una
función.
Es la técnica usada para resolver el problema de las colisiones ya que se dan al aplicar la función.
Las funciones hash más comunes son:
-Residuo de la división
-Medio del cuadrado
-Pliegue
Ventajas
Desventajas
Se pueden usar los valores naturales de la llave,
puesto que se traducen internamente a direcciones
fáciles de localizar
No pueden usarse registros de longitud variable
No permite llaves repetidas
El archivo no está clasificado
Se logra independencia lógica y física, debido a que
los valores de las llaves son independientes del
espacio de direcciones
Solo permite acceso por una sola llave
No se requiere almacenamiento adicional para los
índices.
Tiempo de procesamiento requerido para la
aplicación de la función hash
Costos
Tiempo de procesamiento y los accesos E/S
requeridos para solucionar las colisiones.
La eficiencia de una función hash depende de:
La distribución de los valores de llave que realmente
se usan .
El número de valores de llave que realmente están en
uso con respecto al tamaño del espacio de
direcciones
El número de registros que pueden almacenarse en
una dirección dad sin causar una colisión
Éstas básicamente transforman las claves
en direcciones de la tabla.
La implementación de la función hash
depende del tipo de clave.
Tomando en cuenta las direcciones hash
hay que dividir en dos partes, en las
búsquedas de funciones y en la resolución
de colisiones.
Funciones:
-Aritmética modular
-Plegamiento
-Mitad del cuadrado
-Multiplicación
Una colisión de hash:
Es una situación que se produce
cuando dos entradas distintas a una
función de hash producen la misma
salida.
Encadenamiento
Direccionamiento Abierto
-Exploración Lineal
-Búsqueda Cuadrática
-Hashin Doble
-Re-Hashing
-Exploración de direcciones
-Arreglos Anidados
-Hashing Abierto
Consiste en tomar el
residuo de la división de la
clave entre el número de
componentes del arreglo.
Consiste en dividir la clave en partes de igual
número de dígitos (la última puede
tener menos dígitos) y operar con ellas,
tomando como dirección los dígitos menos
significativos. La operación entre las partes
puede hacerse por medio de sumas o
multiplicaciones.
Consiste en elevar al cuadrado la
clave y tomar los dígitos centrales
como
dirección. Número de dígitos a
tomar queda determinado por el
rango del índice.
•Este método opera en dos pasos. Primero,
multiplicamos la clave por una constante A
en el rango 0 < A < 1 y extraemos la parte
fraccionaria de k*A. Segundo,
Multiplicamos este valor por el número de
entradas de la tabla y tomamos el piso del
resultado.
Consiste en que cada elemento del arreglo
tenga un apuntador a una lista
ligada, la cual se irá generando e irá
almacenando los valores colisionados a
medida que se requiera.
Consiste en que una vez detectada la colisión
se debe generar otra dirección
aplicando la función hash a la dirección
previamente obtenida. El proceso se
detiene cuando el elemento es hallado, o bien
cuando se encuentra una
posición vacía.
Método que consiste en que cada elemento del arreglo contenga otro arreglo
donde se almacenarán los elementos colisionados.
Sencilla
Ineficiente
Costo de Memoria
Tiene valor asignado ya que se manejan arreglos lo cual contrae problemas
para poder solucionar la colisión.
Cuando se elige el tamaño del arreglo permite equilibrar el espacio para
almacenar en memoria y el número de valores colisionados que se
pudieran almacenar.
Cuando el cubo se llena Trataremos de nuevo con colisiones.
•Prueba lineal
•La función es:
h(k,i) = (h’(k) +i) mod m
•Una desventaja de este método es la
tendencia a crear largas secuencias de
entradas ocupadas
•Hashing abierto:
En hashing abierto la búsqueda no
exitosa de una clave toma tiempo
Q(1+a), donde a es el factor de carga
=número de claves en la
tabla/número de entradas en la tabla
hash.
•En Hashing cerrado:
Todos los elementos o claves son almacenadas en
la tabla hashing misma. Es decir, cada entrada
de la tabla contiene un elemento del conjunto
dinámico o NULL.
Dentro de este se encuentra la exploraciòn de
direcciones, metodo que consiste en buscar de
un lugar a la vez en la tabla un lugar vacio.
•Hashing Cuadrático
Consiste en elevar al cuadrado iniciando desde
el primer espacio hasta encontrar un lugar
disponible…
La desventaja es que no vicita todas las celdas.
http://foro.elhacker.net/criptografia/funciones_de_hash-t100025.0.html
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r61233.PDF
http://www.wanderingbit.com/2008/12/27/hash-tablas-de-dispersion/
http://www.ganimides.ucm.cl/haraya/doc/Tablas_de_Dispersion.pdf
https://www.google.com.mx/#hl=es&sclient=psyab&q=videos+funciones+hash&oq=videos+funciones+hash&aq=f&aqi=&aql=
&gs_l=serp.3...4345.6763.1.7016.15.12.0.3.3.0.190.1720.0j12.12.0...0.0.
CVyBxjDmcoI&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=8a3157
2b0cce3f18&biw=1280&bih=699
Libro de estructura de Archivos
http://www.aulaclic.es/access2002/a_5_1_3.htm
Descargar