Diapositiva 1 - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Diapositiva 1

Description:

Title: Diapositiva 1 Author: comp06j Last modified by: Maco Lopez Created Date: 11/16/2006 8:41:46 PM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 33
Provided by: comp139
Category:

less

Transcript and Presenter's Notes

Title: Diapositiva 1


1
  • Árboles Balanceados
  • Integrantes
  • López Duarte Marco Isaac
  • Reyes Ávila Diana Elizabeth
  • Ruiz Romo Carlos Alberto

2
Con el objeto de mejorar el rendimiento en la
búsqueda surgen los árboles balanceados. La idea
central de estos es la de realizar reacomodó o
balanceos después de inserciones o eliminaciones
de elementos. Estos árboles también nombrados
recientemente AVL en honor a sus inventores, dos
matemáticos rusos Adelson-Velskii y Landis.
3
Un árbol balanceado es un árbol binario en el
cual las alturas de los dos subárboles para cada
nodo nunca difieren en más de una unidad.
4
Factor de Equilibrio
El Factor de Equilibrio (FE) o de Balance (FB) de
un nodo se define como la altura del SAD menos la
altura del SAI correspondiente. El Factor de
Equilibrio de cada nodo en un árbol balanceado
será 1, 1 ó 0. Si FE llegara a tomar los valores
de 2 ó 2, entonces debería reestructurarse el
árbol.
5
Arbol Balanceado
6
Reestructuración de Arboles AVL Reestructurar un
árbol balanceado significa rotar los nodos del
mismo. La rotación puede ser simple o compuesta.
En el primer tipo de rotación se involucran dos
nodos y en el segundo, se afectan tres. Si la
rotación es simple puede realizarse por las ramas
derechas (RDD Rotación Derecha Derecha) o por
las ramas izquierdas (RII Rotación Izquierda
Izquierda). Si la rotación es compuesta puede
realizarse por las ramas derecha e izquierda
(RDI Rotación Derecha Izquierda) o por las ramas
izquierda y derecha (RID Rotación Izquierda
Derecha).
7
(No Transcript)
8
Inserción en Árboles Balanceados
9
CASO 1. El SAI y el SAD del árbol balanceado
tienen la misma altura (hSAD hSAI) a) Si se
inserta un elemento en SAI entonces hSAD será
menor que hSAI b) Si se inserta un elemento en
SAD entonces hSAD será mayor que hSAI Ya sea
para a) o para b), no se viola el criterio de
equilibrio o balance del árbol.
1.b
CASO 1
1.a
A
A
A
B
C
B
C
B
C
D
D
10
CASO 2. El SAI y el SAD del árbol balanceado
tienen altura diferente (hSAD ? hSAI) CASO
2.1. Si hSAD gt hSAI a) Si se inserta un
elemento en SAI entonces hSAD será igual a hSAI
Las ramas tienen la misma altura por lo que se
mejora el equilibrio b) Si se inserta un
elemento en SAD entonces el árbol debe ser
reestructurado Las ramas están
desequilibradas por lo que se requiere
reestructuración
CASO 2.1.
2.1.a.
2.1.b.
A
A
A
B
C
B
C
B
C
D
E
D
E
D
F
11
CASO 2.2. Si hSAD lt hSAI a) Si se inserta un
elemento en SAI entonces el árbol debe ser
reestructurado Las ramas están
desequilibradas por lo que se requiere
reestructuración b) Si se inserta un elemento en
SAD entonces hSAD será igual a hSAI Las
ramas tienen la misma altura por lo que se mejora
el equilibrio Para poder determinar si un árbol
está balanceado debe calcularse el FE de cada
nodo del árbol.
2.2.a.
CASO 2.2.
A
2.2.b.
A
A
B
C
B
C
B
C
D
E
D
D
E
12
  • El proceso de inserción en un árbol balanceado
    consta de los
  • siguientes pasos
  • Primero debe seguirse el camino de búsqueda del
    árbol, hasta localizar el lugar donde hay que
    insertar el elemento.
  • Se calcula su FE, que será cero (pues el elemento
    recién insertado posee SAI y SAD vacíos). Luego,
    se regresa por el camino de búsqueda calculando
    el FE de todos los demás nodos que componen el
    árbol. Si en alguno de los nodos se viola el
    criterio de equilibrio entonces debe
    reestructurarse el árbol. El proceso termina al
    llegar a la raíz del árbol, o cuando se realiza
    la reestructuración del mismo, en cuyo caso no es
    necesario determinar el FE de los nodos restantes.

13
Ejemplo de Inserción de Nodos con Árboles AVL Se
insertara la siguiente secuencia 65, 50, 23,
70, 82, 68 y 39
14
(No Transcript)
15
(No Transcript)
16
//NODO es de tipo puntero, BO es booleano indica
que el árbol a crecido (falso), INFOR es de tipo
//entero. OTRO, NODO1, NODO2 son variables
auxiliares de tipo puntero insertaBalanceado(NODO,
BO, INFOR) 1. Si NODO?null entonces 1.1. Si
INFOR lt NODO.INFO entonces 1.1.1. Si BO
VERDADERO entonces 1.1.1.1. Si
NODO.FE 1 Hacer NODO.FE0 y
BOfalso 0 Hacer NODO.FE -1 -1
Hacer NODO1 NODO.IZQ //Restructuración
del árbol 1.1.1.1.1. Si NODO1.FE
0 entonces //Rotacion II
Hacer NODO.IZQ NODO.DER NODO1.DER
NODO NODO.FE 0 y NODO NODO1 //
Termina la rotacion II
17
si no Hacer NODO2 NODO1.DER NODO.
IZQ NODO2.DER NODO2.DER
NODO NODO1.DER NODO2.IZQ NODO2.IZQ
NODO1 1.1.1.1.2.A. Si NODO2.FE
-1 entonces Hacer NODO.FE 1 si no
Hacer NODO.FE 0 1.1.1.1.2.B. //Fin del
paso 1.1.1.1.1.A. 1.1.1.1.2.C. Si NODO2.FE
1 entonces Hacer NODO1.FE -1 si
no Hacer NODO1.FE 0 1.1.1.1.2.D //
Fin del paso 1.1.1.1.1.C. Hacer NODO
NODO2 //Termina rotacionID 1.1.1.1.2. // Fin
del paso 1.1.1.1.1 Hacer NODO.FE 0 y BO
falso 1.1.1.2. // Fin del paso
1.1.1.1. 1.1.2. //Fin del paso 1.1.1. SI NO

18
1.1.3. Si INFOR gt NODO.INFO entonces
Regresar a InsertarBalanceado con NODO.DER, BO,
e INFOR 1.1.3.1. Si BO VERDADERO entonc
es 1.1.3.1.1. Si NODO.FE -1 Hacer
NODO.FE 0 y BO FALSO 0 Hacer
NODO.FE 1 1 Hacer NODO1
NODO.DER // restructuracion del
arbol 1.1.3.1.1.1. Si NODO.FE
0 entonces //rotacio DD Hacer
NODO.DER NODO.IZQ NODO.IZQ
NODO NODO.FE 0 y NODO NODO1 //
termina rotacionDI Si no //Rotacion
DI Hacer NODO2 NODO1.IZQ
19
NODO.DER NODO2.IZQ NODO2.IZQ
NODO NODO1.IZQ NODO2.DER NODO2.DE
R NODO1 1.1.3.1.1.1.A. Si NODO2.FE
1 entonces Hacer NODO.FE -1 si
no Hacer NODO.FE 0 1.1.3.1.1.1.B // fin
del paso 1.1.3.1.1.1.A. 1.1.3.1.1.1C. Si
NODO2.FE -1 entonces Hacer NODO1.FE
1 Si no Hacer NODO1.FE
0 1.1.3.1.1.1.D. //Fin del paso
1.1.3.1.1.1.C. 1.1.3.1.1.2. // fin del
paso 1.1.3.1.1.1. Hacer NODO.FE 0 y
BOfalso 1.1.3.1.2. // Fin del paso
1.1.3.1.1. 1.1.3.2. // Fin del paso
1.1.3.1. Si No Escribir El nodo ya se
encuentra en el arbol 1.1.4 // Fin del paso
1.1.3
20
1.1.4. // Fin del paso 1.1.3. 1.2. //Fin del
paso 1.1. Si no CREAR NODO HACER
NODO.INFO INFOR NODO.IZQ NULL NODO.DER
NULL NODO.FE 0 BO VERDADERO 2. // Fin
del paso 1
21
Eliminacion en Arboles Balanceados
22
  • ELIMINACION DE NODOS EN ÁRBOLES BALANCEADOS
  • La operación de borrado en árboles balanceados
    consiste en quitar un nodo del árbol sin violar
    los principios que definen a un árbol balanceado.
  • Para este tipo de operación se deben de tomar en
    cuenta los siguientes casos
  • CASO 1 Si el elemento a borrar es hoja,
    simplemente se suprime.
  • CASO 2 Si el elemento a borrar tiene sólo un
    hijo, entonces tiene que sustituirse por él.
  • CASO 3 Si el elemento a borrar tiene los dos
    hijos, entonces tiene que sustituirse por
    el nodo que se encuentra más a la izquierda
    en el SAD o por el nodo que se encuentra
    más a la derecha en el SAI.

23
  • PASOS A SEGUIR PARA ELIMINAR UN NODO, EN UN
    ARBOL BALANCEADO.
  • Localizar su posición en el árbol.
  • Eliminarlo siguiendo los criterios establecidos
    previamente.
  • Regresar por el camino de búsqueda calculando el
    FE de los nodos visitados.
  • Si en alguno de los nodos se viola el criterio de
    equilibrio, entonces debe reestructurarse el
    árbol.
  • El proceso concluye una vez que se llega hasta la
    raíz del árbol.

24
  • Eliminar las siguientes claves del árbol
    balanceado de la figura
  • 82, 10, 39, 65, 70, 68 y 66

25
(No Transcript)
26
  • Eliminar la clave 10

27
  • Eliminar la clave 39

28
  • Eliminar la clave 65

29
  • Eliminar la clave 70

30
  • Eliminar la clave 68

31
  • Eliminar la clave 66

32
  • Solución Final.
Write a Comment
User Comments (0)
About PowerShow.com