Tablas (Diccionarios). Modelo matemático

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tablas (Diccionarios). Modelo matemático"

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

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 detalles

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

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

Más detalles

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 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 detalles

Hashing (Funciones de Dispersión)

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

Más detalles

Tablas de dispersión (hash tables)

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

Más detalles

FICHEROS 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. 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 detalles

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

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.

Más detalles

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

Programació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)

Á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 detalles

Capítulo 3. Clasificación en Memoria Secundaria

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

Más detalles

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 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 detalles

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 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 detalles

Estructuras de datos: Tablas de dispersión

Estructuras 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 detalles

Indexación y Asociación

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

Más detalles

Esquema básico de una Tabla de Dispersión

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

Más detalles

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

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

Más detalles

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

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

Más detalles

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

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

Más detalles

TEMA 3 TRANSFORMACIÓN DE CLAVES (HASHING)

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).

Más detalles

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

Tabla 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 detalles

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

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: 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 detalles

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

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,

Más detalles

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

Tabla 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 detalles

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

Archivos 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 detalles

Tablas de Dispersión

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

Más detalles

El nivel Interno. Índice Tema 3

El 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 detalles

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Eduardo 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 detalles

FICHEROS 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. 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 detalles

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

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

Más detalles

El TAD Árbol. El TAD Árbol

El 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 detalles

Segundo Parcial de Programación 2 7 de junio de 2017

Segundo 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 detalles

TEMA 2 Estructuras de datos lineales

TEMA 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 detalles

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

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

Más detalles

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

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)

Más detalles

Tablas de Dispersión (Hashing Tables)

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.

Más detalles

ESTRUCTURAS DE DATOS Y ALGORITMOS

ESTRUCTURAS 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 detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

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

Más detalles

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 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 detalles

Diseño de Conjuntos y Diccionarios con Hashing

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,

Más detalles

Tema 2. Conjuntos y Diccionarios

Tema 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 detalles

Francisco J. Hernández López

Francisco 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 detalles

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

ESTRUCTURA 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 detalles

2. Desarrolla una especificación informal genérica para el TAD árbol binario. Incluir operaciones para crear y modificar el árbol.

2. 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 detalles

Bases de Datos Multimedia

Bases 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 detalles

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

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 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 detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

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

Más detalles

Algorí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) 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 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 detalles

Este 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).

Este 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 detalles

Estructuras Dinámicas de datos.

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

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

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

Más detalles

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

ESTRUCTURA 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 detalles

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 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 detalles

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

OCW-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 detalles

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

Tema 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 detalles

95.12 Algoritmos y Programación II Práctica 7: árboles

95.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 detalles

Estructura de Datos. Índice

Estructura 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 detalles

GENERACIÓN DE ÍNDICES ANALÍTICOS DE DOCUMENTOS

GENERACIÓ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 detalles

Tema 10. Indexación y asociación

Tema 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 detalles

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 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 detalles

BUSQUEDA 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 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 detalles

Estructuras dinámicas lineales (i)

Estructuras 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 detalles

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 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 detalles

Introducción a los árboles. Lección 11

Introducció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 detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. 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 detalles

Registros Un campo: Registro:

Registros 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 detalles

Unidad III: Estructuras lineales

Unidad 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 detalles

Estructuras de Datos y Algoritmos

Estructuras 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 detalles

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

Tema 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 detalles

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.

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. 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 detalles

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

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:

Más detalles

ASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz TEMA 4. Montículos binarios (heaps)

ASIGNATURA: (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 detalles

Asignatura: Estructura de la Información. Curso: 2009/2010 primer semestre

Asignatura: 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 detalles

Funcionamiento de las computadoras

Funcionamiento 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 detalles

Tema 10. Árboles. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía

Tema 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 detalles

Tarea 5 Gestión de Archivos

Tarea 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 detalles

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

Ingeniera 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 detalles

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

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

Más detalles

Lista Simple con Puntero al Principio y Puntero al Final

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

Más detalles

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

DEFINICIONES 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 detalles

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

SEMINARIO 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 detalles

Análisis del caso promedio El plan:

Aná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 detalles

Profesor: José Miguel Rubio L.

Profesor: 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 detalles

La eficiencia de los programas

La 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 detalles

Tema 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 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 detalles

Otras estructuras de datos

Otras 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 detalles

1.2.4 Listas enlazadas

1.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 Á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 detalles

1.3 Tipos de datos elementales, operadores y comandos utilitarios

1.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 detalles

Estructura de Datos y de la Información

Estructura 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 detalles

Algoritmos y Programación II Curso 2006

Algoritmos 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 detalles

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

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

Más detalles

Tablas Hash y árboles binarios

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

Más detalles

Tema 2. Conjuntos y Diccionarios.

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

Más detalles

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Un á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 detalles

Programa 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. 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 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 detalles

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES 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