Anda di halaman 1dari 9

rvores: rvore B+ e rvore Rubro-negra

Luiz Takeshi Murakami Ynoue, Marcela Mayumi Hitaka Nishida Graduando em Cincia da Computao, Faculdade Cincia e Tecnologia FCT-UNESP Presidente Prudente SP Brasil
ltm.ynoue@gmail.com, marcelanishida@gmail.com

Resumo. Este artigo apresenta rvore B+ e rvore rubro-negra. rvore rubro-negra uma rvore binria de busca, com determinadas propriedades adicionais e um bit extra por n. rvore B+ semelhante rvore B, diferindo-se apenas que h um campo a mais na estrutura, tal campo um ponteiro para auto-referencia do prximo, que estabelece o encadeamento nos ns folhas.

1. Introduo
No ramo da cincia da computao, as rvores so estrutura de dados, utilizadas para armazenar informaes, onde seus dados esto dispostos de forma hierrquica, constituda por um elemento principal chamado raiz, que possui ligaes com outros elementos, mais conhecidos como filhos ou ns. Essas estruturas oferecem uma eficincia na insero, remoo e busca dos dados. H diversos tipos de rvores: rvore binria de busca, rvore AVL, rvore B. Dentre elas, rvore rubro-negra e rvore B+, que sero analisadas. rvore rubro-negra, rvore vermelho e preto ou do ingls Red-Black Tree, um tipo de rvore de busca binria balanceada, uma estrutura de dados. A estrutura original dessa rvore, foi chamada de "rvores Binrias B Simtricas", inventada em 1972, dez anos depois da rvore AVL, por Rudolf Bayer, posteriomente esta rvore foi estudada profundamente, por Leonidas J. Guibas e Robert Sedgewick, que introduziram a convero de cores: vermelho ou preto, rubro ou negra. Sendo realmente conhecido esta estrutura com o nome atual em 1978, na publicao de artigo escrito por Guibas e Sedgewick. O nome rvore rubro-negra se deve a colorao de cada n, cada n rubro ou negra, ou tambm o n vermelho ou preto, da rvore vermelho preto. Esta rvore pussui um balanceamento, que consiste no nmero de ns negras do n at uma folha, chamada de altura negra. Obtendo desta forma um bom desempenho, que num pior caso, as operaes dinmicas podem demorar O(log n), onde n o nmero de ns. A implementao desta rvore conta com algoritmos de insero e remoo de complexidade logaritmica, relativo ao nmero de ns. Na pesquisa usa o algoritmo anlogo ao da rvore AVL. A rvore B+, diferentemente das rvores binrias, possui algumas caractersticas que a torna mais complexa. Sua origem foi em 1972, pelos autores Rudolf Bayer e Edward McCreight, desenvolvido no Boing Scientific Research Labs.

uma estrutura balanceada, com os dados organizados e projetadas para trabalhar e aperfeioar o armazenamento secundrio. Possui algumas caractersticas semelhantes a da rvore B, porm com algumas diferenas. Todos os dados armazenados na rvore B+ esto localizados no ltimo nvel, constitudos pelos ns folhas, pois os ns internos constituem um ndice cuja organizao forma a rvore B+. Algumas chaves (ou ndices) so repetidas em ns nofolhas para definir caminhos para localizar os registros individuais. O encadeamento utilizado na rvore B+ pode ser chamado de Conjunto de Sequncia (Sequence Set). importante esta separao lgica da rvore B+ em Conjunto de Sequncia, pois podemos fazer a maioria das incluses e excluses no conjunto sem alterar o ndice.

2. rvore Rubro-negra
rvore rubro-negra uma rvore de busca binria (ABB), com determinadas propriedades adicionais, e um bit a mais de armazenamento no n. Tal bit extra registra sua cor: VERMELHO ou PRETO, RUBRO ou NEGRA. A restrio na colorao de cada n importante, pois desta forma que assegurado na rvore rubro-negra que nenhum caminho, seja ele dum n qualquer ou da raiz, at uma folha, que haja um comprimento maior que duas vezes qualquer outro caminho. O que torna esta rvore aproximadamente balanceada. Cada n da rvore rubro-negra (ARN), contm os campos: chave, pai, filho esquerdo, filho direito e a cor. O pai no caso da raiz NULL.
typedef struct arn ARN; struct arn { int Chave; // tipo de dado a armazenar ARN* Esq; // aponta para subrvore esquerda ARN* Dir; // aponta para subrvore direita ARN* Pai; // aponta para o pai. No caso da raiz NULL bool cor; // define a cor, true vermelho, false preto }; ARN *T,*Raiz; // Raizes

2.1.

Propriedades de uma rvore rubro-negra:


1. Todo n vermelho ou preto, rubro ou negra. 2. A raiz preta. 3. Toda folha (NULL) preta. 4. Se um n vermelho, ento ambos os seus filhos so pretos. 5. Para cada n, todos os caminhos desde um n at as folhas descendentes contm o mesmo nmero de ns pretos. (Livro: Algoritmos: teoria e pratica, Cormen, Thomas H. , Leiserson, Charles E., Rivest, Ronald L.)

26

17

41

14 10 7
NULL

21 16
NULL

30 23
NULL NULL NULL

47
NULL NULL

19
NULL

28
NULL

38

12

15
NULL NULL

20
NULL NULL

35
NULL NULL

39
NULL

3
NULL NULL

NULL NULL

Figura 1: rvore rubro-negra, com ns vermelhos representando os ns rubro, e ns pretos os negras.

Toda folha numa rvore rubro-negra nula, isto , as folhas so ns fictcios que representam NULL, NIL ou vazio. Portanto quando um n no possui filho esquerdo ou direito ou no caso da raiz que no possui pai, os devidos ponteiros apontariam para NULL, uma folha, um n fictcio, para denotar a cor preta. Que por economia de memria, utiliza-se uma nica sentinela NULL_T, para representar todas as folhas. Os ns folhas no armazenam chave. Apenas ns internos e raiz contm valores de chaves.

2.2.

Altura de preto

Altura de preto o nmero de ns pretos em qualquer caminho desde um n qualquer, sem incluir este n, at uma folha, denotado por bh(n qualquer). Sendo a altura de uma rvore rubro-negra bh(Raiz). Seja n o nmero de ns internos ou chaves de T, uma rvore rubro-negra, tem altura no mximo 2log(n + 1). (Livro: Algoritmos: teoria e pratica, Cormen, Thomas H. , Leiserson, Charles E., Rivest, Ronald L.). Numa insero ou remoo em uma rvore rubro-negra, pode ocorrer a violao das propriedades, necessitando re-colorir e ou rotacionar a rvore para manter balanceada.

2.3.

Rotao

H dois tipos de rotao: rotao direita e rotao esquerda. Ambas, resumem-se a mudana de ponteiros da rvore, diferenciando-se apenas no fluxo, do sentido que os ponteiros apontam.

2.4.

Insero

A insero gasta O(log n) de tempo, sendo n o nmero de ns. A mesma de uma rvore binria de busca. Toda chave inserida num n. Tal n definido como vermelho e a insero do n ocorre semelhante a uma rvore binria de busca, ou seja, respeitando a ordem maior a direita e menores a esquerda, lembre-se que neste caso tem o pai para atualizar, necessariamente a nica diferena. Depois chamada uma funo para re estruturar a rvore, que deve re colorir ou e rotacionar a rvore se for o caso. H trs casos na insero, segundo Siang Wun Song - Universidade de So Paulo - IME/USP e Breno Piva Ribeiro IC/UNICAMP: Caso 1: O tio do elemento inserido vermelho. Altera cor do pai, tio e av. Caso 2: O tio do elemento inserido preto e o elemento inserido um filho da direita. Altera cor do pai e av e realiza rotaes. Caso 3: O tio do elemento inserido preto e o elemento e inserido um filho da esquerda. Altera cor do pai e av e realiza rotaes.

2.5.

Remoo

Remoo tambm consome o tempo O(log n), n ns. Sendo o mais complicado, possui quatro casos. Havendo tambm a necessidade de realizar rotao e ou re-colorao. Seja z, w, y e x ns de rvore rubro-negra; z o n a ser removido; y = x, se z possui um ou nenhum filho, ou y = sucessor z, se z possui dois filho; x filho de y antes remoo de z, ou NULL se caso y no possui filho; w tio de x antes da remoo de z. Caso 1: w vermelho. Inverte as cores do pai e de w. Caso 2: w preto, seus dois filhos so pretos. Remove o preto x, faz w vermelho, adiciona preto ao pai, e faz novo pai x. Caso 3: w preto, seu filho da esquerda vermelho e o filho da direita preto. Inverte as cores de w e do seu filho da esquerda e realiza rotao. Caso 4: w preto e seu filho da direita vermelho. Atribui a cor do pai a w, faz pai preto, faz filho da direita de w preto e realiza rotao. (Breno Piva Ribeiro IC/UNICAMP).

3.

rvore B+

Numa rvore B+ a separao lgica entre o ndice e os registros constituem o arquivo proprieamente dito. No ndice s aparecem as chaves, sem nenhuma informao associada, enquanto nas pginas folhas esto todos os registros do arquivo. As pginas folhas so conectadas da esquerda para a direita, o que permite um acesso sequencial mais eficiente do que o acesso via ndice.

3.1.

Propriedades de uma rvore B+

Todas as folhas ficam no mesmo nvel, o mais baixo. Para acessar qualquer registro necessrio o mesmo nmero de acesso. Nmero mximo de ponteiros num n raiz chamado de ordem da rvore B+. O nmero mnimo de chaves por registro metade do nmero mximo de chaves. Ou seja, se a rvore possui ordem k+1, cada n (exceto a raiz) ter de ter entre (k+1)/2 e k chaves. Se k for um nmero primo, ento o nmero mnimo de chaves pode ser (k+1)/2 ou (k-1)/2, porm essa regra deve permanecer em toda a rvore. O nmero de chaves que poder ser indexado ao usar a rvore B+ uma funo da ordem da rvore e da sua altura.

3.2.

Altura da rvore B+

Para uma rvore B+ de ordem n com uma altura h: O nmero mximo de ns nh O nmero mnimo de chaves 2(n / 2)h 1. (Mamede, Margarida, 2003)

Figura 2: rvore B+

3.3.

Insero

A principal diferena entre uma rvore B e a rvore B+ est na insero em um n folha e no que acontece quando ocorre overflow. A insero numa rvore B+ ocorre praticamente da mesma maneira que em uma rvore B, exceto pelo fato de que quando um n dividido, a chave do meio retida no meio n esquerdo, alm de uma cpia ser promovida a pai no nvel anterior. Numa insero da rvore B a chave do meio deveria ser promovida a pai. Algoritmo de insero em uma rvore B+: 1. Navegar nos ns no-folha da rvore B+ com um ndice a fim de localizar o n folha apropriado para inserir um novo registro. 1.1. SE , seguir a direita

2. 3.

1.2. SE > e existe outro registro direita, repetir a comparao anterior (de ). 1.3. SENO seguir a ramificao da direita. SE existir espao disponvel ENTO 2.1. Inserir o registro (de forma ordenada). SENO 3.1. Dividir o n folha onde ocorreu overflow. 3.1.1. Subir a chave do registro do meio para a estrutura de ndice. O registro do meio escolhido entre os registros do n que sofreu overflow e o registro sendo inserido, considerando-os de forma ordenada. 3.1.2. Dividir os registros do n que sofreu overflow, incluindo o registro sendo inserido, entre dois ns tal que todos os registros com chave menores do que a chave do registro sendo inserido e o registro sendo inserido sejam armazenados no n da esquerda. Os demais so armazenados no n da direita. 3.2. Processar a chave que foi recentemente elevada para a estrutura de ndice como uma insero em uma rvore B. (Azevedo, Leonardo Guerreiro, UFRJ).

3.4.

Remoo

A remoo em uma rvore B+ bem mais simples do que em uma rvore B, pois os registros a serem removidos residem sempre em uma pgina ou n folha. No h necessidade de utilizao do procedimento para localizar a chave antecessora. Desde que o n folha fique pelo menos com a metade dos registros, os ns ndices no precisam ser modificados, mesmo se uma cpia da chave que pertence ao registro a ser retirado esteja no ndice. A seguir, alguns casos de remoo de uma chave X: Caso 1: A chave X aparece apenas em um n folha. A chave X simplesmente removida e a folha reorganizada;

Figura 3: Remover chave 80 (antes)

Figura 4: Remover chave 80 (depois)

Caso 2: A chave X aparece tambm em ns internos (ndice) A chave X removida; A folha reorganizada; A chave X no removida dos ns internos.

Figura 5: Remover chave 85 (antes)

Figura 6: Remover chave 85 (antes)

Caso 3: Quando uma chave retirada de um n folha, o nmero de chaves restantes pode ser menor que (t-1)/2, onde t a ordem da rvore. Tratamentos: Concatenao e Redistribuio. Remoo com Concatenao o Dois ns P e Q so chamadas irmos adjacentes se tm o mesmo pai W e so apontadas por ponteiros adjacentes em W. o P e Q podem ser concatenados se so irmos adjacentes e juntos possuem menos de t-1 chaves. o A concatenao agrupa as entradas de dois ns em um s. o No n pai deixa de existir uma entrada: aquela da chave que se encontra entre os ponteiros para P e Q. o Essa chave simplesmente removida do n pai. Remoo com Redistribuio o Se o n P e seu irmo adjacente Q possuem em conjunto t-1 ou mais chaves, estas podem ser equilibradamente distribudas: Concatena-se P e Q; Efetua-se a ciso do n resultante.

Figura 7: Remover chave 80 (redistribuio)

3.5.

Busca
Semelhante pesquisa em rvore B; A pesquisa sempre leva a uma pgina folha; A pesquisa no pra se a chave procurada for encontrada em uma pgina ndice, neste caso o apontador direita seguido at que uma pgina folha seja encontrada. Exemplo: Procurar a chave 60. (Bueno, 2004)

Figura 8: Busca da chave 60 em uma rvore B+

4.

Aplicao e anlise

rvore rubro-negra foi projetada, para desempenhar tarefas eficientes para insero, remoo e busca. Foi projetada para busca de dados armazenados em memria primaria, RAM. utilizada em vetores associados, em parte do kernel, entre outros. Vetores associados uma estrutura de dados composta de um conjunto no-ordenado de itens formados por um par, chave e valor, no qual cada chave possui um valor associado. As chaves so definidas pelo usuario, para serem armazenados na estrutura. Esta estrutura possui operao de busca frequente. Sua aplicao por exemplo, lista telefonica, dicionario em python, entre outras. Uma rvore rubro-negra desempenha operaes, que gastam O(log n), n nmero de ns, no pior caso, mesmo com a recolorao e rotao, porque estas duas ltimas operaes no gastam mais do que O(log n). Tendo um desempenho praticamente prximo de outras baseadas em rvore binria de busca, como a AVL. Comparando rvore AVL com rvore rubro-negra, vm que ambas so consideradas balanceadas, apenas o que diferem na forma de balancear a altura. Na rvore AVL a altura quantidade de ns de um n at uma folha menos um, j na rvore rubro-negra a quantidade de ns negras do n, sem contar com este, at a folha. Mas ambas so eficientes. A aplicao da rvore B+ se resume a projetos que utilizam banco de dados e sistemas de arquivos em sistemas operacionais. O acesso simultneo aos bancos de dados por mais de um usurio um fator importante, sendo assim utilizadas as rvores B+ para permitir o processamento simultneo de vrias solicitaes diferentes. Sistemas que utilizam rvore B+: sistemas de ficheiros NTFS para o Microsoft Windows, o sistema de ficheiros ReisesFS para Unix, o XFS para IRIX e Linux e o JFS2 para AIX, OS/2 e Linux. Banco de dados: SQLServer e Oracle. (Bueno, 2004) Uma das vantagens da rvore B+ que em um n de uma rvore B+ cabe mais registro do que o de uma arvore B, conseqentemente sua altura menor que a da rvore B, o que significa que menos operaes de E/S so necessrias durante a busca, pois no necessrio subir e descer na rvore para acessar seqencialmente os registros. Tanto o acesso direto como o acesso seqencial so melhores que na rvore B. A insero tambm se parece muito com a da rvore B, diferindo-se nos casos em que ocorre o overflow. J a remoo considerada bem mais simples, pois basta

apagar o dado no ltimo nvel, onde ficam armazenados. O ndice no necessita ser modificado at que seja feito uma reorganizao dos dados. Para finalizar a busca, tambm muito simples ocorre da mesma maneira que a rvore B, porm se a chave procurada for encontrada em um ndice a busca no pra at que a mesma seja encontrada nos ns folhas. (Livro: Projetos de Algoritmos com implementaes em Pascal e C, Ziviani, Nivio).

Referncia
Cormen, Thomas H. , Leiserson, Charles E., Rivest, Ronald L., Stein, Clifford, Algoritmos: teoria e pratica, 2ed, Rio de Janeiro: Elsevier, 2002. Ziviani, Nivio (2004) "Projeto de Algoritmos: Com implementaes em Pascal e C"

Wikipedia, rvore B+, disponvel em: <http://pt.wikipedia.org/wiki/%C3%81rvore_B%2B> Acesso em: 19 out 2010. Bueno, Marcio, rvore B+, disponvel em: <http://marciobueno.com/arquivos/ensino/ed2/ED2_04_Arvore_B+.pdf>, Pernambuco, Brasil. Acesso em: 25 out 2010. Song, Siang Wun, rvore Rubro Negra, So Paulo, Brasil, disponvel em: <http://www.ime.usp.br/~song/mac5710/slides/08rb.pdf> Acesso em: 23 out 2010 Ribeiro, Breno Piva, Unicamp, Campinas, So Paulo, Brasil. Disponvel em: <http://www.ic.unicamp.br/~zanoni/mo637/aulas/arvoresRubroNegras.pdf > Acesso em: 23 out 2010

Anda mungkin juga menyukai