Professional Documents
Culture Documents
TRANSFORMACIN DE
CLAVES (HASH)
NO A LA SEGUNDA MATRICULA
AUTORES: JENNIFER BEDN JEAN GOMEZ JENIFFER GUEMAN
HENRY LAGLA EDISON MACAS
Objetivo general:
Adquirir conocimientos sustentables acerca de la Bsqueda por Transformacin de
Claves (Hash) mediante el uso de la memoria tcnica que dar al estudiante facilidad
para comprender este mtodo de bsqueda, y as los estudiantes puedan resolver
problemas donde ser necesario utilizar los conocimientos adquiridos.
Objetivos especficos:
Conocer los mtodos que utiliza la Bsqueda por Transformacin de Claves (Hash) y
aplicarlos en algoritmos.
Realizar algoritmos de bsqueda en los diferentes lenguajes estudiados que son: C++,
Visual Basic y Java.
Realizar presentaciones en Prezi y Power Point.
Realizar un video tutorial sobre este mtodo de bsqueda y subirlo a YouTube.
Proteger la confidencialidad de
una contrasea
Garantizar la integridad de los
datos
Verificar la identidad del emisor
de un mensaje mediante firmas
digitales
TABLAS HASH
Son estructuras tipo vector que ayudan a asociar
claves con valores o datos.
Un vector
capaz de
almacenar
m
elementos
Funcin de
dispersin que
permita a partir de
los datos
(llamados clave)
obtener el ndice
donde estar el
dato en el arreglo
MTODOS DE
TRANSFORMACIN DE
CLAVES
Existen numerosos mtodos de transformacin de claves. Todos ellos
tienen en comn la necesidad de convertir claves en direcciones.
Funcin
Funcin
Funcin
Funcin
Modulo
Cuadrtica
Truncamiento
Plegamiento
Toma el residuo de
la divisin de la
clave entre el
nmero de
componentes del
arreglo.
La funcin hash
queda:
H(k) = (K mod N)
+1
Para que la
distribucin sea
uniforme, N debe
ser un nmero
primo. (El nmero
primo prximo a N)
FUNCIN CUADRTICA
Consiste en elevar al cuadrado la clave y tomar los dgitos
centrales como direccin. El nmero de dgitos a tomar queda
determinado por el rango del ndice. Sea K la clave del dato
buscar. La funcin hash queda definida por la siguiente
frmula:
H(K) = digitos_centrales (K2) + 1
La suma de una unidad a los dgitos centrales es para obtener
un valor entre 1 y N. ejem:
Clave (K)
186
Mitad del
cuadrado(K2)
186 2 = 034596
Direccin
45 + 1 = 46
581
5812 = 337561
75 + 1 = 76
723
7232 = 522729
27 + 1 = 28
FUNCIN PLEGAMIENTO
Consiste en dividir la clave (dgito) en partes iguales. Las
operaciones entre los dgitos (partes) puede ser por medio de
suma, resta o multiplicacin.
H(K) = dgmensig ((d1 ... di) + (di+1 ... dj) + ... + (dl ... dn)) + 1
El operador que aparece en la frmula operando las partes de la
clave es el de suma. Pero puede ser el de la multiplicacin. La
suma de una unidad a los dgitos menos significativos (dgmensig)
Clave (K)
Direccin
es para obtener
un valorPlegamiento
entre 1 y (suma)
N.
Ejem: 197452
19 | 74 | 52
145 + 1 = 46
280304
28 | 03 | 04
35 + 1 = 36
484001
48 | 40 | 01
89 + 1 = 90
Truncamiento
El truncamiento consiste en
tomar algunos dgitos de la
clave y con estos formar una
posicin en un array. Se ignora
parte de la clave para con el
resto formar un ndice de
almacenamiento.
Ejemplo De truncamiento
MTODOS DE TRATAMIENTO
DE COLISIONES
Mtodos mas
usados para
resolver colisiones
Reasignaci
n
Arreglos
anidados
reas de
desborde
Prueba
Lineal
Doble
direccin
hash
Prueba
cuadrtica
Prueba
Lineal
Prueba
Cuadrtica
Las direcciones alternativas se
generan como D + 1, D + 4, D + 9,
. . ., D + i en vez de D + 1, D +
2,...,D + i como en la prueba lineal.
Doble
Direccin
Consiste en generar otra direccin hash, una vez que se detecta la
colisin, la generacin de la nueva direccin se hace a partir de la
direccin previamente obtenida ms uno.
El proceso termina cuando el elemento es encontrado o existe una
posicin vaca
Ejemplo
La funcin hash
H 2 que se
aplique a las
sucesivas
direcciones
puede ser o no
ser la misma
que
originalmente
se aplic a la
clave.
ARREGLOS
ANIDADOS
elegir un tamao
adecuado de arreglo
el coste de memoria
el nmero de valores
colisionados que
pudiera almacenar
ENCADENAMIEN
TO
Cada elemento del arreglo tiene
un apuntador a una lista ligada, la
cual se ir generando e ira
almacenando los valores
colisionados
desventajas
Ocupa un espacio adicional al de la tabla
CONCLUSIONES:
Las tablas hash permiten que el coste medio de las operaciones insertar, buscar y eliminar sea
constante, siempre que el factor de carga no sea excesivo para reducir la probabilidad de colisin.
Una funcin hash debe ser fcilmente calculable, sin costosas operaciones, tambin debe tener una
buena distribucin de valores entre todas los componentes de la tabla.
Si la funcin est mal diseada producir muchas colisiones.
La fortaleza de una funcin hash requiere que estas colisiones sean las mnimas posibles y que
encontrarlas sea lo ms difcil posible.
RECOMENDACIONES:
Tome en cuenta los requisitos para elaborar una buena tabla hash.
Escoja el tipo de tabla adecuado para nuestro algoritmo.
Trate de que el nmero de colisiones sea casi nulo.
En caso de que existan colisiones opte por el mtodo de tratamiento ms adecuado para su algoritmo.