Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

44
Algoritmos y Estructuras de Datos Cursada 2010 Prof. Catalina Mostaccio Prof. Alejandra Schiavoni Facultad de Informática - UNLP

Transcript of Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Page 1: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y

Estructuras de Datos

Cursada 2010

Prof. Catalina Mostaccio

Prof. Alejandra Schiavoni

Facultad de Informática - UNLP

Page 2: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Árboles Binarios

Algoritmos y Estructuras de Datos

Page 3: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3

Agenda

�� ÁÁrbol Binariorbol Binario

�� ÁÁrboles de Expresirboles de Expresióónn

�� ÁÁrbol Binario de Brbol Binario de Búúsquedasqueda

�� ÁÁrboles AVLrboles AVL

Page 4: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4

Árbol Binario: Definición

� Un árbol binario es una colección de nodos,

tal que:

• puede estar vacía

• puede estar formada por un nodo distinguido R,

llamado raíz y dos sub-árboles T1 y T2, donde la

raíz de cada subárbol Ti está conectado a R por

medio de una arista

Page 5: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 5

Árbol de Expresión

Es un árbol binario asociado a una expresión aritmética

�Nodos internos representan operadores

�Nodos externos (hojas) representan operandos

Page 6: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 6

Árbol de Expresión

Ejemplo:

+

a b

-

c d

+

e f

*

/

Page 7: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 7

Árbol de Expresión

Recorriendo el árbol, obtenemos:

Inorden: (((a + b) * (c – d)) / (e + f))

Preorden: /*+ab-cd+ef

Posorden: ab+cd-*ef+/

Page 8: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 8

Construcción de un árbol de expresión

A partir de una:

� Expresión postfija

� Expresión prefija

� Expresión infija

-

+25*

43

Page 9: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 9

Construcción de un árbol de expresión a partir de una expresión postfija

Algoritmo: tomar un carácter de la expresiónmientras ( existe carácter ) hacer

si es un operando � creo un nodo y lo apilo.si es un operador (lo tomo como la raíz de los dos

últimos nodos creados)� - creo un nodo R,

- desapilo y lo pongo como hijo derecho de R- desapilo y lo pongo como hijo izquierdo de R- apilo R.

tomo otro carácterfin

Page 10: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 10

Construcción de un árbol de expresión a partir de una expresión prefija

Algoritmo:

ArbolExpresión (A: ArbolBin, exp: string )

si exp nulo � nada. si es un operador � - creo un nodo raíz R

- ArbolExpresión (subArbIzq de R, exp(sin 1° carácter) )

- ArbolExpresión ( subArbDer de R, exp(sin 1° carácter) )

si es un operando � creo un nodo (hoja)

Page 11: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 11

Construcción de un árbol de expresión a partir de una expresión infija

Expresión infijaSe usa una pila y se tiene en cuenta la precedencia de los operadores

Expresión postfija

Se usa la estrategiaanterior

Árbol de Expresión

2+5*3+1

253*+1+

Page 12: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 12

Árbol Binario de Búsqueda: Definición

Un árbol binario de búsqueda es una

colección de nodos conteniendo

claves, que debe cumplir con una

propiedad estructural y una de orden.

Page 13: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 13

Árbol Binario de Búsqueda

La propiedad estructural: es un árbol binario

La propiedad de orden, es la siguiente:

para cada nodo N del árbol se cumple que

todos los nodos ubicados en el subárbol

izquierdo contienen claves menores que la

clave del nodo N y los nodos ubicados en el

subárbol derecho contienen claves mayores

que la clave del nodo N

Page 14: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1414

Árboles AVL

�� DefiniciDefinicióónn

�� CaracterCaracteríísticassticas

�� InserciInsercióónn

�� DesbalanceoDesbalanceo

�� Rotaciones Simples y DoblesRotaciones Simples y Dobles

�� EliminaciEliminacióónn

Page 15: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1515

Árbol AVL: Definición

Un árbol AVL (Adelson–Velskii–Landis) es un árbol

binario de búsqueda que cumple con la condición

de estar balanceado

� La propiedad de balanceo que cumple dice:

Para cada nodo del árbol, la diferencia de altura

entre el subárbol izquierdo y el subárbol derecho es

a lo sumo 1

Page 16: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1616

Características

� La propiedad de balanceo es fácil de mantener y garantiza que la altura del árbol es de O(log n)

� En cada nodo del árbol se guarda información de la altura

� La altura del árbol vacío es -1

� Se debe mantener el balanceo al realizar las operaciones sobre el árbol (inserción y borrado)

Page 17: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1717

Operaciones en un AVL

� Inserción

� Eliminación

Page 18: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1818

Inserción en el árbol AVL

� La inserción se realiza igual que en un árbol binario de búsqueda

� Puede destruirse la propiedad de balanceo

Rebalancear el árbol

Page 19: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 1919

Problemas: Desbalanceo

� Al insertar un elemento se actualiza la información de la altura de los nodos que están en el camino desde el nodo insertado a la raíz

� El desbalanceo sólo se produce en ese camino, ya que sólo esos nodos tienen sus subárboles modificados

Page 20: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2020

Problemas: Desbalanceo

Ejemplo al insertar un nodo

1010

66 1717

1515 202044

22

1010

66 1717

1515 202044

Árbol después de insertar el 2

Se desbalancea el 6

Page 21: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2121

Rebalanceo del árbol�Para restaurar el balanceo del árbol:

�se recorre el camino de búsqueda en orden inverso

�se controla el equilibrio de cada nodo

�Si está desbalanceado se realiza una modificación simple: rotación

�después de rebalancear el nodo, la inserción termina

�este proceso puede llegar a la raíz

Page 22: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2222

Rebalanceo del árbol

Hay 4 casos posibles de desbalanceo a tener en cuenta, según donde se hizo la Inserción. El nodo A es el nodo desbalanceado.

AA AA

AAAA

1. Inserción en el Subárbol IZQ del hijo IZQ de A

2. Inserción en el Subárbol DER del hijo IZQ de A

4. Inserción en el Subárbol DER del hijo DER de A

3. Inserción en el Subárbol IZQ del hijo DER de A

Page 23: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2323

Rebalanceo del árbol

� La solución para restaurar el balanceo es la ROTACION

La rotación es una modificación simple de la estructura del árbol, que restaura la propiedad de balanceo, preservando el orden de los elementos

Page 24: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2424

Rebalanceo del árbol

� Existen dos clases de rotaciones:

�Rotación Simple: Casos 1 y 4: inserción en el lado externo

�Rotación Doble: Casos 2 y 3: inserción en el lado interno

�Soluciones simétricas: En cada caso, los subárboles están opuestos.

Page 25: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2525

Rotación SimpleCaso 1: Rotación Simple Izq-Izq

2

1

AB

C

2

1

A B C

Se obtuvo nuevamente un árbol balanceado

Page 26: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2626

Rotación Simple (cont.)

1010

66 1717

1515 202044

22

Siguiendo con el ejemplo:

1010

44 1717

1515 202022 66

Rot. Simple

Page 27: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2727

Rotación Simple (cont.)

Caso 4: Rotación Simple Der-Der

Es simétrico al caso 1, el desbalanceo se produce hacia el lado derecho

Page 28: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2828

Rotación Simple (cont.)

Ejemplo:

Insertar las claves del 1 al 7 en ese orden, en un árbol AVL inicialmente vacío

Page 29: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 2929

Rotación Simple (cont.)11

22

33

Rot. Simple con Derecho 22

11 33

44

55

22

11 33

44

33 55

Rot. Simple con Derecho

22

11 44

3355

Page 30: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3030

Rotación Simple (cont.)

Siguiendo con el ejemplo:

44

22 55

6611 33

Rot. Simple22

11 44

33 55

66

Page 31: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3131

Rotación Simple (cont.)

Siguiendo con el ejemplo:

44

22 55

6611 33

77

Rot. Simple 44

22 66

7711 33 55

Page 32: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3232

� En algunos casos la rotación simple no

resuelve el problema

Caso 2: Rotación Doble Izq-Der

Rotación Doble

6060

3030

4040

Rotación Simple3030

6060

4040

Page 33: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3333

Rotación Doble (cont.)

3

1

AC

B

� Dado que el subárbol B tiene por lo menos un ítem, podemos considerar que está formado por una raíz y dos subárboles

3

1

AC

2

B1 B2

Page 34: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3434

Rotación Doble (cont.)� La rotación doble es similar a la simple, sólo que involucra cuatro subárboles en lugar de tres

� Ni los nodos 1 y 3 pueden quedar como raíz, la única alternativa es que quede el nodo 2

3

C

2

B1

B2

1

A

Primero se hace una rotación simple entre 1 y 2

Page 35: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3535

Rotación Doble (cont.)

A CB1 B2

1 3

2 Luego se hace una rotación simple entre 2 y 3

Page 36: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3636

Rotación Doble (cont.)

Caso 3: Rotación Doble Der-Izq

Es simétrica al caso 2, la inserción se

produce en el subárbol izquierdo del hijo

derecho.

Page 37: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3737

Rotación Doble (cont.)

� Ejemplo:

Continuar con el ejemplo anterior, insertando

las claves del 8 al 15 en orden inverso.

¡¡¡ Tarea para el hogar !!!

Page 38: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3838

Eliminación de un nodo

� La eliminación de un nodo es similar al borrado en un árbol binario de búsqueda.

� Luego de realizar el borrado se debe actualizar la altura de todos los nodos, desde el nodo en cuestión hasta la raíz.

� Puede destruirse la propiedad de balanceo

Rebalancear el árbol

Page 39: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 3939

Eliminación de un nodo

Se elimina el nodo 13, se desbalancea el 14

Page 40: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4040

Eliminación de un nodoRotación simple entre el 14 y

15. Queda desbalanceado el 12

Rotación simple entre el 5 y 12.

Page 41: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4141

Tiempo de ejecución de las operaciones en AVL

Las operaciones de:

Búsqueda

Inserción

Eliminación

Recorren la altura del árbol en el peor caso

Page 42: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4242

Tiempo de ejecución de las operaciones en AVL (cont.)

Dado que un árbol AVL cumple con la condición de balanceo

Tomamos Nh como el número de nodos en un árbol AVL de altura hNh > Nh-1 + Nh-2 + 1

> 2 N h-2 + 1

> 1 + 2(1 + 2 Nh-4)= 1 + 2 + 22 Nh-4

> 1 + 2 + 22 + 23 N h-6

...

> 1 + 2 + 22 + 23 + ... + 2h/2 = 2(h/2+1) – 1

Entonces:

Page 43: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4343

Tiempo de ejecución de las operaciones en AVL (cont.)

2(h/2+1) – 1 < n

h/2 + 1 < log 2(n + 1)

h < 2 (log 2(n + 1) – 1)

Un análisis cuidadoso basado en la teoría de los números de Fibonacci, nos da un valor más ajustado de 1.44 log 2(n + 2).

Page 44: Arboles Binarios - Exp - ABB - AVL AyED-2010 Final

Algoritmos y Estructuras de Datos 4444

Operaciones sobre los árboles AVL: Conclusiones

� Las operaciones de inserción y eliminación de un nodo son similares a las de un árbol binario de búsqueda.

� En ambas operaciones se debe actualizar la información de la altura y realizar rotaciones si es necesario.

� La inserción provoca una única reestructuración.

� La eliminación puede provocar varias reestructuraciones.

� Las operaciones son de O(log n)