1. 2. 2 3.
Definicin y terminologa asociada Caminos entre nodos: profundidad, nivel y altura de un nodo C i t d f did d i l lt d d Relaciones entre nodos
El rbol Binario
1. 2. 3.
Germn Molt Escuela Tcnica Superior de Ingeniera Informtica Universidad Uni ersidad Politcnica de Valencia
3.
Conceptos y propiedades Definicin y representacin recursiva Operaciones de exploracin en profundidad y por niveles Introduccin al rbol Binario de Bsqueda
Objetivos
Bibliografa
Conocer la estructura de rbol Binario y sus principales p p propiedades, operaciones y recorridos. Introducir el rbol Binario de Bsqueda ( q (ABB) como una ) de las EDAs ms potentes orientadas a la bsqueda. Conocer las operaciones que soporta un ABB y cmo su p q p coste vara en funcin de lo Equilibrado que est el rbol.
Libro de M.A. Weiss, Estructuras de Datos en Java (AdissonWesley, 2000). Apartados 1 3 del captulo 18 para las definiciones vistas en teora. t Apartado 5 del captulo 6 para la introduccin de las estructuras de rbol y rbol Binario. Libro de R. Wiener y L.J. Pinson, Fundamentals of OOP and Data J , Structures in Java (Cambridge University Press, 2000). Apartados 3, 4 y 9 del Captulo 15
Cola de Prioridad
Imposible representar linealmente con LEG o un array. Ejemplo 1: Estructura de un directorio de libreras (al estilo del laboratorio de prcticas):
Implementacin de
Implementacin de I l t i d
Diccionario
Implementacin de
La estructura en rbol:
((( ) ( (((a*b)+(c+d))*(e-f)) )) ( ))
Relaciones jerrquicas entre los datos de una coleccin. Bsqueda en tiempos sublineales, lo que no se puede conseguir usando una representacin lineal. i d i li l
* + * a
7
+ e d
8
Ejemplo: Representar la Coleccin de Palabras {mes, mesa, meta, metro, coro y corona}. t t }
b c
String St i [] vCadenas = new String[6]; C d St i [6] Cul es el coste de buscar una palabra dada en esa coleccin? Existen instancias significativas? g Cul es el coste? Existen instancias significativas?
10
rbol de Ejemplo
Raz Nodo Interno
Un rbol es una estructura jerrquica que se define por: Un conjunto de Nodos (uno de los cuales es distinguido como la Raz del rbol). U conjunto d A i t Un j de Aristas d manera que: de Cualquier nodo H, a excepcin de la raz, est conectado por medio de una Arista a un nico nodo P P. Se dice entonces que P es el Padre de H y H es un Hijo de P. Un Nodo puede tener mltiples Hijos. Si un nodo tiene algn hijo es un nodo Interno, sino es una Hoja. H j
Nodo Hoja
11
12
Conceptos: Genealoga
Desde la Raz a cada nodo hay un nico Camino de longitud igual a su nmero de Aristas Aristas. Ejemplo: El Camino desde la Raz hasta el nodo Hoja etiquetado como K es A C G K (longitud 3) 3). La Profundidad de un nodo es la longitud del camino que va desde la raz hasta l. Ejemplo: Profundidad del nodo Raz: 0 (profundidad de G: 2) Todos los nodos a la misma Profundidad comparten Nivel. p Ejemplo: Los nodos I, J, K, L estn a nivel 3 La Altura de un Nodo es la longitud del Camino que va desde g q dicho Nodo hasta la hoja ms profunda bajo l. La altura de un rbol corresponde a la altura de su nodo Raz. Ejemplo: Altura del rbol : 4
13
Ejemplo: Los nodos D y E son Hermanos (el Padre es B). u es un A Ascendiente d v di t de v es un Descendiente de u Todo nodo es ascendiente/descendiente de s mismo mismo. Si u v entonces se denomina ascendiente/descendiente Propio Ejemplo: Ascendientes p p de N: I,E,B,A j p propios , , , Ejemplo: Descendientes propios de C: F,G,H,J,K,L
Hermanos de D?:
Un rbol es:
E 4 G, C y A 3 2 3 JyK
2.
Tamao de E?:
3.
Ascendientes de G?:
Un rbol vacio, o Un Nodo Raz y cero o ms sub-rboles no vacios donde cada una de sus races est conectada por medio de una Arista con la Raz del rbol.
4.
Profundidad de K?:
Cada Nodo de un rbol define un subrbol que es aquel que le tiene por raz.
Subrbol S b b l cuya raiz i es el nodo C
5. 5
6.
Altura de B?:
7.
15
rboles Binarios
En un rbol Binario de Altura H: 1. El nmero mximo de Nodos del Nivel i es 2i (0<= i <= H) 2. El nmero mximo de Nodos es:
2
i 0
2 H 1 1
H 1 1 i 0
(2 H 1 1) ( 2i ) 2 H
4.
rbol Binario 1
17
rbol Binario 2
18
(2
1) (2 ) 2 1
Un rbol Binario de Altura H es Lleno si tiene todos sus Niveles completos. En cada Nivel i, 0 <= i <= H, tiene 2i Nodos. Ejemplo de rbol Binario Lleno, con Altura 3: Para un rbol Binario Lleno de Tamao N y Altura H, se cumplen las propiedades:
Un rbol Binario es Completo si tiene todos sus Niveles completos a excepcin, quizs del ltimo que, entonces, debe de tener situados todos sus Nodos, las Hojas d l rbol, H j del b l tan a l i i d como sea posible. la izquierda ibl Ejemplo de rbol Binario Completo:
El Nivel 3 no est completo pero todas p p sus hojas estn lo ms a la izquierda posible.
H log 2 N
rbol de Ejemplo: H = floor(log_2(15)) 3
19
N 2 H 1 1
20
Todo rbol Binario Lleno es Completo, aunque no es cierta la afirmacin inversa. Por lo tanto, se cumplen las siguientes propiedades:
Un rbol Binario vaco o Un Nodo Raz y dos sub-rboles Binarios, uno Izquierdo y otro D Derecho, que pueden ser vacos. h d
Raz
H log 2 N
Nmero de Nodos de un rbol Binario Completo de altura H: H H 1 La relacin entre Altura (H) y Nmero de Nodos (N) de un AB Completo (o Lleno) determina si est Equilibrado:
2 N 2
Subrbol izquierdo
Subrbol derecho
Sus N datos se distribuyen en el rbol tal que la longitud de su camino ms largo (i.e. Altura) est acotada por floor(log_2(N)). (i e floor(log 2(N))
La definicin L d fi i i recursiva permite di l operaciones i it disear las i que trabajan con un rbol Binario fcilmente de manera recursiva, trabajando sobre su Nodo Raz recursiva Raz.
22
21
Dado que un Nodo se identifica con el rbol del que es Raz, el recorrido en profundidad puede seguir el siguiente orden de visita:
Mediante un Vector:
Cul es el coste de realizar una bsqueda con estas representaciones?
Pre-Orden: Nodo Subrbol Izquierdo Subrbol Derecho q In-Orden: Subrbol Izquierdo Nodo Subrbol Derecho Post-Orden: Subrbol Izquierdo Subrbol Derecho Nodo Recorridos en profundidad desde la raz del rbol. Pre-Orden: A-B-D-E-H-C-F-G-I-J-K In-Orden: D-B-E-H-A-F-C-J-I-K-G Post-Orden: D-H-E-B-F-J-K-I-G-C-A Recorrido en Anchura (por Niveles) desde la raz del rbol: ABCDEFGHIJK A-B-C-D-E-F-G-H-I-J-K
primero
El coste de buscar en una EDA lineal es, en el peor de los casos proporcional a la talla de la coleccin: O(N)
Si el array est ordenado, empleando una bsqueda binaria, se puede llegar a obtener un coste, en el peor de los casos de O(log2(N)) Si conocemos el punto exacto de la estructura en el que se encuentra el dato, p q se accede en tiempo constante: (1)
23
24
24
Organizar la coleccin de datos para permitir un acceso eficiente implica que cada insercin en la coleccin debe mantener esa organizacin.
Por ejemplo, mantenemos un vector ordenado para hacer eficiente el acceso a los elementos (coste logartmico). Queremos insertar el elemento 7 1 2 5 8 9 Se debe buscar la posicin de insercin adecuada para mantener la propiedad de ordenacin (Bsqueda Binaria: O(log2(N)) ( g ( ))
Las operaciones insertar(x) y borrar(x), nicamente difieren de buscar(x) en la resolucin de la bsqueda. Queremos que su coste en el peor de los casos sea, como mximo logartmico con el tamao de la coleccin.
1 2 5 8 7 9
Usando cierta propiedad de ordenacin. Bajo ciertas condiciones de equilibrio permitir implementar las l operaciones d bsqueda con coste logartmicos con el i de b d t l t i l nmero de elementos, en el peor de los casos.
25
Un rbol Binario de Bsqueda ( q (ABB) p ) permite representar p los datos de una coleccin de forma jerarquizada y ordenados segn cierto criterio.
Todos los datos de su subrbol izquierdo son menores (o iguales) que el ocupa su raz. Todos los datos de su subrbol derecho son mayores que el ocupa su raz. Los subrboles izquierdo y derecho tambin son ABB.
En principio, la definicin no contempla la existencia de datos repetidos, pero se puede modificar ligeramente para que s lo soporte.
28
Un rbol Binario est Equilibrado o es Perfectamente q Balanceado si la diferencia de alturas de los hijos derecho e izquierdo es, como mximo de 1. El ABB de la transparencia anterior NO es equilibrado.
Un ABB con N nodos tiene una altura entre log2(N) y g( ) N-1 j p Ejemplo:
1 3 6 1 3 6 8 9
Altura del hijo izquierdo de la raz: 2 Altura del hij d Alt d l hijo derecho d l raz: 0 h de la
ab2 altura = 4
8 9
ab1
29
30
Si se listan sus Datos segn un recorrido en In-Orden g resulta una secuencia ordenada. j p Ejemplo:
El recorrido en In-Orden recorre: Subrbol Izquierdo Nodo Subrbol Derecho Recorrido en In-Orden: 123579
Si existiera algn elemento ms pequeo que l estara situado en su subrbol izquierdo (por definicin de ABB). q (p )
Subrbol izquierdo
31 32
Subrbol derecho
Bsqueda en un ABB
Instancias significativas:
Si x es menor que la raz, la bsqueda prosigue de manera recursiva por el subrbol izquierdo. Si x es mayor que la raz, la bsqueda prosigue de manera raz recursiva por el subrbol derecho.
La bsqueda termina cuando se encuentra el elemento o cuando ya no quedan ms nodos por visitar.
La bsqueda del Integer(3) recorre los siguientes nodos del rbol: 5-2-3 La bsqueda del Integer(8) recorre los siguientes nodos del rbol: 57-9
33
Caso Peor: El elemento est en cualquier hoja del nivel ms alto o el elemento NO est en el ABB (y provoca el recorrido de la rama ms larga) larga).
En el peor de los casos, la Complejidad Temporal de la bsqueda en un ABB es proporcional a la altura del rbol.
34
Si el ABB es equilibrado, la altura es (log2(N)) y, por lo tanto, el coste de la bsqueda en un ABB equilibrado es (log2(N)) en el peor de los casos. l d l Si el ABB es degenerado, la altura es (N) y, por lo tanto, el coste de la bsqueda en un ABB degenerado es (N) en el peor de los casos.
Esfuerzo de Comparacin: Nmero de comparaciones p p requerido para buscar un dato concreto en el rbol.
En general, es 1 + nivelDelDato
Esfuerzo Medio de Comparacin (eMC): Nmero promedio de comparaciones necesarias para encontrar cualquiera de los datos de un ABB concreto concreto.
(N)
rbol Degenerado
36
Es necesario recorrer todos los nodos para contar los que hay en cada nivel y calcular la frmula. Cul es el coste del clculo del eMC
a partir de un rbol dado?
Interesa un eMC lo ms bajo posible, para reducir el coste de b d bsqueda en ese ABB. d ABB El valor ms bajo de eMC se obtiene para un ABB perfectamente balanceado ( el eMCOptimo). f t t b l d (es l MCO i ) Dos formas de calcular el eMC:
1. 2.
8 6 2 6 2 7 8 7 9 10
eMCab1
1*1 2 * 2 3 * 3 14 2.33 6 6
Clculo explcito, empleando la frmula vista. Clculo acumulado, al realizar las inserciones en la clase ABB:
ab1
numTotalInserciones: T d l rbol. T lI Tamao del b l numTotalComparaciones: Nmero de comparaciones realizadas p para la insercin de todos los elementos del ABB.
eMCab 2
9 10
1*1 2 * 2 1* 3 1* 4 1* 5 17 2.83 6 6
37
ab2
N = Nmero de elementos de la coleccin. (*) C Coste d b d a mantener l contigidad de los datos debido la d dd l d
39