Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos.

Slides:



Advertisements
Presentaciones similares
ÍNDICES.
Advertisements

5. Estructuras no lineales estáticas y dinámicas
ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
Árboles binarios. Algoritmos básicos
Tema 4 Árboles. Conceptos Generales..
Árboles balanceados AVL
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
Tema Nº4.
Listas circulares.
Arboles Binarios de expresiones
Estructura de Datos Lineales
Material de apoyo Unidad 4 Estructura de datos
Árboles.
ÁRBOLES BINARIOS DE BÚSQUEDA
Estructuras de Datos MC Beatriz Beltrán Martínez.
Definiciones: conjuntos, grafos, y árboles
Árboles, montículos y grafos Cola de prioridades, montículos
Tópicos I Árboles, montículos y grafos
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
ARBOLES ESTRUCTURAS DE DATOS.
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Almacenamiento y Recuperacion de Información- Arbol AVL
ÁRBOLES BINARIOS DE BÚSQUEDA BALANCEADOS
Árboles AVL por Jorge Riera Ledesma Departamento de Estadística, Investigación Operativa Y Computación.
Estructuras de Datos1 ABB´s balanceados por peso Balance perfecto Para cada nodo, el número de nodos del subárbol izquierdo y el número de nodos del subárbol.
Árboles.
Árboles AVL cont..
Árboles Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
1 Arboles AVL Introducción Arboles AVL (Adel’son-Vel’skii and Landis.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
Definiciones: conjuntos, grafos, y árboles
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
1 Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Arboles B (búsqueda externa)
1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones.
Algoritmos y estructura de datos en I.O.
ARBOLES GENERALIZADOS
Árboles Binarios de Búsqueda (ABB)
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Capítulo 8: Árboles Autor: José Alfredo Jiménez Murillo.
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.
M.C. Meliza Contreras González
Matemáticas Discretas MISTI
Ing. Shirley Coque Carrera Ingeniería de Sistemas
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
M.C. Meliza Contreras González
M.C. Meliza Contreras González
Listas Dinámicas.
Arboles Binarios: AVL (Adelson – Velskii - Landis)
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Árboles binarios. Algoritmos básicos
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
Transcripción de la presentación:

Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos después de inserciones o eliminaciones de elementos. Estos árboles también nombrados recientemente AVL en honor a sus inventores, dos matemáticos rusos Adelson-Velskii y Landis.

Un árbol balanceado es un árbol binario en el cual las alturas de los dos subárboles para cada nodo nunca difieren en más de una unidad.

El Factor de Equilibrio (FE) o de Balance (FB) de un nodo se define como la altura del SAD menos la altura del SAI correspondiente. El Factor de Equilibrio de cada nodo en un árbol balanceado será –1, 1 ó 0. Si FE llegara a tomar los valores de –2 ó 2, entonces debería reestructurarse el árbol. Factor de Equilibrio

Arbol Balanceado

Reestructuración de Arboles AVL Reestructurar un árbol balanceado significa rotar los nodos del mismo. La rotación puede ser simple o compuesta. En el primer tipo de rotación se involucran dos nodos y en el segundo, se afectan tres. Si la rotación es simple puede realizarse por las ramas derechas (RDD: Rotación Derecha Derecha) o por las ramas izquierdas (RII: Rotación Izquierda Izquierda). Si la rotación es compuesta puede realizarse por las ramas derecha e izquierda (RDI: Rotación Derecha Izquierda) o por las ramas izquierda y derecha (RID: Rotación Izquierda Derecha).

Inserción en Árboles Balanceados

CASO 1. El SAI y el SAD del árbol balanceado tienen la misma altura (hSAD = hSAI): a) Si se inserta un elemento en SAI entonces hSAD será menor que hSAI b) Si se inserta un elemento en SAD entonces hSAD será mayor que hSAI Ya sea para a) o para b), no se viola el criterio de equilibrio o balance del árbol. BC A BC A BC A CASO 1 1.b 1.a D D

CASO 2. El SAI y el SAD del árbol balanceado tienen altura diferente (hSAD ≠ hSAI): CASO 2.1. Si hSAD > hSAI a) Si se inserta un elemento en SAI entonces hSAD será igual a hSAI Las ramas tienen la misma altura por lo que se mejora el equilibrio b) Si se inserta un elemento en SAD entonces el árbol debe ser reestructurado Las ramas están desequilibradas por lo que se requiere reestructuración BC A D BC A DE BC A DE CASO a.2.1.b. F

CASO 2.2. Si hSAD < hSAI a) Si se inserta un elemento en SAI entonces el árbol debe ser reestructurado Las ramas están desequilibradas por lo que se requiere reestructuración b) Si se inserta un elemento en SAD entonces hSAD será igual a hSAI Las ramas tienen la misma altura por lo que se mejora el equilibrio Para poder determinar si un árbol está balanceado debe calcularse el FE de cada nodo del árbol. BC A D CASO 2.2. BC A D 2.2.a. E BC A ED 2.2.b.

El proceso de inserción en un árbol balanceado consta de los siguientes pasos: 1)Primero debe seguirse el camino de búsqueda del árbol, hasta localizar el lugar donde hay que insertar el elemento. 2)Se calcula su FE, que será cero (pues el elemento recién insertado posee SAI y SAD vacíos). Luego, se regresa por el camino de búsqueda calculando el FE de todos los demás nodos que componen el árbol. Si en alguno de los nodos se viola el criterio de equilibrio entonces debe reestructurarse el árbol. El proceso termina al llegar a la raíz del árbol, o cuando se realiza la reestructuración del mismo, en cuyo caso no es necesario determinar el FE de los nodos restantes.

Ejemplo de Inserción de Nodos con Árboles AVL Se insertara la siguiente secuencia: 65, 50, 23, 70, 82, 68 y 39

//NODO es de tipo puntero, BO es booleano indica que el árbol a crecido (falso), INFOR es de tipo //entero. OTRO, NODO1, NODO2 son variables auxiliares de tipo puntero insertaBalanceado(NODO, BO, INFOR){ 1. Si NODO≠null entonces 1.1. Si INFOR < NODO^.INFO entonces: Si BO = VERDADERO entonces: Si NODO^.FE = 1:Hacer NODO^.FE=0 y BO=falso =0 :Hacer NODO^.FE = -1 = -1 :Hacer NODO1 = NODO^.IZQ //{Restructuración del árbol} Si NODO1^.FE ≤ 0 entonces: //{Rotacion II} Hacer NODO^.IZQ =NODO^.DER NODO1^.DER = NODO NODO^.FE = 0 y NODO = NODO1 //{ Termina la rotacion II}

si no: Hacer NODO2 = NODO1^.DER NODO^.IZQ = NODO2^.DER NODO2^.DER = NODO NODO1^.DER = NODO2^.IZQ NODO2^.IZQ =NODO A. Si NODO2^.FE = -1 entonces: Hacer NODO^.FE =1 si no: Hacer NODO^.FE = B. //{Fin del paso A.} C. Si NODO2^.FE =1 entonces: Hacer NODO1^.FE = -1 si no : Hacer NODO1^.FE = D // Fin del paso C. Hacer: NODO = NODO2 //Termina rotacionID // Fin del paso Hacer NODO^.FE = 0 y BO = falso // Fin del paso //Fin del paso SI NO :

Si INFOR > NODO^.INFO entonces: Regresar a InsertarBalanceado con NODO^.DER, BO, e INFOR Si BO = VERDADERO entonces: Si NODO^.FE = -1: Hacer NODO^.FE = 0 y BO= FALSO = 0: Hacer NODO^.FE =1 = 1 : Hacer NODO1= NODO^.DER // restructuracion del arbol Si NODO^.FE ≥ 0 entonces: //rotacio DD Hacer: NODO^.DER = NODO^.IZQ NODO^.IZQ = NODO NODO^.FE = 0 y NODO = NODO1 // termina rotacionDI Si no: //Rotacion DI Hacer: NODO2 = NODO1^.IZQ

NODO^.DER = NODO2^.IZQ NODO2^.IZQ = NODO NODO1^.IZQ = NODO2^.DER NODO2^.DER = NODO A. Si NODO2^.FE = 1 entonces: Hacer NODO^.FE = -1 si no: Hacer NODO^.FE = B // fin del paso A C. Si NODO2^.FE = -1 entonces: Hacer NODO1^.FE =1 Si no: Hacer NODO1^.FE = D. //Fin del paso C // fin del paso Hacer NODO^.FE = 0 y BO=falso // Fin del paso // Fin del paso Si No: Escribir “ El nodo ya se encuentra en el arbol” // Fin del paso 1.1.3

// Fin del paso //Fin del paso 1.1. Si no: CREAR NODO HACER NODO^.INFO =INFOR NODO^.IZQ = NULL NODO^.DER = NULL NODO^.FE = 0 BO = VERDADERO 2. // Fin del paso 1

Eliminacion en Arboles Balanceados

ELIMINACION DE NODOS EN ÁRBOLES BALANCEADOS La operación de borrado en árboles balanceados consiste en quitar un nodo del árbol sin violar los principios que definen a un árbol balanceado. Para este tipo de operación se deben de tomar en cuenta los siguientes casos: CASO 1: Si el elemento a borrar es hoja, simplemente se suprime. CASO 2: Si el elemento a borrar tiene sólo un hijo, entonces tiene que sustituirse por él. CASO 3: Si el elemento a borrar tiene los dos hijos, entonces tiene que sustituirse por el nodo que se encuentra más a la izquierda en el SAD o por el nodo que se encuentra más a la derecha en el SAI.

PASOS A SEGUIR PARA ELIMINAR UN NODO, EN UN ARBOL BALANCEADO. Localizar su posición en el árbol. Eliminarlo siguiendo los criterios establecidos previamente. Regresar por el camino de búsqueda calculando el FE de los nodos visitados. Si en alguno de los nodos se viola el criterio de equilibrio, entonces debe reestructurarse el árbol. El proceso concluye una vez que se llega hasta la raíz del árbol.

Eliminar las siguientes claves del árbol balanceado de la figura: 82, 10, 39, 65, 70, 68 y 66

Eliminar la clave: 10

Eliminar la clave: 39

Eliminar la clave: 65

Eliminar la clave: 70

Eliminar la clave: 68

Eliminar la clave: 66

Solución Final.