rvores equilibradas n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Árvores Equilibradas PowerPoint Presentation
Download Presentation
Árvores Equilibradas

Loading in 2 Seconds...

play fullscreen
1 / 16

Árvores Equilibradas - PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on

Árvores Equilibradas. Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias PATRICIA]. Árvores equilibradas. Árvore de pesquisa binária não garante acesso logarítmico

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Árvores Equilibradas' - rasul


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
rvores equilibradas
Árvores Equilibradas
  • Sumário
    • AVL
    • Splay
    • B
    • Vermelho-Preto
    • AA e BB
    • Multidimensionais
      • quaternárias
      • k-d
    • [Pesquisa Lexicográfica
      • tries multivia
      • tries binárias
      • PATRICIA]
rvores equilibradas1
Árvores equilibradas
  • Árvore de pesquisa binária não garante acesso logarítmico
    • Inserção e eliminação simples podem criar árvores desequilibradas
    • Pior caso é linear: árvore degenera em lista ligada
    • Pior caso ocorre tipicamente para inserções ordenadas
  • Árvores equilibradas
    • Evitam casos degenerados
    • Garantem O(log N) para operações de inserção, remoção e pesquisa
    • Requerem algoritmos mais elaborados para inserção e remoção
  • Condição adicional na árvore
    • condição de equilíbrio, garante que nenhum nó está demasiado profundo
rvores avl
Árvores AVL
  • Adelson-Velskii e Landis, 1962
  • Condição de equilíbrio: na altura das sub-árvores de cada nó
    • diferença de alturas não pode exceder 1
    • garante altura logarítmica para a árvore
    • é simples de manter
  • Definição
    • Uma árvore AVL é uma árvore de pesquisa binária que respeita a seguinte condição de equilíbrio: para qualquer nó da árvore, as alturas das sub-árvores esquerda e direita diferem no máximo de 1 unidade.
  • Altura de uma árvore
    • 1 + altura da sua sub-árvore mais alta
    • 0 para árvore só com 1 nó
    • -1 para árvore vazia
n mero de n s na rvore avl
Número de nós na árvore AVL
  • Uma árvore AVL de altura H tem pelo menos FH+3 -1 nós, em que Fi é o número de Fibonacci de ordem i
    • SH: tamanho da menor árvore AVL de altura H (S0 = 1, S1 = 2)
    • A árvore mais pequena de altura H tem sub-árvores de alturas H-1 e H-2
    • Cada sub-árvore terá, por sua vez, o número mínimo de nós para a sua altura
    • Então será SH = SH-1 + SH-2 +1
    • SH = FH+3 -1 , por indução:
      • S0 =1, é F3 -1
      • Se SH-1 = FH+2 -1 e SH-2 = FH+1 -1,

então SH = SH-1 + SH-2 +1 = FH+2 -1 + FH+1 -1 +1= FH+2 + FH+1 -1 = FH+3 -1

  • Fii /5, com = (1+ 5)/2  1.618
    • árvore de altura H tem no mínimo H+3 /5 nós
    • H < 1.44 log (N+2) -1.328 (não mais de 44% acima da mínima)
rvores avl1
Árvores AVL
  • Inserções e remoções podem destruir o equilíbrio de alguns dos nós da árvore
    • Necessário verificar condição e reequilibrar se tiver sido destruída

12

12

8

8

16

16

4

10

14

4

10

14

2

6

2

6

Inserção com violação da condição em 2 nós

5

inser o em rvores avl
Inserção em Árvores AVL
  • Após uma inserção, só os nós no caminho da raiz ao ponto de inserção podem ter a condição de equilíbrio alterada
    • condição só depende das alturas das sub-árvores de um nó
  • Para reequilibrar: subir no caminho até à raiz
    • reequilibrar o nó mais profundo onde surge desequilíbrio
    • toda a árvore resulta equilibrada
  • X: nó a reequilibrar devido a inserção em

1- árvore esquerda do filho esquerdo de X

2- árvore direita do filho esquerdo de X

3- árvore esquerda do filho direito de X

4- árvore direita do filho direito de X

  • Casos 1 e 4 simétricos; casos 2 e 3 simétricos
rota o simples
Rotação simples
  • k2 é nó mais profundo onde falha o equilíbrio
    • sub-árvore esquerda está 2 níveis abaixo da direita
      • B não está no mesmo nível de A, ou k2 estaria desequilibrado antes da inserção
      • B não está no mesmo nível que C, ou k1 seria nó desequilibrado mais fundo

k2

k1

Caso 1

k1

k2

C

A

A

B

B

C

rota o simples1
Rotação simples
  • Árvore resultante da rotação é AVL
    • k1 e k2 passam a ter subárvores da mesma altura
    • nova altura da árvore resultante é igual á da árvore anterior à inserção
    • problema fica resolvido com uma só operação

12

12

k2

k1

8

4

16

16

C

k1

A

k2

4

10

14

2

8

14

A

B

2

6

1

6

10

C

B

1

rota o simples com filho esquerdo
Rotação simples com filho esquerdo

/**

* Rotate binary tree node with left child.

* For AVL trees, this is a single rotation

* for case 1.

*/

static BinaryNode withLeftChild( BinaryNode k2 )

{

BinaryNode k1 = k2.left;

k2.left = k1.right;

k1.right = k2;

return k1;

}

rota o simples com filho direito
Rotação simples com filho direito

/**

* Rotate binary tree node with right child.

* For AVL trees, this is a single rotation

* for case 4.

*/

static BinaryNode withRightChild( BinaryNode k1 )

{

BinaryNode k2 = k1.right;

k1.right = k2.left;

k2.left = k1;

return k2;

}

rota o simples no caso 2
Rotação simples no caso 2
  • Rotação simples não resolve o desequilíbrio!
    • sub-árvore Q está a 2 níveis de diferença de R
    • sub-árvore Q passa a estar a 2 níveis de diferença de P

k2

k1

Caso 2

k1

k2

R

P

P

Q

Q

R

rota o dupla no caso 2
Rotação dupla no caso 2
  • Uma das subárvores B ou C está 2 níveis abaixo de D (e só uma)
    • k2, a chave intermédia, fica na raiz
    • posições de k1, k3 e subárvores completamente determinadas pela ordenação

k3

k2

Caso 2

k1

k1

k3

D

k2

A

A

B

C

D

B

C

rota o dupla
Rotação dupla
  • Rotação dupla pode ser vista como sequência de 2 rotações simples
    • rotação entre o filho e o neto de X
    • rotação entre X e o seu novo filho

12

12

k3

k2

8

6

16

16

D

k3

k1

k1

4

10

14

4

8

14

A

A

C

D

2

k2

6

2

B

5

10

B

C

5

rota o dupla com filho esquerdo
Rotação dupla com filho esquerdo

/**

* Double rotate binary tree node: first left child

* with its right child; then node k3 with new

* left child.

* For AVL trees, this is a double rotation for

* case 2.

*/

static BinaryNode doubleWithLeftChild( BinaryNode k3)

{

k3.left = withRightChild( k3.left );

return withLeftChild( k3 );

}

rota o dupla com filho direito
Rotação dupla com filho direito

/**

* Double rotate binary tree node: first right child

* with its left child; then node k1 with new

* right child.

* For AVL trees, this is a double rotation for

* case 3.

*/

static BinaryNode doubleWithRightChild(BinaryNode k1)

{

k1.right = withLeftChild( k1.right );

return withRightChild( k1 );

}

}

inser o em rvore avl
Inserção em árvore AVL
  • Algoritmo recursivo
    • Inserir nó com chave X numa árvore A
      • recursivamente, inserir na subárvore conveniente de A, SA
      • se a altura de SA não se modifica: terminar
      • se a altura de SA é modificada: se ocorre desequilíbrio em A, fazer as rotações necessárias para reequilibrar
    • Comparação de alturas
      • requer cálculo repetido de alturas das árvores: preferível manter o resultado da comparação como um factor de equilíbrio
  • Algoritmo iterativo
    • Especificar paragem logo que uma rotação é realizada