1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S...

25
1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1 , S 2 , ....S n } qual o número total de comparações efetuadas para se localizar uma chave em S? para buscar uma chave S k , o algoritmo percorre o caminho da raiz até S k número de comparações nível de S k seja nivel (S k ) = L k e seja nivel(raiz) = 1

Transcript of 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S...

Page 1: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

1

Árvore Binária de Busca seja uma árvore binária de busca T, para

um conjunto de chaves S= { S1, S2, ....Sn} qual o número total de comparações

efetuadas para se localizar uma chave em S?para buscar uma chave Sk, o algoritmo percorre

o caminho da raiz até Sk

número de comparações nível de Sk

seja nivel (Sk) = Lk e seja nivel(raiz) = 1

Page 2: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

2

Árvore Binária de Busca o número total de comparações

necessárias para o acesso a todas as chaves de S é :

1kn Lk

definição: comprimento de caminho interno de T

I(T) = 1kn Lk

Page 3: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

3

Árvore Binária de Busca o total de comparações em buscas

realizadas com sucesso:O comprimento de caminho interno

buscas sem sucessocomparações também são realizadas termina obrigatoriamente em uma subárvore

vazia

Page 4: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

4

Árvore Binária de Busca As buscas sempre irão até um nó interno

que fica em um nível imediatamente superior a um nó externo

Seja L’k o nível do nó externo

As buscas cessam no nível L’k - 1E(T) - Comprimento de Caminho Externo

1kn (L’k - 1)

Page 5: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

5

Árvore Binária de Busca I(T) e E(T) mostram a qualidade da árvore

no problema de busca Os valores I(T)/n e E(T)/(n+1) representam

os números médios de comparações efetuadas em operações de busca com e sem sucesso, respectivamente.

Page 6: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

6

Árvore Binária de Busca

2

1

4 6

5

7

3

I(T) = 19em média I(T)/n = 2.71

E(T) = 26 em média E(T)/(n+1) = 3.25

Page 7: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

7

Árvore Binária de Busca Relação entre os comprimentos de

caminho interno e externo E(T) = I(T) + n

Se n = 1 , I(T) = 1 e E(T) = 1 + 1 = 2Suponha verdadeiro para ávores com n-1 nósSeja T com n nós internos ( n+1 nós externos )T’ é obtida de T retirando-se um nó v folha

substitui-se v e dois nós externos em T por um nó externo

T’ tem n-1 nós internos e n nós externos

Page 8: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

8

E(T’) = I(T’) + n-1

mas I(T’) = I(T) - Lv

E(T’) = E(T) - Lv - Lv + Lv -1

entãoE(T) = I(T) + n

Árvore Binária de Busca

Page 9: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

9

Seja S um conjunto de chaves S = {s1, s2, ..., sn }

Associado a sk

• nível lk• frequência de acesso fk

Mas na busca:

intervalos R = {R0,R1, R2, ..., Rn }

ABB com frequências diferenciadas

Page 10: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

10

ABB com frequências diferenciadas

s5

s3

s2

s4

s1

s7

s6 s

8

R0

R4R2

R1

R3 R5R6 R7

R8

Page 11: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

11

ABB com frequências diferenciadas

Associado a Rk

• nível l´k

• frequência de acesso f´k

Page 12: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

12

ABB com frequências diferenciadas

Busca com sucesso a sk:

lk comparações

total de comparações de todo o processo considerando a frequência de acesso da chave?

e considerando as buscas com sucesso de todas as chaves?

Page 13: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

13

ABB com frequências diferenciadas

Busca sem sucesso – atinge um dado Rk:

l´k - 1 comparações. Por que?

total de comparações de todo o processo considerando a frequência de acesso da chave?

e considerando as buscas com sucesso de todas as chaves?

Page 14: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

14

ABB com frequências diferenciadas

Custo da ABB T(n) com frequências de acesso:

comprimento do caminho interno ponderado

+ comprimento do caminho externo ponderado

C(T) = fk lk + f´k (l´k -1)

Page 15: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

15

ABB ponderada ótima

A ABB ótima – aquela com o custo mínimopara achá-la: programação dinâmica

sk

T´ T”< s

k

> sk

R0

... Rk-1

Rk

... Rn

Page 16: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

16

ABB ponderada ótima

Lema: As subárvores de uma árvore binária ótima também são ótimasprova?Se T é ótima, T´e T” também são,

conhecendo a raiz sk

como conhecer sk ?

como determinar T´e T” ?

Page 17: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

17

ABB ponderada ótima

tentar todo sk e para cada um, tentar T´e

T” ? fazer recursivamente para cada subárvore

até chegar ao caso trivialcaso base: subárvore vazia – conjunto de

chaves vazia

Page 18: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

18

ABB ponderada ótima

Seja T(i,j) a árvore ótima com:

chaves { si+1, ..., sj}

intervalos { Ri, ..., Rj}

Seja F(i,k) = fk + f´k

Page 19: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

19

ABB ponderada ótima

Lema: Seja T(i,j) a ABB ótima de raíz sk correspondentes as chaves { si+1, ..., sj}.

Então:

c(T(i,j)) = c(T(i,k-1)) + (T(k,j)) + F(i,j)

Provautilizar a função de custo ótima e separar as

frequencias, considerando a raiz sk

Page 20: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

20

Construção da ABB ponderada ótima

Calcular c(T(0,n)) recursivamentebase da recursão: c(T(i,i)) = 0

• árvore vaziamas.....

• repetição de cálculos• muitas subárvores a serem testadas

– exponencial?

Page 21: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

21

Construção da ABB ponderada ótima

Solução:utilização de tabelas, para calcular o custo

de cada subárvore somente uma vezcálculo de forma não recursivadas árvores menores para maiorespara cada subárvore T(i,j), testa-se todas as

suas chaves { si+1, ..., sj} para ser candidata

a raiz• escolha: a de menor custo

Page 22: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

22

Construção da ABB ponderada ótima

ABB_ótima () {

for j = 0, ..., n {c[j,j] = 0; F[j,j] = f´j;}

for d = 1, ..., nfor i = 0, ..., n – d {

j = i+d;

F[i,j] = F[i,j-1] + fj + f´j;

c[i,j] = min { c [i,k-1] + c [k, j]} + F[i,j]; i<k j

}

}

Page 23: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

23

Construção da ABB ponderada ótima

Entrada

j 0 1 2 3 4

fj - 10 1 3 2

f´j 2 1 1 1 1

Page 24: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

24

Construção da ABB ponderada ótima

c[i,j] 0 1 2 3 4

0

1

2

3

4

Page 25: 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S 1, S 2,....S n } qual o número total de comparações efetuadas.

25

Construção da ABB ponderada ótima

F[i,j] 0 1 2 3 4

0

1

2

3

4