Anda di halaman 1dari 11

Tema 10- Representacin Jerrquica: rboles Binarios

ndice general: 1. La Estructura Jerrquica rbol

Tema 10- Representacin Jerrquica: rboles Binarios


2. 2

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

Bsqueda Dinmica en un rbol Binario


1.

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

Justificacin del Tema

Introduccin: Estructuras Jerrquicas (I)

Estudiaremos diferentes implementaciones de los modelos de Cola de Prioridad y Diccionario.


Montculo Binario (Heap)
Implementacin de

A menudo, los datos de una coleccin presentan una relacin jerrquica:


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):

rbol Binario rbol Binario de Bsqueda

Implementacin de

Implementacin de I l t i d

Diccionario

Implementacin de

Tabla de Dispersin (Hash)


NodoLEG 5 6 LEG

Introduccin: Estructuras Jerrquicas (II)

Introduccin: Estructuras Jerrquicas (III)

Ejemplo 2: Representacin de una expresin aritmtica j p p p totalmente parentizada en notacin infija.

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 }

Alternativa 1: Usando un array de cadenas:


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?

Alternativa 2: Usando una lista enlazada de palabras.


Introduccin: Estructuras Jerrquicas (IV)

Introduccin: Estructuras Jerrquicas (V)

Alternativa 3: Empleamos un rbol para representar la Coleccin de D C l i d Datos


Cul es el coste de buscar una palabra con esta representacin jerrquica?

Ejemplo de bsqueda eficiente en estructura j j p q jerrquica q basada en un rbol.


Esta estructura jerrquica es un rbol Binario de Bsqueda. P Permite l b i la bsqueda d guiada entre elementos que implementan la interfaz Comparable<T>.

Es mejor el coste lineal con el nmero de palabras o proporcional a la longitud de la palabra?

10

Introduccin a los rboles: Conceptos Generales

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: Camino, Profundidad, Nivel y Altura

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

Los nodos con el mismo Padre son Hermanos

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

Si hay camino desde un nodo u hasta un nodo v, se dice que:


El Tamao de un Nodo es su nmero de descendientes. El Tamao de un rbol es el tamao de su Nodo Raz.



14

Ejemplo: Tamao del Nodo C: 7 Ejemplo: Tamao del rbol: 14

Prueba de Conceptos de rbol


1.

Definicin Recursiva de un rbol

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

En que Nivel est E?:

6.

Altura de B?:

7.

Descendientes propios de G?:

Subrbol cuya raiz es el nodo I


16

15

rboles Binarios

rboles Binarios: Propiedades p

Un rbol Binario es un rbol en el que ningn Nodo puede tener ms de 2 Hijos


Padre Hijo Izquierdo Hijo Derecho

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:

Cual es la diferencia entre los dos rboles Binarios?


3.

2
i 0

2 H 1 1
H 1 1 i 0

El nmero mximo de Hojas es:

(2 H 1 1) ( 2i ) 2 H
4.

El nmero mximo de Nodos Internos es: H 1 H H

rbol Binario 1
17

rbol Binario 2
18

(2

1) (2 ) 2 1

rbol Binario Lleno

rbol Binario Completo

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

rbol Binario Completo: Propiedades


rbol Binario: Definicin Recursiva

Todo rbol Binario Lleno es Completo, aunque no es cierta la afirmacin inversa. Por lo tanto, se cumplen las siguientes propiedades:

Un rbol Binario es:


Altura de un rbol Binario Completo:

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

rbol Binario: Recorridos

rbol Binario de Bsqueda. Motivacin: Bsqueda Dinmica (I)

Dado que un Nodo se identifica con el rbol del que es Raz, el recorrido en profundidad puede seguir el siguiente orden de visita:

Organizar una coleccin de N elementos: g

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

Mediante una Lista Enlazada:


4 8 15 16 23 42

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

rbol Binario de Bsqueda. Motivacin: Bsqueda Dinmica (II)

rbol Binario de Bsqueda. Motivacin: Bsqueda Dinmica (III)

Organizar la coleccin de datos para permitir un acceso eficiente implica que cada insercin en la coleccin debe mantener esa organizacin.

Modelo de Bsqueda Dinmica : q


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.

Emplearemos el rbol Binario de Bsqueda para organizar jerrquicamente los datos:


1 2 5 8 7 9

Cul es el coste de realizar la insercin en el array una vez encontrada la posicin?


26

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

rbol Binario de Bsqueda: Introduccin (I)

rbol Binario de Bsqueda: Introduccin (II)

Un rbol Binario de Bsqueda ( q (ABB) p ) permite representar p los datos de una coleccin de forma jerarquizada y ordenados segn cierto criterio.

Ejemplo de rbol Binario de Bsqueda ( j p q (ABB): )

Los Datos almacenados debern implementar la interfaz Comparable<T>

Un ABB es un rbol Binario con la siguiente propiedad de orden:



27

Verifica q realmente se que trata de un ABB!

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

rbol Binario Equilibrado

Propiedades de un rbol Binario de Bsqueda

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

Ejemplo de ABB Equilibrado con los mismos datos:


De manera intuitiva, Cmo piensas que se ha conseguido equilibrar el rbol?

ab2 altura = 4

8 9

ab1

altura = 2 log2(5) = 1.6094 1 6094

29

30

Propiedades de un rbol Binario de Bsqueda

Propiedades de un rbol Binario de Bsqueda

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

El mnimo dato se encuentra en el nodo situado ms a la izquierda. izquierda

Si existiera algn elemento ms pequeo que l estara situado en su subrbol izquierdo (por definicin de ABB). q (p )

El dato mximo se encuentra en el nodo situado ms a la derecha.


Si existiera algn elemento ms grande que l estara situado en su subrbol derecho (por definicin de ABB).
Raz

Subrbol izquierdo
31 32

Subrbol derecho

Bsqueda en un ABB

Bsqueda en un ABB: Complejidad Temporal

La bsqueda compara el objeto x buscado con la raz.


Instancias significativas:

Hay 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.

Caso Mejor: El elemento buscado est en la raz del ABB.


Se realiza 1 comparacin Coste Constante

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).

Se realiza un nmero de comparaciones proporcional al nmero de niveles del ABB.

En el peor de los casos, la Complejidad Temporal de la bsqueda en un ABB es proporcional a la altura del rbol.

34

Sobre la Altura de un ABB

Bsqueda en un ABB: eMC

La Altura de un ABB vara entre (log2(N)) y (N).

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.

(log2(N)) rbol E ilib d b l Equilibrado


35

(N)

El calculo del eMC a posteriori requiere un coste (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?

Estudio Experimental del Coste Medio de Bsqueda en un ABB (I)


Estudio Experimental del Coste Medio de Bsqueda en un ABB ( ) q (II)

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.

Clculo explcito del eMC

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

Se obtiene el Esfuerzo Medio de Comparacin (eMC):

37

eMC = numTotalComparaciones / numTotalInserciones


38

ab2

Comparativa de Costes ABB frente Otros () (I)


Coste Medio (Asumimos ABB equilibrado).
Representacin Lista Enlazada Lista Enlazada Ordenada Array Ordenado rbol Binario de Bsqueda Buscar Insertar Buscar Mnimo Eliminar Mnimo

Comparativa de Costes ABB frente Otros () (I)


Coste Medio (Asumimos ABB equilibrado).
Representacin Lista Enlazada Lista Enlazada Ordenada Array Ordenado rbol Binario de Bsqueda Buscar Insertar Buscar Mnimo Eliminar Mnimo

(N) (N) (log2(N)) )) (log2(N))

(1) (N) (N)* ) (log2(N))

(N) (1) (1) ) (log2(N))

(N) (1) (N)* ) (log2(N))

(N) (N) (log2(N)) )) (log2(N))

(1) (N) (N)* ) (log2(N))

(N) (1) (1) ) (log2(N))

(N) (1) (N)* ) (log2(N))

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

(*) Coste debido a mantener la contigidad de los datos


40

Comparativa de Costes ABB frente Otros ( ) (II)


Coste Peor (Asumimos ABB degenerado en una rama).
Representacin Lista Enlazada Lista Enlazada Ordenada Array Ordenado y rbol Binario de Bsqueda Buscar Insertar Buscar Mnimo Eliminar Mnimo

O(N) O(N) O(log2(N)) O(N) ( )

O(1) O(N) O(N)* (N) O(N) ( )

O(N) O(1) O(1) O(N) ( )

O(N) O(1) O(N)* (N) O(N) ( )

(*) Coste debido a mantener la contigidad de los datos


41

Anda mungkin juga menyukai