Hashing (Funciones de Dispersión)

Documentos relacionados
Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Tablas de Dispersión (Hashing Tables)

TEMA 3 TRANSFORMACIÓN DE CLAVES (HASHING)

Estructuras de datos: Tablas de dispersión

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

Capítulo 3. Clasificación en Memoria Secundaria

Tablas de dispersión (hash tables)

Algoritmos y Estructuras de Datos Ingeniería en Informática

Esquema básico de una Tabla de Dispersión

Análisis y Diseño de Algoritmos Tablas de Hash

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.

Tema 2. Conjuntos y Diccionarios

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Programa de teoría. AED I. Estructuras de Datos. 2. Conjuntos y diccionarios. AED II. Algorítmica. 1. Abstracciones y especificaciones

localizar de un dato con un acceso directo y en una sola comparación de la llave. HASH

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez

Tema 2. Conjuntos y Diccionarios.

Tema 2. Conjuntos y Diccionarios.

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica

Francisco J. Hernández López

Registros Un campo: Registro:

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Procesadores de lenguaje Tema 6 La tabla de símbolos

1. Características de la organización direccionada 2. Tipos de organización direccionada 3. Funciones de Transformación 4. Gestión de desbordamientos

Tablas (Diccionarios). Modelo matemático

TEMA 4 El tipo conjunto

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 6. Ordenación, búsqueda e intercalación interna

Procesadores de lenguaje Tema 6 La tabla de símbolos

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

Lista Simple con Puntero al Principio y Puntero al Final

Modelo Físico. M. Andrea Rodríguez-Tastets. II Semestre Universidad de Concepción,Chile andrea

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

El TAD tabla y las tablas dispersas (o tablas hash) Lección 19

Tema 10: Árbol binario de búsqueda

Estructura de Datos Árboles Árboles 2-3

Estructura de datos Tema 6: Tablas de dispersión (hashing)

4. TABLAS. Una tabla esta ordenada, si las claves de información de los registros están ordenadas: k j < k j+1 (j=1,2,...)

Estructuras de datos: Árboles binarios de

Algoritmos sobre Listas

Tema 1. Ordenación, búsqueda e intercalación interna

INDICE 1. Introducción: Archivos y Estructuras de Archivos 2. Operaciones Fundamentales para el Procesamiento de Archivos

ESTRUCTURAS DE ARBOLES Y HASHING

Titulación: Grado en Ingeniería Informática Asignatura: Fundamentos de Computadores

UNIDAD DE APRENDIZAJE I

Algoritmos y Estructuras de Datos I Ejercicios. Tema 3. Árboles

UNIVERSIDAD DE GUADALAJARA

Tablas de Dispersión

6. El TDA Lista Implementación con listas enlazadas. es de tipo genérico T. Pueden existir elementos repetidos (a diferencia de los conjuntos).

UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA. Nombre: Estructuras de Datos y Archivos

7. Agrupamiento (clustering)

Para archivos, existen las siguientes organizaciones:

Estructuras de Datos II

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Examen de Estructuras de Datos y Algoritmos. (Modelo 2)

Examen de Estructuras de Datos y Algoritmos. (Modelo 1)

TAD CONJUNTOS Y MULTICONJUNTOS

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

Cursos Propedéuticos 2015

Introducción a las tablas Hash (I)

El nivel Interno. Índice Tema 3

Estructuras Dinámicas de datos.

Introducción. Tema 1. Fundamentos de informática. Universidad de Oviedo. Fundamentos de Informática. Departamento de Informática Universidad de Oviedo

Estructura de datos y de la información Boletín de problemas - Tema 10

Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria

Parte de Algoritmos, de la asignatura de Programación Máster de Bioinformática Cadenas y expresiones regulares

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ÍNDICE 1. Índice Listas ordenadas Operaciones permitidas Pilas Operaciones permitidas...

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

TRABAJO PRÁCTICO N 7 Mapeos, diccionarios, arboles binarios de búsqueda y tablas de dispersión

Programación de sistemas

INDICE. Prólogo de la Segunda Edición

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

Árboles n-arios de búsqueda. Lección 16

Diseño de Conjuntos y Diccionarios con Hashing

Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

Indexación y Asociación

Métodos de Ordenamiento. Unidad VI: Estructura de datos

8. Vectores (arrays)

EXPOSICIÓN UNIDAD II

INDICE 1.1. Información y Significado 1.2. Arreglos en C 1.3. Estructura en C 1.4. Clases en C++ 2. La Pila 2.1. Definición y Ejemplos

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES

Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 2. Estructura de un Fichero. Operaciones. Básicas.

White paper Hashing. Autor: Ramix (Ramiro A. Gómez) Sitio web: Fecha: 6 FEB Indice

Tema 1. ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA (Algoritmos)

ANÁLISIS Y DISEÑO DE ALGORITMOS

Práctica 2: Estructuras/Uniones/Campos de bits

Transcripción:

Hashing características Hashing (Funciones de Dispersión) Mauricio Solar Lorna Figueroa No necesita almacenamiento adicional (índice). Facilita la inserción y eliminación rápida de registros. Encuentra registros con muy pocos accesos en promedio, al disco. La idea general hashing es colocar, en la forma menos relacionada posible, la información entregada por los elementos, de manera tal que su acceso sea eficiente y exista una adecuada repartición de los mismos a lo largo de todo el espacio de almacenamiento. Desventajas: No se pueden usar registros de longitud variable. No puede haber orden físico de datos. No permite llaves duplicadas. Hashing La tabla hash Se necesita un mecanismo de acceso a registros sólo con una lectura. Visto hasta ahora: Secuencia: n/ accesos en promedio Ordenado: log n Arboles: o accesos La representación de conjuntos o diccionarios con listas o arrays tiene un tiempo de O(n), para Insertar, Suprimir y Pertenece. Con vectores de bits el tiempo es O(cte), pero tiene muchas limitaciones. Cómo aprovechar lo mejor de uno y otro tipo? Idea: Usar un array con B posiciones (,..., B-). Dada una clave x calcular una posición mediante una función: h(x) = posición en (.. B-) h: Función de hashing El elemento (x, v) se inserta en esa posición..... B- Hashing algunas definiciones Técnica para generar una dirección base para una llave dada. Técnica que convierte la llave registro en un número aleatorio, el que sirve después para determinar dónde se almacena el registro. Técnica de almacenamiento y recuperación que usa una función de hash para mapear registros en una dirección de almacenamiento. La tabla hash Para buscar el elemento con clave x, aplicar la función h(x) y buscar en la posición correspondiente. Ejemplo: Si x de tipo entero h(x) = x módulo B Si x de tipo cadena h(x) = (suma de códigos ascii (x)) mod B

La tabla hash Hashing abierto En promedio se necesita un tiempo constante O(cte): aplicar h(x) y acceder a esa posición. M - Tabla de encabezados de celdas o cubetas Listas de elementos de cada celda La tabla hash El tipo de x no está restringido. Si es un registro, se puede tomar uno de sus campos como clave, y aplicar la función sobre él. Función de hashing: h: Clave [,..., B-] Tamaño de la tabla B: aproximadamente mayor que el número de elementos normalmente, B << rango de claves Hashing abierto typedef Lista_asociacion TablaHash[B-]; La tabla hashing está formada por B cubetas. Dentro de cada cubeta se encuentran los elementos sinónimos (con igual de h). El conjunto de sinónimos es llamado clase. La tabla hash Qué ocurre si para dos elementos distintos x, y, h(x) = h(y)? Definición: Si (x y) (h(x) = h(y)) entonces se dice que x, y son sinónimos. Los distintos métodos de hashing difieren en el tratamiento de los sinónimos. Existen dos tipos de hashing, que se distinguen por las formas de almacenar los elementos:. Abierto o externo: permite manejar almacenar los conjuntos en un espacio potencialmente ilimitado (tamaños arbitrarios). Cerrado o interno: usa un espacio fijo para almacenamiento, limitando así el tamaño de los conjuntos. Hashing cerrado En esta clase de hashing sólo existe la estructura de las celdas o la tabla, donde deben almacenarse todos los elementos conjunto o diccionario, en vez de usarse como encabezados de listas. y h celda ocupada Celdas alternativas h(x) Situación de colisión en hashing cerrado o interno x

Hashing cerrado typedef AsociacionTablaHash[B-] Si al insertar un elemento nuevo x, ya está ocupado h(x), se dice que ocurre una colisión. En este caso será necesario hacer rehashing: buscar una nueva posición para almacenar el elemento. Hashing cerrado Qué ocurre con la eliminación de elementos? Se necesita una marca especial suprimido, que indique la posición de un elemento borrado. En la función Miembro, se sigue la búsqueda hasta llegar a un suprimido. En Inserta el espacio de ese elemento se puede utilizar (como si fuera vacío). Problema rehashing lineal: Si se llenan varias cubetas consecutivas y hay una colisión, se debe consultar todo el grupo. Aumenta el tamaño de este grupo, haciendo que las inserciones y búsquedas sean más lentas. Hashing cerrado estrategias de reubicación (rehashing) Consiste en explorar posiciones alternativas: h (y), h (y), h (y), h (y),... Dichas posiciones se buscan en orden hasta hallar un espacio vacío donde almacenar el elemento (o bien hasta agotar el espacio disponible, si la tabla está llena). Rehashing: Si falla h(x), aplicar h (x), h (x),... hasta encontrar una posición libre. Rehashing: h i (x)= (h(x) + i) mod B La secuencia de posiciones recorridas para un elemento se suele denominar cadena o secuencia de búsqueda. Funciones Hashing Propiedades de una buena función de hashing La función debe minimizar el número de colisiones: debe ser lo más aleatoria posible y repartir los elementos en la tabla de manera uniforme. La función debe ser fácil de calcular (se busca eficiencia). Ojo: h(x) es función de x, devuelve siempre el mismo para un mismo de x. Hashing cerrado Miembro (x, D): Examinar la posición h(x). Si x está en la posición h(x) entonces devolver Verdad (ó Tabla[h(x)].). Si está vacía entonces no es miembro, devolver Falso. En otro caso, la posición está ocupada pero por otro elemento. Se deben examinar las posiciones h (x), h (x),... y así sucesivamente hasta encontrar x, vacío ó examinar toda la tabla. hash(tipodato llave, int #max) { int sum =; int j = ; while (j < #elementos de llave) { sum = sum + * llave[j] + llave[j+]; j = j + ; } return sum mod #max; }

Multiplicación. Dada una clave x entera: h(x) = (x * C) mod B; para algún C, con C y B primos entre sí Dígitos centrales: h(x) = x / mod B Escoger un C, tal que BC K, para x en el intervalo (,..., K). h(x)= (x / C) mod B Ejemplo: K = ; B = ; C =; h() = Otro posible método: h(x) = ( C*x / C + x*c) mod B Plegado o folding: Con cadenas. Agrupar caracteres de n en n: Cada carácter es un número en el intervalo.. Se suman los es de los grupos. Ejemplo: x = abcdefgh h(x)=( a+ b +c + d + e + f + g+h) mod B Con reales. Agrupar dígitos decimales de n en n: Ejemplo: h(x) = ((x * ) + (x * ) + (x * ) +... ) mod B Otro ejemplo con reales: h(x) = Frac (x) * B Centros cuadrados: la llave se multiplica por sí misma, tomando los dígitos centrales al cuadrado; posteriormente se ajusta al espacio disponible. División: la clave se divide por un número aproximadamente igual al número de direcciones (número primo, pues tiende a distribuir residuos en forma más eficiente). Desplazamiento: los dígitos externos de ambos extremos se corren hacia adentro, se suman y se ajusta al espacio disponible. Análisis de dígitos: analizan las claves para eliminar posibles repeticiones en la misma. Cuál usar? tomar algunas claves o llaves problema, simular el comportamiento con algunos métodos y se toma el que mejor se comporta. En general: Método de la división es mejor Método plegado para claves muy largas Conversión de raíz: la base número se modifica y en la serie de dígitos resultante, se suprimen los dígitos de orden mayor. División polinómica: cada dígito clave se toma como coeficiente de polinomio, se divide por un polinomio fijo, coeficiente resto se toma como dirección. Con cadenas. Suma de códigos ASCII: suma = ; para i = hasta longitud(x) hacer suma = suma + ord(x[i]); devolver (suma mod B); Tratamiento de Colisiones Es posible reducir el % de overflow, pero el problema se mantiene dado que no se llega al %. Existen dos métodos principales de rehashing:. prueba lineal. doble hashing

Tratamiento de Colisiones Tratamiento de Colisiones Prueba lineal o secuencial Si la función de hashing de un elemento apunta al índice i, pero en esa posición ya existe otro elemento, se trata de verificar las posiciones inmediatamente siguientes: i+, i+, i+,..., hasta encontrar una posición vacía (en secuencia). Si se llegó al final de la tabla continuar buscando al principio (posición ): H(x,) = h(x) H(x,p+) = H(x,p) + mod M Doble hashing x y z h(z) h(y) h(x) celda ocupada H(x,) + h (y) + h (z) H(x,) H(y,) H(x,) H(z,) H(y,) Situación de colisiones múltiples resuelta con doble hashing Tratamiento de Colisiones Obviamente el número máximo de pruebas es M-, de lo contrario se empieza a repetir la búsqueda ( p < M). Esta técnica es muy fácil de implementar y tiene un comportamiento satisfactorio cuando la tabla no está muy llena. x h(x) H(x,) H(x,) H(x,)... celda ocupada Celdas alternativas Problema: agrupamiento primario: una vez que un bloque de posiciones consecutivas aparece ocupada en la tabla se transforma en un blanco para colisiones subsecuentes. Eso va produciendo bloques ocupados cada vez más grandes y más fáciles de hacer blanco de colisiones. Funciones re-hashing Estrategias de rehashing (para hashing cerrado): Intervalos constantes mayores que : h i (x) = (h(x) + C*i) mod B; para algún C > Ejemplo: B =, C =, h(x) =, se buscaría en:,,,,,,, B y C deben ser primos entre sí, para buscar en todas las posiciones. No se soluciona el problema, ya que se crean grupos a saltos de C. Tratamiento de Colisiones Doble hashing Consiste en usar una segunda función de hashing h cuyos es son independientes hashing primario. Este nuevo se agrega a la posición hallada en caso de colisión, y así sucesivamente hasta resolver el problema de posicionamiento: H(x,) = h(x) H(x,p+) = (H(x,p) + h (x)) mod M Funciones re-hashing Permutaciones aleatorias: h i (x) = (h(x) + D i ) mod B; para D i = (D, D,...) una permutación de,,..., B- La permutación se fija de antemano. Se soluciona el problema para determinadas permutaciones D i.

Funciones re-hashing Método para obtener una permutación: Sea B una potencia de. Se toma una constante K, en el intervalo (,..., B-). Empezamos con un cualquiera D= D i D i+ = *D i Si D i+ > B Resta = D i+ -B; D i+ = Resta K; D i = (,,,,,,,,...) {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado : Función hash: h() + = ==> no hay conflicto Funciones re-hashing Ejemplo: B = ; K = = b ; D = = b {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Di* Resta Resta D D D D D D D D Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto Insertar en una tabla hash de tamaño, las claves:,,,,,,,,,, con los métodos : hash lineal, hash cuadrático, hash encadenado h(x) = x mod la función hash usa el último dígito en la representación decimal de la llave. Contar el número de comparaciones necesarias para cada operación. {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto Tabla inicial:

{,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> no hay conflicto Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = (vuelve a ) ==> no hay conflicto {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = () ==> hay conflicto Función hash: h() + = () ==> hay conflicto Función hash: h() + = () ==> hay conflicto Función hash: h() + = () ==> no hay conflicto {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> no hay conflicto

{,,,,,,,,, } Hash lineal: h(x) = x mod + i; i =,,... Número Insertado: Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = ==> no conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto Total Número de Pruebas: {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado : Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = (vuelve a ) ==> no hay conflicto

{,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto Función hash: h() + = () ==> conflicto No importa cuánto tiempo se busque, no se encontrará un lugar! {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = ==> no hay conflicto {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> conflicto Función hash: h() + = ==> conflicto Función hash: h() + = ==> no hay conflicto Total Número de Pruebas: (excluyendo la búsqueda fallada para el ) Cuando se insertó el, nunca se examinaron las dos celdas disponibles, y. Nota: para que toda la tabla sea investigada el factor de carga tiene que ser mayor que, y el tamaño de la tabla tiene que ser primero. {,,,,,,,,, } Método cuadrático: h(x) = x mod + i; i =,,,... Número Insertado: Función hash: h() + = ==> hay conflicto Función hash: h() + = () ==> hay conflicto Función hash: h() + = () ==> no hay conflicto {,,,,,,,,, } Hash encadenado separado: La tabla de encadenamiento separada agrega a una lista enlazada cuando ocurre una colisión. El resultado final se parece a : -> -> ->

El número de búsqueda en una lista enlazada es: Valor Insertado Compariciones Total : Eliminar las claves,, y desde la tabla hash: Hash lineal: Eliminar : h() + = ==> no se encuentra h() + = () ==> encontrado Total Número de pruebas: Eliminar las claves,, y desde la tabla hash: Eliminar las claves,, y desde la tabla hash: Hash lineal: Eliminar : h() + = ==> Eliminado ==> continuar la búsqueda h() + = () ==> Eliminado h() + = () ==> No encontrado h() + = () ==> No encontrado h() + = () ==> Encontrado Total Número de pruebas: Eliminar las claves,, y desde la tabla hash: Eliminar las claves,, y desde la tabla hash: Hash lineal: Eliminar : h() + = ==> no se encuentra h() + = ==> encontrado Total Número de pruebas: Método Cuadrático : Eliminar : h() + = ==> No encontrado h() + = ==> Encontrado Total Número de Pruebas :

Eliminar las claves,, y desde la tabla hash: Eliminar las claves,, y desde la tabla hash: -> -> -> Método Cuadrático : Eliminar : h() + = ==> eliminado h() + = () ==> encontrado Total Número de Pruebas : Método encadenado separado: Eliminar : Valor : Comparaciones : -> Eliminar las claves,, y desde la tabla hash: Eliminar las claves,, y desde la tabla hash: -> -> -> Método Cuadrático : Eliminar : h() + = ==> Eliminado h() + = () ==> Eliminado h() + = ( ) ==> Encontrado Total Número de Pruebas : Método encadenado separado: Eliminar : Valor : Comparaciones : -> Eliminar las claves,, y desde la tabla hash: Método encadenado separado: Eliminar : Valor : Comparaciones : -> -> -> Referencias bibliográficas Estructura de Datos y Algoritmos. Aho, Hopcroft, Ullman. Addison-Wesley Iberoamericana. García Mateos, A.A.E.D. Apuntes de la UNLP Facultad de Informática. -> ->