Você está na página 1de 45

rvores

Red-Black
Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br

2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Red-Black uma rvore Binria de Busca com um bit extra de armazenamento por nodo que indica sua cor: preta ou vermelha

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
A idia restringir a forma como os nodos podem ser coloridos em qualquer caminho da raiz at as folhas de tal forma que nenhum caminho possa ser mais que duas vezes mais longo que outro caminho, deste modo a rvore ca aproximadamente balanceada

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

Ns na rvore Red-Black
De forma geral um n de uma rvore Red- Black tem os campos:
Cor Dados Pai Esquerdo Direito

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Binria de Busca uma rvore Red-Black se ela sa-sfaz as seguintes propriedades:
1. Todo nodo Preto ou Vermelho

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Binria de Busca uma rvore Red-Black se ela sa-sfaz as seguintes propriedades:
1. Todo nodo Preto ou Vermelho 2. A raiz PRETA

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Binria de Busca uma rvore Red-Black se ela sa-sfaz as seguintes propriedades:
1. Todo nodo Preto ou Vermelho 2. A raiz PRETA 3. Todo lho de uma folha (Null) PRETO

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Binria de Busca uma rvore Red-Black se ela sa-sfaz as seguintes propriedades:
1. 2. 3. 4. Todo nodo Preto ou Vermelho A raiz PRETA Todo lho de uma folha (Null) PRETO Se um n Vermelho, ento ambos os lhos do PRETOS

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black
Uma rvore Binria de Busca uma rvore Red-Black se ela sa-sfaz as seguintes propriedades:
1. 2. 3. 4. Todo nodo Preto ou Vermelho A raiz PRETA Todo lho de uma folha (Null) PRETO Se um n Vermelho, ento ambos os lhos do PRETOS 5. Para cada n, todos os caminhos do n para folhas descendentes contm o mesmo nmero de ns PRETOS
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

rvore Red-Black

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

10

Altura de Preto
Dada uma rvore red-black:
possvel denir a altura preto de um n x, denotada por bh(x), como:
Nmero de ns pretos em qualquer caminho desde um nodo x, sem incluir esse nodo, at uma folha.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

11

Boas rvores de Busca


Lema 13.1:
Uma rvore red-black com n ns internos tem altura mxima de 2lg(n+1).

Prova?

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

12

Boas rvores de Busca: Prova do Lema 13.1


Prova:
Primeiro mostramos que a sub-rvore com raiz em qualquer n x contm pelo menos 2bh(x)-1 ns internos. (Por induo em bh(x))

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

13

Boas rvores de Busca: Prova do Lema 13.1


Prova:
Primeiro mostramos que a sub-rvore com raiz em qualquer n x contm pelo menos 2bh(x)-1 ns internos. (Por induo em bh(x)) Caso Base (bh(x) = 0): 2bh(x)-1 = 20-1 = 0 ns internos, ou seja, bh(x) = 0 engloba o caso em que x uma folha.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

14

Boas rvores de Busca: Prova do Lema 13.1


Prova:
Primeiro mostramos que a sub-rvore com raiz em qualquer n x contm pelo menos 2bh(x)-1 ns internos. (Por induo em bh(x)) Caso Base (bh(x) = 0): 2bh(x)-1 = 20-1 = 0 ns internos, ou seja, bh(x) = 0 engloba o caso em que x uma folha. H.I.: A sub-rvore que tem como raiz o n com altura- preta bh(x)-1 possui 2bh(x)1-1 ns internos.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

15

Boas rvores de Busca: Prova do Lema 13.1


Prova:
Primeiro mostramos que a sub-rvore com raiz em qualquer n x contm pelo menos 2bh(x)-1 ns internos. (Por induo em bh(x)) Caso Base (bh(x) = 0): 2bh(x)-1 = 20-1 = 0 ns internos, ou seja, bh(x) = 0 engloba o caso em que x uma folha. H.I.: A sub-rvore que tem como raiz o n com altura- preta bh(x)-1 possui 2bh(x)1-1 ns internos. P.I.: Os lhos de um n x com altura-preta bh(x) possuem altura-preta bh(x) se for vermelho ou bh(x)-1 se for preto, logo, a sub-rvore que tem x como raiz possui pelo menos (2bh(x)1-1) + (2bh(x)1-1) + 1 = 2bh(x)-1 ns internos.
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

16

rvore Red-Black
As operaes de Inserir e Remover so mais complicadas nas rvores Red-Black porque elas podem ferir alguma propriedade deste -po de rvore Neste caso u-lizamos operaes de rotao para corrigir a distribuio dos ns e suas cores, reestabelecendo as propriedades

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

17

rvore Red-Black
As operaes de Inserir e Remover so mais complicadas nas rvores Red-Black porque elas podem ferir alguma propriedade deste -po de rvore Neste caso u-lizamos operaes de rotao para corrigir a distribuio dos ns e suas cores, reestabelecendo as propriedades Essas operaes podem ser implementadas de forma bastante parecida com as rvores Binrias de Busca, bastando apenas modicar as cores dos ns para que as propriedades sejam sa-sfeitas
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

18

Rotao a Esquerda
Ao realizarmos uma rotao esquerda, em torno do n x, suposto que y no nulo. A rotao esquerda faz o piv na ligao entre x e y.
Y vira a nova raiz da rvore X vira o lho esquerdo de Y O lho esquerdo de Y vira lho direito de X

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

19

Insero em uma rvore Red-Black


Para inserir um elemento em uma rvore red- black:
Inicialmente, um nodo Z inserido como se a rvore fosse uma rvore de busca binria comum. Colori-se Z de vermelho. Invoca-se uma funo RB-INSERT-FIXUP para recolorir e executar rotaes na rvore.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

20

RB-INSERT(T, z)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

21

RB-INSERT-FIXUP(T, z)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

22

O Tio do elemento inserido VERMELHO


Um n z depois da insero Se z e seu pai so vermelhos, violamos a propriedade 4 Como o -o y de z vermelho, aplicamos o caso 1 no cdigo e re- colorimos os ns

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

23

O Qo do elemento inserido PRETO e o elemento inserido um lho da direita


De novo, z e seu pai so vermelhos, ma so -o de z preto Como z lho da direita de p[z], aplicamos o caso 2. Uma rotao a esquerda executada e remodelamos a rvore

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

24

O Qo do elemento inserido PRETO e o elemento inserido um lho da esquerda


Agora z o lho da esquerda de seu pai, e o caso 3 pode ser aplicado. Uma rotao a direita produz uma nova rvore

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

25

rvore vlida
rvore red-black vlida

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

26

Como funciona o RB-INSERT-FIXUP


Passos:
Determinar as violaes das regras da rvore red- black com a insero e colorao do novo n z Examinar a meta global do loop while, linhas 1 a 15 Examinar os trs casos que o loop while se divide

Quais das propriedades da rvore red-black podem ser violadas?


As propriedade 2 e 4!
A raiz deve ser preta. Um n vermelho no pode ter lho vermelho.
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

27

O Loop While
No incio, o loop while tem trs invariantes:
O n z vermelho Se P[z] a raiz, ento P[z] preto. Se exis-r alguma violao das propriedades red- black, exis-r apenas uma nica violao:
Se z a raiz e vermelha (propriedade 2) Se o pai de z vermelho e z vermelho (propriedade 4)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

28

Loop Invariante
Inicializao:
Comea-se com uma rvore red-black sem violaes e comeamos com a insero de z.
Quando RB-INSERT-FIXUP chamado z o n vermelho que foi adcionado Se P[z] a raiz, ete comeou preto e no modicado Se houver violaes, so da propriedade 2 ou da propriedade 4 (exclusivamente).

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

29

Loop Invariante
Trmino:
Quando o loop termina, P[z] preto (propriedade 4) A propriedade 2 garan-da na linha 16.

Manuteno:
S entra-se no loop se P[z] for vermelho, caso contrrio, P[z] preto.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

30

Inserir e Remover
Dada uma rvore binria, possvel inserir e/ ou remover ns da rvore.
Porm, as propriedades da rvore devem ser man-das!

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

31

Analisando: Caso 1
Z e P[z] so vermelhos

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

32

Anlise: Casos 2 e 3
Caso 2: o -o y de z preto e z lho da direita Caso 3: o -o y de z preto e z lho da esquerda

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

33

Remoo em rvores Red-Black


Como em uma rvore binria, a remoo de um elemento de uma rvore red-black tem custo em tempo de O(lg n) Para Remover um elemento, o processo bem semelhante a de uma rvore binria:

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

34

Removendo
Observe que:
A funo RB-DELETE-FIXUP s invocada caso Z (o n deletado) seja preto. Caso o n deletado seja vermelho as propriedades red-black cam inalteradas, visto que:
Nenhuma altura preta foi alterada Nenhum n vermelho cou adjacente Se Z vermelho, ento Z no raiz: Assim a Raiz conQnua preta.

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

35

Removendo um elemento
Se o n y deletado preto, podem ocorrer trs problemas:
Se y era a raiz e um lho vermelho de y se torna a raiz (viola propriedade 2) Se x e P[y] (que agora tb P[x]) eram vermelhos (viola propriedade 4) A remoo de y faz com que o caminho que con-nha y tenha agora um n preto a menos (viola a propriedade 5)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

36

RB-DELETE-FIXUP(T, x)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

37

Caso de RB-DELETE-FIXUP(T,x)

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

38

Caso de RB-DELETE-FIXUP(T,x)
Caso1:
O irmo w de x vermelho

Caso2:
O irmo w de x preto e ambos os lhos de w so pretos

Caso3:
O irmo w de x preto e o lho da esquerda de w vermelho e o da direita preto

Caso4
O irmo w de x preto e o lho da direita de w vermelho
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

39

Resumindo
rvores Red-Black:
rvores Binrias de Busca com bit adicional para representar a cor (PRETA ou VERMELHA) Cinco propriedades bsicas:
Todo n colorido PRETO ou VERMELHO. A raiz PRETA. As folhas (NULL) so PRETAS. Se um n VERMELHO, seus lhos so PRETOS. Para cada n, todos os caminhos at as folhas descendentes contm o mesmo nmero de ns.
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

40

Resumindo
rvores Red-Black:
Lema: Uma rvore Red-Black com n ns internos tem altura o mximo 2lg(n+1) Possui todas as operaes que uma rvore binria balanceada comum possui

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

41

Resumindo
rvores Red-Black:
Inserir: trs casos a considerar
O -o VERMELHO: inverte cores do av, pai e -o O -o PRETO e lho da direita: faz rotao para a esquerda O -o PRETO e lho esquerda: inverte cores do av e do pai e faz rotao para a direita

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

42

Resumindo
rvores Red-Black:
Remover: quatro casos a considerar
W VERMELHO: inverte cores do pai e de w. w PRETO e ambos os lhos de w sao pretos: remove um PRETO de x, faz w VERMELHO e adiciona PRETO ao pai. Faz pai novo x. w PRETO, o lho da esquerda VERMELHO e o da direita PRETO: inverte cores de w e do seu lho da esquerda e faz uma rotao para a direita. w PRETO e o lho da direita VERMELHO: atribui a cor do pai a w, faz pai PRETO, faz lho da direta de w PRETO e faz uma rotao para a esquerda.

Complexidade das operaes: O(lgn).


Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

43

AQvidades Complementares
Leitura do captulo 13 do Livro do Cormen Exerccio 1
Implementar uma classe do n red-black. Implementar tambm uma classe de uma rvore red-black com a funo de insero de um elemento.

Exerccio 2
Implementar a funcionalidade de deletar um n em uma rvore red-black.
Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

44

Referncias na Web
hp://gauss.ececs.uc.edu/RedBlack/redblack.html hp://ww3.algorithmdesign.net/handouts/ RedBlackTrees.pdf hp://www.cs.buap.mx/~-tab/les/ RedBlackTrees.pdf hp://www.cs.dal.ca/~nzeh/Teaching/Fall %202003/3110/RedBlackTrees.pdf hp://en.wikipedia.org/wiki/Red-black_tree

Algoritmos e Estrutura de Dados rvores Red-Black 2011 Vinicius Cardoso Garcia

45

Você também pode gostar