Está en la página 1de 13

NOMBREALUMNO:

Apellidopaterno

ApellidomaternoNombre(s)

No.
BOLETA

INSTITUTOPOLITCNICONACIONAL
SECRETARIAACADMICA
DIRECCINDEEDUCACINSUPERIOR
ESIMECULHUACAN

GRUPO

FECHA

DIA

MES

AO

INGENIERAENCOMPUTACIN
ASIGNATURA

ESTRUCTURASDEDATOS
PROFESOR

M.enC.BEATRIZEUGENIACORONA
RAMREZ

PRCTICANo.15
RBOLB

1. Objetivo

El alumno usar los algoritmos de ordenacin interna y externa para el


ordenamientodedatos.

2. MaterialyEquipo

Computadora,CompiladorCy/oJavayunidaddealmacenamiento(USB)

3. Introduccinterica

Los diferentes tipos de rboles binarios estudiados hasta el momento fueron


desarrollados para funcionar en la memoria principal de la computadora. Sin
embargo,existenmuchasaplicacionesenlasqueelvolumendeinformacines
tal, que los datos caben en la memoria principal y es necesario almacenarlos,
organizados en archivos en dispositivos de almacenamiento secundario. Esta
organizacin de archivos debe ser suficientemente adecuada como para
recuperarlosdatosenformaeficiente.

El rbol B es un TDA de bsqueda equilibrado, diseado para ser usado con


grandesconjuntosdedatosenalmacenamientosecundario.
Generalmente se considera a los rboles B como el mejor mtodo para
implementaralTDAdinmicoenunaunidaddedisco.

AdiferenciadelosrbolesBinarios(queslopodanalmacenarundatoencada
nodo,induciendoasarealizarunaccesoaldiscocadavezquesecargaundato
enelrbolantesdeserprocesado),elrbolBaccedealdiscomediantebloques
dedatos,esdecir,agrupalosdatosenpaquetesparasulecturaoescriturade
asserlo.

Estapropuestareducebastanteelnmerodeaccesosaldispositivosecundario,
optimizandoaselrendimientodenuestrosistemainformtico.
179

Asporejemplo,supongamos quetenemosunarchivoconnuevemilregistrosde
empleados (RUT, nombre, apellido, direccin, cargo) de 100 Bytes cada registro,
como semuestraenla figura.Ademssabemosqueelbloque del discoesde512
Bytesyquecadapunteroalbloquedediscoesde2Bytes.

Representacindeunregistro

SihubisemosusadounABBparaadministrarlosdatosenestearchivo,tendramos
que haber accesado al disco unas 9000 veces para cargar el rbol completo en
memoriaprincipal(locualesbastantelento).

AhorasiusamosunrbolBcon5registros(500Bytes)y6punteros(12Bytes)por
cada nodo, tendremos que acceder al disco unas 1800 veces. Ya que
empaquetados los datos en bloques de 5 registros por nodo. Esto es mucho ms
rpidoyeficientequeenelcasodelosABB.

Porlotanto,yadebemostenerclaralaideaqueelrbolBeselTDAptimopara
administrar una gran cantidad de datos en memoria secundaria. Ahora que
sabemos el uso de los rboles B y su forma de trabajar, les mostraremos su
definicinformal.

A fines de los aos sesenta, R. Bayer y E. McCreight postularon un criterio muy


razonabledeorganizardatosenunficheroexterno,lollamaronrbolB.
SedicequeunrbolesBdeordennsi:

Cadapginacontienealosumo2nelementos(llaves).
Cadapgina,exceptoladelaraz,contienenelementosporlomenos.
Cadapginaesunapginadehoja,oseaquenotiene,descendientesotienem+1
descendientes,dondemeselnmerodellavesenestapgina.
Todaslaspginasdehojaaparecenalmismonivel.

LafiguramuestraunrbolBdeorden2con3niveles.Todaslaspginastienen2,3
o 4 elementos; la excepcin es la raz que puede contener un solo elemento
nicamente.Todaslaspginasdehojaaparecenenelnivel3.

180

rbolBdeorden2

Bsqueda

Examinemoslafigurayunargumentodebsquedax.

PginaderbolBconmllaves

Suponiendo que hemos cargado en memoria primaria una pgina P del Arbol B,
entoncespodemosaplicarlosmtodosordinariosdebsquedaentrelasllavesk1....
km.

Nota:Simesmuygrande,sepuedehacerunabsquedadeltipo"Dividirparareinar".
Perosiespequea,bastarconrealizarunabsquedaSecuencial.

Silabsquedafracasa,nosencontraremosenunadelassiguientessituaciones:
ki1<x<ki+1para1<=i<m.Proseguimoslabsquedaenlapginapi
km<xLabsquedaprosigueenlapginapm
x<k1Labsquedaprosigueenlapginap0
SienalgncasoelapuntadordesignadoesNULL,estoes,sinohaypginadehijo,
entonces tampoco existe un elemento con la llave x en el rbol B y la bsqueda
finaliza.

Insercin

Es interesantesealarquela insercinenun rbolBde ordennes relativamente


sencilla. Si hay que insertar un elemento en una pgina con m<2n elementos, el
procesodeinsercinquedalimitadoaesapgina.

181

Paraanalizarestasituacin,considreselasiguientefiguraquemuestraunrbolB
de orden 2. Puesto que cada pgina en un rbol B de orden n (excepto la raz )
contiene entre n y 2n elementos, cada pgina del ejemplo tiene entre 2 y 4
elementos.

En cada pgina debe existir un indicador (que no est reflejado en la figura) para
informarsobreelnmerodeelementosquetienelapgina.Primeroseprocedea
Buscardesdelarazhastalocalizarlapginaapropiadaparalainsercin.Entonces
se realiza la insercin.Refirindonos a la figura(a), uno puede verque cuando se
inserta el elemento 24, la Bsqueda termina sin xito en la segunda hoja. Puesto
quelahojapuedealojarotroelemento,seinsertaelelementonuevosimplemente,
dandolugaralrbolquesemuestraenlafigura(b).

(a)UnrbolBdeorden2,y(b)elmismorboltraslainsercindelelemento24

La otra situacin que se presenta y la ms problemtica, es cuando se inserta un


elemento en una pgina ya llena. Esto puede afectar la estructura del rbol y
ocasionarasignacindepginasnuevas.

Para comprender lo que sucede en este caso, analicemos la figura que ilustra la
insercin de la llave 22 en un rbol B de orden 2. La accin se realiza en los
siguientespasos:

Sedescubrequefaltalallave22;lainsercinenlapginaCesimposibleporqueCya
estllena.
LapginaCsedivideendospginas(estoes,seasignaunanuevapginaD).
Las2n+1llavessedistribuyenuniformementeenCyD,ylallavedelamitadsesube
unnivelhacialapginamadreA.

Insercindelallave22enunrbolBdeorden2

182

EsteplantanelegantepreservatodaslasPropiedadestpicasdelosrbolesB.En
particular,laspginasdivididascontienenexactamentenelementos.Desdeluego,
lainsercindeunelementoenlapginamadrepuedehacerquestasedesborde,
con lo cual ocasiona que la divisin se propague. En el caso extremo, puede
propagarse hasta la raz. Es decir, la nica manera en que el rbol Bsqueda
aumentar su altura. Tiene pues una manera singular de crecer: crece de las hojas
hacialaraz.

Borrado

Sedistinguendoscasos:

a) Elelementoaborrarseencuentraenunapginahoja.
b) Elelementoaborrarnoseencuentraenunapginahoja,entoncesdebeser
sustituidoporunodelosdoselementosadyacentes(predecesorosucesor),
queresultanestarenpginashojasyquepuedenserborradosfcilmente.

En cualquier caso, despus de la eliminacin, debe seguir una comprobacin del


nmero de elementos restantes en la pgina, pues si m < n se tiene se estara
violando las Propiedades para el rbol B de orden n y entonces, se requiere
reorganizarelrbol.

Para analizar el caso 1 (el ms sencillo), considrese el rbol B de orden 2 que se


muestraenlafigura(a).

(a)UnrbolBdeorden2

Ahorabien,supongamosquedeseamoseliminardelrbolelelementoconvalor14.
El primer procedimiento es Buscar dicho elemento y determinar su posicin en el
rbol (se encuentra en una pgina hoja). Una vez encontrado, procedemos a
eliminarlo del rbol y mover los elementos adyacentes a sus nuevas posiciones.
Finalmente se debe realizar una verificacin. Si la pgina en donde fue eliminado
dicho elemento cumple con las Propiedades de rbol B de orden 2, entonces se
queda como est. En caso contrario, se debera realizar una combinacin de
pginas.Ennuestrocasoslodebemoseliminarloyvolveraordenarloselementos
183

delapgina.Elrbolqueseobtienedespusdelborradodelelementoconvalor14
semuestraenlafigura(b).

(b)ElmismorbolBdelaanteriortraselborradodelelemento14

Elcaso2loanalizaremosatravselejemplodelafigura(a),enelcualsemuestra
unrbolBdeorden2.Elelementoquedeseamosborraresel88,yseencuentra
ubicadoenunapginaquenoeshoja.

rbolBdeorden2

Posteriormenteseeliminaelelementoysereordenanloselementosrestantesdela
pginaA.FinalmenteseprocedeaverificarelcumplimientodelasPropiedadesdel
rbolBdeorden2.DebidoaquelapginaKquedaconunelemento,debehacerse
unacombinacinentrelaspginasJyL,ysubiraKelelementocentral,esdecirel
91.Comosemuestraenlafigura(b).

(b)rbolBdelaFigura(a)traselborradodelelemento88

184

La reorganizacin se da tomando un elemento del padre, quien, a su vez debe


tomar una elemento del hermano. Pero puede ocurrir que ya el hermano haya
alcanzado su tamao mnimo n, y no tenga, por tanto, posibilidad de prestar un
elemento;entonceslasdospginashermanasseunenenunasola,conteniendolas
2n 1 elementos de las dos hermanas ms un elemento central proveniente del
padre. La combinacin de pginas, causadas por cantidades de elementos en las
pginas,menoresalaspermitidas,puedeprolongarsealosnivelessuperiores,yen
el caso extremo hasta la raz, que cuando queda reducida a un tamao nulo se
borra,producindosereduccindelaalturadelrbol.

Costos

Ya que visitar un nodo en el rbol B conlleva a acceder a memoria secundaria, el


nmerodepginasquesevisitenencadaoperacinsobreelrbolesloquenosda
la medida de su costo. Analicemos el caso de un archivo externo (ubicado en
memoriasecundaria)deNelementos.

CostodeBuscar
Comovimos en la seccin funcionamiento de un rbol B ysu definicin podemos
organizarlgicamenteloselementosdelarchivomedianteunrbolBdeordenn,
enelcualcadapginacontieneentreny2nelementos.Deaquque,labsquedade
un elemento requiere a lo ms lognN accesos al dispositivo secundario. De este
modo,elcostodeprocesarunaoperacindebsquedacrecedeformalogartmica
enrelacinconeltamaodelarchivo.

Elpeorcasodebsquedacorrespondecuandoseestbuscandounelementoque
estenlahojadelrbolyademsestsituadoalfinaldelapginahoja.

CostodeInsercinyBorrado

LainsercinoelborradodeunelementodelrbolBpodrarequerir,ademsdela
operacindebsqueda,uncostoadicionalqueeselaccesoamemoriasecundaria.
Esdecirelcostodeinsertaroborrarunelementoesde:lognN+Tiempodeaccesoa
memoriasecundaria

Perocomoel"Tiempodeaccesoamemoriasecundaria"esunaconstante(muchas
veces bastante significativa), podemos obviarla si usamos el criterio asinttico. Y
decirqueelcostodeinsercinyborradoenunrbolBdeordennquecontienelas
clavesdeunarchivoexternodeNelementosesalomsde:lognN

La tabla muestra cmo puede ser de razonable el costo logartmico, incluso para
archivosdegrantamao.Porejemplo,enunrbolBdeorden50quecontengalas
185

claves que indexan a un fichero de un milln de registros, se puede realizar una


operacindebsqueda,insercinoborradocon4accesoscomomucho.

Tamaodelarchivo(N)
Tamao
de
la 103
104
105
106
107
pgina(n)
10
3
4
5
6
7
50
2
3
3
4
4
100
2
2
3
3
4
150
2
2
3
3
4

TiposdelosrbolesB
Nombre
rbolB*
Uso
AdministracindeBasesdeDatos(grandes)
Propiedades
LasmismasqueunrbolBbsicoperoademsdebecumplirse
quecadapginaestalmenos2/3llenas.
Almacenamiento 66%,yaquelaspginasestnalomenos2/3llenas.
mnimoxpg.

Nombre
rbolB+
Uso
AdministracindeBasesdeDatos(grandes)
Propiedades
LasmismasqueunrbolBbsicoperoademsdebecumplirse
quelosdatosdebenalmacenarseensolamenteenlashojas.
Almacenamiento 50%
mnimoxpg.

Nombre
rbolB+Prefijo
Uso
AdministracindeBasesdeDatosconsecuenciasalfabticas.
Propiedades
Las mismas de un rbol B+. Adems, muchos datos pueden
estaralmacenadosenunnodo,aumentandoasloselementos
ydisminuyendosualtura.
Almacenamiento Puedesermenoral50%segnloscasos.
mnimoxpg.

Nombre
rbolBVirtual
Uso
Administracindememoria.
Propiedades
LasmismasdeunrbolBbsico,peroahoraseadministranlos
valores de los registros de los procesos en la CPU y su
intercambiodeRAMaROMyviceversa
Almacenamiento 50%
mnimoxpg.
186

Nombre
rbolBBinario
Uso
AdministracindeBasesdeDatos(pequeas)
Propiedades
EsunrbolBdeorden1
Almacenamiento 50%
mnimoxpg.

Nombre
rbol234
Uso
AdministracindeBasesdeDatos(nomuygrandes)
Propiedades
EsunArboldeorden2
Almacenamiento 50%
mnimoxpg.

UnrbolB+esunavarianteespecializadaderbolBquetienedostiposdenodos:
internos,quesloapuntanaotrosnodos,yexternos,quecontienenlosdatosensi.

VentajasdelosrbolesB+

La ventaja de los rboles B+ frente a los rboles B es que los nodos internos del
rbol B+ pueden tener muchos ms valores clave de decisin que los nodos
intermedios de un rbol B, de tal forma que el acceso global es ms rpido y la
altura media del rbol es menor. Hay que tener en cuenta el hecho de que en un
rbol B+ hay que recorrer toda una rama hasta las hojas para encontrar un dato,
mientras que en los rboles B+ se puede encontrar el dato en los nodos
intermedios,inclusoenelraz.

rboles23

SonlosrbolesBdeprimerorden(n=1).
Estnformadospornodos(pginas)deunoodostems(2o3descendientesde
ah su nombre de rboles 23) y, como rbol B, todas las hojas estn a un mismo
nivel.

Dado que con ellos se trabaja en memoria principal y que la representacin con
arreglos determina hasta un 50% de desperdicio, es usual representar la pgina
comounalistaenlazada,con1o2elementos.Deestamanera,losnodosdelrbolB
lucencomonodosdeunrbolbinarionormalyparadistinguirentrereferenciasa
descendientes (verticales) y referencias a "hermanos" (horizontales) se introduce
uncampobooleanohhermano.

187

Insercin

Sedistinguen4casos,segncrezcaelsubrbolderechooelizquierdo:.....
Elrbolcrecedeabajohaciaarribaylashojaspermanecenalmismonivel.
Estosrbolespresentanasimetra,elsubrbolderechosuelesermspesado.
Para corregirla se introdujeron los rboles binarios simtricos rboles BBS
(rbolesseto),cuyarepresentacinrequieredeunavariablebooleanaadicionalen
cada nodo, para distinguir entre referencia a descendiente o a hermano. Estos
rbolestienenlassiguientespropiedades:

todonodotieneunaclaveyunmximodedos(referencias)subrboles,
toda referencia es horizontal o vertical, no hay dos punteros horizontales
consecutivosenningncaminodebsqueda,
todoslosnodosterminalesestnenelmismonivel

Estadefinicingarantizaquelalongituddelcamino,paracualquiernodo,seaalo
msde2*log2N(Nnmerodeclaves).

188

4. Desarrollo

classArbol
{
Nodoraiz;
String[]cont;
Nodo[]nod;
Nodopapa;
publicArbol(Nodoraiz)
{
this.raiz=raiz;
nod=newNodo[1000];
cont=newString[1000];
}
publicvoidinsertar(Nodopuntero,Stringelemento)
{
if(puntero!=null)
{
if(elemento.compareTo(puntero.contenido)<0)
if(puntero.izquierdo!=null)
insertar(puntero.izquierdo,elemento);
else
puntero.izquierdo=new
Nodo(elemento,puntero.profundidad+1);
else
if(puntero.derecho!=null)
insertar(puntero.derecho,elemento);
else
puntero.derecho=newNodo(elemento,puntero.profundidad+1);
}
}

publicNodobuscar(Nodopuntero,Stringelemento)
{
if(puntero!=null)
{
if(elemento.compareTo(puntero.contenido)>0)
if(puntero.izquierdo!=null)
returnbuscar(puntero.izquierdo,elemento);
else
{
System.out.println("noexisteelemento");
returnpuntero;
}
else
if(elemento.compareTo(puntero.contenido)==0)
{
returnpuntero;
}
else
if(puntero.derecho!=null)return
buscar(puntero.derecho,elemento);
else{System.out.println("noexisteelemento");

189

publicvoideliminar(Stringelemento)
{
Nodoubicacion=buscar(raiz,elemento);
if(elemento.compareTo(ubicacion.contenido)!=0)
{
System.out.println("noseencontroelemento");
}
else
podar(ubicacion);
}
publicvoidpodar(Nodopuntero)
{
inti=0;
papa=puntero;
while(i>=0)
{
while(puntero.izquierdo!=null)
{
cont[i]=(puntero.izquierdo).contenido;
nod[i]=puntero;
puntero=puntero.izquierdo;
i++;
}
while(((nod[i]).derecho==null)||(i<0))
{
i;
}
if(i<0)break;
puntero=nod[i].derecho;
cont[i]=(puntero.contenido);
}papa=null;Stringcontenido;
for(intj=0;j<100;j++){contenido=cont[j];
insertar(raiz,contenido);
}
}
publicvoidimprimir(Nodopuntero)
{
if(puntero!=null)
{
imprimir(puntero.izquierdo);System.out.println(puntero);
imprimir(puntero.derecho);
}
}

publicstaticvoidmain(String[]args)
{
Arbola=newArbol(newNodo("b",0));//a.imprimir(a.raiz);
a.insertar(a.raiz,"c");//a.imprimir(a.raiz);

190

5. Cuestionario[TrabajoComplementario]

1. Realiceunatablacomparativadelosdiferentestiposderbolesanalizados.

2. Muestrelasventajasydesventajasdevacadunodeellos.

6. Conclusiones

191

También podría gustarte