Escolar Documentos
Profissional Documentos
Cultura Documentos
Arvores Rubro Negras
Arvores Rubro Negras
11 de setembro de 2007
Sumario
Arvores Binarias que possuem a seguinte propriedade: um no da subarvore Se y e esquerda de x, entao Chave[y ] Chave[x ]. um no da subarvore Se y e direita de x, entao Chave[x ] Chave[y ].
sobre Arvores Operac oes Binarias de Busca: Busca, M nimo, Maximo, Predecessor, Sucessor, Inserir, Remover
Inserir
6 5
Inserir
6 5
Inserir
6 5
Inserir
Remover
ligeiramente mais complicado, Remover um elemento e casos a considerar: pois existem tres
Remover
ligeiramente mais complicado, Remover um elemento e casos a considerar: pois existem tres uma folha. Caso 1: O elemento a ser removido e
Remover
ligeiramente mais complicado, Remover um elemento e casos a considerar: pois existem tres uma folha. Caso 1: O elemento a ser removido e Caso 2: O elemento a ser removido possui um unico lho.
Remover
ligeiramente mais complicado, Remover um elemento e casos a considerar: pois existem tres uma folha. Caso 1: O elemento a ser removido e Caso 2: O elemento a ser removido possui um unico lho. Caso 3: O elemento a ser removido possui dois lhos.
15
18
12
16
20
10
13
15
18
12
16
20
10
13
15 6
18
12
16
20
10
13
15
18
12
16
20
10
13
Analise
percorrem um unico Todas operac oes caminho da raiz ate e da uma folha, logo, a complexidade dessas operac oes a altura da arvore. ordem O(h), onde h e
Sumario
Arvores Rubro-Negras
uma Arvore Uma Arvore Rubro-Negra e Binaria de Busca que indica sua com um bit extra de armazenamento por no cor, PRETA ou VERMELHA.
Arvores Rubro-Negras
uma Arvore Uma Arvore Rubro-Negra e Binaria de Busca que indica sua com um bit extra de armazenamento por no cor, PRETA ou VERMELHA. e restringir a forma como os nos podem ser A ideia as folhas de tal coloridos em qualquer caminho da raiz ate forma que nenhum caminho possa ser mais que duas vezes mais longo que outro caminho, deste modo a arvore ca aproximadamente balanceada.
Arvores Rubro-Negras
uma Arvore Uma Arvore Binaria de Busca e Rubro-Negra se ela satisfaz as seguintes propriedades: e VERMELHO ou PRETO 1: Todo no
Arvores Rubro-Negras
uma Arvore Uma Arvore Binaria de Busca e Rubro-Negra se ela satisfaz as seguintes propriedades: e VERMELHO ou PRETO 1: Todo no PRETA 2: A raiz e
Arvores Rubro-Negras
uma Arvore Uma Arvore Binaria de Busca e Rubro-Negra se ela satisfaz as seguintes propriedades: e VERMELHO ou PRETO 1: Todo no PRETA 2: A raiz e PRETA 3: Toda folha (NIL) e
Arvores Rubro-Negras
uma Arvore Uma Arvore Binaria de Busca e Rubro-Negra se ela satisfaz as seguintes propriedades: e VERMELHO ou PRETO 1: Todo no PRETA 2: A raiz e PRETA 3: Toda folha (NIL) e e VERMELHO, entao ambos os seus lhos 4: Se um no PRETOS sao
Arvores Rubro-Negras
uma Arvore Uma Arvore Binaria de Busca e Rubro-Negra se ela satisfaz as seguintes propriedades: e VERMELHO ou PRETO 1: Todo no PRETA 2: A raiz e PRETA 3: Toda folha (NIL) e e VERMELHO, entao ambos os seus lhos 4: Se um no PRETOS sao todos os caminhos do no para folhas 5: Para cada no, o mesmo numero PRETOS. descendentes contem de nos
Arvores Rubro-Negras
11
14
13 NIL
15 NIL NIL
Arvores Rubro-Negras
11
14
13
15
Arvores Rubro-Negras
Arvores Rubro-Negras
Lema: internos possui altura no Uma Arvore Rubro-Negra com n nos maximo 2lg(n + 1).
Arvores Rubro-Negras
Prova: Primeiro mostramos que a subarvore com raiz em bh ( x contem pelo menos 2 x ) -1 nos internos. qualquer no em bh(x)) (Por induc ao
Arvores Rubro-Negras
Prova: Primeiro mostramos que a subarvore com raiz em bh ( x contem pelo menos 2 x ) -1 nos internos. qualquer no em bh(x)) (Por induc ao internos, ou Caso Base (bh(x) = 0): 2bh(x ) -1 = 20 -1 = 0 nos uma folha. seja, bh(x) = 0 engloba o caso em que x e
Arvores Rubro-Negras
Prova: Primeiro mostramos que a subarvore com raiz em bh ( x contem pelo menos 2 x ) -1 nos internos. qualquer no em bh(x)) (Por induc ao internos, ou Caso Base (bh(x) = 0): 2bh(x ) -1 = 20 -1 = 0 nos uma folha. seja, bh(x) = 0 engloba o caso em que x e com altura-preta H.I.: A subarvore que tem como raiz o no internos. bh(x)-1 possui 2bh(x )1 -1 nos
Arvores Rubro-Negras
Prova: Primeiro mostramos que a subarvore com raiz em bh ( x contem pelo menos 2 x ) -1 nos internos. qualquer no em bh(x)) (Por induc ao internos, ou Caso Base (bh(x) = 0): 2bh(x ) -1 = 20 -1 = 0 nos uma folha. seja, bh(x) = 0 engloba o caso em que x e com altura-preta H.I.: A subarvore que tem como raiz o no internos. bh(x)-1 possui 2bh(x )1 -1 nos x com altura-preta bh(x) possuem P.I.: Os lhos de um no altura-preta bh(x) se for vermelho ou bh(x)-1 se for preto, logo, a subarvore que tem x como raiz possui pelo menos internos. (2bh(x )1 -1) + (2bh(x )1 -1) + 1 = 2bh(x ) -1 nos
Arvores Rubro-Negras
Agora que provamos que a subarvore com raiz em x contem pelo menos 2bh(x ) -1 nos internos. qualquer no Iremos completar a prova que uma Arvore Rubro-Negra internos possui altura no maximo com n nos 2lg(n + 1).
Arvores Rubro-Negras
Seja h a altura da arvore. De acordo com a propriedade 4, em qualquer caminho simples pelo menos metade dos nos uma folha, nao incluindo a raiz, deve ser da raiz ate PRETA. Consequentemente, a altura-preta da raiz deve ser pelo menos h/2. Entao:
Arvores Rubro-Negras
Seja h a altura da arvore. De acordo com a propriedade 4, em qualquer caminho simples pelo menos metade dos nos uma folha, nao incluindo a raiz, deve ser da raiz ate PRETA. Consequentemente, a altura-preta da raiz deve ser pelo menos h/2. Entao: n 2h/2 1
Arvores Rubro-Negras
Seja h a altura da arvore. De acordo com a propriedade 4, em qualquer caminho simples pelo menos metade dos nos uma folha, nao incluindo a raiz, deve ser da raiz ate PRETA. Consequentemente, a altura-preta da raiz deve ser pelo menos h/2. Entao: n 2h/2 1 Passando o 1 para o lado esquerdo e tomando os logaritmos de ambos os lados, temos:
Arvores Rubro-Negras
Seja h a altura da arvore. De acordo com a propriedade 4, em qualquer caminho simples pelo menos metade dos nos uma folha, nao incluindo a raiz, deve ser da raiz ate PRETA. Consequentemente, a altura-preta da raiz deve ser pelo menos h/2. Entao: n 2h/2 1 Passando o 1 para o lado esquerdo e tomando os logaritmos de ambos os lados, temos: lg (n + 1) h/2 ou h 2lg (n + 1)
Arvores Rubro-Negras
Corolario: de Busca, M As operac oes nimo, Maximo, Sucessor e Predecessor podem ser implementadas em O(lgn).
Rotac oes
X LeftRotate(T,x) S1 Y RightRotate(T,y) S3 S1 Y
X S3
S2
S2
Inserir
Inserir e Remover sao mais complicadas As operac oes nas Arvores Rubro-Negras porque elas podem ferir alguma propriedade deste tipo de arvore.
Inserir
Inserir e Remover sao mais complicadas As operac oes nas Arvores Rubro-Negras porque elas podem ferir alguma propriedade deste tipo de arvore. podem ser Como veremos, essas operac oes implementadas de forma bastante parecida com as nas Arvores respectivas operac oes Binarias de Busca, para que as bastando apenas modicar as cores dos nos propriedades de Arvores Rubro-Negras sejam satisfeitas.
Inserir
Inserir e Remover sao mais complicadas As operac oes nas Arvores Rubro-Negras porque elas podem ferir alguma propriedade deste tipo de arvore. podem ser Como veremos, essas operac oes implementadas de forma bastante parecida com as nas Arvores respectivas operac oes Binarias de Busca, para que as bastando apenas modicar as cores dos nos propriedades de Arvores Rubro-Negras sejam satisfeitas. e a remoc propriamente ditas ja foram Como a inserc ao ao vistas para Arvores Binarias de Busca, veremos apenas o necessario que e para acertar as cores da arvore.
Inserir
casos para corrigir as cores apos uma Existem tres inserc ao:
Inserir
casos para corrigir as cores apos uma Existem tres inserc ao: VERMELHO. Caso 1: O tio do elemento inserido e
Inserir
casos para corrigir as cores apos uma Existem tres inserc ao: VERMELHO. Caso 1: O tio do elemento inserido e PRETO e o elemento Caso 2: O tio do elemento inserido e um lho da direita. inserido e
Inserir
casos para corrigir as cores apos uma Existem tres inserc ao: VERMELHO. Caso 1: O tio do elemento inserido e PRETO e o elemento Caso 2: O tio do elemento inserido e um lho da direita. inserido e PRETO e o elemento Caso 3: O tio do elemento inserido e um lho da esquerda. inserido e
Inserir
11
14
13
15
11
14
13
15
11
14
13
15
11
14
13
15
Inserir
11
5 8 4 13 15 14
Remover
uma Existem quatro casos para corrigir as cores apos mas antes de den remoc ao, -los, identiquemos alguns nos:
Remover
uma Existem quatro casos para corrigir as cores apos mas antes de den remoc ao, -los, identiquemos alguns nos: a ser removido. Seja z o no
Remover
uma Existem quatro casos para corrigir as cores apos mas antes de den remoc ao, -los, identiquemos alguns nos: a ser removido. Seja z o no Seja y = z se z possuia um ou nenhum lho ou y = succ(z) se z possuia dois lhos.
Remover
uma Existem quatro casos para corrigir as cores apos mas antes de den remoc ao, -los, identiquemos alguns nos: a ser removido. Seja z o no Seja y = z se z possuia um ou nenhum lho ou y = succ(z) se z possuia dois lhos. de z ou NIL caso y Seja x o lho de y antes da remoc ao possuisse lho. nao
Remover
uma Existem quatro casos para corrigir as cores apos mas antes de den remoc ao, -los, identiquemos alguns nos: a ser removido. Seja z o no Seja y = z se z possuia um ou nenhum lho ou y = succ(z) se z possuia dois lhos. de z ou NIL caso y Seja x o lho de y antes da remoc ao possuisse lho. nao de z. Seja w o tio de x antes da remoc ao
15
18
12
16
20
13
Vamos considerar x sempre como sendo duplo-PRETO, a e que o x recebe a PRETIDAO ideia do pai para manter PRETO e a propriedade 5 (nos casos em que x e VERMELHO basta fazer x simplesmente PRETO e todas respeitadas). as propriedades estarao
Remover
VERMELHO. Caso 1: w e
Remover
Remover
VERMELHO. Caso 1: w e PRETO, seus dois lhos sao PRETOS. Caso 2: w e PRETO, seu lho da esquerda e VERMELHO Caso 3: w e PRETO. e se lho da direita e
Remover
VERMELHO. Caso 1: w e PRETO, seus dois lhos sao PRETOS. Caso 2: w e PRETO, seu lho da esquerda e VERMELHO Caso 3: w e PRETO. e se lho da direita e PRETO e seu lho da direita e VERMELHO. Caso 4: w e
VERMELHO Caso 1: w e
S1
S2
S3
S4 S5
S6
VERMELHO Caso 1: w e
S5
S6
S1
S2 S3
S4
S1
S2
S3
S4 S5
S6
Removendo um PRETO de x, fazendo w VERMELHO, adicionando PRETO ao pai e fazendo pai novo x:
x B c
S1
S2
S3
S4 S5
S6
S1
S2
S3
S4 S5
S6
S1
S2
S3
S4
S5
S6
S1
S2
S3
S4 S5
S6
S5
S6
S1
S2 S3
S4
Analise
de inserc e remoc propriamente ditas As operac oes ao ao gastam cada uma, tempo O(lgn), assim como as demais de Arvores operac oes Binarias de Busca, portanto, resta de corrigir as cores em saber quanto gastam as operac oes e facil perceber que cada Inserir e Remover, porem nao gasta mais que O(lgn) e, portanto, Inserir e operac ao Remover podem ser executadas em tempo O(lgn).
Sumario
Resumindo
Arvores Binarias de Busca: da arvore: menores ou iguais a ` esquerda Para todo no nos maiores ou iguais a ` direita. e nos
Resumindo
Arvores Binarias de Busca: da arvore: menores ou iguais a ` esquerda Para todo no nos maiores ou iguais a ` direita. e nos Operac oes: Busca, M nimo, Maximo, Predecessor, Sucessor, Inserir e Remover.
Resumindo
Arvores Binarias de Busca: da arvore: menores ou iguais a ` esquerda Para todo no nos maiores ou iguais a ` direita. e nos Operac oes: Busca, M nimo, Maximo, Predecessor, Sucessor, Inserir e Remover. Inserir: basta manter a propriedade basica das Arvores Binarias de Busca. Insere sempre como uma folha.
Resumindo
Arvores Binarias de Busca: da arvore: menores ou iguais a ` esquerda Para todo no nos maiores ou iguais a ` direita. e nos Operac oes: Busca, M nimo, Maximo, Predecessor, Sucessor, Inserir e Remover. Inserir: basta manter a propriedade basica das Arvores Binarias de Busca. Insere sempre como uma folha. casos dependendo de quantos lhos possui Remover: tres o no.
nenhum lho: simplesmente remove o no. um lho: o lho passa a ser lho do avo. dois lhos: encontrar o sucessor para assumir o lugar do no.
Resumindo
Arvores Binarias de Busca: da arvore: menores ou iguais a ` esquerda Para todo no nos maiores ou iguais a ` direita. e nos Operac oes: Busca, M nimo, Maximo, Predecessor, Sucessor, Inserir e Remover. Inserir: basta manter a propriedade basica das Arvores Binarias de Busca. Insere sempre como uma folha. casos dependendo de quantos lhos possui Remover: tres o no.
nenhum lho: simplesmente remove o no. um lho: o lho passa a ser lho do avo. dois lhos: encontrar o sucessor para assumir o lugar do no.
Resumindo
Arvores Rubro-Negras: Arvores Binarias de Busca com bit adicional para representar a cor (PRETA ou VERMELHA).
Resumindo
Arvores Rubro-Negras: Arvores Binarias de Busca com bit adicional para representar a cor (PRETA ou VERMELHA). Cinco propriedades basicas:
e colorido PRETO ou VERMELHO. Todo no PRETA. A raiz e PRETAS. As folhas (NIL) sao e VERMELHO, seus lhos sao PRETOS. Se um no todos os caminhos ate as folhas Para cada no, o mesmo numero descendentes contem de nos.
Resumindo
Arvores Rubro-Negras: Arvores Binarias de Busca com bit adicional para representar a cor (PRETA ou VERMELHA). Cinco propriedades basicas:
e colorido PRETO ou VERMELHO. Todo no PRETA. A raiz e PRETAS. As folhas (NIL) sao e VERMELHO, seus lhos sao PRETOS. Se um no todos os caminhos ate as folhas Para cada no, o mesmo numero descendentes contem de nos.
internos tem Lema: Uma Arvore Rubro-Negra com n nos altura no maximo 2lg(n+1).
Resumindo
Arvores Rubro-Negras: Arvores Binarias de Busca com bit adicional para representar a cor (PRETA ou VERMELHA). Cinco propriedades basicas:
e colorido PRETO ou VERMELHO. Todo no PRETA. A raiz e PRETAS. As folhas (NIL) sao e VERMELHO, seus lhos sao PRETOS. Se um no todos os caminhos ate as folhas Para cada no, o mesmo numero descendentes contem de nos.
internos tem Lema: Uma Arvore Rubro-Negra com n nos altura no maximo 2lg(n+1). que uma arvore Possui todas as operac oes binaria balanceada comum possui.
Resumindo
Resumindo
Arvores Rubro-Negras: Remover: quatro casos a considerar.
VERMELHO: inverte cores do pai e de w. we PRETO e ambos os lhos de w sao pretos: remove we um PRETO de x, faz w VERMELHO e adiciona PRETO ao pai. Faz pai novo x. PRETO, o lho da esquerda e VERMELHO e o da we direita PRETO: inverte cores de w e do seu lho da para a direita. esquerda e faz uma rotac ao PRETO e o lho da direita e VERMELHO: atribui a cor we do pai a w, faz pai PRETO, faz lho da direta de w PRETO para a esquerda. e faz uma rotac ao
Resumindo
Arvores Rubro-Negras: Remover: quatro casos a considerar.
VERMELHO: inverte cores do pai e de w. we PRETO e ambos os lhos de w sao pretos: remove we um PRETO de x, faz w VERMELHO e adiciona PRETO ao pai. Faz pai novo x. PRETO, o lho da esquerda e VERMELHO e o da we direita PRETO: inverte cores de w e do seu lho da para a direita. esquerda e faz uma rotac ao PRETO e o lho da direita e VERMELHO: atribui a cor we do pai a w, faz pai PRETO, faz lho da direta de w PRETO para a esquerda. e faz uma rotac ao
Exerc cios:
12.3-5: Questao de remoc e comutativa no sentido que A operac ao ao removendo x e depois y de uma arvore binaria de busca resulta na mesma arvore que removendo y e depois x? ou de um contra-exemplo. Argumente porque e
Exerc cios:
13.3-5: Questao de n Considere uma arvore rubro-negra formada pela inserc ao com a operac Inserir. Argumente que se n > 1, a arvore nos ao pelo menos um no VERMELHO. tera
Exerc cios:
13.4-6: Questao preocupados que no Os professores Skelton e Baron entao in cio do caso 1 do procedimento para acertar as cores apos o pai do no x pode nao ser PRETO. Se os uma remoc ao, o procedimento pode professores estiverem corretos, entao colorido VERMELHO). Mostre que o pai estar errado (pois w e x deve ser PRETO no in do no cio do caso 1, para que os tenham nada com que se preocupar. professores nao