Está en la página 1de 58

Árboles

“2-3”,
Multicamino y “B”
Unidad 4
Agenda

•Árboles 2-3

•Árboles Multicamino

•Árboles B
Árboles 2-3
● Tipo de árbol balanceado.

● Todos los nodos no-terminales tienen 2 ó 3


descendientes.

● Todos los nodos hoja tienen la misma altura.

● Los nodos internos del árbol pueden tener


hasta 2 elementos.
Árboles 2-3
Árboles 2-3
● Su propósito es optimizar el tiempo de acceso
de estructuras manejadas en memoria
secundaria.

● Acceso a la información en

● Baja complejidad en algoritmos de


actualización.
Árboles 2-3
● Un árbol 2-3 puede simularse utilizando árboles binarios.
Árboles 2-3
● Un árbol 2-3 es un árbol perfectamente balanceado.
Árboles 2-3
● Las búsquedas son búsquedas binarias con la
única diferencia de que el nodo puede tener 2
elementos y 2 o 3 hijos.
Árboles 2-3
● Inserción ejemplo:
.
Árboles 2-3
Árboles 2-3
Eliminación:
Se tienen dos casos para la eliminación:

• El valor a eliminar se encuentra en un nodo con 2


elementos.
• El nodo a eliminar tiene 1 hijo
• El nodo a eliminar tiene 2 hijos
• El nodo a eliminar tiene 3 hijos

.
Árboles 2-3 - Eliminación
Árboles 2-3 - Eliminación
Árboles 2-3 - Eliminación
Árboles Multicamino
● Son estructuras de datos dinámicas, no lineales
y recursivas.

● A diferencia de los árboles binarios, pueden


tener más de dos hijos por nodo. La cantidad
máxima se llama grado (G).

● Permiten un rápido acceso a los elementos ya


que se disminuye la cantidad de saltos a realizar.

● La evaluación de un nodo es más costosa que


en un árbol binario.
Árboles Multicamino
● Presentan las mismas ventajas que los árboles
binarios en cuanto a ingreso, actualización y
búsquedas.

● Tienen los mismos problemas de desbalanceo


que los árboles binarios.
Árboles Multicamino
● La estructura de un nodo es la siguiente:

● Se tienen m subárboles
● Se tienen m -1 llaves
● Las llaves están en orden ascendente
● Las llaves están ubicados en una
posición intermedia a los subárboles
● Los subárboles pueden estar vacíos
Árboles Multicamino (G3)
Árboles Multicamino (G4)
Árboles Multicamino (G5)
Inserción
● La secuencia de pasos es la siguiente:

● Se inicia en la raíz.
● Se verifica si el nodo actual tiene algún
espacio vacío adecuado.
● Si lo tiene, se inserta la llave.
● Si no lo tiene, se ubica el subárbol en
que corresponde insertar la llave y se
repite el proceso recursivamente.
Inserción
Insertar la llave 8 en un árbol multicamino de grado 3.
Inserción
Insertar la llave 27 en un árbol multicamino de grado
3.
Eliminación
● Se tienen dos casos para la eliminación:

● Cuando la llave está entre dos subárboles


vacíos.
● En este caso se borra la llave sin causar
inconvenientes.
● Cuando la llave está al lado de algún subárbol
no vacío.
● Se debe reemplazar la llave eliminada
con la llave más pequeña del lado
derecho o la más grande del lado
izquierdo.
Eliminación
Eliminar la llave 8 (caso 1).
Eliminación
Eliminar la llave 16 (caso 2).
Árboles B
• Luego de analizar los árboles multicamino,
podemos identificar varios problemas:

• El nivel de utilización de los nodos es bajo.


• El árbol crece no balanceado.
• La forma del árbol es dependiente de la
secuencia de inserción.
• El número de lecturas para cada llave no es
igual.
Árboles B
• Para solucionar los problemas anteriores,
surgieron árboles multicamino autobalanceados.

• Estos árboles multicamino autobalanceados se


conocen como:
• B
• B+
• B*
Árboles B
• Las características principales de un árbol B de
orden n son:
• La distancia desde la raíz a cualquier hoja tiene
la misma longitud (altura invariante).
• Cada nodo interno tiene por lo menos n/2
subárboles y (n/2) - 1 llaves.
• Exceptuando los primeros momentos del árbol,
raíz tiene por lo menos 1 nodo y dos
subárboles.
Árboles B
• El rendimiento de las inserciones y borrados es
proporcional a 2h (los cambios se propagan hasta
la raíz).
• El costo de las operaciones de inserción y
borrados se disminuye según la cantidad de
elementos en el nodo (Complejidad temporal).
• El costo de la revisión de un nodo se incrementa
según el tamaño de N debido a la cantidad de
datos transferidos (No considerado en la
complejidad temporal).
Árboles B
• Los árboles B son muy buenos para accesos
aleatorios, pero no para búsqueda de rangos.
Ejemplo Árbol B de orden 3
Ejemplo Árbol B de orden 5
Ejemplo Árbol B de orden 7
Árboles B - Inserción
• Se encuentra un nodo para insertar la hoja.
• Si el nodo no está lleno, se inserta en la posición
adecuada.
• Si el nodo está lleno, se dividirán los contenidos en
varios nodos de la siguiente manera:
• n/2 menores van al nodo izquierdo
• n/2 mayores van al nodo derecho
• El separador se traslada al nodo padre.
• Si n es par (n-1 llaves) se puede agregar una llave
más a cualquiera de los dos nodos (elemento
posición n/2).
Árboles B - Inserción
• Si el padre está lleno, se procede recursivamente
hacia arriba.
• Si se llega a la raíz y esta está llena se crea una
nueva raíz.
• Los cambios se propagan de las hojas a la raíz.
• Debido a la forma de la inserción, el árbol
permanece balanceado (de la misma forma que los
2-3).
Árboles B - Inserción
Árboles B - Inserción
Árboles B - Eliminación
• Las eliminaciones siempre empezarán desde las
hojas.
• No se pueden eliminar directamente elementos de
nodos “no hoja”.
• Cuando se da el caso anterior, se debe
intercambiar por su predecesor o sucesor (el cual
siempre estará en una hoja) y luego ya se elimina.
• En este curso (laboratorios y proyectos) se
utilizará el criterio del intercambio por el
predecesor.
Árboles B - Eliminación
• Se debe evaluar la condición de “underflow”.

• Se dice que un nodo está en underflow cuando


tiene menos de N/2 - 1 llaves.

• El underflow hace que se rompa el criterio de


llaves mínimas por nodo, por lo que nos vemos
obligados a resolverlo.

• Para resolverlo debemos evaluar los hermanos


contiguos.
Árboles B - Eliminación
De entre los hermanos contiguos, debemos elegir uno
para realizar el balanceo. Las condiciones para
priorizar son las siguientes:

1. Cantidad de llaves en el nodo, elegimos el que


tenga más.

1. Si ambos tienen la misma cantidad preferimos el


que se encuentra al lado izquierdo.
Árboles B - Eliminación
Una vez elegido el hermano adecuado, debemos
elegir el método de balanceo según las siguientes
condiciones:

• Mezcla: Si el hermano elegido tiene menos de


n/2 elementos.

• Préstamo: Si el hermano elegido tiene n/2 o


más elementos
Árboles B - Eliminación
● Mezcla:
○ Se debe generar un nuevo nodo con el
siguiente contenido:
■ Llaves del hermano elegido
■ Llaves restantes del nodo afectado
■ Clave separadora de los hermanos

○ El nodo resultante queda ubicado al nivel más


bajo (nivel del nodo afectado).
Árboles B - Eliminación
• La clave separadora que queda en el nuevo nodo
generado se considera “eliminada” del nodo padre,
por lo que deberá repetirse el proceso de forma
recursiva.

• Este proceso libera uno de los nodos hijos.


Árboles B - Eliminación
Árboles B - Eliminación
Árboles B - Eliminación
Árboles B - Eliminación
● Préstamo:
○ Un préstamo considera el traslado de llaves
hacia el nodo afectado de la siguiente forma:
■ Se presta la llave más a la izquierda o a la
derecha según el lado en el que se
encuentre el nodo donde se está
eliminando.
■ La llave prestada (del hermano elegido) se
convierte en la llave separadora
■ La llave separadora sustituye a la clave
eliminada
Árboles B - Eliminación
● Uno de los hijos de la llave trasladada como
separador perderá la referencia, por lo que deberá
ser asignado como hijo de la clave que es
descendida como préstamo (antigua clave
separadora).
Árboles B - Eliminación
Árboles B - Eliminación
Árboles B - Eliminación
Árboles B - Eliminación
• La eliminación se realiza de forma recursiva y puede
darse el caso de que toque balancear de dos formas
distintas dependiendo del nivel.
• A continuación se presenta un ejemplo recursivo donde
primero se realiza una mezcla a nivel 3 y luego un
préstamo a nivel 2.

Árboles B - Eliminación
Árboles B - Eliminación
Árboles B - Eliminación
Simulador de Árbol B

https://www.cs.usfca.edu/~galles/
visualization/BTree.html
GRACIAS POR SU ATENCIÓN

También podría gustarte