Hash y tablas de hash

2
 Tarea sobre Hashing Edwin Alexander Ram´ ırez Vargas 1 , Jarvy Andr ´ es anchez Buitrago 2 1 Email: earamirezv@u nal.edu.co 2 Email: jaasanchezb [email protected] Preguntas 1. Muestre c ´ omo quedan las claves 10,22,31,4,15,28,17,88,59,9 ,43,60 en una tab la de dis - persi ´ on de di me ns i ´ on m= 17 , us an do ca da u na de la s funciones de dispersi´ on anteriores. Tenie ndo en cuenta las funciones de disp ersi ´ on y sus subecuaciones se procedi ´ o a ingresar las claves en las tablas de Hash para cada una de las funciones, teniendo en cuenta la dimensi ´ on de la tabla, obteniendo lo siguiente: Figura 1: Resultados de la implementaci´ on de las funciones Con la funci ´ on de dispersi ´ on 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  ´ ultima entre 59 y 31. En cuanto a la funci ´ on cuadr ´ atica, fue posible realizar la inserci ´ on hasta 43 obteniendo tres colisiones, sin embargo al querer insertar el n´ umero 60 siempre se generaban colisio- nes, de modo que se hizo imposible poder llegar a insertarlo en el Hash. Por  ´ ultimo para la funci ´ on de dispersi ´ on doble se obtuvie- ron siete colisiones que se presentaron como: colisi´ on 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 especicaci´ on de las operaciones de una ta- bla de hashing, es decir:  contains,insert  y remove. Escriba el encabezado del m´ etodo (signature) y las cl ´ ausulas prop ´ osito, requiere, y garantiza. El m´ et odo cont ai nsve ri ca si un el emento de un ti po dado se enc uen tra den tro de la tab la, ret orn and o un va lor boo lea no de true si lo contiene y de false de lo contrario. Por su parte el m´ etodo insertar, introduce un elemento en la tabl a, si n embarg o si el el emento ya es t ´ a prese nte ento nces no lo hace, puesto que la idea es tener elementos no repeti- dos. Por  ´ ultimo, el m´ etodo remove, tiene como objetivo retirar un elemento de la tabla de Hash, dependiendo de la entrada, la cu ´ al indica el que ser ´ a removido. Dentro de la tabla de Hashing se encuentran disponibles los m´ etodos: contains, insert y remove, cuya composici´ on es la siguiente: contains(e:E):boolean : Prop ´ osito: Saber si el elemento e est ´ a en la tabla. Requiere: True Garantiza: El resultado es  true  si el elemento e est ´ a en la tabla. Falso en otro caso. insert(k:E) Prop ´ osito: 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 funci ´ on implementada . remove(e:E) Prop´ osito: 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 c ´ omo est ´ a implementado el Hash en Java. Cu´ ales son las clases y sus principales m ´ etodos. Qu´ e tipo de hashing est ´ a implementado. De qu ´ e tipo son las claves que se pueden usar y qu´ e condiciones deben cumplir. El Ja va el Ha sh es t ´ a imp lement ado a par tir de cla ses que modelan su comportamiento mediante la utilizaci ´ on del etodo hashcode() que sirve como el identicador de cada uno de los elementos de las tablas de hash. La librer´ ıa est ´ andar incluye tablas de hash impelemnta- das con Sets y Maps, nombradas HashMap y HashSet. Los elementos del HashSet (o las llaves en el HashMap) imple- mentan los m´ etodos equals y hashCode. Algo de recalcar es

description

Descripción de las tablas de Hash y su funcionamiento

Transcript of Hash y tablas de hash

  • Tarea sobre Hashing

    Edwin Alexander Ramrez Vargas1, Jarvy Andres Sanchez Buitrago2

    1Email: [email protected]: [email protected]

    Preguntas1. Muestre como quedan las claves

    10,22,31,4,15,28,17,88,59,9,43,60 en una tabla de dis-persion de dimension m=17, usando cada una de lasfunciones de dispersion anteriores.

    Teniendo en cuenta las funciones de dispersion y sussubecuaciones se procedio a ingresar las claves en las tablasde Hash para cada una de las funciones, teniendo en cuentala dimension de la tabla, obteniendo lo siguiente:

    Figura 1: Resultados de la implementacion de las funciones

    Con la funcion de dispersion lineal se obtuvieron cuatrocolisiones: la primera entre 28 y 31, la segunda entre 17 y 4,la tercera entre 59 y 31 y la ultima entre 59 y 31.

    En cuanto a la funcion cuadratica, fue posible realizar lainsercion hasta 43 obteniendo tres colisiones, sin embargo alquerer insertar el numero 60 siempre se generaban colisio-nes, de modo que se hizo imposible poder llegar a insertarloen el Hash.

    Por ultimo para la funcion de dispersion doble se obtuvie-ron siete colisiones que se presentaron como: colision entre31 y 22, entre 10 y 15, entre 88 y 17, entre 9 y 10, entre 60y 9 y entre el 60 y el 15.

    2. Escriba la especificacion de las operaciones de una ta-bla de hashing, es decir: contains,insert y remove. Escriba elencabezado del metodo (signature) y las clausulas proposito,requiere, y garantiza.

    El metodo contains verifica si un elemento de un tipo dadose encuentra dentro de la tabla, retornando un valor booleano

    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 entoncesno lo hace, puesto que la idea es tener elementos no repeti-dos.

    Por ultimo, el metodo remove, tiene como objetivo retirarun 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 disponibleslos metodos: contains, insert y remove, cuya composicion esla siguiente:

    contains(e:E):boolean:Proposito: Saber si el elemento e esta en la tabla.Requiere: TrueGarantiza: El resultado es true si el elemento e esta en la

    tabla. Falso en otro caso.

    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 dehashing esta implementado. De que tipo son las claves quese pueden usar y que condiciones deben cumplir.

    El Java el Hash esta implementado a partir de clasesque modelan su comportamiento mediante la utilizacion delmetodo hashcode() que sirve como el identificador de cadauno de los elementos de las tablas de hash.

    La librera estandar incluye tablas de hash impelemnta-das con Sets y Maps, nombradas HashMap y HashSet. Loselementos del HashSet (o las llaves en el HashMap) imple-mentan los metodos equals y hashCode. Algo de recalcar es

  • que el HashSet y el HashMap son usualmente implementa-dos 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 esta quedasin llaves.

    clone(): Crea una copia de la tabla.

    contains(): Evalua si alguna llave dada por un valor es-pecfico se encuentra en la tabla.

    get(): Retorna el valor contenido en la llave especificadao nulo si la tabla no contiene una valor para la llave.

    isEmpty(): Evalua si el Hash no tiene llaves para sus va-lores.

    put(): Mapea la llave al valor especificado como entrada.

    remove(): Remueve la llave y su correspondiente valor dela tabla de Hash.

    size(): Retorna el numero de llaves de la tabla.

    toString(): retorna una representacion de la tabla como unconjunto de entradas encerradas en llaves y separadas porla , .

    Referencias[1] Weiss, M. A. (2000). Estructuras de Datos en Java - Compa-

    tible con Java 2. Madrid: Addison Wesley.