MD-Expo-Arboles B
MD-Expo-Arboles B
MD-Expo-Arboles B
Speaker
Luis Richards. @luisrichardslaya
T.S.U. En Informática, C.I. 11.407.048
1
Arboles b
✗ Son estructuras de datos utilizadas para búsqueda de información.
Estos arboles no son binarios y se clasifican como una generación de
los arboles balanceados.
✗ Los arboles B fueron propuestos por los Doctores Bayer y Mcereight
en el año 1972.
2
OBJETIVOS DE LOS
ARBOLES B
✗ Su objetivo consiste en poder recuperar y grabar datos cuando estos se
trabajan en memoria auxiliar ya que todas las estructuras son eficientes
para manejar la información en la memoria principal
3
CARACTERÍSTICAS DE
LOS ARBOLES B
✗ Son estructuras formadas por páginas.
✗ Tienen N llaves + 1 apuntador.
✗ Gráficamente las paginas se pueden visualizar así:
5
REGLAS DE LOS
ARBOLES B
✗ ¿LA SIGUIENTE ESTRUCTURA CUMPLE LAS REGLAS PARA
PODER LLAMARSE ÁRBOL B?
6
EJEMPLO ARBOL B
✗ Llaves o Claves
2
✗ Página
7
EJEMPLO ARBOL B
✗ M, es el grado del árbol y es máximo numero de hijos que puede tener
cualquier página
✗ Página
2 4 6 8
✗ M=5
8
EJEMPLO ARBOL B
✗ El mínimo numero de claves en una página es m-1/2, excepto en la raíz
✗ Página
25
5 8 32 40
9
INSERCIÓN caso 1
✗ Se debe realizar la búsqueda para verificar donde debe ir la clave a
insertar
25
✗ Insertar 10
5 8 32 40
10
INSERCIÓN caso 1
✗ Se debe realizar la búsqueda para verificar donde debe ir la clave a
insertar
25
✗ Insertar 10
5 8 32 40
11
INSERCIÓN caso 1
✗ Se debe realizar la búsqueda para verificar donde debe ir la clave a
insertar
25
✗ Insertar 10
5 8 10 32 40
12
INSERCIÓN caso 2
✗ Insertar una clave en una página valida
25
✗ Insertar 30
5 8 10 32 40
13
INSERCIÓN caso 2
✗ Insertar una clave en una página valida
25
✗ Insertar 30
5 8 10 32 40
14
INSERCIÓN caso 2
✗ Insertar una clave en una página valida
25
✗ Insertar 30
5 8 10 32 40
15
INSERCIÓN caso 2
✗ Insertar una clave en una página valida
25
✗ Insertar 30
5 8 10 32 40
16
INSERCIÓN caso 2
✗ Insertar una clave en una página valida
25
✗ Insertar 30
5 8 10 30 32 40
17
INSERCIÓN caso 3
✗ Insertar una clave en una página valida
25
✗ Insertar 12
5 8 10 15 30 32 40
18
INSERCIÓN caso 3
✗ Insertar una clave en una página valida
25
✗ Insertar 12
5 8 10 12 15 30 32 40
19
INSERCIÓN caso 3
✗ Insertar una clave en una página valida
25
✗ Insertar 12
5 8 10 12 15 30 32 40
20
INSERCIÓN caso 3
10
✗ Insertar 12
5 8 12 15
21
INSERCIÓN caso 3
10 25
5 8 12 15 30 32 40
✗ Luego de insertar el 12
22
INSERCIÓN caso 4
✗ Insertar 21 10 13 25 32
5 8 11 12 14 15 18 20 30 31 33 40
5 8 11 12 14 15 18 20 21 30 31 33 40
5 8 11 12 14 15 20 21 30 31 33 40
25
INSERCIÓN caso 4
18
✗ Insertar 21
10 13 25 32
5 8 11 12 14 15 20 21 30 31 33 40
5 18 25 46
✗ Eliminar 73
1 3 4 5 6 8 15 16 20 23 26 27 28 50 55 58 73
27
ELIMINAR CASO 1
✗ El dato a eliminar esta en una hoja y tras eliminarlo la hoja sigue siendo valida
5 18 25 46
✗ Eliminar 73
1 3 4 5 6 8 15 16 20 23 26 27 28 50 55 58 73
28
ELIMINAR CASO 1
✗ El dato a eliminar esta en una hoja y tras eliminarlo la hoja sigue siendo valida
5 18 25 46
✗ Eliminar 73
1 3 4 5 6 8 15 16 20 23 26 27 28 50 55 58
✗ Árbol final
29
ELIMINAR caso 2
✗ El dato a eliminar esta en una pagina interior que se sustituye por una clave que le
antecede o precede en orden ascendente
18
✗ Eliminar 46
5 8 25 46
1 2 4 6 7 15 16 20 23 26 27 28 50 55 58
30
ELIMINAR caso 2
18
✗ Eliminar 46
5 8 25 46
1 2 4 6 7 15 16 20 23 26 27 28 50 55 58
31
ELIMINAR caso 2
18
✗ Eliminar 46
5 8 25 46
1 2 4 6 7 15 16 20 23 26 27 28 50 55 58
1 2 4 6 7 15 16 20 23 26 27 50 55 58
33
ELIMINAR caso 3
✗ El dato a eliminar esta en una hoja y tras borrar el dato se queda con menos
del mínimo de claves. En tal caso puede hacerse un PRESTAMO a
cualquiera de los hermanos, si ninguno puede prestar una clave entonces se
realiza una FUSION. Con una pagina hermana y el elemento padre.
34
ELIMINAR caso 3
18
✗ Eliminar 3
3 5 8 25 46
1 2 4 5 6 7 15 16 20 23 26 27 28 50 55 58
35
ELIMINAR caso 3
18
✗ Eliminar 3
3 5 8 25 46
1 2 4 5 6 7 15 16 20 23 26 27 28 50 55 58
36
ELIMINAR caso 3
18
✗ Eliminar 3
5 8 25 46
1 2 4 5 6 7 15 16 20 23 26 27 28 50 55 58
37
ELIMINAR caso 3
18
✗ Eliminar 3
2 5 8 25 46
1 4 5 6 7 15 16 20 23 26 27 28 50 55 58
38
ELIMINAR caso 3
18
✗ Eliminar 3
2 5 8 25 46
1 4 5 6 7 15 16 20 23 26 27 28 50 55 58
39
ELIMINAR caso 3
18
✗ Eliminar 3
5 8 25 46
1 2 4 5 6 7 15 16 20 23 26 27 28 50 55 58
40
ELIMINAR caso 4
✗ Vamos a considerar la eventualidad de que la llave no este en una hoja, veamos el siguiente Árbol:
21 ✗ Eliminar 21
6 17 27 46
2 3 4 8 10 15 16 18 20 22 24 25 30 41 50 60 61
Eliminar la llave 21. Como esta llave no se encuentra en una hoja, el procedimiento a seguir es
explorar el árbol hasta encontrar su sucesor inorden y reemplazar la llave a eliminar por su sucesor
inorden y retirar el sucesor inorden de la pagina donde se encontró.
ELIMINAR caso 4
✗ Para el caso particular el árbol quedaría así:
22 ✗ Eliminar 21
6 17 27 46
2 3 4 8 10 15 16 18 20 24 25 30 41 50 60 61
ELIMINAR caso 4
✗ Para el caso particular el árbol quedaría así:
22 ✗ Eliminar 21
8 17 27 46
2 3 4 10 15 16 18 20 24 25 30 41 50 60 61
Siguiendo con el árbol inmediatamente anterior, al querer retirar el 6, se debe aplicar la misma regla
con la cual la estructura después de retirar el numero 6, quedaría así:.
ELIMINAR caso 5
✗ Eliminar 35 A
10 22 32 40
B C D E F
5 7 8 13 15 18 20 26 30 35 38 42 46
En este caso no existe pagina hermana izquierda ni derecha. Para esta situación se deben unir en
una sola pagina las llaves de la pagina D, la llave 32 y la llave 38 de la pagina F. La llave 32 se
retira de pagina A. el árbol final, después de este retiro debe verse así.
ELIMINAR caso 5
✗ Eliminar 35 A
10 22 40
B C E F
5 7 8 13 15 18 20 26 30 32 38 42 46
De esta manera se garantiza que el árbol continua manteniendo las propiedades de una estructura
B de orden 2
ELIMINAR caso 6
✗ Eliminar 25 A
10 22 40
B C E F
5 7 8 13 15 18 20 26 30 32 38 42 46
Existe una situación mas compleja y la podemos apreciar en el árbol siguiente, supongamos que
deseamos retirar la llave 25. en este caso no es aplicable el procedimiento descrito en los casos 2
o 3. en esta situación se deben unir en una sola hoja la llave 24, la llave 27 y las llaves de la
pagina ? Quedando la estructura así: >>>>>>>>>>>>>>>>>>>
ELIMINAR caso 6
✗ Eliminar 25 A
22
B
8 17 22
D E F G H
2 3 4 10 15 16 8 17 26 30 32 38 42 46
Sucede un problema. El árbol pierde las propiedades de una estructura B ya que el numero de
llaves de la pagina C es menor a N. en este caso se deben unir en una sola pagina las llaves de la
pagina B, la llave 22 y la llave de la pagina C, así: >>>>>>>>>>>>>>>>>>>>>>>
ELIMINAR caso 6
>>>>>>>>>>>>>>>>>>>>>>>>> 8 17 22 46
Y se deben ajustar los apuntadores, de tal manera que la estructura quede finalmente así:
8 17 22 46
2 3 4 10 15 16 18 20 24 27 30 41 50 60 61
De esta manera se reduce el árbol verticalmente ya que la raíz del árbol es una nueva pagina donde
la llave que antes conformaba la raíz esta incluida.
ELIMINAR caso 7
Veamos este caso al tratar de retirar la llave 21 del árbol, al aplicar el procedimiento descrito en el
caso 4, el árbol queda así:
22 ✗ Eliminar 21
6 17 27 46
2 3 4 8 10 15 16 18 20 24 30 41 50 60 61
Como el árbol todavía no recupera las propiedades de una estructura B, debemos seguir uniendo
paginas desde un nivel inferior a un nivel superior, así: >>>>>>>>>>>>>>>>>>>>>>>>>>>
ELIMINAR caso 7
Veamos este caso al tratar de retirar la llave 21 del árbol, al aplicar el procedimiento descrito en el
caso 4, el árbol queda así:
22
6 17 46
2 3 4 8 10 15 16 18 20 24 27 30 41 50 60 61
El árbol pierde las propiedades de una estructura B, En este caso debemos seguir uniendo paginas
desde un nivel inferior a un nivel superior así: >>>>>>>>>>>>>>>>>>>>>>>>>>>
ELIMINAR caso 7
El árbol disminuye su altura y por esto cambia de raíz:
6 17 22 46
2 3 4 8 10 15 16 18 20 24 27 30 41 50 60 61
ELIMINAR caso 8
Veamos esta situación en el siguiente árbol B de orden 2.
A 22
B
13 20 30 40 46
D E F G H I J
5 7 15 18 22 24 26 27 32 35 38 42 45 47 48
Al tratar de retirar la llave 22, se deben ejecutar los movimientos presentados en el caso 6.
veamos el árbol después de la primera unión de las paginas B, E y F.
ELIMINAR caso 8
Veamos esta situación en el siguiente árbol B de orden 2.
25
13 30 40 46
5 7 15 18 20 24 26 27 32 35 38 42 45 47 48
Ahora deberíamos unir las paginas B, A y C y disminuir la altura del árbol. No podemos unir esta
tres paginas en una sola ya que la cantidad de llaves de la nueva pagina sobrepasa el valor de
M. para este caso, debemos ejecutar los siguientes movimientos:
ELIMINAR caso 8
La llave 25 pasa a la pagina B y la llave 30 pasa a la pagina A. la hoja G debe pasar a ser hija de la
pagina B, quedando la estructura de la siguiente manera:
30
13 25 40 46
5 7 15 18 20 24 26 27 32 35 38 42 45 47 48
ELIMINAR caso 9
En este caso es un espejo del caso 8. Veamos el siguiente árbol de orden 1:
14
6 10 18
24 8 12 16 20
1 3 5 7 9 11 13 15 17 19 21
ELIMINAR caso 9
Al tratar de retirar la llave 17, el proceso a llevar a cabo se puede ver a través de los siguientes estados del árbol:
14
6 10 18
24 8 12 20
1 3 5 7 9 11 13 15 16 19 21
El árbol ha perdido las propiedades de una estrutura B de orden 1. Veamos como se recuperan: >>>>>>>>>>>>
ELIMINAR caso 9
A 14
B C
6 10
24 8 12 18 20
1 3 5 7 9 11 13 15 16 19 21
El árbol ha perdido las propiedades de una estrutura B de orden 1. Veamos como se recuperan: >>>>>>>>>>>>
ELIMINAR caso 9
Ahora debemos aplicar los movimientos relativos a este caso. La llave 14 pasa a la pagina C, la llave 10 pasa a la
raíz del árbol y el subárbol:
12
11 13
ELIMINAR caso 9
Pasa a ser hijo de la pagina C. Veamos finalmente como queda la estructura:
10
6 14
24 8 12 18 20
1 3 5 7 9 11 13 15 16 19 21
MUCHAS
GRACIAS!
✗ @luisrichardslaya
✗ [email protected]
60