Estructura de Datos Árboles Árboles 2-3

Documentos relacionados
Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles B Árboles B* Árboles B + Primer Semestre, 2010

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Tema 10: Árbol binario de búsqueda

Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

Definición recursiva de los árboles

Árboles n-arios de búsqueda. Lección 16

Estructura de Datos Unidad 6: ARBOLES

3.6. Árboles B DEFINICIONES

Algoritmos y Programación II Curso 2006

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios

Estructuras de Datos Clase 20 Árboles de búsqueda

Estructuras de datos Árboles B

Estructuras de Datos. 8.6 Árboles B. Supongamos que los nodos de un árbol deben ser guardados en un medio de almacenamiento secundario (disco).

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

ARBOLES B. Lo que si es cierto es que la letra B no significa "binario", ya que:

Estructuras de Datos y Algoritmos

Estructuras de Datos II

Árboles Binarios Ordenados Árboles AVL

ELO320 Estructuras de Datos y Algoritmos. Heap & HeapSort. Tomás Arredondo Vidal

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Árboles AVL. Lección 14

Eliminación en un ABB

Tema 2: Grafos y Árboles. Algoritmos y Estructuras de Datos 3

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

Estructuras de Datos

Francisco J. Hernández López

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

El 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

COMPUTABILIDAD Y COMPLEJIDAD

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar.

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

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

Algoritmos y estructuras de datos

Colas deprioridad y heaps

EDA. Tema 8 Colas de Prioridad: Heaps

Universidad Tecnológica Nacional Facultad Regional Buenos Aires. Gestión de Datos. Árboles

Diseño de Conjuntos y Diccionarios

Árboles RN Montículos

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Guía práctica de estudio 07. Estructuras de datos lineales: Lista simple y lista circular.

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

La máxima distancia entre dos nodos de un árbol está dada por alguna de las 3 siguientes: La máxima distancia entre dos nodos del subárbol izquierdo.

Ejercicios del Tema 3 Estructuras jerárquicas: Árboles

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

Fibonacci Heaps. Fabiola Di Bartolo. Universidad Simón Boĺıvar

Estructuras de datos Listas y árboles

Tema 4. Estructuras no lineales de datos: árboles

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Definición de árbol. Árboles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

ESTRUCTURAS DE DATOS Y ALGORITMOS

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

Capítulo 8. Árboles. Continuar

Árboles binarios. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Árboles y esquemas algorítmicos. Tema III

Listas Posicionales. Listas posicionales

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

Teoría de Algoritmos 2 o curso de Ingeniería Informática

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Estructura de datos y de la información Boletín de problemas - Tema 10

Análisis amortizado El plan:

6. El TDA Lista Implementación con listas enlazadas. es de tipo genérico T. Pueden existir elementos repetidos (a diferencia de los conjuntos).

Programación Estructuras Arborescentes

El TAD Árbol. El TAD Árbol

Tema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

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

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

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1

Introducción a Árboles Árboles Binarios

Análisis y Complejidad de Algoritmos. Arboles Rojinegros. Arturo Díaz Pérez

Planificaciones Teoría de Algoritmos I. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5

Conceptos de Algoritmos, Datos y Programas

Capítulo 4: Grafos Clase 4: Árboles

4.5 Árboles AVL (Adelson-Velskii y Landis) Inserción y extracción en árboles AVL

Estructura de Datos. Árboles. Árboles. Primer Semestre, 2010 ÍNDICE DE CONTENIDOS

Planificaciones Algoritmos y Programación II. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Árboles. Alonso Ramírez Manzanares Computación y Algoritmos Friday, March 17, 17

UNIVERSIDAD CATÓLICA DEL NORTE PROGRAMA DE ESTUDIOS IDENTIFICACIÓN DE LA ASIGNATURA. Nombre: Estructuras de Datos y Archivos

Estructuras de datos: Conjuntos disjuntos

FORMATO DE CONTENIDO DE CURSO PLANEACIÓN DEL CONTENIDO DE CURSO. : Informática para Ingenieros I CÓDIGO :

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

Lenguajes III Análisis y Diseño de Algoritmos

Clase 32: Árbol balanceado AVL

Ampliación de Estructuras de Datos

Segundo parcial de Programación 2

GUÍA DOCENTE Estructuras de Datos

Capítulo 6. ÁRBOLES.

ÁRBOLES BINARIOS DE BÚSQUEDA (ABB)

Análisis en el caso peor El plan:

Programación TADs Arboles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 5. Tipos Abstractos de Datos

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

Transcripción:

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 con dos elementos 20 30 60 80 90 52 58 77 85 86 Nodo con un elemento 2 Arboles 1-2-3 Cada nodo tiene 1, 2 ó 3 subárboles asociados 75 3 subárboles 20 30 60 80 90 2 subárboles 1 subárbol 52 58 77 85 86 3

Arboles 1-2-3 Ordenado No hay elementos repetidos El elemento de la izquierda de cada nodo (raíz izquierda) es menor que el elemento de su derecha (raíz derecha) 75 Raíz izquierda 20 30 60 80 90 Raíz derecha 52 58 77 85 86 4 Arboles 1-2-3 Ordenado El primer subárbol es un árbol 1-2-3 que contiene elementos menores que la raíz izquierda. Primer subárbol 75 20 30 60 80 90 52 58 77 85 86 5 Árbol 1-2-3: Árbol triario ordenado El segundo subárbol es un árbol 1-2-3 que contiene elementos mayores que la raíz izquierda pero menores que la raíz derecha. 75 20 30 60 80 90 Segundo subárbol 52 58 77 85 86 6

Árbol 1-2-3: Árbol triario ordenado El tercer subárbol es un árbol 1-2-3 que contiene los elementos mayores que la raíz derecha. 75 20 30 60 80 90 Tercer subárbol 52 58 77 85 86 7 Árbol 1-2-3: Árbol triario ordenado Si la raíz derecha está vacía, su tercer subárbol debe ser vacío (el segundo puede o no ser vacío). 75 20 30 60 80 90 52 58 77 85 86 8 Árbol 2-3 Motivación: Optimizar el tiempo de acceso en una estructura de datos manejadas en memoria secundaria, en las cuales el número de consultas a un registro influye de manera determinante en el tiempo de respuesta de la operación. Acceso a la información en O(log 3 N) Baja complejidad en los algoritmos de actualización. 9

Árboles 2-3 Es un árbol triario ordenado balanceado: Todas las hojas se encuentran en el mismo nivel, ordenadas de izquierda a derecha. Todos los nodos internos tienen por lo menos 2 subárboles asociados no vacíos, aunque la raíz derecha esté vacía. 75 20 30 60 80 90 7 10 25 26 42 48 52 58 70 74 77 85 86 92 98 10 Árbol 2-3 Son un tipo de árbol balanceado por altura. Todos los nodos pueden tener hasta 2 elementos. Un nodo interno puede tener 2 ó 3 hijos, dependiendo de cuántos elementos posea el nodo: Si hay 1 elemento en el nodo, debe tener 2 hijos Si hay 2 elementos en el nodo, debe tener 3 hijos 11 Árboles 2-3 90 20 70 120 0 10 90 30 40 60 73 100 110 130 140 160 12

Arboles 2-3 13 Búsqueda en un árbol 2-3 Se empieza por la raíz y se va bajando por el árbol hasta que se encuentre el dato o se llegue a una hoja. Si el árbol está vacío, el dato no está en el árbol. Si no está vacío, primero buscar en la raíz. Si es alguno de los elementos de la raíz, se encontró. En caso contrario: Si el nodo es una hoja y el elemento no está en el nodo, el algoritmo finaliza. 14 Búsqueda en un árbol 2-3 Si el nodo no es una hoja : Si sólo hay un elemento en el nodo: Si es mayor que el dato a buscar, se por el hijo derecho, Si es menor, se por el hijo izquierdo. Si en el nodo hay dos elementos, r 1 y r 2 (con r 1 r 2 ): Si el dato es menor que r 1, buscar por el hijo izquierdo. Si el dato es mayor que r 1 y menor que r 2, buscar por el hijo central. Si es mayor que r 2 buscar por el hijo derecho.

Inserción en Arboles 2-3 Al insertar un nuevo dato en un árbol 2-3 se hará de forma que se mantenga el equilibrio en el árbol. 1. Localizar el nodo hoja donde debe ir el elemento. 2. Si hay sólo un elemento en ese nodo, añadir el dato. 3. Si no hay espacio en el nodo para un nuevo elemento, se divide el nodo y el elemento central se inserta en el nodo padre. 16 Inserción en Arboles 2-3 4. Si el nodo padre está lleno, al insertar el nuevo elemento se debe repetir el paso 3. 17 Inserción en Arboles 2-3 La secuencia de inserciones y divisiones se puede propagar hacia arriba hasta llegar a la raíz. Cuando la raíz pase a tener 3 elemento (r 1, r 2 y r 3 ) se divide en 2 nuevos nodos r 1 y r 3 creando una nueva raíz que contendrá sólo el elemento r 2. De esta forma, cuando el árbol 2-3 crece en altura, lo hace por arriba, creando una nueva raíz con sólo un elemento. 18

Inserción en Arboles 2-3 Las inserciones en un árbol 2-3 tienen dos casos: 1. Hay espacio en el nodo pues hay un sólo elemento. 2. No hay espacio y el nodo debe dividirse en dos y la mediana de los tres elementos se inserta en el padre recursivamente. Esto puede generar una secuencia de divisiones hasta la raíz. 19 Inserción en Arboles 2-3 En todos los casos, el elemento a insertar se denota por x Caso 1: r 1 r 1 < x r 1 x Caso 2: r 1 r 1 > x x r 1 20 Inserción en Arboles 2-3 Caso 3: r 1 r 2 r 2 < x Sube r 2 r 1 r 2 x r 1 x r 2 sube al nodo padre. 21

Inserción en Arboles 2-3 Caso 4: r 1 r 2 r 1 > x x r 1 r 2 Sube r 1 x r 2 r 1 sube al nodo padre. 22 Inserción en Arboles 2-3 Caso 5: r 1 r 2 r 1 < x < r 2 r1 x r 2 Sube x r 1 r 2 x sube al nodo padre. 23 Pseudocódigo de inserción en un árbol 2-3 Si el árbol esta vacío, crear un nuevo nodo y colocar r 1 en el lado izquierdo del nodo. Sino, Si hay un elemento y existe espacio en el nodo, si r 1 es menor que el elemento, el elemento se coloca a la derecha. Sino, Si r 1 es mayor que el elemento el elemento se coloca al lado izquierdo y r 1 al lado derecho. Sino, Si el nodo está lleno se divide en dos nodos del mismo nivel, se crea un nuevo nodo y se reparten los tres elementos. Después si elemento es mayor que r 2, sube r 2 a su padre. si elemento es menor que r 1, sube r 1 a su padre. si elemento es mayor que r 1, pero menor que r 2 sube el elemento a su padre. 24

Insertar en un árbol2-3 los siguientes elementos: S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 30 30 Input: 2 2 30 25 Insertar en un árbol2-3 los siguientes elementos: S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 2 30 2 30 2 30 Observe que el árbol crece hacia arriba, por la raíz. 26 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 63 2 30 63 27

S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: Sube el 63 2 30 63 63 2 30 28 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 1 63 1 2 30 29 S={ 30, 2,, 63,, 1, 0, 14, 27, 8, 9, 81, 79, 60 } Input: 0 63 1 Sube el 1 63 0 1 2 30 30 Sube el 1 63 1 63 30 30 30

S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 14 1 63 14 30 31 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 27 1 63 14 27 30 32 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 8 1 Sube el 8 63 8 14 27 30 1 8 63 14 27 30 33

S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 9 1 8 63 9 14 27 30 34 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 81 1 8 63 9 14 27 30 81 35 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 79 1 8 63 Sube el 79 9 14 27 30 79 81 1 8 63 79 9 14 27 30 81 36

S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 60 1 8 63 79 Sube el 30 9 14 27 30 60 81 Sube el 63 1 8 30 63 79 9 14 27 60 81 37 S={ 30, 2,, 63,, 1,0, 14, 27, 8, 9, 81, 79, 60 } Input: 60 63 1 8 30 79 9 14 27 60 81 38 Eliminación en un árbol 2-3 La estrategia de eliminación de datos en un árbol 2-3 es complementaria a la de inserción. En la inserción se produce una cadena de divisiones e inserciones hasta que un nodo no necesite dividirse o se llegue a la raíz. En el caso de la eliminación, los nodos se quedan vacíos y se fusionan con sus hermanos, hasta que un nodo quede vacío o se llegue a la raíz.

Eliminación en un árbol 2-3 1. El proceso siempre va a empezar en un nodo hoja. Si el elemento a borrar está en un nodo interior, se intercambia su valor con el de su sucesor en inorden, menor elemento del subárbol que queda a la derecha del elemento a borrar. 2. Si en la hoja en que se inicia la eliminación hay otro elemento, se elimina. 40 Eliminación en un árbol 2-3 3. Si en la hoja es el único elemento, el nodo queda vacío, lo cual no está permitido en árboles 2-3. Para arreglarlo, se fusiona el nodo vacío con uno de sus hermanos. Como el nodo padre ha perdido un hijo, también tiene que tener un elemento menos, por lo que pasa un elemento del padre al nuevo nodo. 4. Si el nodo hermano ya estaba lleno, se divide el nuevo nodo en 2 hijos y el elemento del medio queda como padre. 41 Eliminación en un árbol 2-3 5. Si el nodo padre se queda vacío al perder un elemento, se debe de repetir el algoritmo de fusión en el árbol tantos niveles hacia arriba como haga falta hasta encontrar un nodo que no se quede vacío o se llegue a la raíz. Si se llega a la raíz y se queda vacía, entonces tiene un hijo. La raíz se elimina y su único hijo pasa a ser la nueva raíz. 42

Eliminar del siguiente árbol 2-3 los elementos : 70, 100 y 80. 70 90 60 80 100 43 Como el elemento 70 no está en una hoja, se intercambia con su sucesor en inorden, el 80. El nodo quedaría entonces [80, 90] con tres hijos, [60], [70] y [100]. 80 90 60 70 100 44 Al borrar el 70, el nodo queda vacío. 80 90 60 100 45

Se intenta escoger para fusionarse un hermano que tenga dos elementos, para que el nodo padre no pierda elementos y evitar que se propaguen la fusiones hacia arriba. 80 90 60 100 46 Como en este caso no hay ningún hermano que pueda ceder un elemento, se escoge un nodo cualquiera, por ejemplo el [60] y se baja un elemento del nodo padre el [80]. El árbol queda finalmente: 90 60 80 100 47 Borrar el elemento 100, que está en un nodo hoja. 90 60 80 100 48

Este nodo se queda vacío, por lo que hay que realizar el proceso de fusión. 90 60 80 49 Como el nodo hermano está lleno, al bajar un elemento del padre, hay que dividirlo y repartir los elementos. Los nuevos nodos son el [60] y el [90] y el [80] es el elemento que pasa al nodo padre. 80 60 90 Borrar el elemento 80 que está en un nodo intermedio. El primer paso es intercambiarlo por su sucesor en inorden, el 90. 80 60 90 51

Resultado : 90 60 52 Al eliminar el 80 de la hoja donde se ha colocado, ésta se queda vacía, por lo que hay que fusionarla con su hermano. 90 60 53 Su hermano, que no está lleno, acepta el elemento que baja del nodo padre, que se queda vacío : 60 90 54

El nodo intermedio que se quedó vacío debe fusionarse con el hermano ([]), que como no está lleno, acepta el elemento que baja de su padre, que se queda vacío. 60 90 55 Como en el paso anterior, el hermano pasa a tener dos elementos y el padre, en este caso la raíz, se queda vacío: 60 90 56 Finalmente, se borra el nodo raíz vacío y su único hijo pasa a ser la nueva raíz. El árbol ha perdido altura: 30 60 90 57

Implementación en un árbol 2-3 typedef struct NodoArbol23 { TipoElemento raiz1, raiz2; struct NodoArbol23 *h_izq, *h_cen, *h_der; } TArbol23, *Arbol23; raíz_izq raíz_der 58 Análisis de la Complejidad La altura h de un árbol 2-3 en el peor caso es cuando es un árbol binario completo: n = 1 + 2 + 4 +... + 2 (h-1) = (2 h - 1)/(2-1) = 2 h - 1 nodos, es decir h <= log 2 (n+1) En el mejor caso es un árbol ternario, entonces: n = 1 + 3 + 9 +... + 3 (h-1) = (3 h - 1)/(3-1) = (3 h - 1)/2 nodos, es decir h >= log 3 (2n+1) Luego la altura está entre log 2 (n) y log 3 (n) 59 Ejercicios 1. Muestre el proceso de inserción en un árbol 2-3 de la siguiente secuencia de valores: 25 86 34 23 4 98 12 56 74 77 80 2. Insertar las claves, 38, 37, 36, en el siguiente árbol 2-3: 60

Bibliografía - Webgrafía Algoritmos en C++ Robert Sedgewick, Fernando Davara Rodríguez, Miguel Katrib Mora, Sergio Ríos Aguilar, Luis Joyanes Aguilar 2000 Addison-Wesley/Díaz de Santos. Introduction to Algorithms, 2nd edition. Cormen, T., Leiserson, Ch., Rivest, R. and Stein, C. MIT Press. 2001. Data Structures and Algorithms. A. Aho, J. Hopcroft, and J. Ullman. Addison-Wesley, 1983. Traducido al castellano, 1988. Brassard, Gilles & Bratley, Paul. Fundamentos de Algoritmia. Prentice-Hall. 1997. http://www.utm.mx/~jahdezp/archivosestructuras/arbol2-3.pdf http://www.tecn.upf.es/~rbaeza/cursos/tema4-arboles-avly2-3.html cupi2.uniandes.edu.co 61