Anda di halaman 1dari 16

Universidad Nacional Del Altiplano -Puno

Facultad: Ingeniera Mecnica Elctrica, Electrnica y Sistemas

Escuela Profesional: Ingeniera de Sistemas


rea: Estructura de Datos y Algoritmos
Grupo:N 4
Tema: rboles de Caminos Mltiples
Integrantes:
Cristian Rony Yaguno Mamani


Docente: Ing. Pablo Cesar Tapia Catacora

Puno-Per
2016
NDICE

RBOLES DE CAMINOS MLTIPLES

1. Familia de rboles B, B*, B+ y R.

2. rboles de bits

3. rboles B+ de prefijos

4. Implementacin

5. Caso de estudio

6. Conclusin

7. Bibliografa
INTRODUCCIN

La unidad bsica de operaciones de E/S asociadas a un disco es un bloque.


Cuando la informacin se lee de un disco, todo el bloque que contiene esta
informacin se lee en la memoria, y cuando la informacin se almacena en un
disco, un bloque entero se inscribe en el disco. Cada vez que la informacin se
solicita de un disco, esta informacin debe localizarse en el disco, la cabeza debe
posicionarse sobre la parte donde reside la informacin, y el disco tiene que girar
de modo que todo el bloque pase debajo de la cabeza para ser transferido a la
memoria. Esto significa que hay varios componentes para el acceso a los
datos:Tiempo de acceso=Tiempo de Busqueda+retardo rotacional
(latencia)+tiempo de-transferencia

Este proceso es sumamente lento comparado con la transferencia de


informacin dentro de la memoria. El primer componente tiempo de bsqueda,
es particularmente lento debido a que depende del movimiento mecnico de la
cabeza de disco para posicionar la cabeza en la pista correcta del disco. La
latencia es el tiempo requerido para posicionarse sobre el bloque correcto y, en
promedio, es igual al tiempo requerido para hacer media revolucin.
ARBOLES DE CAMINOS MULTIPLES
Un rbol multicamino posee un grado g mayor a dos, donde cada nodo de
informacin del rbol tiene un mximo de g hijos.

Sea un rbol de m-caminos A, es un rbol m-caminos si y solo si:

A est vaco
Cada nodo de A muestra la siguiente
estructura: [nClaves,Enlace0,Clave1,...,ClavenClaves,EnlacenClaves] nClaves
es el nmero de valores de clave de un nodo, pudiendo ser: 0 <=Claves
<= g-1
Clavei, son los valores de clave, pudiendo ser: 1 <= i <= nClaves
Enlacei, son los enlaces a los subrboles de A, pudiendo ser: 0 <= i <=
nClaves

Clavei < Clavei+1


Cada valor de clave en el subrbol Enlacei es menor que el valor
de Clavei+1
Los subrboles Enlacei, donde 0 <= i <= nClaves , son tambin
rboles m-caminos.
Existen muchas aplicaciones en las que el volumen de la informacin es tal, que
los datos no caben en la memoria principal y es necesario almacenarlos,
organizados en archivos, en dispositivos de almacenaminento secundario. Esta
organizacin de archivos debe ser suficientemente adecuada como para
recuperar los datos del mismo en forma eficiente.

1.-Familia de rboles B, B*, B+ y R.

rboles-B
B-rbol es un rbol de bsqueda que puede estar vaco o aquel cuyos nodos
pueden tener varios hijos, existiendo una relacin de orden entre ellos, tal como
muestra el dibujo.
Un rbol-B de orden M (el mximo nmero de hijos que puede tener cada nodo)
es un rbol que satisface las siguientes propiedades:

1. Cada nodo tiene como mximo M hijos.


2. Cada nodo (excepto raz) tiene como mnimo (M)/2 claves.
3. La raz tiene al menos 1 hijos si no es un nodo hoja. (segn M)
4. Todos los nodos hoja aparecen al mismo nivel.
5. Un nodo no hoja con k hijos contiene k-1 elementos almacenados.
6. Los hijos que cuelgan de la raz (r1, , rm) tienen que cumplir ciertas
condiciones:

El primero tiene valor menor que r1.


El segundo tiene valor mayor que r1 y menor que r2, etc.
El ltimo hijo tiene valor mayor que rm.
Altura: El mejor y el peor caso
En el mejor de los casos, la altura de un rbol-B es:

En el peor de los casos, la altura de un rbol-B es:

Donde M es el nmero mximo de hijos que puede tener un nodo.


Estructura de Nodos
Cada elemento de un nodo interno acta como un valor separador, que lo divide
en subrboles. Por ejemplo, si un nodo interno tiene tres nodos hijo, debe tener
dos valores separadores o elementos a1 y a2. Todos los valores del subrbol
izquierdo deben ser menores a a1, todos los valores del subrbol del centro
deben estar entre a1 y a2, y todos los valores del subrbol derecho deben ser
mayores a a2.
Los nodos internos de un rbol B, es decir los nodos que no son hoja, usualmente
se representan como un conjunto ordenado de elementos y punteros a los hijos.
Cada nodo interno contiene un mximo de U hijos y, con excepcin del nodo
raz, un mnimo de L hijos. Para todos los nodos internos exceptuando la raz, el
nmero de elementos es uno menos que el nmero de punteros a nodos. El
nmero de elementos se encuentra entre L-1 y U-1. El nmero U debe ser 2L o
2L-1, es decir, cada nodo interno est por lo menos a medio llenar. Esta relacin
entre U y L implica que dos nodos que estn a medio llenar pueden juntarse para
formar un nodo legal, y un nodo lleno puede dividirse en dos nodos legales (si
es que hay lugar para subir un elemento al nodo padre). Estas propiedades
hacen posible que el rbol B se ajuste para preservar sus propiedades ante la
insercin y eliminacin de elementos.
Los nodos hoja tienen la misma restriccin sobre el nmero de elementos, pero
no tienen hijos, y por tanto carecen de punteros.
El nodo raz tiene lmite superior de nmero de hijos, pero no tiene lmite inferior.
Por ejemplo, si hubiera menos de L-1 elementos en todo el rbol, la raz sera el
nico nodo del rbol, y no tendra hijos.
Un rbol B de altura n+1 puede contener U veces por elementos ms que un
rbol B de profundidad n, pero el costo en la bsqueda, insercin y eliminacin
crece con la altura del rbol. Como todo rbol balanceado, el crecimiento del
costo es ms lento que el del nmero de elementos.
Algunos rboles balanceados guardan valores slo en los nodos hoja, y por lo
tanto sus nodos internos y nodos hoja son de diferente tipo. Los rboles B
guardan valores en cada nodo, y pueden utilizar la misma estructura para todos
los nodos. Sin embargo, como los nodos hoja no tienen hijos, una estructura
especial para stos mejora el funcionamiento.
Class nodo rbol B en c++

#define TAMANO 1000

struct stclave {
int valor;
long registro;
};

class bnodo {
public:
bnodo (int nClaves); // Constructor
~bnodo (); // Destructor

private:
int clavesUsadas;
stclave *clave;
bnodo **puntero;
bnodo *padre;

friend class btree;


};

Algoritmo
La bsqueda es similar a la de los rboles binarios. Se empieza en la raz, y se
recorre el rbol hacia abajo, escogiendo el sub-nodo de acuerdo a la posicin
relativa del valor buscado respecto a los valores de cada nodo. Tpicamente se
utiliza la bsqueda binaria para determinar esta posicin relativa.
Procedimiento
ejemplo2 insercin en rbol B.

1. Situarse en el nodo raz.


2. (*) Comprobar si contiene la clave a buscar.
Encontrada fin de procedimiento.
No encontrada:
1. Si es hoja no existe la clave.
2. En otro caso el nodo actual es el hijo que
corresponde:

La clave a buscar k < k1: hijo izquierdo.


La clave a buscar k > ki y k < ki+1 hijo isimo.
Volver a paso 2(*).
Insercin
Las inserciones se hacen en los nodos hoja.

1. Realizando una bsqueda en el rbol, se halla el nodo hoja en el


cual debera ubicarse el nuevo elemento.
2. Si el nodo hoja tiene menos elementos que el mximo nmero de
elementos legales, entonces hay lugar para uno ms. Inserte el
nuevo elemento en el nodo, respetando el orden de los elementos.
3. De otra forma, el nodo debe ser dividido en dos nodos. La divisin
se realiza de la siguiente manera:

Se escoge el valor medio entre los elementos del nodo y el nuevo


elemento.
Los valores menores que el valor medio se colocan en el nuevo
nodo izquierdo, y los valores mayores que el valor medio se
colocan en el nuevo nodo derecho; el valor medio acta como valor
separador.
El valor separador se debe colocar en el nodo padre, lo que puede
provocar que el padre sea dividido en dos, y as sucesivamente.
Si las divisiones de nodos suben hasta la raz, se crea una nueva raz con un
nico elemento como valor separador, y dos hijos. Es por esto por lo que la cota
inferior del tamao de los nodos no se aplica a la raz. El mximo nmero de
elementos por nodo es U-1. As que debe ser posible dividir el nmero mximo
de elementos U-1 en dos nodos legales. Si este nmero fuera impar,
entonces U=2L, y cada uno de los nuevos nodos tendran (U-2)/2 = L-1
elementos, y por lo tanto seran nodos legales. Si U-1 fuera par, U=2L-1, as que
habra 2L-2 elementos en el nodo. La mitad de este nmero es L-1, que es el
nmero mnimo de elementos permitidos por nodo.
Un algoritmo mejorado admite una sola pasada por el rbol desde la raz, hasta
el nodo donde la insercin tenga lugar, dividiendo todos los nodos que estn
llenos encontrados a su paso. Esto evita el costo de volver a cargar en memoria
los nodos padres (lo que puede llegar a ser caro si los nodos se encuentran en
una memoria secundaria). Sin embargo, para usar este algoritmo mejorado,
debemos ser capaces de enviar un elemento al nodo padre y dividir el resto U-2
elementos en 2 nodos legales, sin aadir un nuevo elemento. Esto requiere
que U=2L en lugar de U=L-1, lo que explica por qu algunos libros de texto
imponen este requisito en la definicin de rboles-B.
Eliminacin
La eliminacin de un elemento es directa si no se requiere correccin para
garantizar sus propiedades. Hay dos estrategias populares para eliminar un nodo
de un rbol B.

localizar y eliminar el elemento, y luego corregir, o


hacer una nica pasada de arriba a abajo por el rbol, pero cada vez
que se visita un nodo, reestructurar el rbol para que cuando se
encuentre el elemento a ser borrado, pueda eliminarse sin necesidad
de continuar reestructurando
Se pueden dar dos problemas al eliminar elementos. Primero, el elemento puede
ser un separador de un nodo interno. Segundo, puede suceder que al borrar el
elemento nmero de elementos del nodo quede debajo de la cota mnima. Estos
problemas se tratan a continuacin en orden.
Eliminacin en un nodo hoja

Busque el valor a eliminar.


Si el valor se encuentra en un nodo hoja, se elimina directamente la
clave, posiblemente dejndolo con muy pocos elementos; por lo que
se requerirn cambios adicionales en el rbol.

eliminar clave 20 de un nodo interno.

Eliminacin en un nodo interno


(Recursivamente) del nuevo nodillo.
En el segundo caso, uno de los dos nodos hijos tienen un nmero de elementos
mayor que el mnimo. Entonces izquierdo o el menor elemento del nuevo
separador.

Como se ha eliminado un elemento de un nodo hoja, se tar este caso


de manera equivalente.

Rebalanceo despus de la eliminacin


Si al eliminar un elemento de un nodo hoja el nodo se ha quedado con menos
elementos que el mnimo permitido, algunos elementos se deben redistribuir. En
algunos casos el cambio lleva la deficiencia al nodo padre, y la redistribucin se
debe aplicar iterativamente hacia arriba del rbol, quiz incluso hasta a la raz.
Dado que la cota mnima en el nmero de elementos no se aplica a la raz, el
problema desaparece cuando llega a sta.

Formalmente se define un rbol-B de la siguiente manera:

1. Cada pgina, excepto la raz, contiene entre n y 2n elementos. Se


utilizar m para indicar el nmero de elementos por pgina.

2. Cada pgina, excepto la pgina raz y las pginas


hojas, tienen entre n+1 y 2n+1 descendientes.

3. La pgina raz tiene al menos dos descendientes.

4. Las pginas hojas estn todas al mismo nivel.

rbol B+
Un rbol B+ simple (una variacin del rbol B) que enlaza los elementos 1 al 7
a valores de datos d1-d7. Note la lista enlazada (en rojo) que permite el
recorrido de los elementos en orden.
En ciencias de la computacin, un rbol B+ es un tipo de estructura de
datos de rbol, representa una coleccin de datos ordenados de manera que
se permite una insercin y borrado eficientes de elementos. Es un ndice,
multinivel, dinmico, con un lmite mximo y mnimo en el nmero de claves por
nodo. Un rbol B+ es una variacin de un rbol B.
En un rbol B+, toda la informacin se guarda en las hojas. Los nodos internos
slo contienen claves ypunteros. Todas las hojas se encuentran en el mismo
nivel, que corresponde al ms bajo. Los nodos hoja se encuentran unidos entre
s como una lista enlazada para permitir principalmente recuperacin en rango
mediante bsqueda secuencial.
Caractersticas

Las estructuras de rbol B+ renen las siguientes caractersticas:

El nmero mximo de claves en un registro es llamado el orden del rbol


B+.
El mnimo nmero de claves por registro es la mitad del mximo nmero de
claves. Por ejemplo, si el orden de un rbol B+ es n, cada nodo
(exceptuando la raz) debe tener entre n/2 y n claves.
El nmero de claves que pueden ser indexadas usando un rbol B+ est en
funcin del orden del rbol y su altura.

Altura: El mejor y el peor caso


Dado un M, el cual corresponde al nmero mximo de hijos que un nodo puede
contener se define por:
La altura h de un rbol B+ (El peor caso):

La altura h de un rbol B+ (Mejor caso) :

Este caso se debe a que si guardamos menos hijos en los nodos, se


necesitarn ms niveles para almacenar todo.
Cantidades de Claves
Para un rbol B+ de orden n, con una altura h:

El nmero mximo de claves es:


El nmero mnimo de claves es:

Formalmente se define un rbol-B+ de la siguiente manera:


1. Cada pgina, excepto la raz , contiene entre n y 2n elementos.

2. Cada pgina, excepto la raz, tiene entre n+1 y 2n+1 descendientes. Se


utiliza m para expresar el nmero de elementos por pgina.

3. La pgina raz tiene al menos dos descendientes.

4. Las pginas hojas estn todas al mismo nivel.

5. Todas las claves se encuentran en las pginas hojas.

6. Las claves de las pginas raz e interiores se utilizan como ndices.

rbol R

Ejemplo simple de un rbol-R para rectngulos 2D.


Los rboles-R o R-rboles son estructuras de datos de tipo rbol similares a
los rboles-B, con la diferencia de que se utilizan para mtodos de acceso
espacial, es decir, para indexar informacin multidimensional; por ejemplo, las
coordenadas (x, y) de un lugar geogrfico. Un problema con aplicacin prctica
en el mundo real podra ser: "Encontrar todos los museos en un radio de dos
kilmetros alrededor de la posicin actual".
La estructura de datos divide el espacio de forma jerrquica en conjuntos,
posiblemente superpuestos.
Cada nodo de un rbol-R tiene un nmero variable de entradas (hasta un mximo
predefinido). Cada entrada de un nodo interno almacena dos datos: una forma
de identificar a un nodo hijo y el conjunto lmite de todas las entradas de ese
nodo hijo.
Los algoritmos de insercin y borrado utilizan los conjuntos lmite de los nodos
para asegurar que elementos cercanos estn localizados en la misma hoja (en
particular, un nuevo elemento ser insertado en la hoja que requiera el menor
aumento del conjunto lmite). Cada entrada de una hoja contiene dos datos: una
forma de identificar el elemento actual (que, alternativamente, podra estar
directamente en el nodo) y el conjunto lmite de ese elemento.
De forma similar, los algoritmos de bsqueda utilizan los conjuntos lmite para
decidir en qunodo buscar. De este modo, la mayora de los nodos del rbol
nunca son examinados durante una bsqueda. Esto hace que este tipo de
rboles (como los rboles-B) sean idneos para el trabajo con bases de datos.
Se pueden utilizar distintos algoritmos para dividir nodos cuando estos crecen
demasiado, resultando subtipos de rbol-R cuadrticos y lineales.
Los rboles-R no garantizan un buen rendimiento en el peor caso, pero en
general se comportan bien con datos del mundo real. Sin embargo,
recientemente, en2004, se public un nuevo algoritmo que define el rbol R-de
prioridad, que parece ser tan eficiente como los mtodos actuales ms eficientes
y, al mismo tiempo, ptimo para el peor caso.
rbol B*
Un rbol-B* es una estructura de datos de rbol, una variante de rbol-
B utilizado en los sistemas de ficheros HFS y Reiser4, que requiere que los
nodos no raz estn por lo menos a 2/3 de ocupacin en lugar de 1/2. Para
mantener esto los nodos, en lugar de generar inmediatamente un nodo cuando
se llenan, comparten sus claves con el nodo adyacente. Cuando ambos estn
llenos, entonces los dos nodos se transforman en tres. Tambin requiere que la
clave ms a la izquierda no sea usada nunca.
No se debe confundir un rbol-B* con un rbol-B+, en el que los nodos hoja del
rbol estn conectados entre s a travs de una lista enlazada, aumentando el
coste de insercin para mejorar la eficiencia en la bsqueda.
2.-Arboles digitales

Suponga que los elementos de un conjunto se pueden representar como una


secuencia de bits:

X = b0b1b2...bk

Adems, suponga que ninguna representacin de un elemento en particular


es prefijo de otra. Un rbol digital es un rbol binario en donde la posicin de
insercin de un elemento ya no depende de su valor, sino de su representacin
binaria. Los elementos en un rbol digital se almacenan slo en sus hojas, pero
no necesariamente todas las hojas contienen elementos (ver ejemplo ms
abajo). Esta estructura de datos tambin es conocida como trie.

El siguiente ejemplo muestra un rbol digital con 5 elementos.

Bsqueda en un rbol digital

Para buscar un elemento X en un rbol digital se procede de la siguiente manera:

Se examinan los bits bi del elemento X, partiendo desde b0 en adelante.


Si bi = 0 se avanza por la rama izquierda y se examina el siguiente bit, bi+1.
Si bi = 1 se avanza por la rama derecha y se examina el siguiente bit.
El proceso termina cuando se llega a una hoja, nico lugar posible en
donde puede estar insertado X.

Insercin en un rbol digital

Suponga que se desea insertar el elemento X en el rbol digital. Se realiza una


bsqueda infructuosa de X hasta llegar a una hoja, suponga que el ltimo bit
utilizado en la bsqueda fuebk. Si la hoja esta vaca, se almacena X en dicha
hoja. En caso contrario, se divide la hoja utilizando el siguiente bit del
elemento, bk+1, y se repite el procedimiento, si es necesario, hasta que quede
slo un elemento por hoja.

Con este proceso de insercin, la forma que obtiene el rbol digital es insensible
al orden de insercin de los elementos.

Eliminacin en un rbol digital

Suponga que el elemento a eliminar es X. Se elimina el elemento de la hoja, y


por lo tanto sta queda vaca. Si la hoja vaca es hermana de otra hoja no
vaca (i.e., una hoja con datos), entonces ambas se fusionan y se repite el
procedimiento mientras sea posible.
Costo promedio de bsqueda en un rbol digital

El costo promedio de bsqueda en un rbol digital es mejor que en un ABB, ya


que en un rbol digital la probabilidad que un elemento se encuentre en el
subrbol izquierdo o derecho es la misma, 1/2, dado que slo depende del valor
de un bit (0 o 1). En cambio, en un ABB dicha probabilidad es proporcional al
"peso" del subrbol respectivo.

Hn son los nmeros armnicos y P(n) es una funcin peridica de muy baja
amplitud (O(10-6))

3.-rbole B+ de Prefijos

La separacin de los ndices y conjunto de secuencias en los rboles-B+ es


intuitivamente atrayente. Tener en cuenta que parte de los ndices sirven
implemente como un mapa de caminos para guiar la bsqueda de la hoja
correcta; no necesita contener todas las claves actuales. Cuando las claves
consisten en una tira de caracteres hay buena razn para no usar las claves
actuales como separadores: las claves actuales requieren demasiado espacio.
Bayer y Unterauer consideran como alternativa el B+ rbol prefijo.

Supongamos que la secuencia alfabtica de claves, 'binary', 'computer',


'electronic', 'program' y 'system' estn asignadas o localizadas en un rbol-B
como el mostrado en la Figura 15. El separador valora o seala entre las claves
'computer', 'electronic', las cuales no necesitan estar ntegramente: basta con
alguna cadena de caracteres. Por ejemplo, algunos de estas tiras, 'elec', 'e' 'd'
serviran perfectamente. Ya que no se hace diferencia durante el proceso de
recuperar, el ms corto separador debera ser usado para as guardar espacio.
Como los requerimientos de espacio pueden llegar a ser muy pequeos, muchas
claves pueden estar situadas en cada nodo, aumentando as los elementos y
disminuyendo la altura del rbol. Ya que los rboles son ms cortos tiene un
coste menor la bsqueda, usando separadores cortos disminuir el tiempo de
acceso as como guardamos espacio.
La tcnica ms simple para elegir el nico prefijo ms corto de la clave para
servir como separador da resultado. En el ejemplo, el prefijo ms corto de
'electronic' es suficiente para distinguirlo de 'computer'. Algunas veces, sin
embargo, la tcnica del prefijo no funciona bien: eligiendo el prefijo ms corto de
'programers' para distinguirlo de 'programer' no resulta del todo correcto. En cada
uno de los casos, Bayer y Unterauer sugieren explora unas pequeas claves
cercanas para obtener una buena pareja para el algoritmo de separacin.
Mientras esto pueda dejar los nodos desigualmente cargados, teniendo no
mucha cantidad de claves extra en uno de los nodos, no afectar al coste global.

6.-Conclusiones

Ahora que comprendemos cmo reacciona el optimizador ante las tcnicas


descriptas, analicemos un escenario en el que se muestran claramente las
aplicaciones respectivas de los ndices de mapas de bits y de los de rbol B.
Habiendo creado un ndice de mapa de bits para la columna GENDER, creemos
otro del mismo tipo asociado a la columna SAL y, a continuacin, ejecutemos
algunas consultas. Las consultas volvern a ejecutarse con ndices de rbol B
asociados a esas columnas.

7.-Bibliografa

Wirth, N (1987) Algoritmos y Estructuras de Datos


Knuth, D (1973) The Art of Computer Programming[El arte de
la programacin de computadoras]
Pozo, S (2001) Arboles-B. Extrado de http://articulos.conclase.net/arboles-b
Marqus, M (2001) Arboles B y rboles B+. Extrado
de http://www3.uji.es/~mmarques/f47/apun/node27.html.
Luna, F (2001) Tutorial de los rboles B. Extrado
de http://usuarios.lycos.es/arbolesbpro/

Anda mungkin juga menyukai