Documentos relacionados
Estructuras de Datos y Algoritmos. Árboles de Expresión

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Ampliación de Estructuras de Datos

Apuntes de Grafos. 1. Definiciones

Centro de Capacitación en Informática

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

TAD Lineales: Pila, Cola y Lista

Resolución de Problemas

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

Estructuras de datos: Árboles binarios de

Capítulo 12: Indexación y asociación

La ventana de Microsoft Excel

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Base de datos relacional

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Capitulo V Administración de memoria

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

ESTRUCTURA DE DATOS: ARREGLOS

árbol como un conjunto de nodos y líneas

Modulo 1 El lenguaje Java

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Fundamentos de la Programación

Modelos y Bases de Datos

DCU Diagramas de casos de uso

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Introducción a los Tipos Abstractos de Datos

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos Introducción... 24

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004

Tipos Abstractos de Datos

Tipos Abstractos. o Definiciones o TAD String o Concepto de contenedor o Colecciones e Iteradores o Relaciones entre elementos o TAD's contenedores

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

Algoritmos sobre Grafos

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

Curso de Doctorado: Tecnologías de Objetos

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril apoloval@gsyc.es. GSyC Introducción 1

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Tema 4.- Pilas y Colas

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

MODELOS DE RECUPERACION

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

2.2.- Paradigmas de la POO

BASE DE DATOS RELACIONALES

Microsoft Excel Unidad 6. La Hoja de Cálculo

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Operación de Microsoft Word

Capítulo 4 Gestión de memoria

Capítulo 6. Asociaciones y Declaraciones.

14. ÁRBOLES Fundamentos y terminología básica

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

3. COLA DE PRIORIDAD DEFINICION (I)

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Figura 1.1. Figura 1.2

PROGRAMACIÓN ORIENTADA A OBJETOS

BASE DE DATOS UNIVERSIDAD DE LOS ANDES FACULTAD DE MEDICINA T.S.U. EN ESTADISTICA DE SALUD CATEDRA DE COMPUTACIÓN II. Comenzar presentación

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

El palacio de la Alhambra: La primera expansión. El favor de los visires

Tablas internas 1-12

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Inteligencia Artificial II. Razonamiento con ontologías

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

Ejemplos de TAD (tipos simples)

6 Sistemas de Archivos

Tema 4. Gestión de entrada/salida

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Tema 2. Diseño del repertorio de instrucciones

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

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Microsoft Excel. El Documento Excel. Interfase de Programa. Celdas

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

11. Algunas clases estándar de Java (II)

Base de datos en la Enseñanza. Open Office

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

Ingeniería de Software I

Orden y estructuras algebraicas mediante nuevas tecnologías

Práctica 0. Emulador XENON de la computadora CESIUS

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

e-conocimiento Manual de uso

Base de datos en Access

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

Capítulo 1. MANUAL DE USUARIO

Práctica 7. TAD aplicación

EDICIÓN Y FORMATO (II)

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

Matemáticas para la Computación

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Tema 6: Problemas Especiales de Programación Lineal

Transcripción:

4 Introduccin a los tipos abstractos de datos o Definiciones o TAD String o Concepto de contenedor o Colecciones e Iteradores o Relaciones entre elementos o TAD's contenedores Estructuras de datos, curso 2006/07 I.T.Informática de Gestin Universidad de Valladolid Concepto de tipo abstracto de datos (TAD) Tipo abstracto de datos: (TAD) Un conjunto de valores y operaciones asociadas especificados de manera precisa e independiente de la implementacin Objetivo: Separar interfaz (definicin operaciones) de implementacin (representacin de los datos + algoritmos de las operaciones). Notacin: El estado de un TAD viene dado por la secuencia de operaciones realizadas sobre él. La definicin de las operaciones suele darse mediante axiomas y reglas lgicas. 2 1

Ejemplo de definicin de PILA Definicin axiomática (TAD) ESPECIFICACIÓN PILA TAD pila[elemento] OPERACIONES crear : pila esta_vacía : pila booleano cima : pila elemento apilar : pila, elemento pila desapilar : pila pila PRECONDICIONES cima(p) esta_vacía(p) desapilar(p) esta_vacía(p) ECUACIONES esta_vacía( crear ) == T esta_vacía( apilar(p, x) ) == F cima( apilar(p, x) ) == x desapilar( apilar(p, x) ) == p FIN_ESPECIFICACIÓN Definicin por cdigo (no TAD) type PNodo = ^TNodo; TPila = PNodo; TNodo = record Dato :...; Sig : TPila end; function cima(p: TPila) : PNodo; begin Result := P end; procedure apilar(var P: TPila; X: PNodo); begin X^.Sig := P; P := X end; procedure desapilar(var P: TPila); begin P := P^.Sig end; 3 Ejemplo de definicin en Orientacin a Objeto Clase Abstracta (Eiffel) deferred class CONJUNTO[E_] feature {ANY} crear_vacio is deferred ensure esta_vacio end esta_vacio: BOOLEAN is deferred pertenece(e: E_): BOOLEAN is deferred ensure Result implies not esta_vacio end insertar(e: E_) is deferred ensure pertenece(e) and not esta_vacio end quitar(e: E_) is deferred ensure not pertenece(e) end end -- CONJUNTO 4 2

TAD Cadena de caracteres (STRING) "Secuencia ordenada de símbolos (caracteres) definidos por un determinado alfabeto" Aunque es posible considerar un STRING como un contenedor de caracteres, no es el enfoque habitual. En general se consideran como un tipo simple especial. El alfabeto suele definir las reglas de comparacin entre cadenas. Las operaciones básicas de creacin son la concatenacin y la extraccin, insercin y búsqueda de subcadenas. El acceso a caracteres individuales se consideran operaciones secundarias. Se pueden clasificar en mutables (es posible modificar el contenido de una cadena) e inmutables (una vez creadas no se pueden modificar). Es normal que existan clases para representar ambos tipos. Implementaciones: Arrays de caracteres (estilo C Pascal, capacidad fija o variable) Ropes (árboles de subcadenas) Tries Árboles o arrays de sufijos 5 Operaciones básicas del TAD STRING (I) MUTABLES e INMUTABLES: Creacin como copia de otro, de un vector de caracteres, literal, etc. Comparacin con otro STRING Búsqueda de una subcadena: Es una operacin de gran importancia práctica, y existen varios algoritmos para realizarla de manera eficiente. Suponiendo que las cadenas se representan mediante un vector de caracteres, que la cadena tiene longitud n, y la subcadena longitud m, se muestra la eficiencia de alguno de éstos algoritmos: Algoritmo Preproc. Peor caso "Normal" 0 Θ(n m) Rabin-Karp Θ(m) Θ(n m) Knuth-Morris-Prat Θ(m) Θ(n) Boyer-Moore Θ(m) Θ(n) Otras operaciones relacionadas son: Búsqueda de múltiples subcadenas Búsqueda de un patrn de subcadena Búsqueda de zona con mejor ajuste Promedio? Θ(n+m) Θ(n) Θ(n/m) Características Mejor caso Θ(n) Func. dispersin 6 3

Operaciones básicas del TAD STRING (II) MUTABLES e INMUTABLES (sigue): Es posible mejorar la eficiencia de la búsqueda de una subcadena usando representaciones más sofisticadas que el vector de caracteres. En particular, usando árboles de sufijos es posible obtener un tiempo Θ(m) (independiente del tamaño del texto donde se busca). Concatenacin: En inmutables, devolver la cadena concatenada. En mutables, extender la cadena con la otra. Usando listas enlazadas circulares o ropes es posible realizar ésta operacin en O(1). Obtencin de la subcadena que se encuentra en una determinada posicin y longitud. al carácter i-ésimo. MUTABLES slo: de subcadena en una determinada posicin. de un bloque contiguo de la cadena. Modificacin del carácter i-ésimo. 7 Contenedores TADs contenedores: Almacenan informacin sobre varios elementos. No tienen porqué almacenar físicamente a los elementos: pueden almacenar referencias a ellos y/o informacin sobre relaciones entre ellos. Además, es común que los elementos sean "compartidos" por varias estructuras. Criterios de clasificacin: Los elementos se pueden considerar atmicos o divididos en partes relevantes. Puede imponerse requisitos sobre los elementos o alguna parte de ellos: o Equivalencia: Poder saber si dos elementos son iguales. o Comparacin: Poder saber si un elemento es mayor o menor que otro. Puede permitirse elementos repetidos o no. Puede existir una relacin (o no) entre los elementos. Si existe relacin de orden, ésta puede ser externa (decidida por quien usa la estructura) o interna (determinada por los valores de los elementos) 8 4

Implementacin de contenedores La inmensa mayoria de las representaciones de contenedores tan slo hacen uso de los siguientes elementos básicos de construccin (presentes o definibles en prácticamente todos los lenguajes imperativos): Arrays Referencias a elementos: Punteros a variables dinámicas Referencias a objetos s a la posicin donde se encuentra en un array Nombre del fichero y posicin dentro de éste en que se encuentra Funciones resumen dispersin (hash functions): Una funcin que traduce el valor de un elemento a un número, tipicamente en el rango de los enteros de la máquina. No es necesario (ni posible en la mayoría de los casos) que a cada valor de un elemento se le asigne un número distinto. Para ser útiles deben cumplir una serie de requisitos. 9 Contenedores principales - Conjunto "Coleccin de valores sin un orden definido en la que no se permiten elementos repetidos" Los conjuntos se utilizan para clasificar valores en dos categorías: Los que pertenecen al conjunto y los que no pertenecen a él. Las operaciones básicas son: Pertenencia: Comprobar si un valor pertenece al conjunto. Inclusin: Hacer que un valor pertenezca al conjunto. Exclusin: Hacer que un valor no pertenezca al conjunto. También pueden ser importantes las operaciones de combinacin de conjuntos: unin, interseccin, diferencia. El recorrido de los elementos de un conjunto no garantiza ningún orden en particular. Existen muchas posibilidades respecto a la implementacin: Arrays de bits indexados por valor. Tablas de dispersin (Hash tables) Contigua lineal (arrays de valores), ya sea desordenados u ordenados. Árboles binarios equilibrados (Árboles AVL, Red-Black Trees, etc.) Opciones exticas: Tries, Bloom filter, Van Emde Boas Tree. 10 5

Contenedores principales - Lista "Coleccin ordenada de entidades" A diferencia de los conjuntos, en las listas existe una relacin de orden impuesta a los elementos, y se permiten elementos repetidos. Si el orden es interno hablamos de Listas ordenadas. El orden permite asociar los elementos con un conjunto de índices. Existen muchas variantes que difieren en las restricciones que impongamos a las operaciones de acceso, insercin y borrado: En principio basta con que dispongamos de cuatro operaciones para a partir de ellas poder realizar cualquier otra: comprobacin de si la lista está vacía, y acceso, insercin y borrado del primer elemento. Las listas secuenciales permiten señalar un elemento posicin en la lista (cursor), en base al cual se realizan todas las operaciones. Tambien se permite cambiar el cursor (pasar a siguiente y/o anterior). Las listas indexadas permiten realizar las operaciones indicando el índice del elemento. Las pilas, colas y bicolas slo permiten realizar operaciones sobre los elementos extremos. En las listas ordenadas el elemento con índice i es el i-ésimo menor. Las colas de prioridad son un caso especial de lista ordenada en que las operaciones se restringen a un extremo (el elem. mínimo o máximo) 11 Contenedores principales - Lista IMPLEMENTACIONES Listas (orden externo): Listas indexadas, secuenciales, pilas, colas, bicolas. Dependiendo de la variante concreta, y de las operaciones más relevantes para el problema, se usarán alguna de las siguientes implementaciones: Contigua lineal, contigua circular (arrays) Listas enlazadas (lineales circulares, simples dobles) Listas ordenadas (orden interno) Contigua lineal ordenada (arrays) Árboles binarios de búsqueda (ABB) ABB equilibrados (Árboles AVL, Árboles B, Red-Black Trees,..) Otras opciones: Skip Lists, Splay Trees s de prioridad Montículos binarios (binary heap) Otros montículos: Binomiales, Fibonacci Treaps 12 6

Contenedores principales - Mapa "TAD compuesto por un conjunto de claves y una coleccin de valores donde cada clave tiene asociado un valor" Un mapa (associative array, map, lookup table) es una generalizacin del concepto de conjunto, en la cual cada elemento que pertenece al conjunto (denominado clave) tiene asociado un valor. Los elementos del mapa son pares (clave, valor) No pueden existir claves repetidas. Sin embargo si que pueden existir valores repetidos. Los elementos se localizan mediante su clave. Las implementaciones principales suelen ser las mismas que las de los conjuntos, adaptadas al hecho de que ahora deben almacenar el valor asociado a la clave. Si se necesitan operaciones de recorrido en orden de las claves, entonces nos referimos al TAD Tabla. Si en lugar de un valor se debe asociar a cada clave una lista de valores, entonces nos referimos al TAD Diccionario. 13 Colecciones e Iteradores Actualmente existe una tendencia a organizar las librerias de clases bajo los conceptos de Coleccin (Collection) e Iterador (Iterator). Ejemplo: Java, C#, Eiffel,.NET. Existen lenguajes que añaden un tipo adicional de bucle, el bucle controlado por iterador. Una coleccin es una fuente de datos (estructura de datos, fichero, conexin de red, etc.) de la cual se puede obtener un iterador para acceder a sus datos. Un iterador es un mecanismo que permite acceder a un elemento (el elemento actual) y pasar al siguiente (dependiendo del tipo de iterador es posible que se permitan más operaciones). Tipicamente el concepto de coleccin se representa mediante una clase abstracta o interfaz de la que heredan/implementan aquellas clases que pueden servir de fuente de datos. El iterador se representa por una clase/interfaz con las operaciones de acceso y paso al siguiente. Suelen existir clases iteradoras con más operaciones disponibles, que heredan del iterador general. El objetivo es proporcionar un mecanismo uniforme de acceso a cualquier fuente de datos, considerándolas a todas como un TAD Lista secuencial con operaciones restringidas. 14 7

Relacin de precedencia u orden 1 2 n x primero predecesor(x) sucesor(x) último Existe una relacin de orden total sobre los elementos. Existen dos elementos extremos: El primero y el último. Todo elemento (salvo el primero) tiene un único elemento predecesor. Todo elemento (salvo el último) tiene un único elemento sucesor. Se pueden realizar operaciones basadas en la posicin de los elementos: o Sobre algún extremo. o Sobre el predecesor o sucesor del elemento actual. o Asignando un índice a cada elemento. El orden puede ser interno (basado en el valor del elemento o de una parte suya) u externo (impuesto por las operaciones de insercin y borrado) 15 Relacin de parentesco o jerarquía (árbol) hijos de x raiz padre de x x Los elementos se relacionan con una estructura jerárquica (tipo arbol) Hay un elemento distinguido, el raiz, y los demas se particionan en subárboles, y así recursivamente. Cada elemento (excepto el raiz) tiene un padre (superior) y cero o más hijos (subordinados). Permite representar elementos con una estructura jerárquica (más compleja y flexible que la relacin de orden). A diferencia de la relacin de orden, no existe una única forma distinguida de recorrer los elementos, sino varias: preorden, inorden, postorden y por niveles. Si se impone un orden interno la relacin puede servir como una representacin (montículos, arboles binarios de búsqueda, etc.) útil para varios TADs 16 8

Relacin de vecindad (grafo) x vecinos de x No existen restricciones respecto a la forma de relacionar unos elementos con otros. Cada elemento puede estar relacionado con 0 o más elementos, sus vecinos. No existe nigún elemento distinguido. No hay recorridos distinguidos, tan slo la posibilidad de elegir un nodo y recorrer en profundidad o en anchura. Las relaciones entre elementos pueden ser (o no) direccionales y suelen llevar informacin asociada. 17 Clasificacin operaciones básicas Resultado del acceso en Posicin 18 9

Conjunto (Set) Sin relacin s atmicos Req: Equivalencia Sin elementos repetidos Otras operaciones: Unin Recorrido en Posicin 19 Mapa (Associative array, Lookup table, Map, Index) Sin relacin s son pares clave - dato Req: Equivalencia claves Sin claves repetidas Otras operaciones: Modificar dato Usos: Lenguajes Awk, Perl, JavaScript, PHP en Posicin 20 10

Coleccin (Bag, MultiSet) Sin relacin s atmicos Req: Equivalencia s repetidos Otras operaciones: Unin Recorrido Borrar todos en Posicin 21 Lista indexada (List) Relacin Orden Externo s atmicos Req: Ninguno s repetidos Otras operaciones: Concatenacin Recorrido Búsqueda Ordenacin en Posicin 22 11

Pila (Stack) en Posicin Relacin Orden Externo s atmicos Req: Ninguno s repetidos Estructura LIFO (Last In, First Out) Usos: Gestin memoria Recursivo Iterativo Traduccin expr. matemáticas Lenguages FORTH, Postscript, Java VM 23 Cola (Queue) en Posicin Relacin Orden Externo s atmicos Req: Ninguno s repetidos Estructura FIFO (First In, First Out) Usos: Buffers Algoritmos recorrido en anchura en árboles y grafos. 24 12

Bicola (Deque) Relacin Orden Externo s atmicos Req: Ninguno s repetidos Usos: Buffers Algoritmos recorrido en anchura en árboles y grafos. en Posicin 25 Lista secuencial (I) (Iterator) Relacin Orden Externo s atmicos Req: Ninguno s repetidos Otras operaciones: Mover cursor fuera lista Concatenacin en Posicin Variante 1 (notepad) Fuera de lista = despues del último elemento. Tras borrado cursor pasa a elemento siguiente. 26 13

Lista secuencial (II) (Iterator) Relacin Orden Externo s atmicos Req: Ninguno s repetidos Otras operaciones: Mover cursor fuera lista Concatenacin en Posicin Variante 2 Fuera de lista = antes del primer elemento. Tras borrado cursor pasa a elemento anterior. 27 Lista ordenada (Sorted List) Relacin Orden Interno s atmicos Req: Comparacin s repetidos Otras operaciones: Fusin Recorrido Búsqueda en Posicin 28 14

Cola de prioridad (Priority queue) en Posicin Relacin Orden Interno s son pares prioridad - dato Req: Comparacin Variante: Cola de prioridad de máximos Otras operaciones: Modificar prioridad Fusin Usos: Gestin procesos Ord. Montículos Alg. Dijkstra 29 Tabla (Map, Dictionary) Mapa + Orden Interno en claves s son pares clave - dato Req: Comparacin claves Otras operaciones: Recorrido ordenado basado en cursor Modificacin dato Usos: BD Relacionales en Posicin 30 15

Diccionario (MultiMap) Orden Interno en claves s son pares clave - dato Req: Comparacin claves Otras operaciones: Recorrido ordenado basado en cursor Reemplazamiento par clave - dato en Posicin 31 Directorio (General Tree, Directory) Un directorio representa una coleccin de elementos con una relacin de jerarquía entre ellos. Ejemplo típico: Sistema de ficheros (SF). Es habitual que los elementos hojas se interpreten o contengan informacin distinta a la del resto de elementos (En un SF las hojas serían ficheros y los nodos internos directorios). Las operaciones de acceso suelen basarse en cursor: Hay un elemento distinguido y se puede acceder a su padre y sus hijos. (En un SF el directorio actual). Las implementaciones más habituales son las enlazadas, en particular la implementacin padre-hijo-hermano. Atencin: La palabra "arbol" puede usarse con dos significados distintos: Un TAD con relacin de jerarquía: El TAD Directorio Una representacin (montículo, ABB, árbol AVL, etc.) útil para algunos TADs (como por ejemplo el TAD Conjunto, TAD Tabla, etc.) 32 16

Grafo (Graph) Un grafo representa una coleccin de elementos (vértices) sobre los que existe una relacin de vecindad definida por un conjunto de aristas. Ejemplo típico: World Wide Web Coleccin de páginas web relacionadas entre sí por los hipervínculos de una página a otra. Las operaciones habituales son la insercin y borrado de aristas, insercin y borrado de nodos, los recorridos y operaciones más especializadas (camino mínimo, etc.) Las implementaciones mas comunes son: Listas de adyacencia Matriz de adyacencia 33 Otros TADs TAD Array TAD Vector: Operaciones de acceso por indice y reemplazar elemento (también por indice). TAD Disjoint-Set: Representa elementos clasificados en categorías (una serie de conjuntos disjuntos, donde cada elemento slo pertenece a un solo conjunto), de manera que se establece una particin sobre ellos. A priori este tipo de informacin se podría representar mediante un TAD diccionario (las claves serían las categorías y los valores los elementos, en este caso sin repeticin), pero aquí la intencin es simplificarlo de manera que: Cada categoría (conjunto) se represente no de manera explícita sino mediante un elemento cualquiera que pertenezca a ella (representante) Las únicas operaciones fundamentales sean: Creacin a partir de una coleccin de elementos (cada elemento define una categoría) Búsqueda (Find): Determinar a que categoría pertenece un elemento (se devuelve un representante de esa categoría) Union: Unir dos categorías en una sola. 34 17