Introduccion a Arboles AVL

11

Click here to load reader

description

Introduccion a Arboles AVL

Transcript of Introduccion a Arboles AVL

Page 1: Introduccion a Arboles AVL

ESTRUCTURA DE DATOS IIESTRUCTURA DE DATOS IIÁRBOLES AVL ÁRBOLES AVL

PROFESOR:PROFESOR:

Ing. Evans Balcazar VeizagaIng. Evans Balcazar Veizaga

Page 2: Introduccion a Arboles AVL

Árboles AVL: Árboles AVL:

En la Unidad En la Unidad anterior que el comportamiento de los ABB no es anterior que el comportamiento de los ABB no es siempre tan bueno como nos gustaría. Pues bien, para minimizar el siempre tan bueno como nos gustaría. Pues bien, para minimizar el problema de los ABB desequilibrados, sea cual sea el grado de problema de los ABB desequilibrados, sea cual sea el grado de desequilibrio que tengan, se puede recurrir a algoritmos de desequilibrio que tengan, se puede recurrir a algoritmos de equilibrado de árboles globales. equilibrado de árboles globales.

El problema de estos algoritmos es que requieren explorar y El problema de estos algoritmos es que requieren explorar y reconstruir todo el árbol cada vez que se inserta o se elimina un reconstruir todo el árbol cada vez que se inserta o se elimina un elemento, de modo que lo que ganamos al acortar las búsquedas, elemento, de modo que lo que ganamos al acortar las búsquedas, teniendo que hacer menos comparaciones, lo perdemos teniendo que hacer menos comparaciones, lo perdemos equilibrando el árbol.equilibrando el árbol.

Page 3: Introduccion a Arboles AVL

Árboles AVL - Definición: Árboles AVL - Definición: Un árbol AVL (llamado así por las iniciales de sus inventores: Un árbol AVL (llamado así por las iniciales de sus inventores:

Adelson-Velskii y Landis) es un árbol binario de búsqueda en el Adelson-Velskii y Landis) es un árbol binario de búsqueda en el que para cada nodo, las alturas de sus subárboles izquierdo y que para cada nodo, las alturas de sus subárboles izquierdo y derecho no difieren en más de 1.derecho no difieren en más de 1.

No se trata de árboles perfectamente equilibrados, pero sí son lo No se trata de árboles perfectamente equilibrados, pero sí son lo suficientemente equilibrados como para que su comportamiento suficientemente equilibrados como para que su comportamiento sea lo bastante bueno como para usarlos donde los ABB no sea lo bastante bueno como para usarlos donde los ABB no garantizan tiempos de búsqueda óptimos.garantizan tiempos de búsqueda óptimos.

El algoritmo se basa en reequilibrados locales, de modo que no es El algoritmo se basa en reequilibrados locales, de modo que no es necesario explorar todo el árbol después de cada inserción o necesario explorar todo el árbol después de cada inserción o borrado.borrado.

Page 4: Introduccion a Arboles AVL

AVL – Definición Formal: AVL – Definición Formal: Definición del altura de un árbolDefinición del altura de un árbol

Sea Sea TT un árbol binario de búsqueda y sean un árbol binario de búsqueda y sean TiTi y y TdTd sus subárboles, su altura sus subárboles, su altura HH((TT), ), es:es: 0 si el árbol 0 si el árbol TT está vacío está vacío 1 + max(1 + max(HH((TiTi),),HH((TdTd)) si no lo está )) si no lo está

Definición de árbol AVLDefinición de árbol AVL

Sea Sea TT un árbol binario de búsqueda con un árbol binario de búsqueda con TiTi y y TdTd siendo sus subárboles izquierdo y siendo sus subárboles izquierdo y derecho respectivamente, tenemos que:derecho respectivamente, tenemos que:

Si Si TT es vacío, es un árbol AVL es vacío, es un árbol AVL

Si Si TT es un ABB no vacío, es AVL si (si y sólo si): es un ABB no vacío, es AVL si (si y sólo si): TiTi y y TdTd son AVL y son AVL y HH((TiTi) − ) − HH((TdTd) = − 1, 0 ó + 1 (factor de equilibrio)) = − 1, 0 ó + 1 (factor de equilibrio)

Page 5: Introduccion a Arboles AVL

Buscar un elemento. Buscar un elemento. Insertar un elemento. Insertar un elemento. Borrar un elemento. Borrar un elemento. Movimientos a través del árbol: Movimientos a través del árbol: Información: Información:

Comprobar si un árbol está vacío. Comprobar si un árbol está vacío. Calcular el número de nodos. Calcular el número de nodos. Comprobar si el nodo es hoja. Comprobar si el nodo es hoja. Calcular la altura de un nodo. Calcular la altura de un nodo. Calcular la altura de un árbol.Calcular la altura de un árbol.

Los AVL son también ABB, Las nuevas operaciones son Los AVL son también ABB, Las nuevas operaciones son las de equilibrar el árbol, pero eso se hace como parte las de equilibrar el árbol, pero eso se hace como parte de las operaciones de insertado y borrado.de las operaciones de insertado y borrado.

Operaciones en AVL :

Page 6: Introduccion a Arboles AVL

Cada nodo, además de la información que se pretende Cada nodo, además de la información que se pretende almacenar, debe tener los dos punteros a los árboles almacenar, debe tener los dos punteros a los árboles derecho e izquierdo, igual que los ABB, y además un derecho e izquierdo, igual que los ABB, y además un miembro nuevo: el factor de equilibrio.miembro nuevo: el factor de equilibrio.

El factor de equilibrio es la diferencia entre las alturas del El factor de equilibrio es la diferencia entre las alturas del árbol derecho y el izquierdo:árbol derecho y el izquierdo: FE = altura subárbol derecho - altura subárbol izquierdo;FE = altura subárbol derecho - altura subárbol izquierdo;

Por definición, para un árbol AVL, este valor debe ser -1, Por definición, para un árbol AVL, este valor debe ser -1, 0 ó 1.0 ó 1.

Factor de Equilibrio Factor de Equilibrio ::

Page 7: Introduccion a Arboles AVL

Rotaciones de Nodos   Rotaciones de Nodos   ::Los reequilibrados se realizan mediante rotaciones, Los reequilibrados se realizan mediante rotaciones,

en el siguiente punto veremos cada caso, ahora en el siguiente punto veremos cada caso, ahora vamos a ver las cuatro posibles rotaciones que vamos a ver las cuatro posibles rotaciones que podemos aplicar y son Simples y Dobles.podemos aplicar y son Simples y Dobles.

Rotación simple a la derecha (SD):Rotación simple a la derecha (SD): Rotación simple a la izquierda (SI):Rotación simple a la izquierda (SI): Rotación doble a la derecha (DD):Rotación doble a la derecha (DD): Rotación doble a la izquierda (DI):Rotación doble a la izquierda (DI):

Page 8: Introduccion a Arboles AVL

Practica:Practica:Indique los pasos que se siguen para lograr un Indique los pasos que se siguen para lograr un

AVL para el siguiente ABB.AVL para el siguiente ABB.

Un ejemplo de árbol binario no equilibrado

Un ejemplo de árbol binario equilibrado

=>=>

Page 9: Introduccion a Arboles AVL

Practica 2:Practica 2:Implemente una definición para los nodos de un Implemente una definición para los nodos de un

árbol AVL.árbol AVL.

Un ejemplo de árbol binario equilibrado

Page 10: Introduccion a Arboles AVL

¿Ahora a Trabajar?¿Ahora a Trabajar?

Page 11: Introduccion a Arboles AVL

INF-310 Estructura de Datos II