1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S...
Transcript of 1 Árvore Binária de Busca seja uma árvore binária de busca T, para um conjunto de chaves S= { S...
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
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
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
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)
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.
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
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
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
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
10
ABB com frequências diferenciadas
s5
s3
s2
s4
s1
s7
s6 s
8
R0
R4R2
R1
R3 R5R6 R7
R8
11
ABB com frequências diferenciadas
Associado a Rk
• nível l´k
• frequência de acesso f´k
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?
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?
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)
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
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” ?
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
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
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
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?
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
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
}
}
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
24
Construção da ABB ponderada ótima
c[i,j] 0 1 2 3 4
0
1
2
3
4
25
Construção da ABB ponderada ótima
F[i,j] 0 1 2 3 4
0
1
2
3
4