Programación TADs Arboles
|
|
- Teresa Montero Blázquez
- hace 6 años
- Vistas:
Transcripción
1 Programación TADs Arboles 1
2 Arboles Una estructura árbol (árbol general) con tipo base T es, 1. O bien la estructura vacía 2. O bien un nodo de tipo T, llamado raíz del árbol, junto con un número finito de estructuras de árbol, de tipo base T, disjuntas, llamadas subárboles En un teórico anterior introdujimos algunos conceptos acerca de árboles. A continución presentamos los TADs Arbol Binario y Arbol Binario de Búsqueda. Pero antes queremos ver: cómo representamos árboles generales? 2
3 Conceptos básicos Hijo de la raíz del árbol Raíz del árbol... Subárboles del árbol Los elementos se llaman habitualmente nodos del árbol. 3
4 Un ejemplo de árbol general: estructura de directorios /usr* marcos* carlos* luis* libro* curso* basura.c agenda.c trabajo* curso* cap1.r cap2.r est_alg1* discreta* logica* prog1* Una aplicación: listar un directorio (recorridos de árboles) 4
5 Cómo representamos árboles generales? En un árbol general el número de hijos por nodo puede variar. Luego, una idea de representación consiste en pensar que cada nodo tiene una lista de árboles asociados (sus subárboles). Una manera de hacer esto es considerando que cada nodo se relaciona con su primer hijo y con su siguiente hermano, conformando una estructura de árbol binario. Esta forma de representación establece una equivalencia entre árboles generales y árboles binarios: todo árbol general puede representarse como uno binario y, todo árbol binario corresponde a un determinado árbol general. 5
6 Cada nodo tiene un núnero finitio de subárboles Arbol general - Arbol binario a b c d e f g h i j k. Representación como árbol binario: * primer hijo * siguiente hermano a b c d e f g h i j k. 6
7 Un TAD Arbol General particular Considere la siguiente definición de las operaciones del TAD ArbolesGenerales no vacíos y sin elementos repetidos, de un tipo genérico T: ArbolHoja: Dado un elemento genera un árbol que sólo contiene dicho elemento (como una hoja). Insertar: Dados un Arbol y dos elementos v y w, inserta a v como el primer hijo de w en el árbol (hijo más a la izquierda), siempre que w pertenezca al árbol y v no pertenezca al árbol. En caso contrario, la operación no tiene efecto. EsArbolHoja: Dado un árbol, retorna true si, y sólo si, el árbol es un árbol hoja (con un solo elemento). Pertenece: Dados un árbol y un elemento, retorna true si y sólo si el elemento pertenece al árbol. 7
8 Un TAD Arbol General particular (cont.) Borrar: Dados un árbol y un elemento, elimina al elemento del árbol siempre que éste pertenezca al árbol, no sea la raíz del mismo y no tenga ningún hijo. En caso contrario, la operación no tiene efecto. Otras operaciones o variantes de las anteriores Se pide: a) Especifique en C++ el TAD ArbolesGenerales. b) Implemente el TAD ArbolesGenerales. Considere la representación de árboles generales basada en árboles binarios, como una estructura de datos ( primer hijo siguiente hermano ). 8
9 Otras variantes Qué cambiaría en la especificación si el árbol general permitiera elementos repetidos, siempre y cuando no sean hermanos? La noción de ruta absoluta (como en los file systems) sería útil? Y si se permitieran elementos repetidos en cualquier parte del árbol? La noción de identificadores (como en los manejadores de versiones) sería útil? Cómo podría ser la especificación de un árbol general con posiciones implícitas (rutas relativas en vez de rutas absolutas en el caso de los file systems) 9
10 TAD Arbol Binario (AB) El tipo abstracto de datos Arbol Binario de elementos de tipo Etype especifica la noción de un conjunto finito de nodos tal que: o bien es vacío o consiste de un elemento de Etype (llamado raíz) y dos árboles binarios de tipo Etype disjuntos llamados subárbol izquierdo y derecho de la raíz 10
11 Arbol Binario (AB) 11
12 Operaciones del TAD AB (una alternativa...) Se definen seis operaciones asociadas al TAD AB. Constructoras: Vacio y CreoAB. La primera operación permite construír un árbol vacio. Dados un elemento de tipo Etype y dos árboles binarios, CreoAB construye un árbol no vacío. Predicado: EsVacio. Esta operación es usada para testear si un árbol es o no vacío. Selectoras: Raiz, SubArbIzq y SubArbDer. Estas operaciones permiten seleccionar la raíz, el subárbol izquierdo y el derecho, respectivamente, de un árbol no vacío. 12
13 Operaciones binarias y árboles binarios Consideremos la fórmula El cálculo de izquierda a derecha de esta expresión primero efectúa la suma de 4 y 5, obteniendo el valor 9, y luego se calcula la suma de 9 y 7, obteniendo el valor final 16. El siguiente árbol binario refleja la estructura del cómputo + ( + (4, 5), 7)
14 Operaciones binarias y árboles binarios (cont) El siguiente árbol binario refleja la estructura de la expresión * Esta estructura describe un cálculo de derecha a izquierda de la expresión ya que las reglas de precedencia de los operadores aritméticos indican que la multiplicación debe efectuarse antes que la suma. * 3 14
15 Operaciones binarias y árboles binarios (cont) El siguiente árbol binario refleja la estructura de la expresión a + (x + y + z) * 3 + 'a' * 'x' 'z' 'y En este caso la parentización fuerza una mezcla de computaciones izquierda-derecha y derechaizquierda. Además algunas de las hojas son caracteres que identifican los nombres que forman parte de la expresión original. 15
16 Operaciones binarias y árboles binarios (cont) Notar que cada operador es la raíz de un árbol cuyos subárboles son no vacíos y naturalmente también reflejan la estructura de una expresión. No es este el caso de los valores e identificadores. Cómo quedaría expresado este último árbol si usamos los constructores del TAD AB para elementos de un tipo char, por ejemplo? Qué problemas genera la codificación y decodificación de los datos si los elementos son char, por ejemplo? 16
17 Operaciones binarias y árboles binarios (cont) Notar que si el tipo de los elementos es refinado como char (podría también ser *char) tenemos una disminución en el nivel de abstracción. Al procesar un árbol de expresiones es bastante natural pensar que las acciones a tomar van a ser fuertemente guiadas por los elementos que ocurren en las raíces de los subárboles que componen al árbol principal. La uniformización de la representación de estos elementos implica un esfuerzo extra de procesamiento (discriminación y conversión). 17
18 Operaciones binarias y árboles binarios (cont) Si las hojas fueran construídas de tal forma que se pudiera directamente recuperar no solamente la información que almacenan sino además qué tipo de información es, el procesamiento de estos elementos se vería simplificado. Una posible solución es refinar el tipo T de los elementos a una unión discriminada de la forma: typedef int Valor; typedef char Operador; typedef char Ident; union E {Valor Val; Operador Op; Ident Id;}; enum TipoExpr {EsVal, EsOpComp, EsId}; struct T {E exp; TipoExpr tipo;}; 18
19 Operaciones binarias y árboles binarios (cont) Sin embargo, la anterior modificación no soluciona el problema de redundancia de información que se genera al construír el nodo correspondiente a un valor o a un identificador. Esto queda claro por ejemplo al crear un valor: 3 La construcción de la hoja que denota el valor 3 tiene que reflejar el hecho de que estamos construyendo un nodo del árbol binario. 19
20 Operaciones binarias y árboles binarios (cont) Un punto importante en el proceso de abstraer la noción de expresión aritmética lineal a la de una forma particular de árbol es el de reflejar que estamos considerando componentes que poseen estructuras diferentes y que proveen a su vez distintos tipos de información. Este análisis es el que motiva la decisión que hemos tomado al definir el TAD Expre de expresiones: 20
21 TAD Expre // Constructores Expre ValorExpre(Valor Val) // Crea una expresión atómica a partir de un valor Expre VariableExpre(Ident id) /* Crea una expresión atómica a partir de un identificador de variable */ Expre OperExpre (Expre exp1, Expre exp2, Operador op) /* Crea una expresión compuesta aplicando un operador a dos expresiones */ 21
22 TAD Expre // Discriminador (predicado) TipoExpr QueTipoExpre(Expre e) // retorna el tipo de la expresión // Selectoras Expre SubExpreIzq(Expre e) /* pre-condición: la expresión es compuesta. Retorna la sub expresión izquierda */ Expre SubExpreDer(Expre e) /* pre-condición: la expresión es compuesta. Retorna la sub expresión derecha */ 22
23 TAD Expre Operador MainOper(Expre e) /* pre-condición: expre es una expresión compuesta Retorna el operador principal */ Valor DarValor(Expre e) /* pre-condición: la expresión es simple (un valor) Retorna el valor que construye esa expresión */ Ident DarIdent(Expre e) /* pre-condición: la expresión es un Identificador Retorna el identificador */ void DestruirExpre(Expre & e) /* destruye la expresión e y libera la memoria asociada */ 23
24 #ifndef _ABB_H #define _ABB_H Especificación de un ABB struct RepresenatcionABB; typedef RepresentacionABB* ABB; void crearabb (ABB &abb); /* Devuelve en abb el arbol vacio. */ bool agregarabb (T t, ABB &abb); /* Agrega el elemento t en abb y devuelve 'true' si t no esta en abb. En otro caso no hace nada y devuelve 'false'. */ bool esvacioabb (ABB abb); /* Devuelve 'true' si abb es vacio, 'false' en otro caso. */ T valorabb (ABB abb); /* Devuelve el valor de la raiz de abb. Precondicion:! esvacioabb(abb). */ 24
25 Especificación de un ABB ABB arbolizquierdo (ABB abb); /* Devuelve el subarbol izquierdo de abb. Precondicion:! esvacioabb(abb). */ ABB arbolderecho (ABB abb); /* Devuelve el subarbol derecho de abb. Precondicion:! esvacioabb(abb).*/ void destruirabb (ABB &abb); /* Libera toda la memoria ocupada por abb.*/ #endif /* _ABB_H */ 25
26 #include "ABB.h" #include <stddef.h> #include <assert.h> Implementación de un ABB struct RepresentacionABB { RepresentacionABB* der; RepresentacionABB* izq; T valor; }; void crearabb (ABB & abb) { abb = NULL; } bool esvacioabb (ABB abb) { return (abb == NULL); } 26
27 Implementación de un ABB bool agregarabb (T t, ABB &abb) { bool result; if (esvacioabb (abb)) { abb = new RepresentacionABB; abb->der = NULL; abb->izq = NULL; abb->valor = t; result = true; } else if (esmayor (abb->valor, t)) { result = agregarabb (t, abb->izq); } else if (esmenor (abb->valor, t)) { result = agregarabb (t, abb->der); } else result = false; return result; } 27
28 Implementación de un ABB T valorabb (ABB abb) { assert (!esvacioabb (abb)); return abb->valor; } ABB arbolizquierdo (ABB abb) { assert (!esvacioabb (abb)); return abb->izq; } ABB arbolderecho (ABB abb) { assert (!esvacioabb (abb)); return abb->der; } 28
29 Implementación de un ABB void destruirabb (ABB &abb) { if(abb!= NULL) { destruirabb(abb->izq); destruirabb(abb->der); delete(abb); } } 29
30 ABB - Análisis Consideremos un AB (o ABB) completo: n = h = 2 h+1-1 Luego, la altura es O(log 2 n) en el caso de un árbol completo, pero O(n) de un árbol arbitrario. Por qué? Qué podemos concluir de éste análisis sobre la eficiencia en tiempo de ejecución de las operaciones sobre un ABB? 30
31 ABB - Análisis Insertar, Buscar y Borrar tienen tiempo de ejecución proporcional a log 2 n (siempre se recorre un sólo camino del árbol) si el árbol es completo pero, la eficiencia puede caer a orden n si el árbol se degenera (el caso extermo es una lista) n 31
32 ABB - Análisis Si bien el orden de tiempo de ejecución promedio de las operaciones citadas para ABB s es O(log 2 n), el peor caso es O(n). La idea es entonces tratar de trabajar con ABB s que sean completos, o al menos que estén balanceados Tratando de refinar esta idea es que surgen los AVL 32
33 Arboles AVL Un árbol AVL (Adelson-Velskii y Landis) es una ABB con una condición de equilibrio. Debe ser fácil mantener la condición de equilibrio, y ésta asegura que la profundidad del árbol es O(log (n)). La condición AVL: para cada nodo del árbol, la altura de los subárboles izquierdo y derecho puede diferir a lo más en 1 (hay que llevar y mantener la información de la altura de cada nodo, en el registro del nodo). 33
34 Arboles AVL Así, todas las operaciones sobre árboles se pueden resolver en O (log(n)), con la posible excepción de la inserción (si se usa eliminación perezosa - recomposición AVL tardía). AVL Tree AVL Tree 34
35 Arboles AVL (cont) Cuando se hace una inserción es necesario actualizar toda la información de equilibrio para los nodos en el camino a la raíz. La razón de que la inserción sea potencialmente dificíl es que insertar un nodo puede violar la propiedad de árbol AVL ABB y AVL ABB pero no AVL 35
36 Arboles AVL: rotaciones Al insertar (según la inserción ABB) el 7 en el AVL anterior se viola la propiedad AVL para el nodo 9. Si éste es el caso, se tiene que restaurar la propiedad AVL antes de dar por culminado el proceso de inserción. Resulta que esto se puede hacer siempre con una modificación al árbol, conocida como rotación (simple y doble). 36
37 Arboles AVL (cont) A k B l Rotación simple C A k B l C Ambos son ABB s? Qué implica una rotación con una implementación dinámica del árbol? Qué punteros cambian? Qué pasa con las alturas de los subárboles A, B y C? Coinciden los recorridos In-order de ambos árboles? 37
38 Arboles AVL (cont) Insertar los elementos 1 al 7 a partir de un AVL vacio. Luego, insertar los elementos 8 al 15 en sentido inverso. NOTA: al insertar el 14, una rotación simple no recompone la propiedad AVL. Cuando el elemento insertado se encuentra entre los valores correspondientes a los nodos del árbol a rotar (por violación de la propiedad AVL), una rotación simple no recompone la propiedad AVL. Solución: usar una rotación doble, que involucra 4 subárboles en vez de 3. 38
39 Arboles AVL: rotación doble A k m l D m Izq-Der k l A B C D B C A l m k D m Der-Izq l k A B C D B C 39
40 Arboles AVL: inserción Completar la inserción del 14 al 8 en sentido inverso. Algoritmo de inserción: insertar como en los ABB y luego iniciar en el nodo insertado y subir en el árbol, actualizando la información de equilibrio en cada nodo del camino. Acabamos si se llega a la raíz sin haber encontrado ningún nodo desiquilibrado. Si no, se aplica una rotación (simple o doble, según corresponda) al primer nodo desiquilibrado que se encuentre, se ajusta su equilibrio y ya está (no necesitamos llegar a la raíz, salvo que se use eliminación perezosa). 40
41 Rebalanceando árboles AVL Inserciones del tipo ABB que no conducen a un árbol AVL 4 casos y 4 son similares 2 y 3 son similares 41
42 Rebalanceando árboles AVL Caso 1 solucionado por rotación simple Caso 4 es similar 42
43 Rebalanceando árboles AVL Caso 2 necesita una rotación doble Caso 3 es similar 43
44 Arboles AVL: supresión Algoritmo de supresión: el algoritmo de eliminación que preserva la propiedad AVL para cada nodo del árbol es más complejo. En general, si las eliminaciones son relativamente poco frecuentes, puede utilizarse una estrategia de eliminación perezosa. La pertenencia es igual que para los ABB. Por más detalles y el código de las operaciones para una implementación de AVL con estructuras dinámicas ver el libro de Mark Allen Weiss. 44
Programación Estructuras Arborescentes
Programación 2 4 - Estructuras Arborescentes 1 Definición La recursión puede ser utilizada para la definición de estructuras realmente sofisticadas. Una estructura árbol (árbol general o finitario) con
Más detallesProgramación 2 Práctico 9 - TADs Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario
Práctico - TADs Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario Objetivos Trabajar con los tipos abstractos de datos Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario. Desarrollar y analizar
Más detallesÁrboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda
Árboles Árboles Mario Medina C. mariomedina@udec.cl Árboles Estructura recursiva Árbol vacío 0 o más árboles hijos Altura ilimitada Árbol binario A lo más dos hijos: izquierdo y derecho Árboles Árboles
Más detallesEstructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010
Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del
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 detallesEstructura de Datos Tema 6. Árboles. Contenido 14/06/2018
Estructura de Datos Tema 6. Árboles Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. dtorres@mixteco.utm.mx Contenido 1. Definición y operaciones
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 detallesEjercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.
Ejercicios Resueltos del Práctico 4 Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. 1 2 struct NodoLista { 3 int elem ; 4 NodoLista * sig ;
Más detallesÁrboles balanceados (AVL) Estructura de datos
Árboles balanceados (AVL) Estructura de datos Definición de un árbol balanceado Es un árbol binario de búsqueda en el cual se cumple: Para todo nodo T del árbol, la altura de los subárboles izquierdo y
Más detallesSegundo parcial de Programación 2
Generalidades: Segundo parcial de Programación 2 a. La prueba es individual y sin material. b. La duración es 3hs. c. Sólo se contestan dudas acerca de la letra. 8 de Julio de 2016 d. Escriba las hojas
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 detallesDefinición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar.
Definición: ÁRBOL El árbol es como un tipo de grafo cíclico, conexo y no dirigido. Las estructuras tipo árbol se usan principalmente para representar datos con una relación jerárquica entre sus elementos.
Más detallesSolución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola
Objetivos Trabajar sobre el Tipo Abstracto de Datos Lista, reforzando el desacople entre especificación e implementación. Retomar las implementaciones vistas, como ser Listas Doblemente Encadenadas, Listas
Más detallesTEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica
TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y
Más detallesEstructura de Datos. Temario Unidad VI. Árboles Árboles Binarios
Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios
Más detallesEstructura de Datos. Temario Unidad VI. Árboles Árboles AVL
Estructura de Datos Árboles Árboles VL Temario Unidad VI 6.1 Definición operaciones 6.2 Implementación 6.3 Recorrido en Árboles inarios 6.4 Árboles VL su implementación 6.5 Árboles n-arios 6.6 Árboles
Más detallesÁrbol ABB equilibrado. Lección: Árboles. Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58
Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58 Índice 1 Árbol de búsqueda 2 2/ 58 Índice Árbol de búsqueda 1 Árbol de búsqueda 2 3/ 58 Árbol de búsqueda Es
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 detallesTema 09: TAD Árbol binario
Tema 09: TAD Árbol binario M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Introducción El árbol binario
Más detallesPROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA
PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA UNIDAD DE APRENDIZAJE ADMINISTRACION DE BASES DE DATOS Unidad de competencia III Manejar las estructuras dinámicas en memoria secundaria Arboles ELABORACION
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 detallesEstructuras de Datos Clase 20 Árboles de búsqueda
Estructuras de Datos Clase 20 Árboles de búsqueda Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina
Más detallesÁrboles Binarios Ordenados Árboles AVL
Árboles Binarios Ordenados Árboles AVL Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Diseño e Implementación TAD Árbol Representación de árboles
Más detallesEstructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios
Estructura de datos y algoritmos Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios TEMA V : TIPOS DE DATOS ABSTRACTOS NO LINEALES: ÁRBOLES 5.1 Conceptos y definiciones 5.2 Árboles perfectamente
Más detallesTecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Más detallesTema 6: Estructuras de datos recursivas
Tema 6: Estructuras de datos recursivas Índice 1 Listas jerárquicas...2 2 Árboles binarios... 4 3 Árboles genéricos...7 4 Referencias...10 1. Listas jerárquicas Las listas tienen la propiedad de la clausura
Más detallesEstructuras de Datos. Clase 20 Árboles de búsqueda. Dr. Sergio A. Gómez.
Clase 20 Árboles de búsqueda http://cs.uns.edu.ar/~sag Bahía Blanca, Argentina Motivaciones El árbol binario de búsqueda permite implementar conjuntos mapeos con un tiempo de operaciones buscar, insertar
Más detallesUNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS
UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS Curso 2008-09 Examen parcial APELLIDOS: NOMBRE: 1. (0.5 puntos) Enumera las características de un algoritmo
Más detallesProgramación Introducción al Diseño de Tipos Abstractos de Datos
Programación 2 11- Introducción al Diseño de Tipos Abstractos de Datos 1 Sobre TADs Especificación TAD Imp. 1 Imp. m Aplicaciones void P1( ){ } void Pn( ){ } void P1( ){ } void Pn( ){ } 2 Algunas preguntas
Más detallesContenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS
Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS TEMA 4. - La Estructura de datos Árbol 4.1. Árboles, definiciones 4.2 Árboles binarios y su representación 4.3 Operaciones básicas de un árbol binario
Más detallesEDA. Tema 8 Colas de Prioridad: Heaps
EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones
Más detallesProgramación II Arboles Binarios(AB)
Programación II Arboles Binarios(AB) Definición Un árbol consta de un conjunto finito de elementos, denominados nodos, y un conjunto finito de líneas dirigidas, denominadas enlaces, que conectan los nodos.
Más detallesTema 10: Árbol binario de búsqueda
Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de
Más detallesDiseño de Conjuntos y Diccionarios
Diseño de Conjuntos y Diccionarios Representación de Conjuntos y Diccionarios TAD Diccionario(clave, significado) Observadores básicos def?: clave c x dicc(clave, significado) d bool obtener: clave c dicc(clave,
Más detallesArboles Binarios de Búsqueda en C++
Arboles Binarios de Búsqueda en C++ por CCG/Mayo-2014 Tema de Arboles Binarios de Búsqueda, como un poco de teoría para su mejor entendimiento seguidamente mostrare la implementación en lenguaje de programación
Más detallesEstructuras de datos: Árboles binarios de
Estructuras de datos: Árboles binarios de búsqueda, Facultad de Informática Universidad de A Coruña Table of Contents Árboles binarios de búsqueda 1 Árboles binarios de búsqueda 2 Table of Contents Árboles
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 detallesInstituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:
Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades: La prueba es individual y sin material. La duración es 3 horas.
Más detallesExamen de Programación 2 Diciembre de 2012
Ejercicio 1 ( puntos) Examen de Programación 2 Diciembre de 2012 La Administración Nacional de Puertos (ANP) quiere sistematizar la inspección de contenedores en tránsito en el puerto de Montevideo. El
Más detallesESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria
ESTRUCTURA DE DATOS ABB Arboles de Búsqueda Binaria ÁRBOLES BINARIOS Hasta ahora nos hemos dedicado a estudiar TAD que de una u otra forma eran de naturaleza lineal, o unidimensional. En los tipos abstractos
Más detallesPRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS
INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: 1. Objetivo PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS El alumno comprenderá y aplicara
Más detallesTema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1
Tema 14: ÁRBOLES Estructura Árbol Definición: Una estructura de árbol con tipo base Valor es: (i) Bien la estructura vacía. (ii) Un conjunto finito de uno o más nodos, tal que existe un nodo especial,
Más detallesDEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006
ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los
Más detallesColas deprioridad y heaps
Colas deprioridad y heaps Colas de prioridad Numerosas aplicaciones Sistemas operativos, algoritmos de scheduling, gestión de colas en cualquier ambiente, etc. La prioridad en general la expresamos con
Más detallesEstructuras de Datos Clase 14 Árboles binarios de búsqueda
Estructuras de Datos Clase 14 Árboles binarios de búsqueda Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,
Más detallesÁrboles AVL. Lección 14
Árboles VL Lección 14 Árboles inarios Equilibrados Un árbol binario de búsqueda se dice equilibrado (o balanceado) si y sólo si, para cada uno de sus nodos ocurre que las alturas de sus 2 subárboles difieren
Más detallesTemario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios
Temario 5.1 Árboles Binarios 5.2 Árboles n-arios Especificación Utilización Representación Enlazada 5.3 Árboles Binarios de Búsqueda 5.4 Árboles Parcialmente Ordenados 1 Árbol n-ario: O bien es el conjunto
Más detallesUNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Introducción Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. A B C D E F G H I J K Clasificación con respecto a su relación: Nodo hijo: cualquiera de los nodos
Más detallesDefinición de árbol. Árboles
ÁRBOLES Árboles * Definición de árbol * Formas de representación * Nomenclatura sobre árboles * Árboles binarios * Declaración de árbol binario * Recorridos sobre árboles binarios * Construcción de un
Más detallesÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).
ÁRBOL BINARIO - Un árbol binario puede definirse como un árbol que en cada nodo puede tener como mucho grado 2, es decir, a lo más 2 hijos. Los hijos suelen denominarse hijo a la izquierda e hijo a la
Más detallesEjercicios del Tema 3 Estructuras jerárquicas: Árboles
ALGORITMOS Y ESTRUCTURAS DE DATOS II Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Ejercicios del Tema 3 Estructuras jeráruicas: Árboles Árboles n-arios 1.
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 detallesEstructuras de Datos ARBOLES Y GRAFOS
Estructuras de Datos ARBOLES Y GRAFOS Rosa Barrera Capot rosa.barrera@usach.cl Grafo? Características Permiten Modelar un problema Aplicaciones: Ingeniería de Sistemas Modelado de Redes Ingeniería Industrial
Más detallesNIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para
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 detalles4.5 Árboles AVL (Adelson-Velskii y Landis) Inserción y extracción en árboles AVL
4.5 Árboles AVL (Adelson-Velskii y Landis) Árbol binario de búsqueda que verifica que las alturas de los subárboles derecho e izquierdo de cada nodo sólo pueden diferir, a lo sumo, en 1 lo que garantiza
Más detallesProgramación II Árboles binarios de búsqueda (ABB)
Programación II Árboles binarios de búsqueda (ABB) Definición Un árbol binario de búsqueda(abb) a es una estructura de datos de tipo árbol binario en el que para todos sus nodos, el hijo izquierdo, si
Más detallesTema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom
Tema 08: TAD Árbol M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Descripción del TAD Árbol Especificación
Más detallesEstructura de Datos Unidad 6: ARBOLES
Estructura de Datos Unidad 6: ARBOLES A. CONCEPTO DE ARBOL B. TIPOS DE ARBOL C. ARBOL BINARIO D. IMPLEMENTACION DE UN ARBOL BINARIO E. PROYECTO Introducción En ciencias de la informática, un árbol es una
Más detallesÁRBOLES BINARIOS DE BÚSQUEDA (ABB)
ÁRBOLES BINARIOS DE BÚSQUEDA (ABB) INTRODUCCIÓN - Un árbol binario de búsqueda (ABB) es un árbol binario con la propiedad de que todos los elementos almacenados en el subárbol izquierdo de cualquier nodo
Más detallesProgramación de sistemas Árboles
Programación de sistemas Árboles Departamento de Ingeniería Telemática 1 Contenidos Concepto de árbol Terminología Implementación Casos especiales Árboles binarios de búsqueda Montículos (heaps) 2 Concepto
Más detallesUniversidad Tecnológica de la Mixteca
Universidad Tecnológica de la Mixteca Estructuras de datos Tema: Árboles Balanceados Integrantes López Santiago Jorge Alberto Marysol Mejía Cervantes Grupo 201-F. Semestre Marzo/2003- Julio/2003 Árboles
Más detallesAnálisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez
Análisis y Complejidad de Algoritmos Arboles Binarios Arturo Díaz Pérez Arboles Definiciones Recorridos Arboles Binarios Profundidad y Número de Nodos Arboles-1 Arbol Un árbol es una colección de elementos,
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 detallesÁRBOLES BINARIOS DE BÚSQUEDA
ÁRBOLES BINARIOS DE BÚSQUEDA Introducción Generalidades Definición Consultas a un ABB Introducción Búsqueda Mínimo y máximo Sucesor y predecesor Modificaciones a un ABB Introducción Inserción Eliminación
Más detallesINGENIERIA DE SISTEMAS 19 ESTRUCTURAS DE DATOS (Listas simples) ARBOLES
INGENIERIA DE SISTEMAS 19 ESTRUCTURAS DE DATOS (Listas simples) ARBOLES Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. También se suele dar una definición
Más detallesDiseño y Análisis de Algoritmos con Java(I Sem. 2004) Prof. Dr.Eric Jeltsch F.
Arboles En esta sección se presentan los árboles que son un tipo de dato abstracto más adecuado para el tratamiento de grandes cantidades de información, las aplicaciones de los mismos son muy diversas,
Más detalles2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).
Capítulo 7 Heap 7.1 Introducción Una cola de prioridad es una estructura de datos apropiada cuando la tarea más importante es localizar y/o eliminar el elemento con valor menor de una colección. Ejemplo
Más detallesAlgoritmos y Programación II 75.41
Algoritmos y Programación II 75.41 Cátedra: Lic. Gustavo Carolo Guía de Estudio Enero 2005 Indice Indice 2 Definición 3 Árbol Binario 4 Árbol General 5 Árbol AVL 5 Árbol B 6 Implementación de Binarios
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 detallesÁrboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Más detalles1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío.
Capítulo 6 Árboles 6.1 Introducción Esta no es una estructura lineal, deben conocerlos de matemáticas finitas. Ejemplos: la tabla de contenido de un libro, los que se hacen en los torneos, los arboles
Más detallesEstructuras de Datos Dinámicas: Listas
Estructuras de Datos Dinámicas: Listas Teoría: Programación I http://proguno.unsl.edu.ar proguno@unsl.edu.ar Listas Capacidad: dinámica Orden: no cronológico. El orden puede ser definido por el programador.
Más detallesÁrboles Binarios Ordenados Árboles AVL
Árboles Binarios Ordenados Árboles AVL Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Recordatorio... Se acerca la fecha de la primera entrega
Más detallesEliminación en un ABB
Eliminación en un El procedimiento para eliminar un nodo z de un árbol de búsqueda binaria tiene tres casos: aso 1: Si z no tiene hijos, se modifica su padre p[z] para reemplazar z con nil como su hijo.
Más detalles1. Árbol Binario de Búsqueda: Las clases Java NodoABB y ABB. 1. Definición y representación en Java 2. Operaciones y su coste estimado
Tema 11- Implementación de Cola de Prioridad y Diccionario Mediante un ABB Tema 11- Implementación de Cola de Prioridad y Diccionario Mediante un Árbol Binario de Búsqueda Germán Moltó Escuela Técnica
Más detallesFUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II
FUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II Ángela Villota Gómez Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle Primera parte: Repaso de funciones con
Más detallesClase 32: Árbol balanceado AVL
Clase 32: Árbol balanceado AVL http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com (Prof. Edgardo A. Franco) 1 Contenido Problema de los árboles binarios de búsqueda Variantes
Más detallesDefinición recursiva de los árboles
Árboles Un árbol es una estructura de datos jerarquizada ada dato reside en un nodo, y existen relaciones de parentesco entre nodos: padre, hijo, hermano, ascendiente, descendiente, etc. Ejemplo: apítulos
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 detallesAnálisis y Complejidad de Algoritmos. Arboles Rojinegros. Arturo Díaz Pérez
nálisis y omplejidad de lgoritmos rboles Rojinegros rturo íaz Pérez RedlackTree-1 efinición Los árboles rojinegros son estructuras basadas en árboles binarios balanceados. Un árbol rojinegro es un árbol
Más detallesEstructuras de datos: Árboles binarios de
Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents
Más detallesÁrboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1. Thursday, April 30, 15
Árboles balanceados Alonso Ramírez Manzanares Computación y Algoritmos 28.04.2015 1 Árboles balanceados Los algoritmos en árboles binarios de búsqueda dan buenos resultados en el caso promedio pero el
Más detallesÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES
ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES ÁRBOL Un árbol es un grafo no dirigido, conexo, sin ciclos (acíclico), y que no contiene aristas
Más detallesEstructuras de datos Solemne 2
Estructuras de datos Solemne 2 Profesores: Luis Bastías, Rodrigo Paredes, Iván Zuñiga Ayudantes: Patricia Albornoz, Francisco Claude, Hans Ulloa Sin apuntes, 1:30 horas P1. Move-To-Front Lists Utilizando
Más detallesEl método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol
Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos
Más detallesEstructuras de datos y algoritmos
Estructuras de datos y algoritmos 1. Introducción 2. Estructuras de datos lineales 3. Estructuras de datos jerárquicas 4. Grafos y caminos 5. Implementación de listas, colas, y pilas 6. Implementación
Más detallesClase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño
Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos
Más detallesDescubrir los árboles como paradigma de los tipos Recursivos de Datos
TEMA 5 ÁRBOLES(*) Una de las estructuras las datos más importantes y prominentes que existen es el árbol. No es un árbol en el sentido botánico de la palabra, sino uno de naturaleza más abstracta. Todos
Más detallesTipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Más detallesTema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Más detallesUna clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos
Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos Definición formal del lenguaje por comprensión L = {C n D m \ n,m >0 Donde C representa
Más detallesEstructura de Datos Árboles Árboles 2-3
Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo
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 detallesÁrboles binarios. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile
Árboles binarios Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Árbol: definición v Árbol (del latín arbor oris): Planta perenne,
Más detallesEstructuras de Datos
108 Ejercicio: Genere el árbol binario de búsqueda para la siguiente secuencia de números: 8, 9, 11, 15, 19, 20, 21, 7, 3, 2, 1, 5, 6, 4, 13, 14, 10, 12, 17, 16, 18. Analice y describa lo que sucede durante
Más detallesExamen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de er Curso de I.T. Informática de Sistemas.
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2001 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: PRÁCTICA Con el presente problema,
Más detalles