Está en la página 1de 9

RBOLES B+

PROGRAMACIN II
INTEGRANTES:
CARMELO HERNNDEZ CORREA
ROBERTO CARLOS LUGO
ENTREGADO A: FOLGER FONSECA
UNIVERSIDAD DE CRDOBA
FACULTAD DE CIENCIAS BSICAS E INGENIERAS
INGENIERA DE SISTEMAS
LORICA CRDOBA
INTRODUCCIN
En el manejo de grandes volmenes de informacin, siempre ha estado presente la
necesidad de hacer eficiente el proceso de bsqueda.
A menudo se usan rboles binarios de bsqueda para ordenar listas de valores, minimizando
el nmero de lecturas, y evitando tener que ordenar dichas listas.
rboles B+
Una variacin a los rboles B son aquellos en los que todas las claves estn en las hojas
mientras que los nodos no-terminales contienen los ndices para las claves. Adicionalmente
las hojas estn conectadas secuencialmente.
En estos rboles se requieren 2 tipos de estructuras, una para representar los nodos no-
terminales y otra para las hojas. La primera es igual a las de los rboles B, mientras que la
segunda tiene un apuntador adicional para apuntar a la siguiente hoja.
Estos rboles son especialmente tiles para aplicaciones que requieren ambos tipos de
acceso secuencial y aleatorio.
Para buscar un dato en esto rboles es necesario recorrer un camino completo hasta la hoja
correspondiente siguiendo los ndices, por lo que el tiempo de bsqueda es siempre
constante. Las bajas son por otro lado son diferentes. Cuando s e elimina un dato se tienen
que mover y reajustar para evitar huecos y para que la informacin en los nodos no-
terminales asociados no cambie. Si una pgina tiene menos de la mitad de elementos
(underflow) es necesario balancear el rbol .Para hacerlo se re-distribuyen los datos o se
concatenan pginas.
Caractersticas Principales
rea o abre un !ndice
A"ade una nueva entrada
Elimina o busca una entrada
#uscar el primer, ltimo, siguiente o la anterior entrada.
$ndice de ms de dos millones de registros.
%ecupera datos de forma secuencial, por coincidencia e&acta, o apro&imacin,
un usuario, o cientos.
Diferencia con los rboles B.
'a estructura de rbol #( por lo general es mejor que un rbol # para el acceso
secuencial indizado. )uesto que los rboles #( incorporan rboles #,
*lo los nodos hoja apuntan a los registros.
E&iste un orden lineal entre las hojas, que estn encadenadas mediante punteros
para permitir un eficiente acceso secuencial.
Aplicaciones
+n ,rbol es una estructura de datos til cuando se trata de hacer modelos de procesos en
donde se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. )or
ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los
duplicados. Esta situacin es bastante til en el manejo de las bases de datos, para evitar un
problema que se llama redundancia.
+na manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo
y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tiene
elementos, se deben hacer comparaciones, claro, no es mucho problema si es un
nmero peque"o, pero el problema se va complicando ms a medida que aumenta.
*i se usa un ,rbol, el nmero de comparaciones se reduce bastante,
Bsquea en un rbol
#uscar en la ra!z el valor ki ms peque"o mayor que la clave &. 'a bsqueda sigue por el
puntero pi hasta que llegue a un nodo hoja, que ser donde est- el puntero al bloque o
cubeta .cuando un elemento se encuentre en una pgina ra!z o interior la bsqueda
continuar por la rama derecha de dicha clave, hasta llegar a una hoja/.
)or ejemplo, al buscar la clave 00 en el rbol de la figura se advierte que esta se encuentra
en el nodo ra!z. En este caso, debe continuarse el proceso de bsqueda en el nodo apuntado
por la rama derecha de dicha clave, o sea, si se encuentra la clave 1i23, debemos continuar la
bsqueda por el apuntador )i .
I!ple!entaci"n e bsquea
public #oi buscar $Bnoo rai%& int '()
Bnoo q*rai%.Ra!as+',-
./ile$01acio$q.Ra!as+2,((
q*q.Ra!as+2,-
rai%.Cla#es+'34,*q.Cla#es+2,-
5
Inserci"n
*e busca el nodo hoja correspondiente y se inserta la clave si no est all!. *i tiene lugar una
particin, se inserta una clave en el nodo padre, que ser duplicada si la particin ocurre en
una hoja.
En el ejemplo anterior el procedimiento para insertar la clave 34 es buscar el registro a la
derecha de la ra!z 50 por el hecho de ser menor, adems fracciona la )g. apara que no se
desborde, consecuentemente creando la pagina b y c
I!ple!entaci"n e inserci"n
public void 6nsertar.7odo)r clave, #nodo raiz/8
Empujar.clave,raiz/9
if.EmpA/8
p:ne; #nodo./9
p.uentas: 39
p.laves<=>:?9
p.%amas<=>:raiz9
p.%amas<3>:?r9
@
ABption)ane.sho;CessageDialog.null,E6nsercion ompletaE/9
@
6li!inaci"n
*e busca el nodo hoja correspondiente y se elimina la clave. *i al eliminar una clave, n
queda menor a .CF5 23/, entonces debe realizarse una redistribucin de claves, tanto en el
!ndice como en las pginas hojas.
I!ple!entaci"n e eli!inaci"n
void EliminarNodo(NodoPr clave){
if(Vacio(p)){
JOptionPane.showMessageDialog(nll!"No ha# elementos")$
%
else
Eliminar(p!clave)$
%
p&lic void Eliminar('nodo (ai)! NodoPr clave){
tr#{
Eliminar(egistro((ai)! clave)$
%
catch(E*ception e){
Esta+false$
%
if (,Esta)
JOptionPane.showMessageDialog(nll!"Noseencontroelelemento")$
else{
if ((ai).-entas ++ .)
(ai) + (ai).(amas/.0$
p+(ai)$
JOptionPane.showMessageDialog(nll!"Eliminacion
completa")$ % %
I!ple!entaci"n e rbol b7
public class treeb+{
public static void main(String args[]){
ArrayList tmp = new ArrayList();
BPTree btree = new BPTree(null,4,4);
Random generator = new Random();
while(btree.size()<100){
Integer next = new Integer(generator.nextInt(200));
if(!btree.containsKey(next)){
btree.put(next, next);
tmp.add(next);
}
}
btree.printKeys();
Collections.sort(tmp,null);
System.out.println(tmp.toString());
btree.Print();
btree.printXML();
}

También podría gustarte