Árboles balanceados AVL

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
Matemática Financiera 1º ADEUtilización de la Función TIR en el cálculo del tanto efectivo 1 de 37 Cálculo de tantos efectivos Utilización de la función.
Cuestiones y problemas
Aritmética del Computador Introducción a la Tecnología de la Información.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
LÍMITES.
Tema 4 Árboles. Conceptos Generales..
ESTRUCTURAS DE DATOS AVANZADAS
Algoritmos Aleatorizados
Números enteros.
Cont. Arbol Binario de Búsqueda
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
ÁRBOLES DE EXPRESION.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Arboles (Trees) Arboles Arboles binarios Recorridos de árboles
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.
Inteligencia Artificial Resolver problemas mediante búsqueda
Ana Lilia Laureano Cruces UAM-A
Estructura de Datos Lineales
Árboles.
ÁRBOLES BINARIOS DE BÚSQUEDA
Estructuras de Datos MC Beatriz Beltrán Martínez.
Árboles, montículos y grafos Cola de prioridades, montículos
Tópicos I Árboles, montículos y grafos
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
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.
Árboles B M.C. José Andrés Vázquez Flores Estructuras de Datos / Primavera 2014.
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 Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones y especificaciones. 2. Conjuntos y diccionarios. 3. Representación de conjuntos mediante.
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.
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
Tema 4. Representación de conjuntos mediante árboles.
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Árboles Binarios de Búsqueda (ABB)
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Árboles Binarios * Recorridos * Tipo
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.
Matemáticas Discretas MISTI
M.C. Meliza Contreras González
ESTRUCTURA DE DATOS II Ing. Freddy Melgar Algarañaz Árboles Binarios *Recorridos *Tipo.
Arboles Binarios: AVL (Adelson – Velskii - Landis)
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Arboles AVL Nombre : Oscar Sandoval Fecha:
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Arboles M.C. José Andrés Vázquez FCC/BUAP
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP Árboles AVL Objetivos:  Entender la importancia que tiene el balanceo en un ABB.  Describir.
Transcripción de la presentación:

Árboles balanceados AVL

Definición El nombre AVL son las iniciales de los hombres que idearon este tipo de árbol Adelson-Velskii y Landis en 1962. Básicamente un árbol AVL es un Árbol binario de búsqueda al que se le añade una condición de equilibrio. Esta condición es que para todo nodo la altura de sus subárboles izquierdo y derecho pueden diferir a lo sumo en 1.

Características Un AVL es un ABB La diferencia entre las alturas de los subárboles derecho e izquierdo no debe excederse en más de 1. Cada nodo tiene asignado un peso de acuerdo a las alturas de sus subárboles Un nodo tiene un peso de 1 si su subárbol derecho es más alto, -1 si su subárbol izquierdo es más alto y 0 si las alturas son las mismas. La inserción y eliminación en AVLs es la misma que en los ABBs.

Ejemplo de AVL -2 -1 6 8 7 4 1 2 3 6 8 7 4 1 2 3 1 -1 1 -1 Sólo el árbol de la izquierda es AVL. El de la derecha viola la condición de equilibrio en el nodo 6, ya que su subárbol izquierdo tiene altura 3 y su subárbol derecho tiene altura 1.

Equilibrio Equilibrio (n) = altura-der (n) – altura-izq (n) describe relatividad entre subárbol der y subárbol izq. + (positivo)  der mas alto (profundo) - (negativo)  izq mas alto (profundo) Un árbol binario es un AVL si y sólo si cada uno de sus nodos tiene un equilibrio de –1, 0, + 1 Si alguno de los pesos de los nodos se modifica en un valor no válido (2 o -2) debe seguirse un esquema de rotación.

Operaciones sobre un AVL Insertar Balancear Caso 1 Rotación simple izquierda RSI Caso 2 Rotación simple derecha RSD Caso 3 Rotación doble izquierda RDI Caso 4 Rotación doble derecha RDD Eliminar Calcular Altura

Implementación: Estructura nodo struct Nodo { int bal; //para almacenar el valor del equilibrio del nodo int dato; Nodo *izq; Nodo *der; }

Insertar Usamos la misma técnica para insertar un nodo en un ABB ordenado trazamos una ruta desde el nodo raiz hasta un nodo hoja (donde hacemos la inserción). Insertamos el nodo nuevo. Volvemos a trazar la ruta de regreso al nodo raíz, ajustando el equilibrio a lo largo de ella. Si el equilibrio de un nodo llega a ser + - 2, volvemos a ajustar los subárboles de los nodos para que su equilibrio se mantenga acorde con los lineamientos AVL (que son +- 1)

Balancear Caso 1: Rotación simple izquierda RSI Si esta desequilibrado a la izquierda y su hijo derecho tiene el mismo signo (+) hacemos rotación sencilla izquierda.

Balancear Caso 2: Rotación simple derecha RSD Ejemplo 1 Si esta desequilibrado a la derecha y su hijo izquierdo tiene el mismo signo (-) hacemos rotación sencilla derecha. Ejemplo 1

Balancear Caso 2: Rotación simple derecha RSD Ejemplo 2 D -1

Rotación simple izquierda o derecha. Hay varios puntos que cabe señalar aquí: Se conserva el orden apropiado del árbol. Restablece todos los nodo a equilibrios apropiados AVL Conserva el recorrido en orden que el árbol anterior. Sólo necesitamos modificar 3 apuntadores para lograr el nuevo equilibrio (con la de la raíz)

Balancear Caso 3: Rotación doble izquierda RDI Ejemplo 1 Si está desequilibrado a la izquierda (FE < –1), y su hijo derecho tiene distinto signo (+) hacemos rotación doble izquierda-derecha. Ejemplo 1

Balancear Caso 3: Rotación doble izquierda RDI Ejemplo 2

Balancear Caso 4: Rotación doble derecha RDD Ejemplo 1 Si esta desequilibrado a la derecha y su hijo izquierdo tiene distinto signo (–) hacemos rotación doble derecha-izquierda. Ejemplo 1

Balancear Caso 4: Rotación doble derecha RDD Ejemplo 2

Eliminar Al eliminar un nodo en un árbol AVL puede afectar el equilibrio de sus nodos. Entonces hay que hacer rotaciones simples o dobles. Eliminas un nodo como lo hacemos en un árbol binario ordenado. Al localizar el nodo que queremos eliminar seguimos este procedimiento: Si el nodo es un nodo hoja, simplemente lo eliminamos. Si el nodo solo tiene un hijo, lo sustituimos con su hijo. Si el nodo eliminado tiene dos hijos, lo sustituimos por el hijo derecho y colocamos el hijo izquierdo en el subárbol izquierdo del hijo derecho.

Ahora que hemos eliminado el nodo, tenemos que volver a equilibrar el árbol: Si el equilibrio del padre del nodo eliminado cambia de 0 a +-1 el algoritmo concluye. Si el padre del nodo eliminado cambio de +-1 a 0, la altura del árbol ha cambiado y se afecte el equilibrio de su abuelo. Si el equilibrio del padre del nodo eliminado cambia de +- 1 a +- 2 hay que hacer una rotación. Después de concluirla, el equilibrio del padre podría cambiar, lo que, a su vez, podría forzarnos a hacer otros cambios (y probables rotaciones) en toda la ruta hacia arriba a medida que ascendemos hacia la raíz. Si encontramos en la ruta un nodo que cambie de 0 a +- 1 entonces terminamos.

Demostración de AVL Creación , Recorridos , rotaciones y eliminación de un nodo. http://webpages.ull.es/users/jriera/Docencia/AVL/AV L%20tree%20applet.htm