ArvoresRedBlack

download ArvoresRedBlack

of 4

Transcript of ArvoresRedBlack

1. Introduo As rvores rubro-negras (Red-Black Trees), foram inventadas em 1972, 10 anos depois das rvores AVL, por Bayer sob o nome rvores Binrias Simtricas. Elas consistem em rvores binrias de busca, que se mantm balanceadas no decorrer de suas operaes, possuindo algoritmos de insero e remoo de complexidade logartmica, relativo ao nmero de ns. Contudo, as rvores rubro-negras so geralmente mais utilizadas do que as rvores binrias, por terem implementaes mais eficientes. Assim como as rvores binrias tradicionais, as rvores rubro-negras possuem um conjunto bsico de operaes (insero, remoo, pesquisa...). Nas rvores binrias, estas operaes possuem um tempo de execuo O(h) (h corresponde altura da rvore), mas que garante um bom funcionamento apenas para rvores de pequena altura. J as rvores rubro-negras, por estarem sempre balanceadas, conseguem garantir que o tempo de execuo das mesmas operaes seja O(log h) no pior caso, o que lhes garante um bom funcionamento para qualquer que seja a altura da rvore. Outra diferena das rvores rubro-negras em relao s rvores binrias tradicionais que estas apresentam um bit extra, que armazena a cor de cada nodo presente na rvore (vermelho ou preto). Alm deste, cada nodo ser composto ainda pelos seguintes campos: valor (os dados do nodo), fe (filho esquerdo, outro nodo), fd (filho direito, outro nodo) e pai (outro nodo). 2. Propriedades O balanceamento das rvores rubro-negras alcanado obedecendo-se a um conjunto de propriedades, as quais so: 1. cada nodo da rvore possui um valor; 2. o valor de um nodo maior do que o valor de seu filho da esquerda, e menor do que o valor de seu filho da direita; 3. cada nodo possui cor vermelha ou preta; 4. nodos vermelhos que no sejam folhas possuem somente filhos pretos; 5. todos os caminhos a partir da raiz da rvore at uma de suas folhas passa obrigatoriamente pelo mesmo nmero de nodos pretos; 6. o nodo raiz da rvore sempre preto.

Cada vez que uma operao for realizada na rvore, este conjunto de propriedades testado. Caso uma das propriedades no seja satisfeita, so realizadas rotaes e/ou ajustes de cores, de forma que a rvore se mantenha obediente s propriedades, e, desta forma, permanea balanceada. Em funo da propriedade nmero 5, definida a altura de uma rvore rubro-negra, que corresponde ao nmero de nodos pretos existentes desde cada uma das folhas at a raiz de uma rvore. 3. Rotao A rotao pode ser executada tanto para a direita quanto para a esquerda, tantas vezes quantas forem necessrias, a fim de manter o balanceamento da rvore. Cada rotao executada tem valor O(1).

As alteraes realizadas durante uma rotao so feitas apenas alterando-se os ponteiros dos nodos envolvidos, mantendo-se os demais valores dos mesmos.

Figura 2. Exemplo de rotao em rvore rubro-negra. Na figura 2, podemos ver o exemplo de uma rotao realizada para a direita. O nodo 4, que originalmente era o nodo raiz da rvore, cedeu seu posto ao nodo 2. O nodo 3 teve seu ponteiro alterado, passando a ser filho do nodo 4, j que no poderia continuar como filho do nodo 2 (se isto ocorresse, a rvore estaria desbalanceada). 4. Insero A operao de insero em uma rvore rubro-negra comea por uma busca da posio onde o novo nodo deve ser inserido, partindo-se da raiz em direo aos nodos que possuam o valor mais prximo do qual vai ser inserido. Aps localizado o nodo que ser seu antecessor, faz-se a insero do mesmo, sempre na cor vermelha. Se o nodo fosse inserido na cor preta, j invalidaria a propriedade nmero 5, pois haveria um nodo preto a mais em um dos caminhos. Caso esta insero seja feita em uma rvore vazia, basta alterar a cor do nodo para preto, satisfazendo assim a propriedade nmero 6. Caso contrrio, esta condio j estava sendo satisfeita. Aps, deve-se analisar o seu nodo antecessor, pois segundo a propriedade nmero 4, nodos vermelhos s podem ter filhos pretos. Se o seu antecessor for vermelho, ser necessrio alterar as cores de alguns nodos, para manter-se a propriedade nmero 5 vlida, garantindo assim o balanceamento da rvore. A seguir, ser apresentado como exemplo a insero de um nodo em uma rvore balanceada. Na figura 3 podemos ver o estado inicial da mesma.

Figura 3. Estado inicial da rvore. Na figura 4, um nodo de valor 7 foi inserido, com a cor vermelha, logo aps seu antecessor. Nota-se que a propriedade nmero 4 foi violada, pois seu antecessor tambm possui a cor vermelha.

Figura 4. Insero do nodo 7. Se somente fosse alterada a cor do nodo antecessor de vermelho para preto, a propriedade nmero 5 seria desobedecida. Ento, se faz necessria uma rotao sobre os nodos 5, 6 e 7, e posteriormente a alterao das cores dos nodos 5 e 6, conforme pode ser visto nas figuras 5 e 6. Desta forma, mantm-se o balanceamento da rvore.

5. Remoo A remoo nas rvores rubro-negras composta, assim como a insero, de uma etapa de busca, seguida de uma etapa de balanceamento da rvore (caso as propriedades rubro-negras tenham sido destrudas durante a operao). Em alguns casos de remoo, se o nodo removido possuir dois filhos, haver uma troca de valores entre um dos filhos e o nodo a ser removido, possibilitando que este seja removido sem alterar as propriedades da rvore. Caso a remoo a ser feita seja de um nodo vermelho, esta realizada sem problemas, pois todas as propriedades da rvore se mantero intactas. Caso contrrio, se o nodo a ser removido for preto, a quantidade de nodos pretos em pelo menos um dos caminhos da rvore foi alterado, o que implica em que algumas operaes de rotao e/ou alterao de cor sejam feitas para manter o balanceamento da mesma. 5.1. Remoo Efetiva Aps as operaes de rotao/alterao de cor necessrias, a remoo do nodo efetivamente realizada, restabelecendo-se as propriedades da rvore. 5.2. Remoo Preguiosa Consiste em apenas marcar um determinado nodo como removido, sem efetivamente retirlo da rvore. Desta forma, nenhuma alterao na rvore se faz necessria. Em contrapartida, so necessrias alteraes nos mecanismos de busca e insero sobre a rvore, para que estes estejam cientes da existncia de nodos na rvore que devam ser considerados ausentes. A prtica deste tipo de remoo til quando utilizadas em aplicaes com um nmero reduzido de remoes. Referncias http://descartes.ucpel.tche.br/modules.php?name=Downloads&d_op=getit&lid=2 http://en.wikipedia.org/wiki/Red-black_tree Demonstraes http://www.ececs.uc.edu/~franco/C321/html/RedBlack/redblack.html http://www.ibr.cs.tu-bs.de/lehre/ss98/audii/applets/BST/RedBlackTree-Example.html http://geocities.com/dmh2000/articles/code/red-blacktree.html Anexo Cdigo em C. http://www.csua.berkeley.edu/~emin/source_code/red_black_tree/