A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Árvore Binária de Busca

Apresentações semelhantes


Apresentação em tema: "Árvore Binária de Busca"— Transcrição da apresentação:

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 1 1 114

2 Árvore Binária de Busca
o número total de comparações necessárias para o acesso a todas as chaves de S é : 1kn Lk definição: comprimento de caminho interno de T I(T) = 1kn Lk 2 2 115

3 Árvore Binária de Busca
o total de comparações em buscas realizadas com sucesso: O comprimento de caminho interno buscas sem sucesso comparações também são realizadas termina obrigatoriamente em uma subárvore vazia 3 3 116

4 1kn (L’k - 1)‏ Á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 - 1 E(T) - Comprimento de Caminho Externo 1kn (L’k - 1)‏ 4 4 117

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. 5 5 118

6 Árvore Binária de Busca
I(T) = 19 em média I(T)/n = 2.71 E(T) = 26 em média E(T)/(n+1) = 3.25 6 6 119

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) = = 2 Suponha verdadeiro para ávores com n-1 nós Seja 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 7 7 120

8 Árvore Binária de Busca
E(T’) = I(T’) + n-1 mas I(T’) = I(T) - Lv E(T’) = E(T) - Lv - Lv + Lv -1 então E(T) = I(T) + n 8 8 121

9 ABB com frequências diferenciadas
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 } 9 9 121

10 ABB com frequências diferenciadas
10 10 121

11 ABB com frequências diferenciadas
Associado a Rk nível l´k frequência de acesso f´k 11 11 121

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? 12 12 121

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? 13 13 121

14 C(T) =  fk lk +  f´k (l´k -1)‏
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)‏ 14 14 121

15 ABB ponderada ótima A ABB ótima – aquela com o custo mínimo
para achá-la: programação dinâmica sk < sk T” > sk R Rk-1 Rk ... Rn 15 15 121

16 ABB ponderada ótima Lema: As subárvores de uma árvore binária ótima também são ótimas prova? Se T é ótima, T´e T” também são, conhecendo a raiz sk como conhecer sk ? como determinar T´e T” ? 16 16 121

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 trivial caso base: subárvore vazia – conjunto de chaves vazia 17 17 121

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 18 18 121

19 c(T(i,j)) = c(T(i,k-1)) + (T(k,j)) + F(i,j)‏
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)‏ Prova utilizar a função de custo ótima e separar as frequencias, considerando a raiz sk 19 19 121

20 Construção da ABB ponderada ótima
Calcular c(T(0,n)) recursivamente base da recursão: c(T(i,i)) = 0 árvore vazia mas..... repetição de cálculos muitas subárvores a serem testadas exponencial? 20 20 121

21 Construção da ABB ponderada ótima
Solução: utilização de tabelas, para calcular o custo de cada subárvore somente uma vez cálculo de forma não recursiva das árvores menores para maiores para 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 21 21 121

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, ..., n for 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 } 22 22 121

23 Construção da ABB ponderada ótima
Entrada j 1 2 3 4 fj - 10 f´j 23 23 121

24 Construção da ABB ponderada ótima
c[i,j] 1 2 3 4 24 24 121

25 Construção da ABB ponderada ótima
F[i,j] 1 2 3 4 25 25 121


Carregar ppt "Árvore Binária de Busca"

Apresentações semelhantes


Anúncios Google