es común al crear estructuras de datos y luego · mÉtodo hash: nos permite encontrar directamente...

23

Upload: hoangdat

Post on 30-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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

Costos

No se requiere almacenamiento adicional para los

índices.

Tiempo de procesamiento requerido para la

aplicación de la función hash

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=psy-

ab&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