Kategorien: Alle - funciones - colisiones - tablas - carga

von juan manuel sanchez pareja Vor 6 Jahren

882

tablas hash

El concepto de tablas hash se desarrolló de manera independiente en varios lugares simultáneamente. En enero de 1953, Hans Peter Luhn de IBM escribió un memorando interno describiendo el uso del hashing con encadenamiento.

tablas hash

presentado por: santiago hernandez morales-1088349398 juan manuel sanchez pareja-1010107723

tablas hash

historia La idea de tablas hashing se presento de forma independiente en diferentes lugares. En Enero de 1953, Hans Peter Luhn escribió un memorando interno en IBM en el cual explicaba que había utilizado hashing con encadenamiento

para que sirven
Una tabla hash o mapa hash es una estructura de datos que asocia llaves o claves con valores. Colección de elementos, cada uno de los cuales tiene una clave y una información asociada.

operaciones basicas

eliminar llave

buscar llave

insertar llave

Hashing Enlazado

El Hashing Enlazado usa un vector de Listas Enlazadas: Aquellos objetos que reciban un determinado valor de Hash, se insertarán en la lista enlazada correspondiente.

La inserción, la búsqueda y la eliminación se convierten en procesos de 2 pasos

Realizar la operación necesaria en la lista enlazada a la que se hace referencia en dicho slot

Utilizar la función hash para seleccionar el slot adecuado.

Los objetos con claves colisionadas se insertan el la misma lista.

En una tabla hash con encadenamiento, las entradas de la tabla

funciones

Inserción

eliminacion

La eliminación tiene el mismo costo que la búsqueda, ya que con la función hash se encuentra la posición del elemento y posteriormente se elimina.

En hashing abierto, consiste en aplicar la función hash al dato a insertar. El resultado de esta operación genera la clave que va a indicar la posición del array en la cual se almacenará el dato y en esta posición del array se añadirá al inicio de la lista enlazada.

Hashing

El hashing abierto o encadenamiento,

es una implementación en la cual se tiene un array en el cual se almacena la información en cada slot según lo indique la clave

El hashing cerrado

es una implementación en la cual se tiene un array que en cada posición se apunta a una lista enlazada en la cual se almacenan las informaciones que contienen la misma clave

Factor de carga

El factor de carga es igual a la cantidad de elementos a insertar en la tabla dividida en la capacidad de esta misma

colisiones

Se puede dar el caso de que una información a insertar en la tabla presente el mismo valor hash, por ende habrán dos valores queriendo entrar a la misma posición de la tabla.

funcion de dispersion

convierte un Objeto en un Entero (valor Hash)adecuado para indexar la Tabla en la que se guardará el Objeto

Java dispone de mecanismos estándar para obtener valores hash a partir de cualquier Objeto

En la clase Object está definido el método: public int hashCode()

Dado que el método está implementado en la raíz de la jerarquía de herencia, cualquier clase dispone de una implementación por defecto

Formas de Resolver las Colisiones

Resolución Mediante Encadenamiento Enlazado

En cada posición de la tabla se mantiene una Lista Enlazada en la que se van insertando los elementos cuyo valor de hash les asigna la misma posición.

Resolución Mediante Exploración

Visita la casilla i2 posiciones más allá de la que causó la colisión.

Exploración Cuadrática

Visita la siguiente casilla.

Exploración Lineal.

Trata de buscar otra posición libre en la tabla