ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. ·...

47
ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS Cristina Boeres

Transcript of ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. ·...

Page 1: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

ESTRUTURA DE DADOS E ALGORITMOS

ÁRVORES BALANCEADAS

Cristina Boeres

Page 2: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária - altura máxima

Seja a árvore A formada com as seguintes inserções !  1, 2, 3, 4, 5, 6 e 7

!  Pior caso: O(n)

1

2

3

4

5

6

7

Page 3: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária - altura máxima

No entanto, seja A formada com as seguintes inserções !  Inserção de 4, 2, 6, 1, 3, 5 e 7, nesta ordem

!  Pior caso: O(log n) 1

2

3

4

5

6

7

Page 4: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária de altura máxima

!  Para árvores com n nós: !  altura máxima: cada nó não folha só

possui um filho "  Ziguezague "  linha

!  sua altura é n-1

Page 5: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária - altura mínima

Sabemos que, em uma árvore binária de busca:

●  nível 0 – (somente a raiz) contém um nó ●  nível 1 – contém no máximo 2 nós

.....

●  no nível L - pode conter no máximo 2L nós

●  árvore binária cheia de altura d tem exatamente 2L nós em cada nível 0 ≤ L ≤ d

Page 6: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária

!  O total de nós n em uma árvore binária cheia (que seria o máximo) de altura d é a soma do número de nós a cada nível

n = 20 + 21 + 22 + ..... + 2d

n = 2d+1 -1

d = log (n+1) –1

!  O número de folhas de uma árvore cheia com n nós

2d = 2log(n+1)-1 = 2log(n+1) = n+1 2 2

Page 7: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária Cheia

Page 8: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvore Binária - altura mínima

!  As árvores completas tem a menor altura ●  Melhor para buscar vértices

!  Mas como manter uma árvore completa, considerando um conjunto de inserções e remoções?

1

2

3

4

5

6

Insere 0

1

2

3

4

5

6

0

Page 9: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Solução: árvores balanceadas

!  importante manter balanceadas árvores binária de busca

!  Árvore Balanceada ou AVL (Adelson, Velsky e Landis (1962))

!  a altura de uma árvore binária é o maior nível de suas folhas

!  A altura de uma árvore vazia é definida como -1

Adelson-Velskii, G.; E. M. Landis (1962). "An algorithm for the organization of information". Proceedings of the USSR Academy of Sciences 146: 263–266. (Russian) English translation by Myron J. Ricci in Soviet Math. Doklady, 3:1259–1263, 1962.

Page 10: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL - definição

!  árvore AVL é uma árvore binária de busca onde: ●  para cada vértice, a altura das duas sub-árvores não difere por

mais de um

!  se a inequação acima acontece para um vértice v •  v é dito regulado

!  senão, •  desregulado

|altura (subdir (v)) - altura (subesq(v))| <= 1

Page 11: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL - definição

!  toda árvore completa é AVL e toda AVL é completa?

Page 12: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL - definição

!  Qual a altura da árvore AVL? ●  tem altura mínima? ●  Quer dizer, a altura da árvore, h, é O(log n)

●  Podemos formular esse problema da seguinte forma: "  Dada uma árvore AVL de altura h, qual seria o menor

número de nós n?

Page 13: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL de altura h

!  Vamos trabalhar com o número mínimo de nós !  Sem perda de generalidade, por definição:

subarv de altura h-2

subarv de altura h-1

v

Page 14: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL de altura h

!  Suponha altura(subesq(v)) = h-1 !  Qual o número mínimo de nós?

!  Como queremos analizar o número mínimo de nós, então altura(subd(v)) = h-2

!  árvore AVL construída recursivamente, sendo | Th | o número de nós da AVL de altura h

h = 0 Th tem 0 nós: | Th | = 0 h = 1 | Th | = 1 h = 2 | Th | = 1 + | Th-1 | + | Th-2 |

Page 15: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL de altura h

!  Qual o número mínimo de nós?

Page 16: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL de altura h

!  Qual o número mínimo de nós? !  Por observação:

!  o h-ésimo elemento da sequência de Fibonacci é: !  Fh = 0 se h = 0 !  Fh = 1 se h = 1 !  Fh = Fh-1 + Fh-2 se h > 1

!  análogo a |Th|, mas diferindo de 1: |Th| = Fh + 1 !  pode-se provar que (exercício 5.3) ‏!  Fh = 1/ √5 [( (1+ √5)h/2) - ((1- √5)h/2 )]

|Th| = Fh + 1

termo < 1 se h>0

Page 17: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL de altura h

!  Como |Th| = Fh + 1 e Fh = 1/ √5 [( (1+ √5)h/2) - ((1- √5)h/2 )]

!  |Th| > 1/ √5 [( (1+ √5)h/2) - ((1- √5)h/2 )] – 1

fazendo a = ( (1+ √5)/2) temos

!  |Th| > 1/ √5 ah – 1

!  |Th|+ 1 > 1/ √5 ah

!  loga (|Th| + 1) > loga (ah/ √5)

!  loga (|Th| + 1) > h loga √5 (mudando para base 2) ���

!  log2 (|Th| + 1)/ log2 a > h √5

# h = O (log n)

Page 18: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  A cada inclusão, é preciso verificar se a árvore A continua sendo AVL

●  Tem algum nó desregulado?

●  Se sim, aplicar uma transformação para que regule

"  Rotações para igualar as alturas

Page 19: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  Como saber se um nó está desregulado?

!  Manter a informação balanço de um nó ( balanço(v) )

●  Altura da subárvore direita MENOS a altura da subárvore esquerda

!  Sejam

●  he(p) - altura das subarvores esquerda

●  hd(p) - altura das subarvores direita

!  Então:

●  balanço(v) = hd(v) – he(v)

Page 20: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  cada vértice de árvore binária AVL balanceada

●  balanço(v) é : -1, 0 ou 1

!  A cada inserção de um nó q em T

●  Identificar se algum nó se tornou desregulado

●  cuidado: manter a ordenação entre as chaves

Page 21: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  Se T não continua AVL depois da inclusão de um vértice q

!  Procure o nó mais próximo da folha q que se tornou desregulado

●  Onde está esse nó?

●  Seja p esse nó # está entre a raíz e a folha q

!  Então

| he(p) – hd(p) | > 1 (na verdade =2)

Page 22: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

a 1

b 1

c 0

d 0

e 0

f -1

g 1

h 0

i 0

j 0

k 0

l 0

m 0

n 0

o 0

p 0

q 0

Page 23: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

a 1

b -2

c 0

d -1

e 0

f -1

g 1

h -1

i 0

j 0

k 0

l 0

m 0

n 0

o 0

p 0

q 0

0 q

Page 24: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

a 1

b -2

c 0

d 1

e 0

f -1

g 1

h -1

i 0

j 0

k 0

l 0

m 0

n 0

o 0

p 0

q 0

0 q

Desregulado – é o nó p

Page 25: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  Então temos os seguintes casos:

| he(p) – hd(p) | = 2

Caso I: he(p) > hd (p)

!  Logo he(p) = hd (p) + 2

!  Existe um filho esquerdo de p, chamado de u tal que u≠q e ainda

●  he (u) ≠ hd (u)

Page 26: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso I: he(p) > hd(p)

!  he(u) ≠ hd(u)

Caso I.1) he(u) > hd(u)

!  Então he(u) = hd(u) + 1

!  Mas (i) he(u) + 1 = he(p)

!  Como he(p) = hd(p) + 2, então em (i)

!  he(u) +1 = hd(p) +2 ●  he(u) = hd(p) +1

●  hd(u) + 1 = hd(p) + 1

"  hd(u) = hd(p)

p

u

q

Page 27: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso I.1) he(u) > hd(u)

!  Solução: rotação a direita

p

u p

u

T1 T2

T3

T1 T2 T3

Page 28: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso I: he(p) > hd(p)

Caso I.2) he(u) < hd(u)

!  Então he(u) + 1 = hd(u)

!  Seja v, o filho direto de u

●  Raiz da subárvore mais pesada

●  As subárvores de v podem ter o mesmo tamanho ou podem diferir de uma unidade

●  Então, como he(u) + 1 = hd (u)

"  he(u) + 1 = max { he(v), hd(v)} +1

"  he(u) = max { he(v), hd(v)} (i)

p

u

v

T1

T2 T3

T4

Page 29: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso I.2) he(u) < hd(u)

!  Temos ainda que he(p) = hd(p) + 2

!  E como he(u)+ 2 = he(p)

!  Então he(u)+ 2= hd(p) + 2

!  Ou seja he(u) = hd(p) (ii)

!  Como visto anteriormente em (i)

●  he(u) = max { he(v), hd(v)}

!  (i) em (ii) temos que max { he(v), hd(v)} = hd(p)

p

u

v

T1

T2 T3

T4

Page 30: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso I.2) he(u) < hd(u)

!  Solução: rotação dupla p

u

v

T1

T2 T3

T4

p

u

v

T1 T2 T3

T4 p

u

v

T1 T2 T3 T4

Page 31: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso II: he(p) < hd(p)

!  Caso análogo. Então, um nó z filho de p é identificado, tal que

!  he(z) ≠ hd(z)

!  z está regulado

Caso II.1) he(z) < hd(z)

!  O lado direito pesa mais

!  Por cálculos análogos

" he(z) = he(p)

p

z

q

Page 32: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso II.1) he(z) < hd(z)

!  he(z) = he(p)

!  Solução: rotação a esquerda

p

z

q

p

z

q

Page 33: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso II: he(p) < hd(p)

Caso II.2) he(z) > hd(z)

!  Por motivos análogos

"  hd(z) = max { he(y), hd(y)} = he(p)

p

z

y

Page 34: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso II.2) he(z) > hd(z): Solução: rotação dupla

p

z

y

p

z

y

Page 35: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

Caso II.2) he(z) > hd(z): Solução: rotação dupla

p

z

y p z

y

Page 36: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Inclusões na árvore AVL

!  Após rotação apropriada, p se torna regulado

!  Sua altura diminui de uma unidade

!  Então, todos os nós desregulados, ancestrais de p, que estão no caminho da raiz até o nó q (incluído), se tornam regulados

Page 37: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

!  É uma árvore binária de busca – mas balanceada

!  Inclusão de um nó dado q um valor ainda não existente

!  Como já visto

!  Agora, no caminho (inverso) da raiz até o nó q, verificar se o nó se tornou desregulado

!  Se positivo, identificar o caso, e realizar rotações

Page 38: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

!  Qual a informação que deve ser mantida para cada nó, para que seja identificado eficientemente se ele está ou não regulado

balanço(v) = hd(v) – he(v)

!  Inicialmente, balanço(v) = 0 para o nó incluído

Page 39: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

balanço(v) = hd(v) – he(v)

!  Antes da inserção balanço(v) = 1

!  Inserção na subárvore esquerda de v

!  Após a inserção balanço(v) = 0

Page 40: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

balanço(v) = hd(v) – he(v)

!  Antes da inserção balanço(v) = 0

!  Inserção na subárvore esquerda de v

!  Após a inserção balanço(v) = -1

Page 41: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

balanço(v) = hd(v) – he(v)

!  Antes da inserção balanço(v) = -1

!  Inserção na subárvore esquerda de v

!  Após a inserção balanço(v) = -2 # NÓ DESREGULADO

●  Empregar a rotação necessária

Page 42: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Implementação da Inclusão na AVL

balanço(v) = hd(v) – he(v)

!  Inserção na subárvore direita de v

●  Casos análogos (simétrico)

!  Como fica o algoritmo de INSERÇÃO em ABB AVL?

!  Como fica o algoritmo de REMOÇÃO em ABB AVL?

Page 43: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL - exemplos

44

17 78

32 50 88

62 48 0 0

0

2

3

1

0

Em cada vértice v, altura(v) é calculada

Page 44: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL – fator de balanceamento

44

17 78

32 50 88

62 48 0 0

0 0

-1

1

1

0

Balanço(v)

Page 45: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL – inserções

1

0

0 -1

-1 0 1 0

0 0 0 0 0 0

0 0 0

Page 46: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL – inserções - balanceada

1

0

0 -1

-1 0 1 0

0 0 0 0 0 0

0 0 0

Page 47: ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADASboeres/slides_ed/ed10.pdf · 2016. 11. 3. · Solução: árvores balanceadas ! importante manter balanceadas árvores binária

Árvores AVL – inserções - desbalanceada

1

0

0 -1

-1 0 1 0

0 0 0 0 0 0

0 0 0