Estructuras de datos: Tablas de dispersión
|
|
|
- María Elena Hernández Saavedra
- hace 9 años
- Vistas:
Transcripción
1 Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge [email protected]
2 Referencias bibliográficas M. A. Weiss. Dispersión. En Estructuras de datos y algoritmos, capítulo 5, páginas Addison-Wesley Iberoamericana, A. V. Aho, J. E. Hopcroft y J. D. Ullman. Operaciones básicas con conjuntos. En Estructuras de datos y algoritmos, capítulo 4, páginas Addison-Wesley Iberoamericana, 1988.
3 Funciones de dispersión Objetivo: realizar inserciones, eliminaciones y búsquedas en tiempo promedio constante. Estructura de datos ideal: un vector con tamaño fijo N. Una función de dispersión establece la correspondencia de cada clave con algún número en el intervalo [0...N 1]. Esta función tiene que ser fácil de calcular, y asegurar que dos claves distintas se correspondan con celdas diferentes. Como esto último es imposible, buscamos una función que distribuya homogéneamente las claves entre las celdas. Resta escoger una función y decidir el tamaño de la tabla y qué hacer cuando dos claves caen en la misma celda. Si al insertar un elemento, éste se dispersa en el mismo valor que un elemento ya insertado tenemos una colisión y hay que resolverla. Las tablas de dispersión se usan para representar diccionarios en los que se busca una clave y se devuelve su definición.
4 Índice Funciones de dispersión 1 Funciones de dispersión 2 3
5 Funciones de dispersión (i) Toda función de dispersión debe: calcularse de forma sencilla, y distribuir uniformemente las claves. Por ejemplo, si las claves son números enteros, clave mod N es una función buena, salvo que haya propiedades indeseables: Si N fuese 100 y todas las claves terminasen en cero, esta función de dispersión sería una mala opción. Es buena idea asegurarse de que el tamaño de la tabla sea un número primo. Si las claves fuesen enteros aleatorios, esta función sería muy simple y distribuiría las claves con uniformidad. Por lo regular, las claves son cadenas de caracteres. La longitud y las propiedades de las claves influirán en la elección de una buena función de dispersión.
6 Funciones de dispersión (ii) Una opción es sumar los valores ASCII de los caracteres. función Dispersión1 (Clave, TamañoClave): Índice valor := ascii(clave[1]); para i := 2 hasta TamañoClave hacer valor := valor + acii(clave[i]) fin para devolver valor mod N fin función Es una función fácil de implementar, y se ejecuta con rapidez. Pero si el tamaño de la tabla es grande, esta función no distribuye bien las claves. Por ejemplo, si N = y las claves tienen 8 caracteres, la función sólo toma valores entre 0 y 1016 =
7 Funciones de dispersión (iii) función Dispersión2 (Clave, TamañoClave): Índice devolver (ascii(clave[1]) + 27*ascii(Clave[2]) + 729*ascii(Clave[3])) mod N fin función En esta función de dispersión se supone que la clave tiene al menos tres caracteres. Si los primeros caracteres son aleatorios y el tamaño de la tabla es 10007, esperaríamos una distribución bastante homogénea. Desafortunadamente, los lenguajes naturales no son aleatorios. Aunque hay 27 3 = combinaciones posibles, en un diccionario el número de combinaciones diferentes que nos encontramos es menor que Sólo un porcentaje bajo de la tabla puede ser aprovechada por la dispersión.
8 Funciones de dispersión (iv) En la función de dispersión que sigue intervienen todos los caracteres en la clave y se puede esperar una buena distribución. función Dispersión3 (Clave, TamañoClave): Índice valor := ascii(clave[1]); para i := 2 hasta TamañoClave hacer valor := (32*valor + acii(clave[i])) mod N fin para devolver valor fin función El código calcula una función polinómica con base en la regla: LongitudClave 1 i=0 32 i ascii(clave[longitudclave i]) Para abcd p. ej. (32 3 ascii(a) ascii(b) + 32 ascii(c) + ascii(d)) mod N
9 Funciones de dispersión (v) La multiplicación por 32 es el desplazamiento de cinco bits. Con lenguajes que permitan el desbordamiento se aplicaría mod una sola vez justo antes de volver. Si las claves son muy grandes, no se usan todos los caracteres.
10 Índice Funciones de dispersión 1 Funciones de dispersión 2 3
11 Resolución de colisiones: dispersión abierta (i) La solución consiste en tener una lista de todos los elementos que se dispersan en un mismo valor. Al buscar, usamos la función de dispersión para determinar qué lista recorrer. Al insertar, recorremos la lista adecuada. Si el elemento resulta ser nuevo, se inserta al frente o al final de la lista. Además de listas, se podría usar cualquier otra estructura para resolver las colisiones, como un árbol binario de búsqueda.
12 Resolución de colisiones: dispersión abierta (ii) El factor de carga, λ, de una tabla de dispersión es la relación entre el número de elementos en la tabla y su tamaño. Número de claves en la tabla λ = N La longitud media de una lista es λ. En dispersión abierta, la regla es igualar el tamaño de la tabla al número de elementos esperados, (λ = 1). El esfuerzo al realizar una búsqueda es: 1 el tiempo constante necesario para evaluar la función de dispersión, O(1), más 2 el tiempo necesario para recorrer la lista, O(λ). En una búsqueda infructuosa el promedio de nodos recorridos es O(λ) En una búsqueda con éxito, O(λ/2)
13 Ejemplo de dispersión abierta (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla después de insertar Ana: [ ] [ ] [ ] [ ] [ ] [ ] [ ] [Ana] [ ] [ ] [ ]
14 Ejemplo de dispersión abierta (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla después de insertar Ana: [ ] [ ] [ ] [ ] [ ] [ ] [ ] [Ana] [ ] [ ] [ ] Tabla después de insertar Luis: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana] [ ] [ ] [ ]
15 Ejemplo de dispersión abierta (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla después de insertar Ana: [ ] [ ] [ ] [ ] [ ] [ ] [ ] [Ana] [ ] [ ] [ ] Tabla después de insertar Luis: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana] [ ] [ ] [ ] Tabla después de insertar José: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana; José] [ ] [ ] [ ]
16 Ejemplo de dispersión abierta (ii) Tabla después de insertar Olga: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana; José; Olga] [ ] [ ] [ ]
17 Ejemplo de dispersión abierta (ii) Tabla después de insertar Olga: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana; José; Olga] [ ] [ ] [ ] Tabla después de insertar Rosa: [ ] [ ] [ ] [ ] [ ] [ ] [Luis; Rosa] [Ana; José; Olga] [ ] [ ] [ ]
18 Ejemplo de dispersión abierta (ii) Tabla después de insertar Olga: [ ] [ ] [ ] [ ] [ ] [ ] [Luis][Ana; José; Olga] [ ] [ ] [ ] Tabla después de insertar Rosa: [ ] [ ] [ ] [ ] [ ] [ ] [Luis; Rosa] [Ana; José; Olga] [ ] [ ] [ ] Tabla después de insertar Iván: [ ] [ ] [ ] [ ] [ ] [ ] [Luis; Rosa; Iván] [Ana; José; Olga] [ ] [ ] [ ]
19 abiertas: pseudocódigo (i) tipo Índice = 0..N-1 Posición = ˆNodo Lista = Posición Nodo = registro Elemento : TipoElemento Siguiente : Posición fin registro TablaDispersión = vector [Índice] de Lista procedimiento InicializarTabla (T) para i := 0 hasta N-1 hacer CrearLista(T[i]) fin para fin procedimiento
20 abiertas: pseudocódigo (i) función Buscar (Elem, Tabla): Posición i := Dispersión(Elem); devolver BuscarLista(Elem, Tabla[i]) fin función procedimiento Insertar (Elem, Tabla) pos := Buscar(Elem, Tabla); {No inserta repetidos} si pos = nil entonces i := Dispersión(Elem); InsertarLista(Elem, Tabla[i]) fin procedimiento
21 Índice Funciones de dispersión 1 Funciones de dispersión 2 3
22 Funciones de dispersión En un sistema de dispersión cerrada, si ocurre una colisión, se buscan celdas alternativas hasta encontrar una vacía. Se busca en sucesión en las celdas: d 0 (x),d 1 (x),d 2 (x)... donde: d i (x) = (dispersion(x) + f(i)) mod N,con f(0) = 0 La función f es la estrategia de resolución de las colisiones. Determinará si la dispersión cerrada es lineal, cuadrática o doble. Como todos los datos se guardan en la tabla, ésta tiene que ser más grande para la dispersión cerrada que para la abierta. En general, para la dispersión cerrada el factor de carga λ debe estar por debajo de 0,5
23 Eliminación perezosa en la dispersión cerrada La eliminación estándar no es realizable con dispersión cerrada. La celda ocupada pudo haber causado una colisión en el pasado. Por ejemplo, con exploración lineal, si las claves x e y se dispersan a la misma posición (p. ej. 2) 1 Insertamos ambas claves. x 2 Borramos la primera. x y y 3 Si buscásemos ahora y, no la encontraríamos. Las tablas de dispersión cerrada requieren eliminación perezosa, aunque no haya realmente pereza.
24 Pseudocódigo (i) Funciones de dispersión tipo ClaseDeEntrada = (legítima, vacía, eliminada) Índice = 0..N-1 Posición = Índice Entrada = registro Elemento : TipoElemento Información : ClaseDeEntrada fin registro TablaDispersión = vector [Índice] de Entrada procedimiento InicializarTabla (D) para i := 0 hasta N-1 hacer D[i].Información := vacía fin para fin procedimiento
25 Pseudocódigo (ii) Funciones de dispersión función Buscar (Elem, D): Posición i := 0; x = Dispersión(Elem); PosActual = x; mientras D[PosActual].Información <> vacía y D[PosActual].Elemento <> Elem hacer i := i + 1; PosActual := (x + FunResoluciónColisión(x, i)) mod N fin mientras; devolver PosActual fin función /*La búsqueda finaliza al caer en una celda vacía o al encontrar el elemento (legítimo o borrado)*/
26 Pseudocódigo (iii) Funciones de dispersión procedimiento Insertar (Elem, D) pos = Buscar(Elem, D); si D[pos].Información <> legítima entonces {Bueno para insertar} D[pos].Elemento := Elem; D[pos].Información := legítima fin procedimiento procedimiento Eliminar (Elem, D) pos = Buscar(Elem, D); si D[pos].Información = legítima entonces D[pos].Información := eliminada fin procedimiento
27 con exploración lineal Aquí la estrategia de resolución de las colisiones es una función lineal de i, por lo general f(i) = i. Esto equivale a buscar secuencialmente en el vector (con circularidad) una posición vacía. Si la tabla es suficientemente grande, siempre se encontrará una celda vacía. Pero ello puede tomar demasiado tiempo. Suponiendo independencia entre intentos, el número medio de celdas examinadas en una inserción es 1 1 λ En una tabla con factor de carga λ, la probabilidad de que una celda esté vacía es 1 λ. Por tanto, el número medio de intentos independientes realizados hasta encontrar una celda vacía es 1 1 λ. 1 P. ej., con λ = 0,5, 1 λ = 2
28 Agrupamiento primario La supuesta independencia entre intentos, no se cumple. Aunque la tabla esté relativamente vacía, se pueden formar bloques de celdas ocupadas (agrupamiento primario). Cualquier clave dispersada en el agrupamiento necesitará varios intentos para resolver la colisión, y después se agregará al agrupamiento. Teniendo esto en cuenta, el número medio de celdas examinadas en una inserción con exploración lineal es cercano a 1 2 (1 + 1 ) (1 λ) 2 λ N o medio de celdas examinadas 0,5 2,5 0,75 8,5 0,9 50,5 El coste de una búsqueda: sin éxito: es el mismo que el de una inserción; con éxito: es la media de los costes de las inserciones en tablas con factores de carga más pequeños, 1 2 ( λ ).
29 Ejemplo de dispersión cerrada con exploración lineal(i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana
30 Ejemplo de dispersión cerrada con exploración lineal(i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana
31 Ejemplo de dispersión cerrada con exploración lineal(i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana Tabla de dispersión después de insertar José: Luis Ana José
32 Ejemplo de dispersión cerrada con exploración lineal (ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Se está formando un agrupamiento primario Luis Ana José Olga
33 Ejemplo de dispersión cerrada con exploración lineal (ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Se está formando un agrupamiento primario Luis Ana José Olga Tabla de dispersión después de insertar Rosa: Luis Ana José Olga Rosa
34 Ejemplo de dispersión cerrada con exploración lineal (ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Se está formando un agrupamiento primario Luis Ana José Olga Tabla de dispersión después de insertar Rosa: Tabla de dispersión después de insertar Iván: Luis Ana José Olga Rosa Iván Luis Ana José Olga Rosa
35 con exploración cuadrática La función de resolución de colisiones es cuadrática, por lo general: f(i) = i 2. Con exploración lineal es malo llenar la tabla, porque se degrada el rendimiento. Para la exploración cuadrática, la situación es más drástica: Con más de la mitad de la tabla ocupada, no hay garantías de encontrar una celda vacía (antes si el tamaño no es primo). Se demuestra que con la mitad de la tabla vacía, siendo su tamaño primo, siempre encontraremos una celda vacía al insertar.
36 y agrupamientos La exploración cuadrática elimina el problema del agrupamiento primario que padece la exploración lineal. Pero los elementos dispersados a la misma posición probarán en las mismas celdas alternas (agrupamiento secundario). Se trata de un defecto teórico. Los resultados prácticos indican que se producen, en general, menos de medio intento adicional por búsqueda.
37 Ejemplo de dispersión cerrada con exploración cuadrática (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana
38 Ejemplo de dispersión cerrada con exploración cuadrática (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana
39 Ejemplo de dispersión cerrada con exploración cuadrática (i) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana Tabla de dispersión después de insertar José: Luis Ana José
40 Ejemplo de dispersión cerrada con exploración cuadrática(ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Olga Luis Ana José
41 Ejemplo de dispersión cerrada con exploración cuadrática(ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Olga Luis Ana José Tabla de dispersión después de insertar Rosa: Olga Luis Ana José Rosa
42 Ejemplo de dispersión cerrada con exploración cuadrática(ii) Valores de la función de dispersión: hash(ana,11) =7 hash(luis,11)=6 hash(josé,11)=7 hash(olga,11)=7 hash(rosa,11)=6 hash(iván,11)=6 Tabla de dispersión después de insertar Olga: Olga Luis Ana José Tabla de dispersión después de insertar Rosa: Olga Luis Ana José Rosa Tabla de dispersión después de insertar Iván: Olga Iván Luis Ana José Rosa
43 con exploración doble Para la resolución de colisiones aplicamos una segunda función de dispersión, en general: f(i) = i h 2 (x). La función nunca debe evaluarse a cero. Y es importante que todas las celdas puedan ser intentadas. Una función como h 2 (x) = R (x mod R), con R un número primo menor que el tamaño de la tabla, funcionará bien. Hay que asegurarse de que el tamaño de la tabla sea primo.
44 Ejemplo de dispersión cerrada con exploración doble (i) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Ana: Ana
45 Ejemplo de dispersión cerrada con exploración doble (i) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana
46 Ejemplo de dispersión cerrada con exploración doble (i) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Ana: Ana Tabla de dispersión después de insertar Luis: Luis Ana Tabla de dispersión después de insertar José: Luis Ana José
47 Ejemplo de dispersión cerrada con exploración doble (ii) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Olga: Olga Luis Ana José
48 Ejemplo de dispersión cerrada con exploración doble (ii) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Olga: Olga Luis Ana José Tabla de dispersión después de insertar Rosa: Olga Rosa Luis Ana José
49 Ejemplo de dispersión cerrada con exploración doble (ii) Valores de la función de dispersión: Ana Luis José Olga Rosa Iván h 1 (x,11) h 2 (x,11) = 5 h 1 (x,11)% Tabla de dispersión después de insertar Olga: Olga Luis Ana José Tabla de dispersión después de insertar Rosa: Olga Rosa Luis Ana José Tabla de dispersión después de insertar Iván: Iván Olga Rosa Luis Ana José
Tablas de dispersión (hash tables)
Tablas de dispersión (hash tables) La dispersión es una técnica empleada para realizar inserciones, eliminaciones y búsquedas en un tiempo promedio constante. La estructura de datos ideal para la tabla
Tablas de Dispersión (Hashing Tables)
Tablas de Dispersión (Hashing Tables) Las tablas de dispersión o hashing tables (en inglés) es una técnica que se utiliza para implementar inserciones, eliminaciones y búsquedas en un tiempo medio constante.
Hashing (Funciones de Dispersió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
Esquema básico de una Tabla de Dispersión
3 Tablas de Dispersión Estructura de datos para gestionar colecciones de elementos donde la búsqueda de un elemento puede hacerse en O(1) en un alto porcentaje de casos - mejora el tiempo de búsqueda en
Análisis y Diseño de Algoritmos Tablas de Hash
Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento
Estructuras de datos: Árboles binarios de
Estructuras de datos: Árboles binarios de búsqueda, Facultad de Informática Universidad de A Coruña Table of Contents Árboles binarios de búsqueda 1 Árboles binarios de búsqueda 2 Table of Contents Árboles
Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función
Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria
Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.
Alonso Ramirez Manzanares Computación y Algoritmos 03.05
Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número
Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica
Tablas Asociativas (Hash) Tablas: filas & columnas de información Una tabla tiene varios campos (tipos de información) Una guía telefónica podría tener campos como: nombre, dirección, número de teléfono,
Indexación y Asociación
Bases de Datos Indexación y Asociación Contenidos Conceptos básicos Indices Ordenados Árboles B+ ArbolesB Asociación estática Bases de Datos Indexación y Asociación 2 Conceptos básicos Los Indices se utilizan
Estructuras de datos: Árboles binarios de
Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge [email protected] Árboles binarios de búsqueda, Table of Contents
Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010
Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del
Estructuras de datos: Pilas, Colas, Listas
Estructuras de datos:,, Dep. de Computación - Fac. de Informática Universidad de A Coruña J. Santiago Jorge [email protected],, Índice 1 2 3,, Referencias bibliográficas M. A. Weiss., pilas y colas. En Estructuras
Tablas de Dispersión
Tablas de Dispersión Representación de datos especialmente diseñada para que las operaciones de acceso, inserción y borra por valor o campo clave sean eficientes (tiempo promedio constante, indepiente
Francisco J. Hernández López
Francisco J. Hernández López [email protected] Contenedores que asocian claves con valores mediante un procedimiento conocido como hash o hashing Clave k A32641 O(1) Índice Clave Valor 0 A12456 Adrián Gordillo
Examen de Estructuras de Datos y Algoritmos. (Modelo 2)
Examen de Estructuras de Datos y Algoritmos (Modelo 2) 17 de junio de 2009 1. Se dispone de una tabla hash de tamaño 12 con direccionamiento abierto y sondeo cuadrático. Utilizando como función hash la
Examen de Estructuras de Datos y Algoritmos. (Modelo 1)
Examen de Estructuras de Datos y Algoritmos (Modelo 1) 17 de junio de 2009 1. Qué rotación se necesita para transformar el árbol de la figura en un árbol AVL? a) Rotación simple izquierda-izquierda b)
Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios
35. Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas
Algoritmos y Estructuras de Datos Ingeniería en Informática
2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas
Capítulo 3. Clasificación en Memoria Secundaria
Capítulo 3. Clasificación en Memoria Secundaria INTRODUCCIÓN Las memorias secundarias (cintas magnéticas, discos duros, ) se caracterizan en general porque el acceso es secuencial. Es decir, en un instante
Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos Página 1 de 6 Programa de: UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas, Físicas y Naturales República Argentina Carrera: Ingeniería en Computación Escuela:
El TAD tabla y las tablas dispersas (o tablas hash) Lección 19
El TAD tabla y las tablas dispersas (o tablas hash) Lección 19 Concepto de Tabla Una tabla es un conjunto o colección de pares c se denomina clave, y v se denomina valor asociado a la clave c En
Algoritmos y Estructuras de Datos I Ejercicios. Tema 3. Árboles
3.1. Explicar por qué es necesario, en la representación de conjuntos mediante árboles trie, utilizar una marca de fin de palabra $ (puesto que podríamos hacer que las palabras del conjunto se correspondieran
Diseño de Conjuntos y Diccionarios con Hashing
Diseño de Conjuntos y Diccionarios con Hashing Representación de Conjuntos y Diccionarios TAD Diccionario(clave, significado) Observadores básicos def?: dicc(clave, significado) bool obtener: clave c dicc(clave,
Procesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
Estructura de Datos Árboles Árboles 2-3
Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo
TAD CONJUNTOS Y MULTICONJUNTOS
TAD CONJUNTOS Y MULTICONJUNTOS INTRODUCCIÓN Qué es un conjunto? Un conjunto en matemática es una colección de objetos. Los objetos no mantienen ninguna relación aparente entre ellos y tampoco están obligados
CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS
CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37 1. INTRODUCCIÓN Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están
Estructuras Dinámicas de datos.
Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos
Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????
Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir
Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas
Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas Departamento de Informática Universidad de Valladolid Curso 2011-12 Grado en Ingeniería Informática Grado en Ingeniería Informática de
Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)
Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)
UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA. Nombre: Estructuras de Datos y Archivos
1 UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA Nombre: Estructuras de Datos y Archivos Código: CC- 672 Fecha Actualización: 30/07/2008 Unidad Responsable: Departamento
INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE ESTUDIOS PROFESIONALES EN INGENIERÍA Y CIENCIAS FÍSICO MATEMÁTICAS PROGRAMA SINTÉTICO
CARRERA: Ingeniería en Computación INSTITUTO POLITÉCNICO NACIONAL PROGRAMA SINTÉTICO ASIGNATURA: Estructura de Datos. SEMESTRE: Tercero OBJETIVO GENERAL: El alumno diseñará programas relacionando problemas
Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas
Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación
1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:
PROGRAMACIÓN DINÁMICA RELACIÓN DE EJERCICIOS Y PROBLEMAS 1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila /1 para los siguientes casos: a. Mochila de capacidad W=15:
Estructura de datos y de la información Boletín de problemas - Tema 10
Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico
TEMA 3 TRANSFORMACIÓN DE CLAVES (HASHING)
TEMA 3 TRANSFORMACIÓN DE CLAVES (HASHING) o como encontrar, con el mínimo esfuerzo, una clave dada dentro de un conjunto de elementos. p-1- OBJETIVOS DE ESTE CAPITULO: Concepto de Hashing (Dispersión).
Procesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
INFORMATICA II PRIMER PARCIAL
Grupo 1 INFORMATICA II PRIMER PARCIAL Hacer un programa en C o C++ que realice lo siguiente: a. Almacenar en un archivo binario 100 juegos de valores compuestos por un valor entero, un número real y una
Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63
y B + 3.8 y B+! Problema de los ABB cuando se usa almacenamiento secundario:! la búsqueda de un elemento requeriría muchos accesos a disco (un acceso a disco es extremadamente lento si lo comparamos con
A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES
Capitulo 5. Arboles 1. Al recorrer el siguiente árbol en se visitan más nodos para llegar al número 38. Justifique su respuesta mostrando cada uno de los recorridos. Tipo de Recorrido Recorrido A) PREORDEN
6. El TDA Lista Implementación con listas enlazadas. es de tipo genérico T. Pueden existir elementos repetidos (a diferencia de los conjuntos).
6. El TDA Lista 6.1. Definición 6.2. Operaciones del TDA 6.3. Implementación con vectores 6.4. Implementación con listas enlazadas 6.5. Comparativa Bibliografía: -Weiss - Aho, Hopcroft y Ullman 6.1. Definición
Splines (funciones polinomiales por trozos)
Splines (funciones polinomiales por trozos) Problemas para examen Interpolación lineal y cúbica 1. Fórmulas para la interpolación lineal. Dados t 1,..., t n, x 1,..., x n R tales que t 1
Implementación de diccionarios sobre Trie en C++
Implementación de diccionarios sobre Trie en C++ Algoritmos y Estructuras de Datos II 2. do cuatrimestre de 2016 Introducción Vamos a implementar una interfaz de diccionario en C++ La representación interna
Estructuras de datos: Conjuntos disjuntos
Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge [email protected] Referencias bibliográficas G. Brassard y T. Bratley. Estructura de datos. En Fundamentos
TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica
TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y
Complejidad computacional (Análisis de Algoritmos)
Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución
Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 04: TAD Lista M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido TAD Lista Descripción del TAD Lista
CAPÍTULO 2 NÚMEROS PSEUDOALEATORIOS
CAPÍTULO 2 NÚMEROS PSEUDOALEATORIOS SOFTWARE PARA LA GESTIÓN DE PRODUCCIÓN Y OPERACIONES 10MO IPO LOS NÚMEROS PSEUDOALEATORIOS Para poder realizar una simulación que incluya variabilidad dentro de sus
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.
Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.
Lógica: Algoritmo: Archivo: Base de datos: Bit:
Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones
Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios
Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios
Capítulo 8. Árboles. Continuar
Capítulo 8. Árboles Continuar Introducción Uno de los problemas principales para el tratamiento de los grafos es que no guardan una estructura establecida y que no respetan reglas, ya que la relación entre
Criptografía de clave pública Sistemas basados en el problema de la mochila
de la la La Criptografía de clave pública Sistemas basados de la DSIC - UPV (DSIC - UPV) de la 1 / 21 Contenidos del tema de la la La 1 Características de los sistemas de clave pública Principios para
Métodos de ordenamiento:
Métodos de ordenamiento: 0) Intercambio: a) Idea: El algoritmo de intercambio aunque es el más sencillo de implementar es uno de los más ineficientes en rendimiento. Se basa en la idea de buscar cada vez
TEMA 0 REPASO DE CONCEPTOS BÁSICOS TEST PARA AUTOEVALUACIÓN DEL ALUMNO
TEMA 0 REPASO DE CONCEPTOS BÁSICOS TEST PARA AUTOEVALUACIÓN DEL ALUMNO NOTA: Sólo hay una respuesta válida. Responder a las preguntas justo en el orden en que están planteadas. A) Fundamentos de Matemáticas:
ÍNDICE 1. Índice Listas ordenadas Operaciones permitidas Pilas Operaciones permitidas...
ÍNDICE 1 Índice Índice 1 1. Introducción 2 2. Estructuras de datos 3 2.1. Consideraciones generales a todas las estructuras de datos......... 3 2.2. Listas...................................... 3 2.2.1.
Lista Simple con Puntero al Principio y Puntero al Final
Unidad 3 Estructuras de Datos Avanzadas Introducción Hasta el momento se estudiaron las siguientes estructuras estáticas y dinámicas básicas para representar diferentes colecciones de elementos: Arreglo
Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS
Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario
La máxima distancia entre dos nodos de un árbol está dada por alguna de las 3 siguientes: La máxima distancia entre dos nodos del subárbol izquierdo.
Dado un árbol binario cualquiera, calcular la máxima distancia entre dos nodos. El algoritmo debe funcionar en orden de complejidad, siendo n la cantidad de nodos. Idea del algoritmo: La máxima distancia
Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 5: Subcapa de acceso al medio
Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es CAPÍTULO 5: Subcapa de acceso al medio ÍNDICE Curso 2002-2003 - Redes (IS20) -Capítulo 5 1 Tipos de redes: de difusión y
Ejercicios del Tema 3 Estructuras jerárquicas: Árboles
ALGORITMOS Y ESTRUCTURAS DE DATOS II Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Ejercicios del Tema 3 Estructuras jeráruicas: Árboles Árboles n-arios 1.
Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom
Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Tablas hash o de dispersión Función
Estructura de Datos. Códigos de Huffman. Primer Semestre, Compresión de Archivos. Compresión de Archivos
Estructura de Datos Códigos de Huffman Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2 Los algoritmos estudiados hasta ahora han sido diseñados, en general, para que utilicen el menor tiempo
Tablas Hash y árboles binarios
Tablas Hash y árboles binarios Algoritmos Tablas hash Árboles Binarios Árboles Balanceados Tablas Hash Introducción Las tablas hash son estructuras tipo vector que ayudan a asociar claves con valores o
Tema 7. Tablas de Dispersión
Tema 7. Tablas de Dispersión 1. Introducción 2. Funciones de dispersión 3. Resolución de colisiones Exploración lineal Exploración cuadrática Encadenamiento 4. Análisis de costes 5. Implementaciones en
ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
CRITERIOS DE SELECCIÓN DE MODELOS
Inteligencia artificial y reconocimiento de patrones CRITERIOS DE SELECCIÓN DE MODELOS 1 Criterios para elegir un modelo Dos decisiones fundamentales: El tipo de modelo (árboles de decisión, redes neuronales,
Tema 2. Conjuntos y Diccionarios.
Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones. 2. Conjuntos y diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis
Programación II Árboles binarios de búsqueda (ABB)
Programación II Árboles binarios de búsqueda (ABB) Definición Un árbol binario de búsqueda(abb) a es una estructura de datos de tipo árbol binario en el que para todos sus nodos, el hijo izquierdo, si
