Tablas (Diccionarios). Modelo matemático
|
|
- Cristóbal Aguilar Giménez
- hace 5 años
- Vistas:
Transcripción
1 Tablas (Diccionarios). Modelo matemático Asumimos un conjunto de claves C y un conjunto de valores V. Matemáticamente una tabla es una aplicación t : C V. El grafo de dicha función es un conjunto de pares clave/valor {(c, v) c C, v V, t(c) = v}. Las operaciones típicas son: inserción de un par (c, v), obtención del valor asociado a una clave y borrado de un par (c, v) dada la clave c En general, el dominio de esta función t no tiene porque ser igual a C, es decir, puede haber claves que no tengan asociado un valor. Para resolver este problema técnico hay dos alternativas: pensar en t como una función parcial que no está definida para estos valores ajenos al dominio, o bien, considerar que el dominio en todo C pero que en V hay un elemento especial (indefinido) tal que t(c) = para aquellas claves c que no están en la tabla. 230 Las tablas aparecen en programación en distintos contextos: tablas de símbolos de los compiladores (y diccionarios en general): para las variables (y para las funciones) se pueden almacenar pares (nombre de la variable, valor) (también puede almacenarse información de tipo); bases de datos: la localización de los registros suele hacerse a través de tablas hash; directorios de ficheros en un sistema operativo; en general, no son adecuadas para operaciones que dependen del orden relativo de los elementos: extraer el máximo o el mínimo, o hacer un recorrido en orden. Las técnicas para implementar tablas y conjuntos tienen mucho en común. Pero para los conjuntos son interesantes operaciones de unión, intersección, diferencia, etc, que no tienen mucho sentido en tablas. La operación esencial es la consulta que es la que trataremos de mejorar, aun a costa de empeorar algo el rendimiento de las restantes. 231
2 Operaciones en tablas crear una tabla vacía; insertar una pareja (clave, valor); comprobar si una clave está en la tabla; consultar el valor asociado a una clave; borrar el valor asociado a una clave; comprobar si la tabla está vacía; Algunas notas sobre estas operaciones: En principio asumimos que la clave es única, es decir, dada una clave sólo puede haber un valor asociado a ella (aunque distintas claves pueden tener asociado el mismo valor). En ciertas aplicaciones puede ser conveniente admitir repeticiones, pero entonces la función t quedaría definida t : C P(V ), es decir, para una clave devuelve un conjunto de valores. 232 Asumimos que la inserción de un par (c, v) en una tabla que ya contiene otro par con esa clave reemplaza el valor antiguo con el nuevo. También puede ser interesante admitir la inserción con una clave ya existente combinando el valor antiguo con el nuevo (por ejemplo, sumando los valores para acumular un resultado). La operación de consulta será una operación parcial que producirá un error cuando no exista valor asociado a la clave de búsqueda. Por ello se incluye la operación esta que permite determinar si una clave está en el dominio de las claves de la tabla. En la práctica ambas operaciones pueden combinarse en una sola que devuelva un par (b, v): si b = true (la clave existe en la tabla) en v se devuelve el valor asociado; si b = false el valor de v carece de significado. 233
3 Especificación algebraica TAD TTabla<Clave::EQ, Valor::ANY> USA Bool OPERACIONES crea: -> TTabla<Clave,Valor> // gen inserta: (TTabla<Clave,Valor>,Clave,Valor) -> TTabla<Clave,Valor> // gen consulta: (TTabla<Clave,Valor>,Clave) -> Valor // obs parc borra: (TTabla<Clave,Valor>,Clave) -> TTabla<Clave,Valor> // mod esta: (TTabla<Clave,Valor>,Clave) -> Bool // obs esvacia: TTabla<Clave,Valor> -> Bool // obs ECUACIONES: pt t<-ttabla<clave,valor>, i,j<-clave; x,y<-valor // purificadoras para evitar repeticiones // reemplazamiento de un valor inserta(inserta(t,c1,v1),c2,v2)=inserta(t,c1,v2) <== si c1==c2 // conmutatividad inserta(inserta(t,c1,v1),c2,v2)=inserta(inserta(t,c2,v2), c1, v1) <== c1/=c2 234 esvacia(crea)=true esvacia(inserta(t,c,v))=false esta(crea,c)=false esta(inserta(t,c1,v),c2)= (c1==c2) esta(t,c2) consulta(inserta(t,c1,v),c2)=v <== c1==c2 consulta(inserta(t,c1,v),c2)=consulta(t,c2) <== c1/=c2 borra(crea,c)=crea // no damos error, simplemente lo dejamos como esta borra(inserta(t,c1,v),c2)=borra(t,c2) <== c1==c2 borra(inserta(t,c1,v),c2)=inserta(borra(t,c2),c1,v) <== c1/=c2 ERRORES: consulta(crea,c)=error 235
4 Implementación(es). En busca de la eficiencia La forma más elemental de implementar una tabla es mediante un vector v[0..n 1] de modo que la clave se asocie al propio índice del vector y el valor se almacena en la componente correspondiente de dicho vector. Pero: se necesita una función inyectiva que asocie cada clave un valor 0..N 1 además este rango 0..N 1 debe ser razonablemente pequeño Si todo esto es posible se tiene complejidad constante para todas las operaciones!!... pero no es habitual que sea posible (p.e. tabla de símbolos de un compilador). Si las claves son de un tipo ordenado puede implementarse como: listas (o secuencias) de pares ordenadas por la clave. Complejidad lineal para las operaciones que requieren búsqueda. árboles binarios de búsqueda (preferiblemente equilibrados: AVL o similar). Basta con modificar ligeramente la estructura de los nodos para almacenar pares clave-valor. Complejidad logarítmica. Normalmente es posible definir una relación de orden para las claves. 236 Por eficiencia, sería bueno poder llevar a cabo la primera implementación basada en un vector... pero no es habitual disponer de una función inyectiva que: 1. transforme cada clave en un valor del rango 0..N 1, y que además 2. dicho rango sea relativamente pequeño 3. y además que sea una función muy rápida de calcular Sin embargo, casi siempre es posible encontrar una función h que cumpla los requisitos 1), 2) y 3) si permitimos que no sea inyectiva!! La idea es trabajar con una función h que distribuya las claves en el rango 0..N 1 (h : C {0..N 1}) del modo más uniforme posible, i.e., que disperse las claves en ese rango: función hash o función de dispersión. dadas dos claves k1 y k2 la probabilidad de que h(k1) = h(k2) será bastante baja; pero la coincidencia puede ocurrir y en este caso diremos que k1 y k2 son claves sinónimas y que se ha producido una colisión. Se necesitará una política de resolución de colisiones. 237
5 Claves Subrango [0..N 1] Funcion Hash N 2 N 1 La función hash transforma un domino de claves potencialmente enorme en un pequeño subrango de los enteros (va de muchos a pocos). Por ejemplo, para guardar información de los alumnos de una clase en un vector de tamaño N: podemos tomar como clave el DNI del alumno (el valor será un agregado con nombre, apellidos, dirección, etc) la función hash puede obtener el resto de la división del DNI entre N 238 En el ejemplo anterior, esta función hash hará una dispersión de claves razonablemente buena. Con ello conseguimos: esta estructura en el caso medio (bajo ciertos supuestos) se comporta esencialmente como un array, i.e., como una estructura de acceso directo con tiempos de acceso constantes!! en el peor caso, esa complejidad puede empeorar considerablemente (lineal) que estemos en uno u otro caso depende fundamentalmente de la función hash, que es la que tendremos que codificar cuidadosamente En definitiva, las tablas hash o tablas de dispersión tienen un enfoque muy pragmático (se trata de que en la práctica los accesos sean muy rápidos). Aun tenemos un tema pendiente: la resolución de colisiones. En el ejemplo que estamos trabajando es fácil ver como puede producirse una de estas colisiones: suponemos N = 100 (tamaño del vector) y las claves k1 = , k2 = Estas claves son sinónimas y la función hash devuelve para ambas el índice
6 Resolución de colisiones Supongamos una la tabla contiene el par (k1, v1) tal que h(k1) = i y queremos insertar el par (k2, v2) tal que h(k2) = i, i.e., hay una colisión de claves. Hay varias formas de resolver la situación: buscar otra posición libre en el vector para almacenar el nuevo par (hash cerrado); reubicar el nuevo par en un área de desbordamiento disjunta del vector principal. A su vez, hay varias formas de implementar esta idea. La más inmediata es hacer que las componentes del vector no almacenen los pares clave-valor, sino la entrada a una estructura secundaria (por ejemplo una lista o un árbol de búsqueda) en donde se almacenan dichos pares (hash abierto). Ambas soluciones tienen sus ventajas e inconvenientes. Nótese además que la decisión de seguir uno u otro camino determina también los algoritmos de búsqueda y borrado. 240 Hash abierto & cerrado en ambos casos es necesario almacenar el par clave-valor (no basta con el valor) porque a una misma posición del vector pueden ir a parar distintas claves mediante la función hash; también en ambos casos es necesario determinar a priori el tamaño N del vector de almacenamiento, aunque este tamaño tiene distintas consecuencias en uno y otro tipo de hash: definimos la tasa de ocupación o factor de carga de la tabla como número de pares clave-valor almacenados en la tabla tamaño del vector (N) si la tabla es cerrada la tasa de ocupación a lo sumo es 1, es decir, el número de pares almacenados está acotado por el tamaño del vector; si el hash es abierto y se utiliza una lista enlazada como estructura secundaria, la tasa de ocupación puede crecer tanto como se quiera: no se limita el número de pares almacenados. 241
7 desde el punto de vista de la programación la resolución de colisiones en el hash abierto es inmediata: en realidad se encarga el TAD secundario de la inserción o la búsqueda (o el borrado) la resolución de colisiones en el hash cerrado plantea dificultades adicionales como veremos. 242 Funciones de dispersión Este es el punto clave para el rendimiento de las tablas hash. Las funciones de dispersión deben: poder calcularse muy eficientemente minimizar el número de colisiones: debe hacer una distrución uniforme del dominio de las claves en el rango 0..N 1 El dominio de las claves en principio puede ser de cualquier tipo numérico o alfanumérico, pero es muy sencillo convertir o codificar cualquiera de estos tipos como un valor entero: si las claves ya son de tipo entero no hay más que hacer; si son de tipo real, se pueden truncar o redondear (incluso tomando algunos decimales si se estima que puede mejorar la uniformidad de la función hash); si son de tipo carácter se puede tomar el código ASCII asociado; si son cadenas de texto se puede tomar por ejemplo la suma de los ASCII de cada carácter 243
8 Una vez que se tiene una codificación numérica k IN para la clave se aplica la función hash. Hay distintos métodos para implementar una función hash: método división: h(k) = k %N. La elección de N es crítica para el rendimiento de la tabla (es buena idea tomar un número primo); método de la multiplicación... más complicado (ver Heileman). Según lo que hemos dicho una clave c se transforma en un índice i {0..N 1} en dos pasos: c codificación código IN hash índice {0..N 1} En lo que sigue, por simplicidad, asumimos que la función hash hace todo el proceso codificación+hash propiamente dicho. 244 Hash Abierto. Implementación De cara a la implementación haremos algunas consideraciones prácticas: Implementamos una función privada sobrecargada, cod, para codificar (convertir a entero) claves numéricas y alfanuméricas. La función hash invocará a esta codificación y luego calculará el resto de la división entera entre N (una función hash sencilla). El tamaño del vector de almacenamiento podrá especificarse en la constructora (en caso contrario se toma uno por defecto, p.e. 17). Esto implica que el vector de almacenamiento será un vector dinámico de punteros, i.e., un puntero a puntero!! De cada componente del vector colgará una lista enlazada (implementada ad hoc). En realidad podríamos colgar cualquiera de las estructuras de almacenamiento/búsqueda que hemos visto. 245
9 Hash cerrado Todos los elementos (pares clave-valor) se almacenan en el propio vector, sin estructuras adicionales. Para insertar un par (c, v) el índice h(c) que devuelve la función hash para un par (c, v) se interpreta como la entrada primaria a la tabla: la posición que le corresponde en primera instancia. si dicha posición está libre se copia el par en la misma si está ocupada se aplica una función de rehash (redispersión) para calcular una entrada secundaria y se repite el proceso: si esta libre se copia ahí; si no se vuelve a aplicar la función de rehash hasta encontrar una posición libre. En general produciremos una ruta i0 = h(c), i1, i2,..., im tal que la posición im está libre La operación de búsqueda sigue un camino similar: va probando índices (primero con hash y luego con rehash) hasta encontrar la clave o decidir que no está presente en la tabla. 246 La función de rehash debe cumplir: Rehash (redispersión) para toda clave c debe poder calcularse la secuencia de pruebas i0, i1,..., in 1 {0..N 1} esta secuencia de pruebas debe ser una permutación de (0, 1, 2,..., N 1): de este modo al insertar un elemento, si hay un hueco libre, eventualmente se encontrará. Dada un vector v[0..n 1] y una clave c, la ruta de c es un segmento inicial i0, i1,..., ik de la sucesión de pruebas i0, i1,..., in 1 {0..N 1} asociada a c de modo que: las posiciones v[i0]..v[ik 1] no están vacias y no contienen la clave c v[ik] está vacía o contiene un elemento con clave c. 247
10 Que hacer cuando se borra un elemento? Las rutas han de cumplir estas propiedades, i.e., no pueden dejar huecos libres (se truncaría la ruta). se podría hacer un desplazamiento de todos los elementos de la ruta posteriores al borrado a la posición anterior en la ruta muy costoso!! marcar el hueco con un valor especial: posición borrada. Incluiremos un campo adicional en cada componente del vector para indicar si esa dicha componente está: ocupada, libre o borrada. 248 Para las funciones de redispersión se busca que sean rápidas de calcular y además que las rutas sean lo más cortas posibles (en promedio). Lo más sencillo es hacer redispersión lineal: dada una clave c definimos su secuencia de pruebas como: i0 = h(c) im = (im 1 + 1) %N, para 1 m < N O de modo equivalente im = (h(c) + m) %N Pero hay un problema: supongamos N = 17; insertamos un par de clave 6 que irá a la componente 6; luego un elemento de clave 23 que va a la misma componente; luego otro de clave 40, a la misma componente... se produce un agrupamiento (primario) debido a las colisiones. Estos agrupamientos empeoran el rendimiento de la tabla. 249
11 Algoritmos de redispersión Según hemos visto, la redispersión lineal produce un agrupamiento de los elementos, i.e., hay solapamiento entre las secuencias de pruebas correspondientes a claves distintas. Formalmente, un método de redispersión produce agrupamiento k-ario si el número de series de pruebas distintas módulo rotaciones (permutaciones circulares) es Θ(N k 1 ). Así: la redispersión lineal produce un agrupamiento primario (1-ario) porque hay N 1 1 = N 0 = 1 posible secuencia de pruebas: hay N posibles secuencias que son en realidad rotaciones de la secuencia 0, 1, 2..., N 1. Es un mal método de redispersión En la redispersión lineal hay N posibles secuencias de pruebas (1 módulo rotaciones). Lo ideal es que un método de redispersión produzca las N! posibles secuencias de prueba, pero esto no es fácil de conseguir. 250 Hay otros métodos más sofisticados de redispersión (véase Heileman): redispersión cuadrática: soluciona el problema del agrupamiento primario, pero tiene agrupamiento secundario; redispersión doble: se utilizan dos funciones de dispersión (ver Heileman). Soluciona el agrupamiento primario y secundario. redispersión coalescente. Es un enfoque distinto, parecido a la dispersión abierta: cada componente del vector almacena un elemento y un índice a otra componente de la tabla. una variante de este sistema es dividir la tabla en zona principal y zona de excedentes. La función hash produce índices de la zona principal y cuando se produce colisión, el par se almacena en la zona de excedentes. 251
12 Otra posibilidad A pesar de versatilidad que pueda tener el hash abierto, el cerrado puede ser especialmente útil cuando la tabla deba mantenerse en almacenamiento secundario. Hay una alternativa muy interesante para hacer la redispersión: trabajar siempre con la misma secuencia de pruebas para la redispersión. Idea: las componentes de la tabla contienen un campo adicional: un índice 0..N 1 que indica el siguiente en la secuencia de pruebas (-1 si es el último); la secuencia de pruebas (una permutación aleatoria de los índices 0..N 1) se genera al principio: partimos de un vector v[0..n 1] tal que v[i] = i para i {0..N 1}; se hace un recorrido intercambiando la componente i con otra aleatoria; la permutación resultante será la secuencia de pruebas, que se almacena en una lista enlazada l; 252 para insertar un elemento se aplica la función hash. Si la componente resultante está vacía se inserta ahí; si no, se recorre la secuencia dada por los índices del campo siguiente hasta encontrar el elemento o llegar al final. En este caso se toma el primer índice i de l (y se quita); si la componente v[i] está libre se inserta ahí y si no, se toma el siguiente de la lista l. Además se actualiza el campo siguiente de la tabla para poder reconstruir la búsqueda. la búsqueda se hace haciendo dispersión y luego recorriendo los campos siguiente de la tabla; para borrar también se sigue la secuencia dada por el campo siguiente. Al borrar un elemento hay que actualizar dicho campo y reinsertar la posición liberada en la lista l. 253
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
Más detallesAlgoritmos 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
Más detallesTema 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 edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función
Más detallesHashing (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
Más detallesTablas 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
Más detallesFICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.
FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 4. Técnicas de Dispersión. Definición y Manejo. 1.- Introducción. 2.- Funciones de Dispersión. 3.- Saturación Progresiva. 4.- Empaquetado
Más detallesEstructura 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.
Más detallesProgramación TADs Colecciones Conjuntos, Diccionarios y Tablas
Programación 2 8 - TADs Colecciones Conjuntos, Diccionarios y Tablas 1 El TAD SET (Conjunto) En el diseño de algoritmos, la noción de conjunto es usada como base para la formulación de tipos de datos abstractos
Más detallesÁ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)
Más detallesCapí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
Más detallesEl 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
Más detallesProgramació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
Más detallesEstructuras de datos: Tablas de dispersión
Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge sjorge@udc.es Referencias bibliográficas M. A. Weiss. Dispersión. En Estructuras de datos y algoritmos,
Más detallesIndexació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
Más detallesEsquema 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
Más detallesAná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
Más detallesAlgoritmos 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
Más detallesAlonso 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
Más detallesTEMA 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).
Más detallesTabla de Símbolos. Programación II Margarita Álvarez
Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados
Más detalles1. Características de la organización direccionada 2. Tipos de organización direccionada 3. Funciones de Transformación 4. Gestión de desbordamientos
Tema 3: Organización Direccionada 1. Características de la organización direccionada 2. Tipos de organización direccionada 3. Funciones de Transformación 4. Gestión de desbordamientos Tema 3.1: Organización
Más detallesTablas 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,
Más detallesTabla de Símbolos. Programación II Margarita Álvarez
Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados
Más detallesArchivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.
Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario
Más detallesTablas 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
Más detallesEl nivel Interno. Índice Tema 3
El nivel Interno Índice Tema 3 iel nivel Interno...1 Introducción...2 Etapas de acceso a la base de datos...2 Gestor de Disco...3 Gestor de Ficheros...3 Agrupamiento...4 Interactivos...4 Entrearchivos...4
Más detallesEduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa
Estructura de Datos y de la Información Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Laboratorio de Investigación y Desarrollo en Inteligencia Artificial Departamento de Computación
Más detallesFICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.
FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 3. Estructuras de Almacenamiento Básicas. Definición y Manejo. 1.- Búsqueda de Información. Definición de Clave. 2.- Definición y Manejo
Más detallesEstructuras 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
Más detallesEl TAD Árbol. El TAD Árbol
Objetivos! Presentar el árbol como estructura de datos jerárquica! Estudiar diferentes variantes de árboles, tanto en su especificación como en su implementación Contenidos 3.1 Concepto, definiciones y
Más detallesSegundo Parcial de Programación 2 7 de junio de 2017
Instituto de Computación. Facultad de Ingeniería. Universidad de la República Segundo Parcial de Programación 2 7 de junio de 2017 Problema 1 (30 puntos) Considere un TAD T que permita almacenar a lo sumo
Más detallesTEMA 2 Estructuras de datos lineales
TEMA 2 Estructuras de datos lineales 1 Objetivos Conocer la especificación algebraica de las principales estructuras de datos lineales: Lista, pila y cola Conocer diferentes alternativas sobre el diseño
Más detallesExamen 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
Más detallesExamen 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)
Más detallesTablas 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.
Más detallesESTRUCTURAS DE DATOS Y ALGORITMOS
ESTRUCTURAS DE DATOS Y ALGORITMOS CURSO 2009 PRÁCTICO 8 Nota: al igual que en los prácticos 6 y 7, en los problemas que siguen se usarán los tipos lista y árbol binario, como tipos abstractos, cada uno
Más detallesLó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
Más detallesEstructura 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
Más detallesDiseñ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,
Más detallesTema 2. Conjuntos y Diccionarios
y Diccionarios 2.1. Repaso del TAD Conjunto 2.2. Implementaciones básicas 2.3. El TAD Diccionario 2.4. Las tablas de dispersión 2.5. Relaciones muchos a muchos AED-I 1 2.1. Repaso del TAD conjunto Definiciones
Más detallesFrancisco J. Hernández López
Francisco J. Hernández López fcoj23@cimat.mx 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
Más detallesESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:
Más detalles2. Desarrolla una especificación informal genérica para el TAD árbol binario. Incluir operaciones para crear y modificar el árbol.
1. Escribe una especificación informal para los distintos métodos de ordenación que conozcas. La especificación debe ser genérica, es decir trabajar con elementos de cualquier tipo. En qué se diferencia
Más detallesBases de Datos Multimedia
Bases de Datos Multimedia Capítulo 3 Algoritmos de búsqueda por similitud Este material se basa en el curso de Base de Datos Multimedia del DCC de la Universidad de Chile (Prof. Benjamín Bustos). 3.1 Conceptos
Más detallesEs 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
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 necesidad de realizar inserciones. Por ejemplo si tenemos
Más detallesProcesadores 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
Más detallesAlgorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)
Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico
Más detallesÍ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.
Más detallesEste método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).
PLANTEMAIENTO DEL PROBLEMA Identificación de entradas y salidas Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y
Más detallesEstructuras 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
Más detallesProcesadores 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
Más detallesESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz
Más detallesTEMA 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:
Más detallesOCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION
CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION El sistema de numeración usado habitualmente es el decimal, de base 10, que no es adecuado para ser manejado por el ordenador, fundamentalmente
Más detallesTema 6. Ordenación, búsqueda e intercalación interna
Fundamentos de Programación I Tema 6. Ordenación, búsqueda e intercalación interna Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de
Más detalles95.12 Algoritmos y Programación II Práctica 7: árboles
Notas preliminares 95.12 Algoritmos y Programación II Práctica 7: árboles El objetivo de esta práctica es introducir distintas clases de estructuras de datos arbóreas y algoritmos para manipularlas. Los
Más detallesEstructura de Datos. Índice
TEMA 5. ÁRBOLES (I) 1 Índice 1. Concepto de árbol 2. Árboles binarios 1. Especificación informal del TAD árbol binario 2. Implementación del TAD árbol binario 3. Recorrido de un árbol binario 4. Árboles
Más detallesGENERACIÓN DE ÍNDICES ANALÍTICOS DE DOCUMENTOS
: 1 sesión (del 23 al 27 de mayo de 2005) GENERACIÓN DE ÍNDICES ANALÍTICOS DE DOCUMENTOS Vamos a realizar un programa que genere automáticamente el índice analítico de un documento electrónico dado. Una
Más detallesTema 10. Indexación y asociación
Tema 10. Indexación y asociación Juan Ignacio Rodríguez de León Resumen Conceptos básicos. Índices ordenados. Archivos de índices de árbol B+. Archivos de índices de árbol B. Asociación estática. Asociación
Más detallesTema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz
Tema 8. Listas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat
Más detallesBUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES
BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES BUSQUEDA Cuando se realizan operaciones de búsqueda es preciso
Más detallesEstructuras dinámicas lineales (i)
Estructuras dinámicas lineales (i) Introducción En la lección anterior se explicaron los conceptos de dinámicas y puntero; vimos la forma en que se implementan dichas tanto en la notación algorítmica como
Más detallesTema 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 edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido TAD Lista Descripción del TAD Lista
Más detallesIntroducción a los árboles. Lección 11
Introducción a los árboles Lección 11 Árbol: Conjunto de elementos de un mismo tipo, denominados nodos, que pueden representarse en un grafo no orientado, conexo y acíclico, en el que existe un vértice
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesRegistros Un campo: Registro:
Agenda 1) 2) registros ordenados registros desordenado Agenda 3) Organización de. 4) desordenado Organización de. Un campo: es el elemento de datos básico. Un campo individual contiene un valor único.
Más detallesUnidad III: Estructuras lineales
Unidad III: Estructuras lineales Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos.
Más detallesEstructuras de Datos y Algoritmos
Estructuras de Datos y Algoritmos Tema 5.3. Árboles. Colas con prioridad y Montículos Prof. Dr. P. Javier Herrera Contenido Colas con prioridad Operaciones básicas Especificación de colas con prioridad
Más detallesTema 1. Ordenación, búsqueda e intercalación interna
Fundamentos de Programación II Tema 1. Ordenación, búsqueda e intercalación interna Luis Rodríguez Baena (luis.rodriguez@upsam.es) Universidad Pontificia de Salamanca Escuela Superior de Ingeniería y Arquitectura
Más detallesAPUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Más detalles1. 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:
Más detallesASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz TEMA 4. Montículos binarios (heaps)
TEMA 4. Montículos binarios (heaps) Veamos otro tipo especial de árbol binario, los llamados heaps (montículos), que se pueden representar eficazmente con un vector. Definición: un montículo de máximos
Más detallesAsignatura: Estructura de la Información. Curso: 2009/2010 primer semestre
Código: 75.001 Asignatura: Estructura de la Información Curso: 2009/2010 primer semestre PEC 2 Ejercicio 1 [2 puntos] Apartado 1.1) Describid el funcionamiento de un algoritmo que permita fusionar dos
Más detallesFuncionamiento de las computadoras
Funcionamiento de las computadoras Introducción a las ciencias de la computación Antonio López Jaimes UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA Plan de la presentación El modelo de von Neuman
Más detallesTema 10. Árboles. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía
Tema 10. Árboles http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat
Más detallesTarea 5 Gestión de Archivos
1 Tarea 5 1. Cuál es la diferencia entre un campo y un registro? Un campo es el elemento de datos básico. Un campo individual contiene un valor único, como el apellido de un empleado, una fecha o el valor
Más detallesIngeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Con relación a la Estructura LISTA Indicar objetos reales que se puedan modelar con dicha estructura. Listas de Ordenes de visitas
Más detallesA) 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
Más detallesLista 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
Más detallesDEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS
DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación Un dato
Más detallesSEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2003/2004 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Más detallesAnálisis del caso promedio El plan:
Análisis del caso promedio El plan: Probabilidad Análisis probabilista Árboles binarios de búsqueda construidos aleatoriamente Tries, árboles digitales de búsqueda y Patricia Listas skip Árboles aleatorizados
Más detallesProfesor: José Miguel Rubio L.
Profesor: José Miguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil en Informática Licenciado en Ciencias de la Ingeniería Técnico en Programación Oficina: 3-20 e-mail 1: jose.rubio.l@ucv.cl
Más detallesLa eficiencia de los programas
La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos
Más detallesTema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom
Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Tablas hash o de dispersión Función
Más detallesOtras estructuras de datos
Otras estructuras de datos Programación de Sistemas de Telecomunicación Informática II GSyC Universidad Rey Juan Carlos Noviembre 2016 GSyC - 2016 Otras estructuras de datos 1 c 2016 Grupo de Sistemas
Más detalles1.2.4 Listas enlazadas
1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina
Más detallesÁrboles n-arios de búsqueda. Lección 16
Árboles n-arios de búsqueda Lección 16 Definiciones Los árboles n-arios de búsqueda (árboles de búsqueda múltiples o multicamino) son árboles de grado n definidos de la forma: si el árbol A es vacío, entonces
Más detalles1.3 Tipos de datos elementales, operadores y comandos utilitarios
1.3 Tipos de datos elementales, operadores y comandos utilitarios Tipos de datos elementales M es fundamentalmente un lenguaje para cálculo matricial. Todos los datos que maneja son matrices, pudiendo
Más detallesEstructura de Datos y de la Información
Universidad Rey Juan Carlos Curso 2009/10 Ingeniería Técnica en Informática de Gestión Estructura de Datos y de la Información Examen Final Junio 2010 Fecha: 24-6-2010 Soluciones Ejercicio 1. (Puntuación
Más detallesAlgoritmos y Programación II Curso 2006
Arboles: Un árbol es una colección de elementos, llamados nodos, uno de los cuales se distingue con el nombre de raíz. Los nodos mantienen entre ellos una relación que define una estructura jerárquica
Más detallesANÁ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
Más detallesTablas 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
Más detallesTema 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
Más detallesUn árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:
Instituto Universitario de Tecnología Industrial Rodolfo Loero Arismendi I.U.T.I.R.L.A. ÁRBOLES Sección 3DA Asignatura: Estructura de Datos Lenguaje (C). Ciudad Bolívar _ abril_ 2006. Introducción El siguiente
Más detallesPrograma de teoría. AED I. Estructuras de Datos. 2. Conjuntos y diccionarios. AED II. Algorítmica. 1. Abstracciones y especificaciones
Programa de teoría AED I. Estructuras de Datos 1. Abstracciones y especificaciones 2. Conjuntos y diccionarios 3. Representación de conjuntos mediante árboles 4. Grafos 1. Análisis de algoritmos 2. Divide
Más detallesÁrboles Binarios de Búsqueda. Lección 13
Árboles Binarios de Búsqueda Lección 13 Árboles Binarios de Búsqueda Árboles binarios de búsqueda (abb s): El tipo de los elementos del árbol posee una relación de orden total ( ) Todo árbol vacío es un
Más detallesARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES TEMAS Recorrido de un árbol Máximo y mínimo Búsqueda de un elemento Borrado de un nodo 3 Características ARBOLES - CONCEPTOS Cada elemento del árbol
Más detalles