Está en la página 1de 11

Tablas Hash

Yonier Fabián Bravo García


Duvan Andrés Cardona Alomia
Kevin Andrés Cuama Valencia
Joselin Adriana Ruiz Prado
William David Riascos Asprillas

Universidad del Pacifica


Facultad de Ingeniería de Sistemas
Buenaventura, Valle del Cauca
2022
Tablas Hash

Yonier Fabián Bravo García


Duvan Andrés Cardona Alomia
Kevin Andrés Cuama Valencia
Joselin Adriana Ruiz Prado
William David Riascos Asprillas

Docente: Manuel Gonzales

Universidad del Pacifica


Facultad de Ingeniería de Sistemas
Buenaventura, Valle del Cauca
2022
Contenido
Índice..........................................................................................................................
Introducción...............................................................................................................
Objetivo......................................................................................................................
Tablas Hash...............................................................................................................
¿Qué son?..............................................................................................................
¿Cómo se implementan?.......................................................................................
Colisiones en tabla Hash........................................................................................
Tipos de tabla hash..............................................................................................
Encadenamiento separado ................................................................................
Direccionamiento abierto.....................................................................................
Aplicaciones de las tablas hash.............................................................................
Funciones basicas de las tablas hash...................................................................
Insertar...................................................................................................................
Busqueda.............................................................................................................
Borrar...................................................................................................................
Otras operaciones................................................................................................
Conclusión...............................................................................................................
Bibliografía...............................................................................................................
Introducción
Los programadores utilizan diferentes estructuras de datos a la hora de
programar, en un caso especial utilizan métodos para almacenar un número
elevado de datos sobre los que se necesitan operaciones de búsqueda e
inserción muy eficientes.
En el presente documento estará planteado de una forma detallada las
funciones principales de la tabla hash al igual que su implementación

Objetivos
El objetivo de este trabajo es: dar a conocer que son las tablas hash y enseñar
de forma correcta su debido uso en todo lo que tenga que ver con el área de
programación en la ingeniería.

Tabla Hash
¿Qué son?
Una tabla hash o mapa hash es una estructura de datos que asocia llaves o
claves con valores. La operación principal que soporta de manera eficiente es
la búsqueda: permite el acceso a los elementos (teléfono y dirección, por
ejemplo) almacenados a partir de una clave generada usando el nombre,
número de cuenta o id. Funciona transformando la clave con una función hash
en un hash, un número que la tabla hash utiliza para localizar el valor deseado.

Ilustración 1: representación gráfica de las tablas hash

¿Cómo se implementan?
Las tablas hash se suelen implementar sobre arreglos de una dimensión,
aunque se pueden hacer implementaciones multi-dimensionales basadas en
varias claves. Como en el caso de los arrays, las tablas hash proveen tiempo
constante de búsqueda promedio O (1) (esto significa alta eficiencia y
respuesta rápida) sin importar el número de elementos en la tabla.
Comparada con otras estructuras de arrays asociadas, las tablas hash son más
útiles cuando se almacenan grandes cantidades de información.

Colisiones en la tabla hash


Cuando se trabaja con tablas hash es frecuente que se produzcan colisiones.
Las colisiones se producen cuando para dos elementos de información
distintos, la función de dispersión les asigna la misma clave. Como se puede
suponer, esta solución se debe arreglar de alguna forma. Para ello las tablas
hash cuentan con una función de resolución de colisiones.

Tipos de tabla hash


Existen dos tipos de tablas hash, en función de cómo resuelven las colisiones:

Encadenamiento separado: Las colisiones se resuelven insertándolas en una


lista. De esa forma tendríamos como estructura un vector de listas. Al número
medio de claves por lista se le llama factor de carga y habría que intentar que
esté próximo a.
Direccionamiento abierto: Utilizamos un vector como representación y
cuando se produzca una colisión la resolvemos reasignándole otro valor hash a
la clave hasta que encontremos un hueco.

Aplicación de las Tablas Hash


Las dos principales ventajas que aportan las tablas hash son las siguientes:
• Almacenamiento asociativo
• Recuperación eficiente de la información
Por lo tanto, las tablas hash son muy útiles cuando el tiempo de acceso a la
información es crítico. La gran eficiencia que proporcionan estas tablas hace
que sean las estructuras de datos escogidas en situaciones tales como la
implementación de la tabla de símbolos de un compilador. Esta es una tarea
para la cual se adaptan a la perfección gracias a si carácter asociativo y su
eficiencia.

Operaciones Básicas con las Tablas Hash


Insertar:
El proceso de inserción en una tabla hash es muy simple y sencillo. Sobre el
elemento que se desea insertar se aplica la función de dispersión. El valor
obtenido tras la aplicación de esta función será el índice de la tabla en el que
se insertará el nuevo elemento.
Veamos este proceso con un ejemplo. Sobre la siguiente tabla hash se desea
introducir un nuevo elemento, la cadena azul. Sobre este valor se aplica la
función de dispersión, obteniendo el índice.
Ilustración 2: Representación de inserción

El resultado de la inserción sería el siguiente:

Ilustración 3: Representación de inserción

En el caso de que se produzca una colisión al tratar de insertar el nuevo


elemento, el procedimiento será distinto en función del tipo de hash con el que
se esté tratando.

• Encadenamiento separado: El nuevo elemento se añadirá al final de la


lista que se inicia en la posición indicada por el valor que retornó la
función de dispersión.
• Direccionamiento abierto: En este caso, se busca una nueva posición
en la que almacenar el nuevo valor.
Búsqueda
Para recuperar los datos, es necesario únicamente conocer la clave del
elemento, a la cual se le aplica la función resumen. El valor obtenido se
mapea al espacio de direcciones de la tabla. Si el elemento existente en la
posición indicada en el paso anterior tiene la misma clave que la
empleada, entonces es el deseado. Si la clave es distinta, se ha de buscar
el elemento según la técnica empleada para resolver el problema de las
colisiones al almacenar el elemento.

Borrar
El borrado en una tabla hash es muy sencillo y se realiza de forma muy
eficiente. Una vez indicada la clave del objeto a borrar, se procederá a
eliminar el valor asociado a dicha clave de la tabla.

Esta operación se realiza en tiempo constante, sin importar el tamaño de la


tabla o el número de elementos que almacene en ese momento la
estructura de datos. Esto es así ya que al ser la tabla una estructura a la
que se puede acceder directamente a través de las claves, no es necesario
recorrer toda la estructura para localizar un elemento determinado.

Si sobre la tabla resultante de la inserción del elemento azul realizamos el


borrado del elemento negro, la tabla resultante sería la siguiente:

Ilustración 4: Representación de Borrar

Otras Operaciones

Una de las principales operaciones que se pueden realizar en las tablas


hash es la redispersión. La redispersión se suele realizar cuando el factor
de carga (número de elementos / capacidad de la tabla) de la tabla supera
cierto umbral.
La redispersión consiste en pasar todos los elementos de la tabla original a
una nueva tabla de un tamaño mayor. De esta forma, se reduce el factor
de carga de la tabla.

Conclusión
Para concluir podemos decir que las tablas hash son una parte muy importante
dentro de la programación ya que nos permite asociar llaves o claves con
valores lo que nos permite almacenar un número elevado de datos sobre los
que se necesitan operaciones de búsqueda e inserción.

También podría gustarte