Aula 5 - Árvores Red Black e Árvores B

  • Upload
    thiago

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    1/60

    RVORESrvores Red-Black

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    2/60

    IntroduoSo tambm rvores binrias de busca

    Conhecidas tambm como rvores Rubro-Negras

    Foram inventadas em 1!" com o nome de

    rvores binrias simtricas #ossuem dois novos cam$os%

    o &m bit e'tra $ara arma(enar a cor de cada n)

    o

    &m $onteiro $ara o n) $ai* rvore a$ro'imadamente ba+anceada,

    $ois nenhum caminho ser duas ve(es maiordo ue ua+uer caminho $ara uma .o+ha

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    3/60

    Introduo

    * a+tura m'ima de uma rvore R/

    com n n)s internos %

    #or serem ba+anceadas as o$era0es+evam o tem$o%

    #ossuem me+hor desem$enho emrvores de a+turas maiores

    )1log(2 += nh

    )(lognO

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    4/60

    Propriedades

    123odo n) vermelhoou preto"2 * rai( da rvore necessariamente

    preta

    423oda .o+ha Ni+ preta

    52 N)s vermelhosue no se6a .o+has$ossuem a$enas 7+hos pretos

    823odos os caminhos a $artir da rai( at

    suas .o+has $assam $e+a mesmauantidade de n)s pretos

    92 No $odem e'istir dois n)s

    vermelhosconsecutivos

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    5/60

    Mais Propriedades

    3oda ve( ue um n) inserido ou

    de+etado todas as $ro$riedadesdevem ser testadas

    Caso um ou mais $ro$riedades no

    se6am satis.eitas ento rota0es e:oumudan0as de cores devem ser .eitasoRota0es e mudan0as de cores so .eitas

    $ara manter o ba+anceamentoO bhou b+ac;-high de cada n) indica

    a uantidade de n)s $retos

    encontrados entre a rai( e .o+ha

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    6/60

    Exemplo

    2720

    18

    2210

    133

    51 16

    4

    3

    2 2

    3

    3

    2 22

    3

    12

    1714

    2 2

    2 2

    19 212 24 4011

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    7/60

    Insero

    3odo n) ao ser inserido verme+hooOb6etiva no mudar o bh dos n)so Se um n) inserido .or $reto e+e .ere a

    $ro$riedade 8

    Se um n) .or inserido na rvoreva(ia ento basta mudar a cor do n)de verme+ho $ara $reto

    p p

    x

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    8/60

    Insero

    Caso 1o Se um n) .or verme+ho e no tiver $ai,

    ento e+e a rai( e deve sertrans.ormado em $reto

    Caso "o&m n) ' esta sendo inserido, e seu tio

    verme+ho ento necessrio reco+orir

    o $ai, o tio e o av

    Caso 5o Su$ondo ue ' esta sendo inserido em

    um n) verme+ho e seu tio ni+ =$reto>,ento deve ser .eita uma rota0o

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    10/60

    Caso

    Subcaso 1 ? Caso os n)s este6am @

    esuerda deve-se .a(er uma rota0o@ direitaoOs n)s devem ser reco+oridos

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    11/60

    Caso

    Subcaso " ? Caso os n)s este6am @

    direita deve-se .a(er uma rota0o @esuerdaoOs n)s devem ser reco+oridos

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    12/60

    Caso

    Subcaso 4 ? caso os n)s este6am @

    direita e ' se6a o 7+ho @ esuerda de$, ento deve-se se .a(er umarota0o @ direita com $ e uma

    rota0o @ esuerda com a =rota0odu$+a>a

    tp

    x

    x

    a p

    t

    a

    tx

    p

    Rota0o sim$+es @ esuerda

    Rota0o sim$+es @direita

    Recolorao de x e a

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    13/60

    Caso

    Subcaso 5 - caso os n)s este6am @

    esuerda e ' se6a o 7+ho @ direita de$, ento deve-se se .a(er umarota0o @ esuerda com $ e uma

    rota0o @ direita com aat

    x

    p

    x

    p a

    t

    a

    tp

    x

    Rota0o sim$+es @direita

    Rota0o sim$+es @ esuerda Recolorao de x e a

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    14/60

    Rota!es com "ub-#rvores

    y

    x

    * /

    C

    x

    y*

    / C

    direita

    esquerda

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    15/60

    8

    Exemplo

    Anserindo o n) ! na rvore abai'o

    2

    1 4

    3 5

    6

    7

    -Propriedade 4 violada-Caso 3

    - Subcaso 2 Rotao esquerda no n 5

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    16/60

    Exemplo

    Anserindo o n) ! na rvore abai'o

    2

    1 4

    3

    75

    6

    -Propriedade 4 violada-Basta re-colorir os ns 5 ! e

    "

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    17/60

    Exemplo

    Anserindo o n) ! na rvore abai'o

    2

    1 4

    3

    7

    6

    5

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    18/60

    Casos para Correo de Cores

    E'istem 4 casos $ara corre0o das cores%

    oCaso 1 ? o tio do e+emento inserido verme+ho

    Budar cores

    oCaso " ? O tio do e+emento inserido $reto e o e+emento inserido @ direita

    oCaso 4 ? O tio do e+emento inserido

    $reto e o e+emento inserido @esuerda

    Nos casos " e 4 - Buda-se as cores e.a(em-se uma ou duas rota0es

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    19/60

    Exemplo$ inserindo o n% &

    Caso 1% o tio do n) inserido

    verme+ho

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    20/60

    Exemplo$ Inserindo o n% &

    Caso "% ! verme+ho e 15 =tio>

    $retoRota0o nos e+ementos " e !

    #iolao

    Rotao esquerda$ % 2& % "

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    21/60

    Exemplo$ Inserindo o n% &

    Caso 4 o tio do e+emento inserido @

    esuerda $reto n)s ! e "continuam vio+ando a $ro$riedade 5

    Rotacionar ! e 11 $ara a direita

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    22/60

    Exemplo$ Inserindo o n% &

    #e+a $ro$riedade 1 o n) ! $assa a

    ser $retoO n)s D e 15 so $retos, +ogo o n) 11

    $assa a ser verme+ho

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    23/60

    'l(oritmo de RotaoLeft_rotate(Tree T, obj x)

    y right[x] right[x] left[y] if left[y] nil[T] then

    pai[left[y]] x end if

    pai[y] pai[x]

    if pai[x] = nil[T] then T y

    else

    if x = left[pai[x]] then

    left[pai[x]] y

    else right[pai[x]] y end if

    end if

    left[y] x

    pai[x]y

    ' al(orit)o derotao direita *

    an+lo(o

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    24/60

    'l(oritmo de Insero

    RB-insert(Tree T, obj z)

    ynil[T] x T

    while x nil[T] do

    y x if key[z] < key[x] then

    x left[x] else

    x right[x] end if

    end while

    pai[z] y

    if y = nil[T] then T z else

    if key[z] < key[y] then

    left[y] z

    else right[y] z end if

    end if

    left[z] nil[T]right[z] nil[T]cor[z] er!elhoRB-insert-fix"p(T, z)

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    25/60

    'l(oritmo de Re-EstruturaoRB-insert-fix"p(Tree T, obj z)

    #$while cor[pai[z]] = vermelho do%$

    if pai[z] = left[pai[pai[z]]] then&$ y right[pai[pai[z]]]'$ if cor[y] = vermelho then$ caso#* cor[pai[z]] preto+$ cor[y] preto$ cor[pai[pai[z]]] er!elho$ z pai[pai[z]]

    .$ else#/$ if z = right[pai[z]] then##$ caso% $*z pai[z]#%$ left-rotate(T, z)

    #&$ end if#'$ caso& $*cor[pai[z]] preto#$ cor[pai[pai[z]]] er!elho#+$ right-rotate(T, pai[pai[z]])

    #$ end if#$ else#.$ o !es!o 0o caso then (linhas 3 a 1!

    trocando entre si right com left"%/$ end if

    %#$ end while%%$ cor[T] preto

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    26/60

    Exerc)cios

    Ansira os va+ores os va+ores , " e

    19 na rvore do e'em$+o anterior#esuise como .a(er a remo0o de

    n)s

    Am$+emente os a+goritmosdemonstrados $ara inser0o de n)sem uma rvore R/

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    27/60

    RVORES /

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    28/60

    Introduo

    #ro$osto em 1!" $or /aGer e

    BcCreight, desenvo+vido noHaborat)rio de #esuisas CientI7cas/oeing

    oNo se sabe se o / de /aGer ou /oing&sado no arma(enamento em

    mem)ria secundria

    J uma rvore n-ria

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    29/60

    Introduo

    Botiva0o

    oKuando no conseguimos traba+har namem)ria $rinci$a+ =ou $rimria>, temos ueusar a mem)ria secundria2

    o Sabemos ue o acesso aos dados emmem)ria secundria muito +ento2

    o #recisamos de meios e7cientes de acessoaos dados =$rovave+mente na .orma de

    LMIndices>o E'em$+o% &m disco com 49 r$m na mdia

    +eva Dms $ara cada acesso 1s $ara 1"acessos

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    30/60

    Caracter)sticas

    O ue a.eta o desem$enho de uma

    rvore a a+tura* a+tura diminui a medida ue a aridade

    aumenta

    &ma rvore de ordem m tem umaaridade m, onde cada n) $ode ter m7+hos

    3odas as .o+has esto no mesmo nIve+3odas as no-.o+has, com e'ce0o da

    raI(, tm no mInimo m : "7+hos

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    31/60

    Caracter)sticas

    O n) raI( ou uma .o+ha ou tem de "

    a m 7+hos&m n) .o+ha no contm mais ue m

    ? 1 chaves =e+ementos>

    O nPmero m deve ser sem$re Im$ar

    N de uma rvore B de ordem = 5

    class #$%&Tree

    ' Tipo chave[])

    #$%&Tree p[*])

    "

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    32/60

    Caracter)sticas

    Ca$acidade m'ima de uma rvore-

    /Qe$ende da a+tura e do grau

    o h ordem 1 e+ementos

    o h 1 T 1 e+ementos

    o h " T 1 1 T 1 T

    e+ementos1_ 1 = +hmelementosqtd

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    33/60

    Insero de Elementos

    *s chaves:e+ementos so inseridas

    em ordem crescenteKuando o nPmero de e+ementos

    u+tra$assado a uantidade de

    e+ementos deve ser dividida entre onovo n) e o n) antigo

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    34/60

    Insero de Elementos

    3ente inserir a nova chave em um n) .o+ha

    =na $osi0o adeuada>Se isso 7(er com ue o n) 7ue cheio,

    divida a .o+ha em duas $artes e suba oe+emento centra+ $ara o n) $ai

    Se isso 7(er com ue o $ai 7ue cheiore$ita o $rocesso* estratgia $oder ser re$etida at o n)

    rai(

    Se necessrio o n) rai( dever sertambm divido e o e+emento centra+ sertrans.ormado em nova rai( =.a(endo comue a rvore 7ue mais a+ta>

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    35/60

    U Su$onha ue iniciemos com uma rvore / va(ia e aschaves devem ser inseridas na seguinte ordem%

    1 1" D " "8 9 15 "D 1! ! 8" 19 5D 9D 4 "9 "84 88 58

    U Kueremos construir uma rvore / de ordem 8U Os 5 $rimeiros e+ementos vo $ara a raI(%

    U O uinto e+emento e'tra$o+a o tamanho do n)U *ssim, uando inserimos o "8 devemos dividir o n)em duas $artes e co+ocar o e+emento do meio comonova rai(

    RVORE

    /

    1 2 8 12

    ,$e)plo

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    36/60

    RVORE

    /

    1 2 12 25

    8

    25 6 14 28 17 7 52 16 48 68 3 26 29 53 55 45

    1 2 12 258

    I!er"do o 25 ocorre #ue$rada re%ra de &ama'o mx"mo

    ( )rec"!o *a+er o!)l"&

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    37/60

    RVORE

    /

    6 14 28 17 7 52 16 48 68 3 26 29 53 55 45

    Em seguida colocamos 6, 14 e 28 :

    1 2

    8

    12 146 25 28

    1 2 12 25

    8

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    38/60

    RVORE

    /

    17 7 52 16 48 68 3 26 29 53 55 45

    Adicionando 17 !"o!e #e!emos ou#!o s$li#%

    1 2

    8

    12 146 25 28

    17

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    39/60

    RVORE

    /

    17 7 52 16 48 68 3 26 29 53 55 45

    8 17

    12 14 25 281 2 6

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    40/60

    RVORE

    /

    7 52 16 48 68 3 26 29 53 55 45

    Continuando com 7, 52, 16 e 48

    8 17

    12 14 25 281 2 6 16 48 527

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    41/60

    RVORE

    /

    68 3 26 29 53 55 45

    E agora, inserindo o 68

    8 17

    12 14 25 281 2 6 16 48 527 68

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    42/60

    RVORE

    /

    68 3 26 29 53 55 45

    Adicionando 68 rvore causa um split na folha mais direita,fazendo com que o 48 suba raiz. Quando inserimos o 3 o split

    na folha mais esquerda (o 3 sobe); 26, 29, 53, 55 vo para as

    folhas:

    3 8 17 48

    52 53 55 6825 26 28 291 2 6 7 12 14 16

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    43/60

    RVORE

    /

    45

    Por fim o 45:

    3 8 17 48

    52 53 55 6825 26 28 291 2 6 7 12 14 16

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    44/60

    RVORE

    /Por fim, quando inserimos o 45, isso forar com que o 28 subapara a raiz Mas a raiz tambm estcheia ,

    3 8 17 48

    52 53 55 6825 26 29 451 2 6 7 12 14 16

    28

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    45/60

    RVORE

    /Por fim, quando inserimos o 45, isso forar com que o 28 subapara a raiz Mas a raiz tambm estcheia ,

    3 8 17 48

    52 53 55 6825 26 29 451 2 6 7 12 14 16

    28

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    46/60

    RVORE

    /O 17 tem que subir para se tornar a nova raiz lembrem-se que araiz pode ter um nico elemento.

    3 8

    17

    48

    52 53 55 6825 26 29 451 2 6 7 12 14 16

    28

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    47/60

    RVORE

    /

    17

    3 8 28 48

    2 6 7 12 14 16 52 53 55 6825 26 29 45

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    48/60

    RVORE

    /=REBOWO>

    Remoo

    Qurante a inser0o, a chave sem$re vai

    $ara a .o+ha2 Na remo0o dese6amosremover da .o+ha2 *ssim, temos 4$ossibi+idades%

    1 ? Se a chave 6 est em um n) .o+ha esua remo0o no .a( com ue o n) 7uecom $oucos e+ementos =menos ue m : "7+hos>, ento a$enas e+imine-a2

    " ? Se a chave no .o+ha, ento garantido ue seu $redecessor ou

    sucessor este6a em um n) .o+ha ? e nestecaso $odemos e+iminar a chave e subir o$redecessor ou sucessor $ara a $osi0oocu$ada $e+a chave e+iminada2

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    49/60

    Remoo 4 - Se =1> ou ="> ocasionam uma .o+ha a ter um

    nPmero menor ue o mInimo ento temos ueobservar os irmos ad6acentes ao n) emuesto %

    A% Se um de+es tem nPmero de chaves maiorue o mInimo ento $ode-se subir uma chave

    deste n) $ara o n) $ai e $egar a chave do n)$ai $ara a $osi0o da chave e+iminada

    AA% Se ambos irmos no tm nPmero de chavesmaior ue o mInimo, ento suas chaves devem

    ser combinadas com a chave do n) $ai2 Se este$asso 7(er com ue o n) $ai 7ue com menoschaves ue o $ermitido o $rocesso deve serre$etido at o n) rai( =se necessrio>2

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    50/60

    RVORE

    /?=REBO

    WO?C*SO

    1>

    1212 2929 5252

    22 77 99 1515 2222 5656 6969 72723131 4343

    l"m"ar o 2. / c'ave! !u*"c"e&e!

    0!!um"do uma rvore deordem 5

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    51/60

    RVORE

    /=REBOWO?C*SO1>

    1212 2929 5252

    22 77 99 1515 2222 5656 6969 72723131 4343

    l"m"ar o 52

    rvore B.re)oo de n no /ol0a1

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    52/60

    1212 2929 5252

    77 99 1515 2222 5656 6969 72723131 4343

    l"m"a 525656

    rvore B.re)oo de n no /ol0a1

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    53/60

    RVO

    RE/

    1212 2929 5252

    77 99 1515 2222 6969 7272 72723131 4343

    l"m"a 525656

    Re)oo de n no /ol0a

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    54/60

    RVORE

    /

    1212 2929 5656

    77 99 1515 2222 6969 72723131 4343

    l"m"ar o 72ouca!c'ave!,

    om$"a

    Re)oo de n co) poucas c0aves

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    55/60

    1212 2929

    77 99 1515 2222 696956563131 4343

    RVORE

    /

    l"m"ar o 22

    Re)oo - Poucas c0aves nos ns ir)os

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    56/60

    RVORE/

    =REB

    OWO-ARBWOOX>

    1212 2929

    77 99 1515 2222 696956563131 4343

    l"m"ar o 22

    e!cer c'ave do )a" e

    !u$"r c'ave a *ol'a

    Re)oo - Poucas c0aves nos ns ir)os

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    57/60

    1212

    292977 99 1515

    3131

    696956564343

    Re)oo - Poucas c0aves nos ns ir)os

    *

    ' i

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    58/60

    *NAB*

    WO

    'nimao

    http://slady.net/java/bt/view.php?w=600&h=450http://slady.net/java/bt/view.php?w=600&h=450

    :

    E ) i

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    59/60

    :

    Exerc)cios

    Ansira os seguintes nPmeros em uma

    rvore / de ordem 8%4, !, , "4, 58, 1, 8, 15, "8, "5, 14,

    11, D, 1, 5, 41, 48, 89

    Fa0a a inser0o dos e+ementos agoraem uma rvore / de ordem !2

    Forma+i(e o a+goritmo de inser0o eremo0o em rvores /

    * b lh

  • 7/24/2019 Aula 5 - rvores Red Black e rvores B

    60/60

    *rabalho

    Am$+ementar uma rvore *VH, uma rvore

    R-/ e uma rvore-/ =ordem 1 e ordem8>2

    Ansira 12, 12 e 122 dee+ementos nas rvores

    Veri7ue a a+tura das rvoresVeri7ue o desem$enho $ara%

    o Anser0o

    o /usca de metade dos e+ementoso Fa0a conc+uses com bases estatIsticas

    *$resenta0o% Am$reterive+mente :11