32

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

Embed Size (px)

Citation preview

Page 1: 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
Page 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

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.

Page 3: 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

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.

Page 4: 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

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.

Factor de Equilibrio

Page 5: 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

Arbol Balanceado

Page 6: 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

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

Page 7: 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
Page 8: 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

Inserción en Árboles

Balanceados

Page 9: 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

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

B C

A

B C

A

B C

A

CASO 1 1.b1.a

DD

Page 10: 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

CASO 2. El SAI y el SAD del árbol balanceado tienen altura diferente (hSAD ≠ hSAI):

CASO 2.1. Si hSAD > 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 equilibriob) 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

B C

A

D

B C

A

DE

B C

A

DE

CASO 2.1. 2.1.a. 2.1.b.

F

Page 11: 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

CASO 2.2. Si hSAD < hSAIa) Si se inserta un elemento en SAI entonces el árbol debe ser reestructurado Las ramas están desequilibradas por lo que se requiere reestructuraciónb) 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.

B C

A

D

CASO 2.2.

B C

A

D

2.2.a.

E

B C

A

ED

2.2.b.

Page 12: 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

El proceso de inserción en un árbol balanceado consta de los siguientes pasos:

1) Primero debe seguirse el camino de búsqueda del árbol, hasta localizar el lugar donde hay que insertar el elemento.

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

Page 13: 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

Ejemplo de Inserción de Nodos con Árboles AVL

Se insertara la siguiente secuencia: 65, 50, 23, 70, 82, 68 y 39

Page 14: 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
Page 15: 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
Page 16: 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

//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 < NODO^.INFO

entonces:

1.1.1. Si BO = VERDADERO

entonces:

1.1.1.1. Si NODO^.FE

= 1: Hacer NODO^.FE=0 y BO=falso

=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}

Page 17: 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

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 :

Page 18: 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

1.1.3. Si INFOR > NODO^.INFO

entonces:

Regresar a InsertarBalanceado con NODO^.DER, BO, e INFOR

1.1.3.1. Si BO = VERDADERO

entonces:

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

Page 19: 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

NODO^.DER = NODO2^.IZQ

NODO2^.IZQ = NODO

NODO1^.IZQ = NODO2^.DER

NODO2^.DER = 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 BO=falso

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

Page 20: 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

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

Page 21: 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

Eliminacion en Arboles Balanceados

Page 22: 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

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.

Page 23: 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

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.

Page 24: 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

Eliminar las siguientes claves del árbol balanceado de la figura:

82, 10, 39, 65, 70, 68 y 66

Page 25: 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
Page 26: 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

Eliminar la clave: 10

Page 27: 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

Eliminar la clave: 39

Page 28: 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

Eliminar la clave: 65

Page 29: 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

Eliminar la clave: 70

Page 30: 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

Eliminar la clave: 68

Page 31: 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

Eliminar la clave: 66

Page 32: 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

Solución Final.