Árboles

44
Árboles Vicente García Díaz – [email protected] Universidad de Oviedo, 2011 Estructuras de Datos

description

Estructuras de datos: árboles binarios y multicamino

Transcript of Árboles

Page 1: Árboles

Árboles

Vicente García Díaz – [email protected] Universidad de Oviedo, 2011

Estructuras de Datos

Page 2: Árboles

2

Tabla de contenidos

1. Conceptos básicos2. Árboles binarios

1. Árboles perfectamente equilibrados2. Árboles de búsqueda

1. Árboles simplemente equilibrados2. Árboles óptimos3. Árboles desplegados

3. Árboles de expresión3. Árboles multicamino

1. Árboles B4. Bibliografía

Page 3: Árboles

3

Conceptos básicos

Page 4: Árboles

4

ÁrbolesConceptos básicos

A

B C D

E F G

H

-Un nodo raíz-Todos los nodos son conectados desde un único nodo (nodo padre)-Sólo hay un camino desde el nodo raíz a cada nodo-Los nodos que no tienen hijos son nodos hoja

Nodo Altura Profundidad Tamaño

A 3 0 8

B 1 1 2

C 2 1 4

D 0 1 1

E 0 2 1

F 0 2 1

G 1 2 2

H 0 3 1Antecesor y descendiente

Nodos hermanos con un mismo padre

¿Grado del nodo C?…¿y del árbol?

Page 5: Árboles

5

Árbol completo de altura a y grado gConceptos básicos

•El que tiene el máximo número de nodos posible

1

0max

a

i

ign

Ejercicio 1: ¿Cuál es el número máximo de nodos de un árbol de altura 5 y grado 4?

20 = 1

21 = 2

Page 6: Árboles

6

Camino de búsqueda internoConceptos básicos

•Número de nodos que hay que recorrer para encontrar un determinado nodo

a

i imedia inn

ICL1*

1..

Ejercicio 2: ¿Cuál es la longitud media del camino interno del árbol mostrado?

A

B C D

E F GH

I

n representa el número de nodos del árbol

Page 7: Árboles

7

Árboles binarios•Competiciones deportivas•Árboles genealógicos•Operaciones binarias•…

Page 8: Árboles

8

Recorrido de un árbol (Preorden)Árboles binarios

A

B C

D E F

G

Solución: A, B, D, C, E, F, G, H

N

Izq Der

H

Page 9: Árboles

9

Recorrido de un árbol (Inorden)Árboles binarios

A

B C

D E F

G

Solución: D, B, A, E, C, G, F, H

N

Izq Der

H

Page 10: Árboles

10

Recorrido de un árbol (Postorden)Árboles binarios

A

B C

D E F

G

Solución: D, B, E, G, H, F, C, A

N

Izq Der

H

Page 11: Árboles

11

Recorrido de un árbolÁrboles binarios

A

B C

D F

I

Ejercicio 3: Especifica el orden en el que se recorrerían los nodos del siguiente árbol en caso de recorrerse en preorden, inorden y postorden

E

HG

Page 12: Árboles

12

Recorrido de un árbolÁrboles binarios

Ejercicio 4: Escribe el pseudocódigo de un método recursivo que recorra en preorden un árbol y refleje en pantalla el nivel en el que está situado el nodo

Page 13: Árboles

13

Altura de un árbolÁrboles binarios

•Máxima

•Mínima A

B C

G

A

B

C

D FE

O(log2n)

O(n)

Page 14: Árboles

14

Árboles perfectamente equilibrados (APE)

•Objetivo:

•Hay que distribuir el máximo número posible de nodos en cada nivel

Árboles binarios perfectamente equilibrados

Conseguir trabajar con árboles de altura mínima

1|| di nnn

n

ni nd

Page 15: Árboles

15

AlgoritmoÁrboles binarios perfectamente equilibrados

Ejercicio 5: Dibuja un árbol perfectamente equilibrado con los siguientes nodos:A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T

1- Usar un nodo para la raíz2- Generar el subárbol izquierdo con ni = n div 2 nodos3- Generar el subárbol derecho con nd = n – ni – 1 nodos

4- Repetir los pasos 1, 2 y 3 hasta que no haya más nodos

Page 16: Árboles

Binarios

Altura mínima vs APEÁrboles binarios perfectamente equilibrados

16

Ejercicio 6: Especifica si los siguientes árboles tienen altura mínima y si son APE

A

B D

C

A

B

ED

Altura mínima

APE

1) 2)

C

Page 17: Árboles

17

Árboles binarios de búsqueda

Page 18: Árboles

18

Árboles binarios de búsqueda (ABB)•Objetivo:

• Si el árbol está organizado de modo que para todo nodo ni, todas las claves de los nodos del subárbol izquierdo de ni son menores que la clave de ni, y todas las claves del subárbol derecho de ni son mayores que la clave de ni, entonces el árbol es de búsqueda

Árboles binarios de búsqueda

Permitir utilizar un árbol como una estructura para buscar elementos con complejidad logarítmica

5

3 7

91 64

10

Page 19: Árboles

19

InserciónÁrboles binarios de búsqueda

Ejercicio 7: Construye un árbol binario de búsqueda para una serie de nodos cuya clave es:

10, 100, 60, 30, 2, -43, 70, 90, 23, 43, 65, 13, 230, 49, 7, 40, 50, 20, 15, 3

Ten en cuenta que los nodos han aparecido de uno en uno en orden, siendo el primero de ellos el nodo con clave 10 y el último, el nodo con clave 3

Es decir, habrá que empezar con un árbol con un solo elemento (10) y después el árbol crece a dos elementos (10, 100) y así sucesivamente hasta el final

Page 20: Árboles

20

InserciónÁrboles binarios de búsqueda

Ejercicio 8: ¿Cuál es la diferencia entre recorrer el árbol de búsqueda:-En Inorden (primero izquierda)y-En Inorden (primero derecha)

10

100

60

30

2

-43

70

9023 43 65

13

230

49

7

40

5020

15

3

Page 21: Árboles

21

Borrado

•No es tan fácil como la inserción•Posibilidades▫Nodo terminal muy fácil▫Nodo con un solo hijo fácil▫Nodo con dos hijos más difícil

Árboles binarios de búsqueda

5

3 7

91 64

10

Page 22: Árboles

22

Borrado

•Borrado de nodo con dos hijos▫Reemplazar el elemento a borrar

por: El elemento más a la derecha del

subárbol izquierdo El elemento más a la izquierda del

subárbol derecho

Árboles binarios de búsqueda5

3 8

91 64

7

4

3 8

91 6

7

6

3 8

91 4

7

Page 23: Árboles

23

BorradoÁrboles binarios de búsqueda

50

30 70

9015 6040

Ejercicio 9: Dibuja cómo irá evolucionando el siguiente árbol binario de búsqueda si se borran (en orden) los siguientes nodos: 46, 40, 15, 30, 70, 60, 90, 50

1 25 33 46 56 62 87 99

Page 24: Árboles

24

Altura mínima de los árboles

• Lo ideal es que los árboles tengan altura mínima para conseguir un orden logarítmico

•Sin embargo:▫Las operaciones de insertar y borrar que acabamos

de ver provocan que los árboles no tengan altura mínima Sólo funciona la búsqueda

▫Conseguir mantener un árbol perfectamente equilibrado es muy costoso

Árboles binarios de búsqueda

Page 25: Árboles

25

Alternativas a la altura mínima

•ALTERNATIVA 1:▫No cuidar la altura del árbol

La altura puede ser de n en el caso peor => O(n) Estudios empíricos muestran que:altura_media = 1,386 * altura_minima

Así, el comportamiento medio para buscar, borrar e insertar sería O(log2n)

•ALTERNATIVA 2:▫Cuidar la altura del árbol

Cuando se necesita garantizar una complejidad logarítmica

Árboles simplemente equilibrados

Árboles binarios de búsqueda

Page 26: Árboles

26

Árboles simplemente equilibrados (AVL) (Adelson – Velskii – Landis) •Objetivo:

Árboles binarios de búsqueda AVL

Conseguir realizar búsquedas, inserciones y borrados con una complejidad logarítmica

Binarios

1|| di hhn

n

ni ndhi hd

Altura mínima

APE

AVL

Page 27: Árboles

27

Áltura mínima vs APE vs AVLÁrboles binarios de búsqueda AVL

Ejercicio 10: Especifica si los siguientes árboles: 1) tienen altura mínima, 2) son APE, 3) son AVL

1) 2) 3) 4)

Page 28: Árboles

28

Algoritmo (de Fibonacci)Árboles binarios de búsqueda AVL

1- Decidir la altura a del árbol- Para a = 0 => árbol vacío (T0)- Para a = 1 => árbol con un elemento (T1)- Para a > 1 => colocar un elemento raíz

asignarle un árbol Ta-1 a la izquierda asignarle un árbol Ta-2 a la derecha

Ejercicio 11: Dibuja un árbol AVL de Fibonacci de altura a = 6

Page 29: Árboles

29

Inserción

•Cuando se inserta un nuevo nodo hay que mantener el equilibrio▫Posibles desequilibrios

Árboles binarios de búsqueda AVL

A

B

1 2

3

1

2

A

B1

2 3

Rotación simple (izq)

Page 30: Árboles

30

Inserción

•Posibles desequilibrios

Árboles binarios de búsqueda AVL

A

C

1

2

4

1

2

Rotación doble (izq)

B

3

A

B

12

4

C

3

Page 31: Árboles

31

InserciónÁrboles binarios de búsqueda AVL

Ejercicio 12: Dibuja cómo irá evolucionando un árbol AVL si se insertan (en orden) los siguientes nodos (corrigiendo los posibles desequilibrios): 6, 7, 15, 4, 1, 6.5, 9, 100, 150

Page 32: Árboles

32

Borrado• Igual que para los árboles binarios de búsqueda “normales”

▫ Nodo terminal, con un solo hijo, con dos hijos• …pero con árboles AVL surgirá la necesidad de reequilibrar

▫ Rotaciones simples y dobles (una rotación puede desencadenaren otras)

Árboles binarios de búsqueda AVL

Ejercicio 13: Dibuja cómo irá evolucionando el siguiente árbol AVL si se borran (en orden) los siguientes nodos (corrigiendo los posibles desequilibrios): 74, 72, 25, 40, 75, 99, 85, 50, 30

50

25

7418 40

30

5

12 72

99

85

75

Page 33: Árboles

33

Árboles óptimos•Objetivo:

• La estructura del árbol no suele modificarse▫Árboles de consulta▫Analizadores léxicos

Árboles binarios de búsqueda óptimos

Conseguir realizar búsquedas realizando menos pasos para acceder a los nodos que se visitan con más frecuencia

Page 34: Árboles

34

Alternativas a la altura mínima

• La idea es reducir al máximo la LM ponderada de todo el árbol

Árboles binarios de búsqueda óptimos

a

i imedia inn

ICL1*

1..

a

i iponderadamedia ipICL1_ *..

Ejercicio 14: En función de la tabla de la derecha que muestra las probabilidades de acceso a 3 nodos A, B y C, dibuja los dos mejores árboles y los dos peores (el mejor de todos es el óptimo)

A

B C

Nodo Probabilidad

A 0,30

B 0,20

C 0,50

0,30 * 1

(0,20 + 0,50)*2

LMPCI = 1,70Nodo Probabilidad

A 0,18

B 0,35

C 0,47

Page 35: Árboles

35

Árboles desplegados (Splay)•Objetivo:

•Hay que subir el nodo visitado hasta la raíz del árbol

Árboles desplegados

Conseguir realizar búsquedas con complejidad O(1) gracias a que si se accede a un nodo es probable que se tenga acceso de nuevo a él en un plazo de tiempo breve

Ejercicio 15: Existen 2 técnicas básicas para subir el último nodo visitado hasta la raíz de un árbol de búsqueda (Zig-Zag y Zig-Zig). Explica brevemente en qué se basan

Page 36: Árboles

36

Árboles de expresión

Page 37: Árboles

37

EjemploÁrboles binarios (de expresión)

+

5 *

4 -

1 6

Ejercicio 16: ¿En qué orden (preorden, inorden o postorden) habrá que recorrer el árbol para mostrar los operandos y los operadores del modo que estamos acostumbrados cuando realizamos operaciones matemáticas? Recorre el árbol y muestra el resultado

Page 38: Árboles

38

Árboles multicamino•Modelos más complejos con los binarios•Reducen la altura del árbol•Indicados para memoria secundaria

Page 39: Árboles

39

Árboles B

Page 40: Árboles

40

Árboles multicamino B-2n

•Objetivo:

• El árbol está organizado en páginas• Cada página tiene como máximo 2n elementos (n es el orden del árbol)

• Cada página (excepto la raíz) contiene al menos n elementos• Cada página es:▫ Una página hoja (no tiene descendientes)▫ …o tiene m + 1 descendientes, siendo m el número de

elementos• Todas las páginas hoja se encuentran al mismo nivel

Árboles multicamino B

Crear árboles de búsqueda permitiendo reducir la altura de los árboles, puesto que un nodo puede tener más de 2 hijos

Page 41: Árboles

41

Ejemplo árbol multicamino B-4

• Lo ideal es que los árboles tengan altura mínima

Árboles multicamino B

40

20 30

10 12 14 16 21 22 23 24 35 38

60, 70

46 50 51 61 66 68 71 78 88

9 páginas

¿qué sucede si se comprime el árbol en un único nivel a base de insertar las claves de los descendientes entre las claves de su página antecesora?

Page 42: Árboles

42

Inserción

•Queremos introducir un nodo con clave 27

Árboles multicamino B

Ejercicio 17: Construye un árbol B-4 para los siguientes nodos: 60 10 20 30 40 50 70 80 90 15 25 35 45 55 65 12 14 16 18 21 87 89 96

Page 43: Árboles

43

BorradoÁrboles multicamino B

Ejercicio 18: Dibuja cómo irá evolucionando el árbol B-4 si se borran (en orden) los siguientes nodos (corrigiendo los posibles desequilibrios): 40, 10, 12, 14, 66, 71, 70, 60, 35, 21, 22, 24, 29, 20, 23, 30, 78, 61, 16, 27, 38, 50

40

20 23 30

10 12 14 16 21 22 24 27 29

60, 70

46 50 51 61 66 68 71 78 88

A

B C

D E J G H I35 38

F

Page 44: Árboles

44

Bibliografía

• WEISS, Mark Allen; (2000) Data Estructures & Problem Solving Using Java. Addison Wesley. ISBN 03-2154-140-5.

• JAIME SISA, Alberto; (2002) Estructuras de Datos y Algoritmos con énfasis en programación orientada a objetos. Pearson Educación. ISBN 958-699-044-3.

• JOYANES AGUILAR, LUIS (2007) Estructuras de Datos en Java. McGraw Hill. ISBN: 9788448156312.

• STANDISH, Thomas A (1998). Data structures in Java. Addison Wesley ISBN 0-201-30564-X.

• WEISS, Mark Allen; (2000) Estructuras de Datos en Java. Addison Wesley. ISBN 84-7829-035-4.

• WIRTH, Niklaus (1992). Algoritmos + Estructuras de Datos = Programas. Prentice-Hall. ISBN: 84-219-0172-9.