Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


tablas hash para programacion de estructuras, Diapositivas de Estructuras de Datos y Algoritmos

Estructura de datos Programacion orientada a objetos

Tipo: Diapositivas

2019/2020

Subido el 19/02/2020

xiadani-cruz
xiadani-cruz 🇲🇽

1 documento

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TABLAS
HASH
ESTRUCTURAS Y
BASE DE DATOS
Cruz Martinez Xiadani
Ordoñez Bernal Hafid Eduardo
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga tablas hash para programacion de estructuras y más Diapositivas en PDF de Estructuras de Datos y Algoritmos solo en Docsity!

TABLAS

HASH

ESTRUCTURAS Y

BASE DE DATOS

Cruz Martinez Xiadani

Ordoñez Bernal Hafid Eduardo

Las tablas Hash o también llamadas métodos de dispersion (Hashing) es un método que permite encontrar, con el mínimo esfuerzo, una clave dada dentro de un conjunto de elementos. Una tabla hash se puede ver como un conjunto de entradas. Cada una de estas entradas tiene asociada una clave única, y por lo tanto, diferentes entradas de una misma tabla tendrán diferentes claves. Esto implica, que una clave identifica univocamente a una entrada en una tabla hash.

Una Tabla Hash se forma por 3 elementos:

  • (^) Una tabla de un tamaño razonable para almacenar los pares (clave, valor). Una función “hash” que recibe la clave y devuelve un índice para acceder a una posición de la tabla. Un procedimiento para tratar los casos en los que la función anterior devuelve el mismo índice para dos claves distintas. Esta situación se conoce con el nombre de colisión.

AGREGAR UN PIE DE PÁGINA (^5) Una Tabla Hash almacena un conjunto de pares “( clave, valor )”. Clave: Es el parámetro de entrada, es el “dato que queremos guardar”

  • (^) Valor : Es un número, un entero positivo que nos indica donde debemos guardar nuestro “clave” dentro de la tabla. Es decir, es casi como hacer que nuestra información nos diga donde debería ir, en vez e ordenarla nosotros mismos.

Puntos clave: Tiene que minimizar las posibilidades de que ocurra una colisión como de lugar. Usará TODA la información que sea proporcionada para maxilar la cantidad de códigos hash. Es determinista , es decir, si le das una entrada x, siempre, siempre tendrá que regresarte el mismo número como resultado. Distribuya los valores de manera equitativa ( cosas como “gatos” y “gata” acaben en lugares muy muy diferentes de la tabla). Repite, tiene que ser capaz de generar indices muy diferentes para datos muy parecidos. Usa una función “sencilla” no hagas 50,000 operaciones para generar cada indice o todo el tiempo de ejecución te la pasarás haciendo eso.

  • El tamaño de una tabla hash es el otro parámetro que debe ser ajustado con

cierto cuidado.

  • (^) Por ejemplo, si el tamaño es demasiado pequeño, digamos 1, de nuevo la tabla

se comporta como una lista encadenada.

  • (^) En cambio, si el tamaño es enorme, el malgasto de memoria es evidente, puesto

que habrá un elevado número de posiciones cuya lista de colisiones está vacía.

El Tamaño de la Tabla

Este team propone que el array donde guardemos la información no sea mas que un array de punteros hacia listas enlazadas

Team Separate Chaining

  • (^) Otra solución a las colisiones es almacenar 𝑁 pares (clavevalor) en una pares (clavevalor) en una tabla hash de tamaño 𝑀 > 𝑁. Se espera que las entradas vacías > 𝑁 pares (clavevalor) en una. Se espera que las entradas vacías ayuden a la resolución de las colisiones .Los métodos que usan esta estrategia son llamados: Métodos hashing de direccionamiento abierto
  • (^) Cuando existe una colisión, solo se checa la siguiente entrada (o índice) hasta encontrar una desocupada HASHING CON SONDEO LINEAL

Enteros positivos • El método más común es el

hashing modular: a) Se elige un arreglo de

tamaño 𝑀 > 𝑁. Se espera que las entradas vacías (primo) b) Para cualquier entero

positivo 𝑘 se calcula el residuo de la división de 𝑘 se calcula el residuo de la división de 𝑘 se calcula el residuo de la división de 𝑘

entre 𝑀 > 𝑁. Se espera que las entradas vacías ℎ 𝑘 se calcula el residuo de la división de 𝑘 : = (𝑘 se calcula el residuo de la división de 𝑘 % 𝑀 > 𝑁. Se espera que las entradas vacías )

Tipos de clave Número en punto flotante

  • Si las claves son números reales entre 0 y 1: a) Se multiplica por 𝑀 > 𝑁. Se espera que las entradas vacías b) Se redondea al entero más cercano para obtener un índice entre 0 y M

Cadenas • Cuando las claves son cadenas grandes, estas se pueden trabajar como si fueran enteros grandes Claves compuestas • Si el tipo de clave tiene múltiples campos enteros, entonces podemos mezclarlos de igual forma que con los caracteres de las cadenas