arvores-rubro-negras

6
Aula 13 Árvores de Busca Balanceadas Prof. Marco Aur ´ elio Stefanes marco em dct.ufms.br www.dct.ufms.br/ ˜ marco Aula 13 – p. 1 Árvore Binária de Busca Objetivo: Implementar operações de Busca, Inclusão, Remoção, Mínimo/Máximo e Predecessor/Sucessor em um conjunto de dados Representação da árvore binária Estrutura Ligada chave dados esq dir pai Aula 13 – p. 2 Árvore Binária de Busca Propriedades Se y está na subárvore esquerda de x então chave(y) chave(x) Se y está na subárvore direitaa de x então chave(y) chave(x) 5 2 8 7 3 5 2 3 5 5 8 7 Aula 13 – p. 3 Operações Busca e Sucessor Busca(T,k) Comece na raiz e compare k com a chave do nó corrente x 1. Se a chave é encontrada pare 2. Se a k < chave(x) busque na subárvore esquerda de x 3. Se a k > chave(x) busque na subárvore direita de x Sucessor(x): maior elemento menor que chave(x) Caso 1 dir(x) = NULO sucessor é o mínino na subárvore direita de x Caso 2 dir(x)= NULO Sucessor é primeiro nó à direita subindo pelos ancestrais de x Aula 13 – p. 4

Upload: igor-gomes

Post on 29-Sep-2015

227 views

Category:

Documents


1 download

DESCRIPTION

Aula sobre árvoress

TRANSCRIPT

  • Aula 13rvores de Busca Balanceadas

    Prof. Marco Aurelio Stefanesmarco em dct.ufms.br

    www.dct.ufms.br/ marco

    Aula 13 p. 1

    rvore Binria de BuscaObjetivo: Implementar operaes de Busca, Incluso,Remoo, Mnimo/Mximo e Predecessor/Sucessor em umconjunto de dados

    Representao da rvore binriaEstrutura Ligada

    chavedadosesq dir

    pai

    Aula 13 p. 2

    rvore Binria de BuscaPropriedades

    Se y est na subrvore esquerda de x entochave(y) chave(x)

    Se y est na subrvore direitaa de x entochave(y) chave(x)

    52 8

    73

    5 2

    3

    5

    5

    8

    7

    Aula 13 p. 3

    Operaes Busca e SucessorBusca(T, k)Comece na raiz e compare k com a chave do n corrente x1. Se a chave encontrada pare2. Se a k < chave(x) busque na subrvore esquerda de x3. Se a k > chave(x) busque na subrvore direita de x

    Sucessor(x): maior elemento menor que chave(x)

    Caso 1 dir(x) 6= NULOsucessor o mnino na subrvore direita de xCaso 2 dir(x) = NULOSucessor primeiro n direita subindo pelosancestrais de x

    Aula 13 p. 4

  • Operaes na rvore Binria de BuscaComplexidade das operaes

    Busca O(h)Incluso O(h)Remoo O(h)Mnimo O(h)Mximo O(h)Predecessor O(h)Sucessor O(h)

    Uma rvore Binria de Busca Balanceada se h = O(lg n)

    Aula 13 p. 5

    rvore Rubro-NegraVariao da rvore binria de busca (balanceada)Cada n possui um campo adicional: a cor do n, quepode ser rubro ou negroOperaes tomam O(lgn) no pior caso

    Propiedades de rvores Rubro-Negras1. Cada n rubro ou negro2. A raiz negra3. Cada folha (NIL) negra4. Se um n rubro seus dois filhos so negros5. Todo caminho de um n at uma folha contm o

    mesmo nmero de ns negrosAula 13 p. 6

    Exemplo de um rvore RN

    NIL NIL

    NIL

    NIL

    NIL NIL

    NIL

    NILNIL

    30

    38

    17

    14

    26

    41

    47

    53

    NIL[T]: Sentinela para todas as folhas e pai da raiz

    Aula 13 p. 7

    LemaDef.: a altura negra de um n x, hn(x) o nmero de nsnegros de um caminho at uma folha descendenteencluindo-se x.Afirmacao Uma subrvore com raiz em um n x tem pelomenos 2hn(x) 1 ns internosProva: Induo em h(x)Base: h(x) = 0 x folha hn(x) = 0 e 20 1 = 0 nsinternos na subrvorePI: h(x) > 0. A altura negra de cada filho de x hn(x) ouhn(x) 1, mas a altura de cada um de seus filhos menorque h(x). Portanto usando a HI, o nmero de ns internosna subrvore com raiz x pelo menos2.(2hn(x)1 1) + 1 = 2hn(x) 1.

    Aula 13 p. 8

  • LemaLema Qualquer rvore RN com n ns internos tem altura 2 lg(n + 1).

    Prova: Seja h a altura da rvore RN. Pela Prop. 4 a alturanegra da rvore pelo menos h/2. Portanto, pelaAfirmao temos n 2h/2 1 h = 2 lg(n + 1) 1

    Portanto a rvore RN balanceadaComo executar as operaes de Incluso e Remoosem alterar as propriedades?

    Aula 13 p. 9

    RotaesH dois tipos de rotao para reestruturar a rvore:Esquerda e DireitaHiptese para uma rotao esquerda em um n xPai da raiz NILFilho direito y de x no NIL

    x

    x y

    y

    Rotao_Esq(T, x)

    Rotao_Dir(T, y)

    Aula 13 p. 10

    Rotao_Esq(T, x)1: y = Dir[x]2: Dir[x] = Esq[y]3: if Esq[y] 6= NIL then4: p[Esq[y]] = x5: p[y] = p[x]6: if p[x] = NIL then7: root[T ] = y8: else9: if x = Esq[p[y]] then

    10: Esq[p[y]] = y11: else12: Dir[p[y]] = y13: Esq[y] = x14: p[x] = y

    Aula 13 p. 11

    Incluso na rvore Rubro-NegraIdia1. Insira um n z como em uma rvore binria de busca

    normal2. Pinte o n de vermelho3. Restaure as propriedades rubro-negras

    Devemos subir na rvore at restaurar as propriedades.Olharemos para dois ns, em especial:Notao:x n rubroy tio de x

    Aula 13 p. 12

  • Incluso na rvore Rubro-NegraCaso 1: Se y rubrocor[y]=negrocor[p[x]]=negrocor[p[p[x]]]=rubro

    11

    14

    151 7

    85

    4

    2

    x

    y

    Aula 13 p. 13

    Incluso na rvore Rubro-NegraCaso 2: Se y negrox filho direitox = p[x]Rotao_Esq(T, x)

    11

    14

    151 7

    85

    4

    2

    x

    y

    Aula 13 p. 13

    Incluso na rvore Rubro-NegraCaso 3: y negro e x filho esquerdocor[p[x]] =negrocor[p[p[x]]] =rubroRotao_Dir(T, p[p[x]])

    11

    14

    15

    y

    1

    2

    7

    8

    x

    5

    4

    Aula 13 p. 13

    Incluso na rvore Rubro-Negra

    y

    8

    15

    1

    2

    5

    4

    14

    11

    7

    x

    Aula 13 p. 13

  • Insere_RN(T, x)1: Insere(T, x)2: cor[x] = rubro3: while x 6= root[T ] e cor[p[x]] = rubro do4: if p[x] = Esq[p[p[x]]] then5: y = Dir[p[p[x]]]6: if cor[y] = rubro then7: cor[p[x]] = negro Caso 18: cor[y] = negro9: cor[p[p[x]]] =rubro

    10: x = p[p[x]]11: else12: if x = Dir[p[x]] then13: x = p[x] Caso 214: Rotacao_Esq(T, x)15: cor[p[x]] = negro q Caso 316: cor[p[p[x]]] = rubro17: Rotacao_Dir(T, p[p[x]])18: else19: simtrico ao anterior20: cor[root[T ]] = negro

    Aula 13 p. 14

    Anlise da InseroInserir um novo n na rvore: O(lgn)Restaurar propriedades

    O lao se repete se somente o Caso 1 executadoCaso 2 seguido sempre do Caso 3Caso 3 resolve o problemaO nmero de vezes que o lao executado O(lgn)

    Tempo total O(lg n)

    Aula 13 p. 15

    Remoo na rvore Rubro-NegraQual a cor do n a ser deletado? rubro?

    1. Todo n rubro ou negro. Ok!2. A raiz negra. Ok!3. Toda folha negra. Ok!4. Se um n rubro, seus dois filhos so negros

    No criamos dois ns rubros seguidos. Ok!5. Para cada n, todo caminho descendente de uma folha

    tem o mesmo nmero de ns negros.No mudamos nenhuma altura negra. Ok!

    Aula 13 p. 16

    Remoo na rvore Rubro-NegraQual a cor do n a ser deletado? negro?

    1. Todo n rubro ou negro. Ok!2. A raiz negra.

    Se removermos a raiz seu substituto pode ser rubro3. Toda folha negra. Ok!4. Se um n rubro, seus dois filhos so negros

    Podemos criar dois ns rubros seguidos.5. Para cada n, todo caminho descendente de uma folha

    tem o mesmo nmero de ns negros.Podemos mudar alguma altura negra.

    Aula 13 p. 17

  • Remoo na rvore Rubro-Negra1. Qual a cor do n a z ser deletado? negro2. Troque z pelo seus sucessor y3. Remove y

    Idia:

    1. Passar a cor de y para seu filho x. Viola a Prop. 1, poisx tem duas cores

    2. Mover negro extra para cimaat encontrar um rubro ou at atingir a raizfazer rotaes quando necessriasx sempre aponta para n duplo negro

    Complexidade: O(lgn)Aula 13 p. 18

    rvore Binria de Buscarvore Binria de BuscaOperaes Busca e Sucessorormalsize Operaes na rvore Binria de Buscarvore Rubro-NegraExemplo de um rvore RNLemaLemaRotaesRotao_Esq($T,x$)Incluso na rvore Rubro-NegraIncluso na rvore Rubro-NegraIncluso na rvore Rubro-NegraIncluso na rvore Rubro-NegraIncluso na rvore Rubro-Negra

    Insere_RN($T,x$)Anlise da InseroRemoo na rvore Rubro-NegraRemoo na rvore Rubro-NegraRemoo na rvore Rubro-Negra