apostila - Árvores rubro negras

13
 Árvores Rubro-Negras

Upload: hamilton-bento

Post on 07-Oct-2015

221 views

Category:

Documents


0 download

DESCRIPTION

Apostila sobre Árvores Rubro Negras em programação

TRANSCRIPT

  • rvoresRubroNegras

  • rvoresRubroNegras(RB)

    Propriedades:2. Todonnegroourubro.3. Todafolha(nvazio)negro.4. Seumnvermelho,seusdoisfilhos

    sonegros.5. Todocaminhosimplesdeumnauma

    folhadescendentedestentemomesmonmerodensnegros.

  • Alturanegra

    Onmerodensnegrosnocaminhodeumnvatumnfolhadescendenteseudenominadoalturanegradev(hn(v)).

    Pelapropriedade4aalturanegraestbemdefinida,umavezquetodocaminhodeumnaumdeseusdescendentestemomesmonmerodensnegros.

  • Teorema1

    TodasubrvoredeumaRBcomraiznonxcontmnomnimo2**(hn(x))1ns.

    Provaporinduoemhn.Base:hn(x)=0(xfolhavazio)=>nmerodens2**01=0

    HipteseIndutiva:verdadeparansxcomalturanegraigualah1queonmerodensnasubrvorextemnomnimo2**(h1)1ns.

  • Teorema1

    Passodainduo:provarqueverdadeparahn(x)=h.

    Sejaxumntalquehn(x)=h.Cadafilhodextemalturanegraigualhouigualah1.Logo,cadasubrvoredextemalturapelomenos2**(h1)1.Portantoasubrvorextemnmerodensnomnimoigual2**(h1)1+2**(h1)1+1,ouseja,nmerodensnomnimoiguala

    2**(h)1

  • Teorema2

    AsRBspossuemalturanomximoigual2(logn+1).

    Prova:SejahaalturadeumaRB.Pelapropriedade3,pelomenosametadedosnsnocaminhodaraizatumafolhadensnegros.Logoaalturanegradarvorepelomenosh/2,portanto,peloTeorema1,n>=2*(h/2)1,ondenonmerodensdarvore,ento,n+1>=2**(h/2).Aplicandologaosdoisladosdainequaao:h

  • Rotaes

    InsereseremoesemumarvoreRBpodemgerarumanovarvoredepesquisaquenoobedeces4propriedadesdeumaRB.EmalgumassituaesnecessriofazeralgunsremanejamentosnosnsdanovarvoreparaqueelasemantenhaumaRB.Estesremanejamentossodenominadosrotaes.

  • Rotaes

    H dois tipos de rotaes: rotao esquerda e rotao direita, comomostraafiguraabaixo:

    y

    x

    x

    y

    rotaoADireita(y)

    rotaoAEsquerda(x)

  • RotaoEsquerdarotacaoEsquerda(T,x){y=x>dir;x>dir=y>esq;if(y>left!=0){y>esq>pai=x;}y>pai=x>pai;if(x>pai==0){

    Raiz=y;elseif(x==x>pai>esq)

    x>pai>esq=yelse

    x>pai>dir=y;y>esq=x;x>pai=y;Obs.:Cdigosemelhantefeitopararotaodireita

  • Insero

    Inicialmente,oalgoritmodeinseroemumarvorebinriadepesquisacomumchamadoparainserironxnaRB.

    Onxrecebeacorrubro. Ainserodexnoviolaaspropriedades:1,2e4dasRB,maspodeafetarapropriedade3.ocasoemqueopaidextambmrubro.H3casosaconsiderar.

  • Caso1:tiodireitadexrubro

    C

    AD

    B

    y=tio

    C

    AD

    B

    y

    C

    BD

    A

    y

    C

    BD

    A

    y

    x

    Novox

    x

    Novox

  • TiodireitadexNOrubroC

    A

    B

    y=tio

    C

    A

    B

    y

    x

    B

    AC

    y

    caso2Rotaoesquerdadopaidex

    x

    Caso3Rotaodireitadoavdex

    x

  • InseroemRBvoidRBinsere(x){

    T.insere(x);//inseroemrvoredepesquisax>cor=rubro;while(x!=raiz&&x>pai>cor==rubro){

    avo=x>pai>pai;if(x>pai==avo>left){

    y=avo>dir//tiodireitadex;if(y>cor==rubro){

    x>pai>cor=negra;//Caso1y>cor=negro;avo>cor=rubro;//Caso1x=avo;//Caso1

    }elseif(x==x>pai>dir){

    x=x>pai;//Caso2rotacaoEsquerda(T,x);//Caso2x>pai>cor=negra;//Caso3x>pai>pai>cor=rubro;//Caso3rotacaoDireita(T,x); //Caso3

    }}else//comandossemelhantes,trocandoesqcomdir}raiz>cor=negra}