Download - Hash y tablas de hash

Transcript
  • 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.