El TAD Árbol. El TAD Árbol

Documentos relacionados
TAD Lineales: Pila, Cola y Lista

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Tipos Abstractos de Datos

El TAD Grafo. El TAD Grafo

TEORÍA DE GRAFOS Ingeniería de Sistemas

Estructuras de datos. Estructuras de datos

Estructuras de datos: Árboles binarios de

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

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

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

ESTRUCTURAS DE DATOS ÁRBOLES 143

UNIDAD 9. DATOS COMPLEJOS PILAS

Ampliación de Estructuras de Datos

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

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

Capítulo 6. ÁRBOLES.

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

3. COLA DE PRIORIDAD DEFINICION (I)


Arboles Binarios de Búsqueda

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

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

Tema: Los Grafos y su importancia para la optimización de redes.

ÁRBOLES BINARIOS GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

: Algorítmica y Estructura de Datos I

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

7. Agrupamiento (clustering)

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

Elementos de un programa en C

Funciones: Aspectos básicos

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

árbol como un conjunto de nodos y líneas

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

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

GRAMATICAS LIBRES DEL CONTEXTO

Capítulo 6. Relaciones. Continuar

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Introducción a los códigos compresores

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

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

Tema 6. Gestión dinámica de memoria

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

Guía práctica de estudio 05: Diagramas de flujo

UNIVERSIDAD DEL ISTMO PROGRAMA DE ESTUDIO

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre

Universidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación

3. ESTRUCTURAS DE DATOS NO LINEALES

PLAN DE MATERIAS ACADEMUSOFT 3.2

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

13. Utilizar la fórmula del término general y de la suma de n términos consecutivos

Árboles Binarios Ordenados Árboles AVL

4 E.M. Curso: Unidad: Estadísticas Inferencial. Colegio SSCC Concepción. Depto. de Matemáticas. Nombre: CURSO: Unidad de Aprendizaje: FUNCIONES

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Ejemplos de TAD (tipos simples)

UNIVERSIDAD DR. JOSE MATIAS DELGADO

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algebra Lineal. Gustavo Rodríguez Gómez. Verano 2011 INAOE. Gustavo Rodríguez Gómez (INAOE) Algebra Lineal Verano / 21

Otra forma de enumerar los resultados es en una tabla de frecuencia:

BASES DE DATOS TEMA 2 MODELOS DE DATOS

ALGEBRA DE BOOLE George Boole C. E. Shannon E. V. Hungtington [6]

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Fundamentos de programación y Bases de Datos

MATEMÁTICAS BÁSICAS. Autoras: Margarita Ospina Pulido Jeanneth Galeano Peñaloza Edición: Rafael Ballestas Rojano

Tema 2. Fundamentos de la Teoría de Lenguajes Formales

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

Análisis amortizado El plan:

UNIVERSIDAD NACIONAL DE INGENIERÍA CENTRO DE EXTENSIÓN Y PROYECCIÓN SOCIAL

1 Relaciones de orden

1. Computadores y programación

SESIÓN N 07 III UNIDAD RELACIONES Y FUNCIONES

Procesadores de lenguaje Tema 6 La tabla de símbolos

CINEMÁTICA: ESTUDIO DEL MOVIMIENTO. Cinemática es la parte de la Física que estudia la descripción del movimiento de los cuerpos.

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

ESCUELA DE INFORMÁTICA

Sistemas Operativos Practica 1: procesos y concurrencia.

SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS

Estructuras de Datos Abstractas en Lenguaje Java

2. El conjunto de los números complejos

2. SEÑALES Y SISTEMAS DISCRETOS EN EL TIEMPO. Una señal puede ser definida como una portadora física de información. Por ejemplo,

PROGRAMACIÓN UNIDADES

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados

Búsqueda con adversario

PROGRAMACION ORIENTADA A OBJETOS EN C++

Aprendizaje Automatizado

Principios de Computadoras II

<tipo> Tipo de dato de los elementos del vector

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

GUÍA DOCENTE. Ingeniería Informática en Sistemas de Información Doble Grado:

Planificador de Linux (Scheduler)

Los números enteros. Dado que los enteros contienen los enteros positivos, se considera a los números naturales son un subconjunto de los enteros.

Conectados con el pasado, proyectados hacia el futuro Plan Anual de Matemática II Año PAI VII Grado

Estructura de Datos: Archivos

Un grafo G = (V, E) se dice finito si V es un conjunto finito.

Representación de números enteros: el convenio exceso Z

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Transcripción:

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 terminología básica 3.2 Árbol n-ario 3.2.1 Especificación algebraica 3.2.2 Implementación 3.3 Árbol binario 3.3.1 Especificación algebraica 3.3.2 Implementación 3.4 Recorridos sobre árboles 3.5 Árboles binarios de búsqueda (ABB) 3.5.1 Especificación algebraica 3.5.2 Implementación Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1 3.6 Árboles binarios equilibrados 3.7 Árboles B, B + y B * 3.8 Colas de prioridad y montículos Duración! 7 clases (10,5 h) Bibliografía! Estructuras de datos: especificación, diseño e implementación Autor: Xavier Franch Gutiérrez Editorial : Ediciones UPC, 1999 Págs. 219-303! Estructuras de datos. Algoritmos, abstracción y objetos Autor: Luis Joyanes Aguilar, Ignacio Zahonero Martínez Editorial: McGraw-Hill Págs. 311-416 Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 2

3.1 Concepto, definiciones y terminología básica! Los árboles son estructuras que organizan sus elementos, denominados nodos, formando jerarquías. De entre estos nodos existe uno especial denominado raíz! Existe una relación (de paternidad entre los nodos) que hace que la estructura sea jerárquica frente a la estructura lineal! El uso de los árboles está muy extendido en programación. Algunos ejemplos pueden ser:! estructurar los directorios y archivos en los sistemas operativos! representar la estructura de las fórmulas matemáticas! organizar la información en los SGBD! representar la estructura sintáctica de un programa fuente en los compiladores! representar sistemas de clasificación Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 3! La definición recursiva de árbol es: Un árbol n-ario (con n 1) es un conjunto no vacío de elementos o nodos del mismo tipo tal que:! un único nodo es un árbol, llamado raíz del árbol! el resto de los elementos se distribuyen en m (0 m n) subconjuntos disjuntos, denominados subárboles, cada uno de los cuales es a su vez un árbol n-ario! Un árbol con raíz x y subárboles A 1,, A m se representa de la siguiente forma: x A 1... A m Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 4

! Podemos clasificar los árboles atendiendo a diferentes criterios: " Cuando existe una relación de orden total en el conjunto de los subárboles de un árbol n-ario, el árbol se llama ordenado (será el que utilizaremos) " Si no existe limitación para el número de hijos que pueda tener un nodo, el árbol se denomina general. Por el contrario, si existe un número fijo n que limita el número de hijos de un nodo, el árbol se denomina n-ario " Cuando los nodos de una árbol contienen información (caso más habitual), el árbol se denomina etiquetado Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 5 Terminología Básica H A B C D E F G I J K L M Nodo: Cada posición dentro del árbol junto con la información asociada Si existe una arista (rama) dirigida del nodo n al nodo m, entonces n es el padre de m y m es un hijo de n Los hijos del mismo padre se denominan hermanos Todos los nodos de un árbol menos uno, denominado nodo raíz, tienen un único padre Una hoja de un árbol es un nodo que no tiene hijos. El resto de los nodos se denominan interiores o internos Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 6

Terminología Básica H A B C D E F G I J K L M Se denomina camino del nodo n 1 al nodo n k a la secuencia de nodos de un árbol n 1, n 2,, n k, de forma que n i es el padre de n i+1 (1 i k) La longitud de un camino es el número de nodos del camino menos 1. Por convenio, decimos que existe un camino de longitud 0 de un nodo a sí mismo Si existe un camino desde un nodo n 1 hasta un nodo n 2, se dice que n 1 es antecesor de n 2, y n 2 es descendiente de n 1 El padre de un subárbol o nodo es su primer antecesor propio. Los hijos de un subárbol o nodo son sus primeros descendientes propios Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 7 Terminología Básica A B C D E F G H I J K L M La altura de un nodo en un árbol es la longitud del camino desde dicho nodo a la hoja más lejana que sea alcanzable desde él La altura de un árbol es la altura del nodo raíz La profundidad o nivel de un nodo en un árbol es la longitud del único camino existente desde el nodo raíz hasta dicho nodo Por definición, el número de niveles de un árbol se define como uno más el nivel de la hoja más profunda. En el nivel 0 sólo está el nodo raíz El grado de un árbol es el número máximo de hijos que pueden tener sus subárboles El número máximo de nodos en el nivel i-ésimo de un árbol de grado n es n i Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 8

3.2 Especificación Algebraica! La operación básica de la signatura de los árboles es la de enraizar un número indeterminado de árboles para formar un nuevo árbol! La sintaxis de las especificaciones algebraicas no permite declarar operaciones con un número indeterminado de parámetros! Debemos definir nuevos conceptos que nos ayuden a construir la especificación algebraica " Un bosque ordenado de grado n (n 1) es una secuencia A 1,, A m (0 m n) de árboles n-arios ordenados. Si m = 0, el bosque se llama vacío " Un árbol n-ario ordenado se genera a partir de un elemento r y un bosque de grado n, considerando al elemento r la raíz del nuevo árbol y el bosque como sus subárboles " Definimos el tipo bosque como una lista en la que los elementos son árboles Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 9 espec arbolesordenados usa booleanos, naturales, listas parámetro formal género elemento fpf renombrar lista<árbol> por bosque géneros árbol operaciones _ Θ _ : elemento bosque # árbol raíz: árbol # elemento hijos: árbol # bosque parcial subárbol: árbol natural # árbol numhijos: árbol # natural hoja?: árbol # booleano altura: árbol # natural privada altbosque: bosque # natural Gen (árbol) = { _ Θ _ } Mod (árbol) = {subárbol} Obs (árbol) = {raíz, hijos, numhijos, hoja?, altural} Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 10

dominios de definición b: bosque; i: natural; e: elemento subárbol (e Θ b, i) está definido sólo si (1 i) (i long (b)) ecuaciones b: bosque; i: natural; e: elemento; a: árbol raíz (e Θ b) = hijos (e Θ b) = subárbol (e Θ b, i) = numhijos (e Θ b) = hoja? (e Θ b) = altura (a) = altbosque ([ ]) = altbosque (+izq (a, b)) = fespec Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 11 3.3 Implementación del árbol n-ario! La implementación se hará de forma dinámica mediante punteros, usando una representación denominada primogénito siguiente hermano " Consiste en crear, para cada nodo, una lista dinámica con sus hijos! el tipo árbol es un puntero a un objeto con tres propiedades: la información correspondiente al elemento raíz, un puntero al objeto correspondiente al primer hijo, y otro puntero al objeto correspondiente al siguiente hermano 3 a 14 15 3 14 15 9 2 6 33 9 2 6 33 Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 12

módulo TadArbol importa TadElemento, TadNodoArbol, TadLista exporta tipo bosque = lista<árbol> árbol = clase público constructor plantar (e: elemento; b: bosque) función observaraíz: elemento acción hijos (var b: bosque) acción subárbol (i: natural; var sa: árbol) función numhijos: natural función eshoja: booleano función altura: natural acción copia (a: árbol) acción libera privado raiz: PtrNodoArbol; fclase; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 13! Se define una clase NodoArbol, que representa a cada uno de los nodos que forman un árbol tipo PtrNodoArbol = puntero a NodoArbol; nodoarbol = clase público constructor creanodoarbol(e: Elemento; ph,sh:ptrnodoarbol); acción setelemento(e: Elemento); acción setprimhijo(pph: PtrNodoArbol); acción setsighermano(psh: PtrNodoArbol); función getelemento: Elemento; acción getprimhijo: PtrNodoArbol; función getsighermano: PtrNodoArbol; privado elem: Elemento; PrimHijo, SigHermano: PtrNodoArbol; fclase; ftipo; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 14

acción árbol.plantar (e:elemento; b:bosque) faccion; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 15 función árbol.subárbol(i: natural; var sa: árbol); función árbol.altura:natural ffunción; faccion; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 16

3.4 Concepto, especificación e implementación de árbol binario! Un árbol binario ordenado es un árbol en el que cada nodo puede tener, a lo sumo, dos hijos $ es un conjunto de nodos del mismo tipo que, o bien es el conjunto vacío, o está formado por un nodo raíz enlazado a dos árboles binarios disjuntos denominados subárbol izquierdo y subárbol derecho t m k h f d Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 17 Especificación Algebraica espec arbolesbinarios usa booleanos, enteros parámetro formal género elemento fpf género arbin operaciones : # arbin _ < _, _ >: elemento arbin arbin # arbin parcial raíz: arbin # elemento parcial subizq, subder: arbin # arbin vacío?: arbin # booleano parcial altura: arbin # entero dominios de definición iz, de: arbin; e: elemento Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 18

ecuaciones iz, de: arbin; e: elemento raíz (e<iz, de>) = subizq (e<iz, de>) = subder (e<iz, de>) = vacío? ( ) = vacío? (e<iz, de>) = altura (e<iz, de>) = fespec Clasificación de las operaciones: Gen (arbin) = { } Mod (arbin) = { } Obs (arbin) = { } Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 19 Implementación del árbol binario! La clase NodoB, que representa a cada uno de los nodos que forman un árbol binario, es: tipo PtrNodo = puntero a NodoB; nodob = clase público constructor creanodo(e: Elemento; izq,der:ptrnodo); acción setelemento(e: Elemento); acción setizq(pizq: PtrNodo); acción setder(pder: PtrNodo); función getelemento: Elemento; acción getizq: PtrNodo; función getder: PtrNodo; privado elem: Elemento; izq, der: PtrNodo; fclase; ftipo; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 20

Implementación del árbol binario módulo TadArbolBinario importa TadElemento, TadNodoB exporta tipo arbin= clase público constructor creavacío acción plantar (e: elemento; ai, ad: arbin) función raíz: elemento acción subizq ( var ai: arbin) acción subder ( var ad: arbin) función esvacío: booleano función altura (a: arbin): entero acción copia ( viejo: arbin) acción libera privado raíz: PtrNodo; fclase; raíz dato izq der Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 21 Tipos de árboles binarios! Un árbol binario de altura h se llama completo si tiene todas sus hojas a nivel h y todos sus nodos interiores tienen dos hijos no vacíos! Un árbol binario de altura h se llama semicompleto si los nodos de nivel h y h-1 son los únicos de grado cero o uno, de forma que las hojas del último nivel ocupan las posiciones más a la izquierda de dicho nivel 50 20 80 10 40 74 99 8 35 60 Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 22

3.4 Recorridos sobre árboles Los dos tipos básicos de recorrido para los árboles n-arios ordenados son: PREORDEN - si A no tiene hijos, se visita la raíz de A - si los tiene, primero se visita la raíz de A y, a continuación, se recorren en preorden los subárboles POSTORDEN - si A no tiene hijos, se visita la raíz de A - si los tiene, primero se recorren en postorden los subárboles y a continuación se visita la raíz de A 3 14 15 9 2 6 33 recorrido en preorden: recorrido en postorden: Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 23 Implementación para árboles n-arios acción preorden (a: árbol; var l: lista); acción postorden (a: árbol; var l: lista) facción; facción; Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 24

Implementación para árboles binarios Para los árboles binarios existe otro tipo de recorrido: INORDEN - si A es el árbol vacío, termina el recorrido - si no lo es, primero se recorre en inorden el subárbol izquierdo, a continuación se visita la raíz de A y, por último, se recorre en inorden el subárbol derecho. acción preorden (a: arbin; var l: lista) acción postorden (a: arbin; var l: lista) facción facción Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 25 Implementación para árboles binarios acción InOrden (a: arbin; var l: lista) B A C D E F G facción H K I J Recorrido preorden: Recorrido inorden: Recorrido postorden: Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 26