You are on page 1of 16

BSQUEDA POR

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.

Una funcin hash que sea fcil


de calcular y que distribuya
uniformemente las claves.

Asignar a un valor una posicin


determinada de un arreglo y la
recupera fcilmente.
Convierte una clave dada en
una direccin (ndice), dentro
del arreglo.
Los elementos no deben estar
ordenados
El tiempo de bsqueda es
prcticamente independiente
del nmero de componentes
del arreglo.

Debe elegirse previamente:


Un mtodo para resolver
colisiones. Si estas se presentan
se debe contar con algn
mtodo que genere posiciones
alternativas

Uso de funciones Hash:

Proteger la confidencialidad de
una contrasea
Garantizar la integridad de los
datos
Verificar la identidad del emisor
de un mensaje mediante firmas
digitales

SE CONSTRUYE CON TRES ELEMENTOS


BSICOS:

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.

Existen varios mtodos:

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 MDULO (POR


DIVISIN)
Sea N=100, el tamao del arreglo
Sus direcciones de 1-100.
Sea K1 = 7259
K2 = 9359
Dos claves que deban asignarse posiciones en el arreglo

H(K1) = (7259 mod 100) +1=60


H(K2) = (9359 mod 100) +1=60
Donde H(K1) es igual a H(K2) y K1 es distinto de K2, es una colisin

Se aplica N igual a un valor primo en lugar de utilizar N=100


H(K1) = (7259 mod 97) +1=82
H(K2) = (9359 mod 97) +1=48
Con N=97 se ha eliminado la colisin

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.

Existen casos en los que a la clave generada


se les agrega una unidad, esto es para los
casos en el que el vector de almacenamiento
tenga valores entre 1 y el 100, as se evita la
obtencin de un valor 0
H(K1)=dgitos(7 2 5 9)+1=76
H(K2)=dgitos(9 3 5 9)+1=96

Lo positivo del truncamiento y una


de las ventajas por sobre otros
mtodos de bsqueda y
ordenamiento es que no solo
funciona con valores numricos,
tambin funciona con caracteres
alfabticos, esto se puede aplicar
de dos formas:

Transformar cada carcter en un


nmero asociado a su posicin
en el abecedario.

Transformar cada carcter en un


nmero asociado a su valor
segn el cdigo ASCII.

Ejemplo De truncamiento

La idea consiste en tener un listado de nmeros,


seleccionar por ejemplo la posicin 2, 4 y 5; para
as tener una posicin en donde poder almacenar
la clave. Llevando esto a un ejemplo prctico?
5700931
703
3498610
481
0056241
064
9134720
142
5174829
142

MTODOS DE TRATAMIENTO
DE COLISIONES
Mtodos mas
usados para
resolver colisiones
Reasignaci
n

Arreglos
anidados

reas de
desborde

Existen varios mtodos


que trabajan bajo el
principio de
comparacin y
reasignacin de
elementos. Se
analizaran tres de ellos:

Prueba
Lineal

Doble
direccin
hash

Prueba
cuadrtica

Prueba
Lineal

Consiste en que una vez detectada la


colisin se debe de recorrer el arreglo

Se trata al arreglo como a una estructura circular: el


siguiente elemento despus del ultimo es el primero
secuencialmente a partir del punto de colisin, buscando
al elemento el proceso de bsqueda concluye cuando el
elemento es hallado, o bien cuando se encuentra una
posicin vaca

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.

La principal desventaja de este mtodo


es que pueden quedar casillas del
arreglo sin visitar

Adems, como los valores de las


direcciones varan en 1 unidades,
resulta difcil determinar una
condicin general para detener el
ciclo.

Este problema podra solucionarse empleando una


variable auxiliar, cuyos valores dirijan el recorrido del
arreglo de tal manera que garantice que sern visitadas
todas las casillas.

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

Este mtodo consiste


en que cada elemento
del arreglo tenga otro
arreglo en el cual se
almacena los
elementos
colisionados

depende del espacio


que se halla asignado

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

Requiere un manejo de lista ligada

Si la lista crecen demasiado se pierde el


acceso directo del mtodo hash

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.

You might also like