Libro de ingeniería sobre Tecnología Eléctrica.pdf
Programación 3: árboles de búsqueda equilibrados
1. TEMA: ARBOLES DE BUSQUEDA EQUILIBRADOS.
ESTUDIANTE: JEFFERSON ARIAS.
2. • Eficiencia de la búsqueda en un árbol ordenado.
• Árbol binario equilibrado, Arboles AVL.
• Inserción en árboles de búsqueda equilibrados:
rotaciones.
• Borrado de un nodo en un árbol equilibrado.
• Implementación de la operación inserción con balanceo,
busqueda y rotaciones en java.
• Conclusiones.
3. • El árbol AVL toma su nombre de las iniciales de los apellidos de sus
inventores, Georgii Adelson-Velskii y Yevgeniy Landis. Lo dieron a
conocer en la publicación de un artículo en 1962.
• Los árboles AVL están siempre equilibrados de tal modo que para
todos los nodos, la altura de la rama izquierda no difiere en más de
una unidad de la altura de la rama derecha o viceversa.
4. • La eficiencia de una búsqueda en un árbol binario
ordenado varía entre O(n) y O(log(n)), dependiendo de la
estructura que presente el árbol.
Árbol Degenerado Árbol Equilibrado de Búsqueda
5. • En los árboles de búsqueda, el número promedio de comparaciones
que deben realizarse para las operaciones de inserción, eliminación
y búsqueda varía entre Log₂(n), para el mejor de los casos y n para
el peor de los casos.
• Para optimizar los tiempos de búsqueda en los árboles ordenados
surgen los árboles casi equilibrados, en los que la complejidad de
la búsqueda es logarítmica, O(Log n)).
6. • Un árbol totalmente equilibrado se caracteriza porque la altura de la
rama izquierda es igual que la altura de la rama derecha para cada uno
de los nodos del árbol.
• La estructura de datos de árbol equilibrado que se utiliza es la del árbol
AVL. Son árboles ordenados o de búsqueda que, además, cumplen la
condición de balanceo para cada uno de los nodos.
Árbol Equilibrado Árbol no Equilibrado
7. • Un árbol equilibrado o árbol AVL es un árbol binario de búsqueda en
el que las alturas de los subárboles izquierdo y derecho de cualquier
nodo difieren como máximo en 1.
• La altura o profundidad de un árbol binario es el nivel máximo de sus
hojas más uno. La altura de un árbol nulo se considera cero.
• 0 cuando son iguales.
• 1 cuando altura derecho > izquierdo.
• -1 cuando altura izquierdo > derecho.
8. • No resulta fácil determinar la altura promedio de un árbol AVL, por
ello se determina la altura en el peor de los casos, es decir, la
altura máxima que puede tener un árbol equilibrado con un número
de nodos n. La altura es un parámetro importante ya que coincide
con el número de iteraciones que se realizan para bajar desde el
nodo raíz al nivel mas profundo de las hojas.
• El árbol equilibrado de n nodos menos denso tiene como altura
(1.44*log (n)), donde n es el número de nodos en el peor de los
casos del árbol AVL de altura h y se puede afirmar que la
complejidad de una búsqueda es O(Log n).
9. • Los árboles equilibrados, árboles AVL, son árboles de búsqueda y, por
consiguiente, para añadir un elemento se ha de seguir el mismo
algoritmo que en dichos árboles de búsqueda. Se compara la nueva
clave con la clave del raíz, continúa por la rama izquierda o derecha
según sea menor o mayor y termina insertándose como nodo hoja.
• Inserción de la clave 17.
Antes de la Inserción Después de la Inserción
10. • Una inserción de una nueva clave, o un borrado, puede destruir el
criterio de equilibrio de varios nodos del árbol. Se debe recuperar la
condición de equilibrio del árbol antes de dar por finalizada la
operación para que el árbol siga siendo equilibrado.
Árbol AVL
Árbol Desequilibrado
11. • Para corregir el factor de equilibrio de un nodo, se realiza sobre él
una rotación simple o doble. Rotaciones: secuencia de rotaciones de
punteros que se intercambian cíclicamente (por medio de ciclos).
• Un hecho muy importante de estas rotaciones, es que se mantiene
el ordenamiento del árbol, si el árbol original era ABB, el resultado
también lo seguirá siendo.
• El factor de equilibrio es la diferencia entre las alturas del árbol
derecho y el izquierdo:
• FE = altura subárbol derecho - altura subárbol izquierdo
• Por definición, para un árbol AVL, este valor debe ser -1, 0 ó 1, si
sobrepasa este valor es necesario requilibrar.
12. • Si el nodo está desequilibrado a la izquierda (FE < –1), y su hijo
izquierdo tiene el mismo signo (–) hacer rotación simple a la
derecha.
13. • Si el nodo está desequilibrado a la derecha (FE > +1), y su hijo
derecho tiene el mismo signo (+) hacer rotación simple a la
izquierda.
14. • Si el nodo está desequilibrado a la izquierda (FE < –1), y su hijo
izquierdo tiene distinto signo (+) hacer rotación doble izquierda-
derecha.
15. • Si el nodo está desequilibrado a la derecha (FE > +1), y su hijo
derecho tiene distinto signo (–) hacer rotación doble derecha-
izquierda.
16. • Al eliminar un nodo en un árbol AVL puede afectar el equilibrio
de sus nodos. Entonces hay que hacer rotaciones simples o
dobles.
• Para eliminar un nodo primero localizamos el nodo que
queremos eliminar y realizamos lo siguiente:
A) Si el nodo es un nodo hoja, simplemente lo
eliminamos.
B) Si el nodo solo tiene un hijo, lo sustituimos con su hijo.
C) Si el nodo tiene dos hijos, lo sustituimos por el hijo
derecho y colocamos el hijo izquierdo en el subárbol
izquierdo del hijo derecho.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27. • El factor equilibrio en estos arboles es una de las
características mas importantes debido a que ayuda a
mantener a el árbol organizado de una mejor manera.
• Los arboles de búsqueda equilibrado pueden ser muy
útiles y eficientes al momento de realizar una búsqueda
con respecto a los arboles binarios ya que al estar el
árbol ordenado el algoritmo de búsqueda sabe que
camino tomar y consultar si el nodo buscado existe o no.
28. Hidalgo, S. (12 de Septiembre de 2012). Prezi. Obtenido
de: https://prezi.com/npobbmtpep5t/arboles-avl/
Joyanes Aguilar, L., Zahonero Martinez, l., 2008.
Estructuras de datos en Java. McGraw-Hill, Madrid,
España.
Solar, M. (2010). Estructuras de Datos. Obtenido de:
http://www.ramos.utfsm.cl/doc/860/sc/ED_Cap5AVL.pdf