You are on page 1of 2

Tarea sobre Hashing

Edwin Alexander Ramrez Vargas1 , Jarvy Andres Sanchez Buitrago2


1
2

Email: earamirezv@unal.edu.co
Email: jaasanchezbu@unal.edu.co

Preguntas
1.
Muestre
como
quedan
las
claves
10,22,31,4,15,28,17,88,59,9,43,60 en una tabla de dispersion de dimension m=17, usando cada una de las
funciones de dispersion anteriores.
Teniendo en cuenta las funciones de dispersion y sus
subecuaciones se procedio a ingresar las claves en las tablas
de Hash para cada una de las funciones, teniendo en cuenta
la dimension de la tabla, obteniendo lo siguiente:

de true si lo contiene y de false de lo contrario.


Por su parte el metodo insertar, introduce un elemento en
la tabla, sin embargo si el elemento ya esta presente entonces
no lo hace, puesto que la idea es tener elementos no repetidos.
Por u ltimo, el metodo remove, tiene como objetivo retirar
un elemento de la tabla de Hash, dependiendo de la entrada,
la cual indica el que sera removido.
Dentro de la tabla de Hashing se encuentran disponibles
los metodos: contains, insert y remove, cuya composicion es
la siguiente:
contains(e:E):boolean:
Proposito: Saber si el elemento e esta en la tabla.
Requiere: True
Garantiza: El resultado es true si el elemento e esta en la
tabla. Falso en otro caso.

Figura 1: Resultados de la implementacion de las funciones


Con la funcion de dispersion lineal se obtuvieron cuatro
colisiones: la primera entre 28 y 31, la segunda entre 17 y 4,
la tercera entre 59 y 31 y la u ltima entre 59 y 31.
En cuanto a la funcion cuadratica, fue posible realizar la
insercion hasta 43 obteniendo tres colisiones, sin embargo al
querer insertar el numero 60 siempre se generaban colisiones, de modo que se hizo imposible poder llegar a insertarlo
en el Hash.
Por u ltimo para la funcion de dispersion doble se obtuvieron siete colisiones que se presentaron como: colision entre
31 y 22, entre 10 y 15, entre 88 y 17, entre 9 y 10, entre 60
y 9 y entre el 60 y el 15.
2. Escriba la especificacion de las operaciones de una tabla de hashing, es decir: contains,insert y remove. Escriba el
encabezado del metodo (signature) y las clausulas proposito,
requiere, y garantiza.
El metodo contains verifica si un elemento de un tipo dado
se encuentra dentro de la tabla, retornando un valor booleano

insert(k:E)
Proposito: Insertar la llave k como un nuevo elemento de
la tabla de Hash.
Requiere: k no es un elemento repetido.
Garantiza: El elemento k es agregado a la tabla de Hash
dependiendo de la funcion implementada.
remove(e:E)
Proposito: Remover el elemento e de la tabla.
Requiere: El elemento se encuentra en la tabla.
Garantiza: El elemento e es removido de la tabla de Hash.
3. Investigue como esta implementado el Hash en Java.
Cuales son las clases y sus principales metodos. Que tipo de
hashing esta implementado. De que tipo son las claves que
se pueden usar y que condiciones deben cumplir.
El Java el Hash esta implementado a partir de clases
que modelan su comportamiento mediante la utilizacion del
metodo hashcode() que sirve como el identificador de cada
uno de los elementos de las tablas de hash.
La librera estandar incluye tablas de hash impelemntadas con Sets y Maps, nombradas HashMap y HashSet. Los
elementos del HashSet (o las llaves en el HashMap) implementan los metodos equals y hashCode. Algo de recalcar es

que el HashSet y el HashMap son usualmente implementados utilizando el encadenamiento separado.


Las claves que se pueden utilizar al implementar Hash,
son cualquier objeto no nulo.
Sus principales metodos son:
clear(): Limpia la tabla de Hash de forma que e sta queda
sin llaves.
clone(): Crea una copia de la tabla.
contains(): Evalua si alguna llave dada por un valor especfico se encuentra en la tabla.
get(): Retorna el valor contenido en la llave especificada
o nulo si la tabla no contiene una valor para la llave.
isEmpty(): Evalua si el Hash no tiene llaves para sus valores.
put(): Mapea la llave al valor especificado como entrada.
remove(): Remueve la llave y su correspondiente valor de
la tabla de Hash.
size(): Retorna el numero de llaves de la tabla.
toString(): retorna una representacion de la tabla como un
conjunto de entradas encerradas en llaves y separadas por
la , .

Referencias
[1] Weiss, M. A. (2000). Estructuras de Datos en Java - Compatible con Java 2. Madrid: Addison Wesley.