You are on page 1of 18

TABLAS HASH

INTRODUCCION

Una Tabla Hash es una estructura de datos


que soporta la recuperacin, eliminacin e
insercin de elementos de forma muy rpida.

TABLA HASH

Una tabla Hash que esta apropiadamente


configurada para los elementos que
contiene, puede realizarse estas operaciones
en tiempo fijo, a diferencia de otras
estructuras de datos.
Una Tabla Hash es un tipo de mapa y los
mapas son estructuras asociativas.
Conceptualmente, las estructuras de datos
asociativas almacenan datos en pares de
valor-clave.

TABLA HASH

Esto significa que por cada valor almacenado


existe una clave correspondiente usada para
acceder el valor.
Un ejemplo real de una estructura de datos
asociativa es un diccionario.
En un diccionario, los datosestan
almacenados en pares de valor-clave.

TABLA HASH

Las claves son las palabras, y los valores son


las definiciones.
Para acceder a una definicin, debemos usar
la clave correspondiente.
Los mapas Hash y los conjuntos hash son dos
tipos diferentes de tablas hash.
Los mapas hash son estructuras asociativas
que almacenan pares de valores claves.

EJEMPLO
En esta figura la funcin hash genera un indice basado en el digito
colocado en el extremo derecho del valor AsCII

FUNCIN Y TABLA HASH

La tabla hash en la figura muestra cada


nombre en su posicin asignada.
La ventaja de una tabla hash es que para
encontrar una entrada, uno solo tiene que
aplicar la funcin hash clave.
Un mtodo popular de la clave en funcin
hash es el mtodo de divisin
El mtodo de la divisin involucra la
conversin de una clave a int

Class hash_fun(){
int mm;
hash_fun(int m=6151){
int res
for(i=0;i<=s.size();i++){
res=res*mm+s[i];
}
Return res.;
}

DESVENTAJAS

Una funcin hash puede potencialmente


asignar dos o mas claves distintas al mismo
ndice.
Esto se conoce como colisiones.
La mejor manera de reducir estas colisiones
es usar una buena funcin hash para que el
ndice se distribuya equitativamente..

Tablas de Hash

Como es posible que dos claves conduzcan al mismo mapeo, es decir, que
la funcin de hash produzca el mismo resultado para dos claves diferentes
(colisin).

Es necesario buscar formas para resolver esta situacin. Hay bsicamente


dos estrategias:

Hashing Abierto: Cada entrada de la tabla contiene una lista enlazada en


la cual se almacenan todos elementos que, de acuerdo a la funcin de
hash, correspondan a dicha posicin arreglo.

Hashing Cerrado: Cada entrada de la tabla contiene un solo elemento.


Cuando ocurre una colisin, sta se soluciona buscando celdas alternativas
hasta encontrar una vaca (dentro de la misma tabla)

HASH ABIERTO
Tabla de
Hash
0

Universo de
Claves
U
5

6
1
Claves
3
Almacena
das (K)
4

Funci
n de
hash o
funci
n de
mapeo

3
4
5

6
7
8

HASH CERRADO

Universo de
Claves
U
5

6
1
Claves
3
Almacena
das (K)
4

0
1
2

Tabla de
Hash

Funci
n de
hash o
funci
n de
mapeo

3
4
5

6
7
8

HASH CERRADO

Ventaja: Elimina totalmente los apuntadores. Se libera as


espacio de memoria, el que puede ser usado en ms
entradas de la tabla.

Desventaja: Si la aplicacin realiza eliminaciones


frecuentes, puede degradarse el rendimiento de la misma.
Se requiere una tabla ms grande. Para garantizar el
funcionamiento correcto, se requiere que la tabla de hash
tenga, por lo menos, el 50% del espacio disponible.

Dentro de la dispersin cerrada hay tres estrategias


distintas para localizar posiciones alternativas en la tabla:
la exploracin lineal, la exploracin cuadrtica y la
dispersin doble. Cada una de ellas implica una funcin
f(i) diferente.

EJEMPLO

Las siguientes claves 5, 29, 20, 0, 18, 63, 44, 13,


98 deben ser almacenadas en una tabla hash de
nueve posiciones. Las colisiones se resuelven
hashing abierto. Se disponen de 2 funciones hash:

i) h(k) = k mod 9
ii) h(k) = (k*3 + 1) mod 9

Realice ambos ingresos a tablas hash (inicialmente


vacas), grafique.
Justifique cul de las 2 funciones hash es mejor y
por qu.

EJERCICIOS

Pregunta 1:
Dada la entrada {4371, 1323, 6173, 4199,
4344, 9679, 1989} y una funcin hash h(x)=x
mod 10, dar la correspondiente a) tabla hash
por encadenamiento

EJERCICIOS

Pregunta 2

Cul algoritmo de ordenamiento usara para resolver


los siguientes problemas? Justifique su respuesta.

(a) Ordenar un arreglo de 10 nmeros aleatorios.


(b) Ordenar un arreglo muy grande, en el cual el 90%
de sus elementos ya est ordenado.
(c) Ordenar una lista enlazada simple de nmeros.
(d) Ordenar un arreglo donde todos sus elementos
son iguales.

EJERCICIOS

Pregunta 3:
Genere

un rbol 3 Sat para encontrar el orden de


tres variables en forma ascendente.

Pregunta 4:
suponga tiene lo siguiente encuentre el conjunto
solucin..
(x1 ^x2) v (x1^x3^nox2)v(x3vx2vx1)