ori seminario 5

31
Árvore Rubro-Negra Organização e Recuperação da Informação Grupo: Osmir – Valmor – Victor

Upload: mauro-greff

Post on 09-Nov-2015

11 views

Category:

Documents


0 download

DESCRIPTION

Seminário Arvore Rubro Negra

TRANSCRIPT

  • rvore Rubro-NegraOrganizao e Recuperao da InformaoGrupo: Osmir Valmor Victor

  • Tpicos AbordadosIntroduoPropriedades principais ConceitosDefinio bsica da estruturaInseroRemooComparao entre tipos de rvores

  • Introduo

    Inventada em 1972, 10 anos depois da AVL por Rudolf Bayer, sob o nome B-rvores binrias simtricasAdquirindo em 1978 seu atual nome, por Leo J. Guibas and Robert Sedgewickrvore rubro-negra (do ingls Red-Black trees)

  • rvore Rubro-NegraA rvore rubro-negra tem esse nome devido a colorao de seus nsUma rvore rubro negra (ARN) uma rvore binria de busca com um campo adicional que armazena se o n rubro ou negro O fato de um n ser rubro ou negro usado como fator de balanceamento da ARN

  • Propriedades1 - Cada n tem uma cor que rubro ou negro. Por conveno, uma rvore no vazia (ou subrvore) tem a cor de sua raiz e uma rvore vazia negra 2 - A raiz negra3 - Qualquer caminho da raiz at uma subrvore vazia tem um nmero igual de ns negros 4 - As subrvores de um n rubro so sempre negras

    -> Propriedade bvia resultando da quarta condio que num caminho da raiz at uma subrvore vazia no pode haver dois ns rubros consecutivos

  • Conceitos (Altura negra) A altura negra de uma rvore rubro-negra A, denotada an(A) o nmero de ns negros que se encontram nos caminhos da raiz at uma folha.Observe que, pela terceira condio da definio de rvore rubro-negra, esse nmero bem definido. No caso da rvore acima, a altura negra 3

  • ConceitosA altura de qualquer rvore rubro-negra logartmica no nmero de chaves armazenadasA busca nas rvores rubro-negra tem complexidade logartmica.Uma ARN impede que uma subrvore fique com o dobro da altura da outra subrvore de um n.

  • Definio do nEstrutura interna de um nChaveCor(Rubro ou Negra)Ptr EsquerdaPtr Direita

  • Definio dos tiposclass ARN{ Private: typedef enum {RUBRO, NEGRO} cor; typedef struct no *ptr; struct no { t chave; ptr esq; ptr dir; cor tipo; }; ptr raiz; Public: // mtodos...}

  • InseroTodo n a ser inserido por conveno rubro (pois se fosse negro no seguiria a propriedade 3)Se aps a insero for quebrada qualquer propriedade da ARN devem ser feitas rotaes e/ou inverso de cores dos ns para que sejam satisfeitas todas as propriedades As regras de insero levam em considerao a cor do tio (o outro filho do pai do n que recebeu o novo n) do n inserido

  • CasosSe t for rubro: o pai de t torna-se rubro e, os filhos de w tornam-se negros. Caso w seja a raiz, basta trocar sua cor para negro

  • Se t for rubro: o pai de t torna-se rubro e, os filhos de w tornam-se negros. Caso w seja a raiz, basta trocar sua cor para negro

  • CasosSe t for negro: neste caso faz-se uma operao de rotao e, se necessrio, uma inverso de cores. H 4 subcasos a considerar:

  • 1 SubcasoSe q filho esquerdo de v e v filho esquerdo de w realizada uma rotao simples a direita e as cores de v e w so invertidas.

  • 2 SubcasoSe q filho direito de v e v filho esquerdo de w realizada uma rotao dupla a direita e as cores de q e w so invertidas.

  • 3 e 4 SubcasosOs outros dois subcasos so simtricos aos dois subcasos anteriores

  • Insero

    A complexidade da insero, que a da insero em rvore binria de busca, logartmicaO pior caso da fase de balanceamento se tiver que aplicar a inverso de cores at a raizComo o tamanho do caminho da raiz at qualquer folha logartmico, o nmero de operaes tambm logartmicoEm concluso, a complexidade da insero em rvores rubro-negras logartmica

  • Boolean Inserir (const int chave, ptr & filho, ptr & pai, ptr &avo) { if (filho == NULL) { filho = criar(chave); return true; } else if (chave != filho->chave) { boolean e; if (chave < filho->chave) e = Inserir(chave, filho->esq, filho, pai); else e = Inserir(chave, filho->dir, filho, pai); if (eh_rubro(filho)) if (e) if (chave < filho->chave) { Remanejar(filho->esq, filho, pai) ; return false; } else { Remanejar(filho->dir, filho, pai); return false; } else return true;else return false; } else return eh_rubro(filho);}Insero

  • Animao de uma rvore Rubro-NegraApplet (ARN) - Insero

  • RemooA remoo em rvores rubro-negras pode ser realizada tambm com um nmero logartmico de operaesO procedimento de remoo composto de uma etapa de remoo em rvore binria de busca seguido de uma etapa de balanceamento, caso as propriedades rubro-negras teriam sido destrudas durante a operao

  • RemooSe o n removido for rubro, a rvore continua rubro-negra, pois todas as condies da definio ficam vlidas:1. Os ns resultantes tem cor rubro ou negro2. A raiz, que era negra, no foi removida3. Nenhum n negro foi removido, portanto todos os caminhos da raiz at uma folha tem um nmero igual de ns negros4. Os filhos de todos os ns rubros no removidos no foram alterados e portanto ficam negros

  • RemooSe o n removido for negro, o nmero de ns de pelo menos um caminho foi decrementado e consequentemente a terceira condio ficou invlida. Quando isto acontece, dois tipos de soluo so possveis:

    remoo preguiosa- A remoo preguiosa consiste em marcar o n como removido, mas sem tira-lo da rvore. Nenhum remanejamento necessrio. Em compensao, os algoritmos de insero e busca devem ser modificados para levar em conta que alguns ns da rvore devem ser considerados como ausentes. A adoo desta soluo possvel quando as rvores rubro-negras so usadas no contexto de uma aplicao com poucas operaes de remooremoo efetiva - Atravs de um nmero logartmico de operaes, a remoo efetiva restabelece as propriedades para que a rvore seja rubro-negra. Essas operaes so detalhadas em seguida

  • Remoo EfetivaCaso o n y a ser removido for rubro, as propriedades da ARN no so afetadas.

  • Remoo EfetivaQuando o n a remover y negro, todos os caminhos da raiz at uma folha passando por esse n tem um n negro a menos. Seja x o n que passar a ocupar a posio de y na rvore. O problema da remoo efetiva resolvido atribuindo negro a cor de x. Assim permanece igual a altura negra de todos os caminhos contendo x, antes e depois da insero.

  • Remoo EfetivaPorm, se x j era negro, ele agora passa a ser duas vezes negro, o que torna invlida a definio da ARN, e preciso remanejar a rvore para eliminar essa situao.No caso de x ser a raiz, ento basta torn-lo simplesmente negro: a altura negra de todos os caminhos da rvore e decrementada, e a terceira condio permanece verdadeira.x no sendo a raiz, seja v seu pai, e w seu irmo. A seguir considerado o caso de x ser o filho, o outro caso simtrico omitido.

  • 1 Subcaso Remoo EfetivaO primeiro caso, ilustrado abaixo considera a situao onde w rubro. Nesta situao, realizada uma rotao simples a esquerda de v, e as cores de v e w so modificadas.O resultado desta modificao que x permanece duplamente negro. Porm, o seu irmo agora tambm negro, e o tratamento de um dos casos apresentados a seguir deve ser aplicado.

  • 2 Subcaso Remoo EfetivaO segundo caso configura a situao onde ambas sub-rvores de w so negras e ilustrado abaixo. Este remanejamento consiste em subir um ponto negro dos ns x e w, que passam a ser negro e rubro respectivamente, no n v. Se ele era anteriormente rubro, ele torna-se negro. Se ele era anteriormente negro, ele torna-se duplamente negro, e um novo remanejamento necessrio no nvel superior.

  • 3 Subcaso Remoo EfetivaNo terceiro caso, ilustrado abaixo, a sub-rvore esquerda de w rubra, e a direita negra. Seja z o filho esquerdo de w. ento realizada uma rotao simples a direita de w, e uma inverso das cores de w e z.O n x permanece duplamente negro, mas configura-se agora uma situao diferente, onde a sub-rvore direita w rubra, cujo tratamento apresentado a seguir.

  • 4 Subcaso Remoo EfetivaO quarto e ltimo caso corresponde portanto situao onde a sub-rvore direita de w rubra. Seja z o filho direito de w. A soluo consiste em fazer uma rotao simples a esquerda de v, atribuir aos ns v e z a cor negra, e a w a cor que era a de v.

  • Comparao entre rvores

  • Bibliografiahttp://en.wikipedia.org/wiki/Red-black_treervores Balanceadas, David Dharbe, Universidade Federal do Rio Grande do Norte