Você está na página 1de 45

rvore Binria de Busca tima

Siang Wun Song - Universidade de So Paulo - IME/USP

MAC 5710 - Estruturas de Dados - 2008

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Referncia bibliogrca

Os slides sobre este assunto so parcialmente baseados nas sees sobre rvore binria de busca tima do captulo 4 do livro N. Wirth. Algorithms + Data Structures = Programs. Prentice Hall, 1976.

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore binria de busca tima


H situaes em que sabemos com antecedncia quais as chaves que sero buscadas e, mais ainda, com que freqncia ou probabilidade cada chave ser buscada. Nesse caso, podemos construir uma rvore binria de busca tima que ser eciente para a operao de busca. Inseres e remoes no so usualmente efetuadas na rvore assim construda pois elas podem modicar a sua estrutura. Caso inseres e remoes so permitidas, ento se deve periodicamente reconstruir a rvore tima. A melhor rvore binria de busca depende das probabilidades de acesso das chaves. Quando a distribuio dessas probabilidades no uniforme, a melhor rvore binria de busca no necessriamente uma rvore binria perfeitamente balanceada. Intuitivamente, queremos colocar as chaves mais buscadas mais prximas ao topo da rvore binria. Vamos estudar como constuir uma rvore binria de busca tima. Mas, antes, temos que denir o que se entende por rvore binria de busca tima.
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Comprimento de caminho ponderado de uma rvore


Denotamos por comprimento de caminho hi de um n ki o nmero de ns encontrados desde a raiz at o n ki . Ele expressa o nmero de comparaes realizadas para buscar uma chave no n ki . Considere uma rvore binria de busca com n chaves k1 < k2 < . . . < kn . Suponha que se conhece a probabilidade de acesso de cada uma das chaves: sendo pi a probabilidade de acesso chave ki , para 1 i n:
n

pi = 1
i=1
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Comprimento de caminho ponderado de uma rvore


O custo de busca P da rvore expresso pelo comprimento de caminho ponderado da rvore, assim denida:
n

P=
i=1

pi hi

onde pi a probabilidade de acesso chave ki e hi o comprimento de caminho de ki . Se toda chave tem igual probabilidade de ser buscada, ento pi = 1/n, 1 i n e teremos o comprimento de caminho mdio da rvore, j visto anteriormente:
n n

P=
i=1

pi hi =
i=1

hi 1 = n n

hi
i=1

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore binria de busca tima


Considere rvores binrias de busca com n chaves k1 < k2 < . . . < kn . Seja pi a probabilidade de acesso chave ki , para 1 i n. Dentre todas tais rvores, dita rvore binria de busca tima aquela que minimiza o custo P:
n

P=
i=1

pi hi

onde hi o comprimento de caminho de ki .

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Exemplo de uma rvore binria de busca tima


Considere n = 3 e as 3 chaves k1 = 100 k2 = 200 k3 = 300 com as respectivas probabilidades de acesso p1 = p2 = p3 =
1 7 2 7 4 7.

Vamos ilustrar as possveis rvores binrias de busca e seu respectivo custo P.

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore 1
Custo P = 3
1 7

+2

2 7

+1

4 7

11 7

300 200 100


2 7

4 7

1 7

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore 2
Custo P = 3
2 7

+2

1 7

+1

4 7

12 7

300
1 7

4 7

100 d d 2 7 200

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore 3
Custo P = 2
1 7

+2

4 7

+1

2 7

12 7

2 7

200 d d
4 7

1 7

100

d d 300

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore 4
Custo P = 3
2 7

+2

4 7

+1

1 7

15 7

1 7

100 d d d d 300 200


4 7

2 7

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvore 5
Custo P = 3
4 7

+2

2 7

+1

1 7

17 7

1 7

100 d d
2 7

d d 200 d d 4 7 300

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Obs. 1: A rvore tima no sempre balanceada


rvore 1 a rvore tima e no balanceada.

300 200 100


2 7

4 7

1 7

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Obs.2: A estratgia gulosa no funciona


Pode parecer que basta adotar uma estratgia gulosa e comear colocando a chave de maior probabilidade de acesso na raiz. O exemplo mostra uma rvore tima com as probabilidades de acesso em vermelho. A chave de maior probababilidade de acesso no est na raiz.
0,2 300 d 0,4 100 d d 0,1 200 d d d 0,3 400

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Busca de chaves ausentes na rvore


Pode-se estranhar por que sempre a chave buscada tem que estar na rvore. Muitas vezes, o que procuramos no est na rvore. Quando buscamos uma chave ausente, camos num ponteiro nil. Na gura, representamos pela cor vermelha os ns ctcios em que caem as buscas de chaves ausentes. Nessa formulao mais geral, ns internos representam chaves presentes e as folhas (ns ctcios vermelhos) representam intervalos de chaves ausentes.
k2 Uma rvore com 4 chaves k1 , k2 , k3 e k4 k1

d d d d
k4

d d

k3

d d

d
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Uma formulao mais geral de rvore tima


Considere rvores binrias de busca com n chaves k1 < k2 < . . . < kn . Seja hi o comprimento de caminho da chave ki , 1 i n. Conhecemos as probabilidades, pi e qi , com n n i=0 qi = 1, onde i=1 pi + pi = a probabilidade de acesso chave ki , para 1 i n. q0 = a probabilidade de acesso a toda chave x, x < k1 . qn = a probabilidade de acesso a toda chave x, x > kn . qi = a probabilidade de acesso a toda chave x, ki < x < ki+1 , 1 i < n. Uma rvore binria de busca tima aquela que minimiza o custo P, onde hi representa o comprimento de caminho do n ctcio em que caem buscas sem sucesso.
n n

P=
i=1

pi hi +
i=0

qi hi

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Para o exemplo da rvore com 4 chaves


p2 k2 Uma rvore com 4 chaves k1 , k2 , k3 e k4 p1 k1

d d d d d
p4 k4

d
q0

d d
q1

p3 k3

d d d
q4

d d
q2 q3

Uma rvore binria de busca tima minimiza o custo P:


4 4

P=
i=1

pi hi +
i=0

qi hi

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Uso de freqncias no lugar de probabilidades


Freqncias de acesso podem ser levantadas experimentalmente. Um modo equivalente usar as freqncias no lugar das probabilidades. Sejam freqncias de acesso, ai e bi , com onde
n i=1

ai +

n i=0

bi = W ,

ai = a freqncia de acesso chave ki , 1 i n. b0 = a freqncia de acesso a toda chave x, x < k1 . bn = a freqncia de acesso a toda chave x, x > kn . bi = a freqncia de acesso a toda chave x, ki < x < ki+1 , 1 i < n. Temos: pi = ai /W , 1 i n e qi = bi /W , 0 i n. A rvore binria de busca tima ento aquela que minimiza
n n

P=
i=1

ai hi +
i=0

bi hi

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Como obter uma rvore binria de busca tima


No exemplo para n = 3 chaves, enumeramos todas as 5 rvores binrias possveis e depois obtivemos a tima. Pergunta: este mtodo vivel? Qual a sua complexidade de tempo? Dado n, o nmero de rvores binrias possveis com n ns um nmero chamado nmero Catalan que vale: 2n (2n)! 1 = (n+1)!n! Cn = n+1 n
n 0 1 2 3 4 5 6 7 8 9 10 11 12 Cn 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 n 13 14 15 16 17 18 19 20 21 22 23 24 25 Cn 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343059613650 1289904147324 4861946401452
rvore Binria de Busca tima

Siang Wun Song - Universidade de So Paulo - IME/USP

Como obter uma rvore binria de busca tima


No exemplo para n = 3 chaves, enumeramos todas as 5 rvores binrias possveis e depois obtivemos a tima. Pergunta: este mtodo vivel? Qual a sua complexidade de tempo? Dado n, o nmero de rvores binrias possveis com n ns um nmero chamado nmero Catalan que vale: 2n (2n)! 1 = (n+1)!n! Cn = n+1 n
n 0 1 2 3 4 5 6 7 8 9 10 11 12 Cn 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 n 13 14 15 16 17 18 19 20 21 22 23 24 25 Cn 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343059613650 1289904147324 4861946401452
rvore Binria de Busca tima

Siang Wun Song - Universidade de So Paulo - IME/USP

Como obter uma rvore binria de busca tima


No exemplo para n = 3 chaves, enumeramos todas as 5 rvores binrias possveis e depois obtivemos a tima. Pergunta: este mtodo vivel? Qual a sua complexidade de tempo? Dado n, o nmero de rvores binrias possveis com n ns um nmero chamado nmero Catalan que vale: 2n (2n)! 1 = (n+1)!n! Cn = n+1 n
n 0 1 2 3 4 5 6 7 8 9 10 11 12 Cn 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 n 13 14 15 16 17 18 19 20 21 22 23 24 25 Cn 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343059613650 1289904147324 4861946401452
rvore Binria de Busca tima

Siang Wun Song - Universidade de So Paulo - IME/USP

Mtodo de programao dinmica


Em alguns algoritmos, a inecincia se deve ao no reuso de resultados j calculados anteriormente. A idia bsica do mtodo de programao dinmica o armazenamento e uso de solues timas de subproblemas para obter a soluo tima do problema geral. Propriedade de rvores binrias de busca timas: Se uma rvore binria de busca tima, ento as suas subrvores so timas.
rr rr ento a subrvore esq. L e a subrvore dir. R d d tima = = tima L d R d d d
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Se esta rvore tima =

Raiz

Expresso de P em termos de PL e PR

Seja W = n ai + n bi denominado o peso da rvore, i.e. i=1 i=0 o nmero total de buscas efetuadas, incluindo as com ou sem sucesso.
P =
Raiz

PL =

d L d d

rr r d R d d

= PR

Qualquer busca que segue para L ou para R passa pela raiz. Temos portanto P = PL + W + PR .

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Exemplo que ilustra a relao P = PL + W + PR


a2 k2

d
Seja uma rvore com 4 chaves k1 , k2 , k3 e k4 a1 k1

d d d d
a4 k4

d
b0

d d
b1

a3 k3

d d d
b4

d d
b2 b3

P = 2a1 + a2 + 3a3 + 2a4 + 3b0 + 3b1 + 4b2 + 4b3 + 3b4 PL = a1 + 2b0 + 2b1 e PR = 2a3 + a4 + 3b2 + 3b3 + 2b4 P = PL + (a1 + a2 + a3 + a4 ) + (b0 + b1 + b2 + b3 + b4 ) +PR
Pn

W =

n i=1

ai +

n i=0

i=1

ai

Pn

i=0

bi

bi e o exemplo ilustra P = PL + W + PR .
rvore Binria de Busca tima

Siang Wun Song - Universidade de So Paulo - IME/USP

Construo de uma rvore binria de busca tima

O mtodo de programao dinmica constri uma rvore tima a partir de subrvores timas. Vamos ilustrar o mtodo com um pequeno exemplo. Sem perda de generalidade, vamos usar a formulao mais simples, sem considerar frequncias de buscas de chaves ausentes. Sejam n = 5 chaves valendo 1, 2, 3, 4 e 5 com as respectivas freqncias de acesso: chave 1 2 3 4 5 freq. 10 4 20 16 2 Vamos construir uma rvore binria de busca tima de 5 ns com as 5 chaves dadas.

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com uma chave


Chave ki Freq. ai 1 10 2 4 3 20 4 16 5 2

Chave 1: A rvore tima s tem a raiz onde ca a chave 1. P = 10. Chave 2: A rvore tima s tem a raiz onde ca a chave 2. P = 4. Chave 3: A rvore tima s tem a raiz onde ca a chave 3. P = 20. Chave 4: A rvore tima s tem a raiz onde ca a chave 4. P = 16. Chave 5: A rvore tima s tem a raiz onde ca a chave 5. P = 2.
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

rvores com duas chaves


Chaves 1 e 2:
1 na raiz.
1 W = 14 P = W + PL + PR = 18 menor =4

r
PL = 0 =

rr r d = PR chave d 2 d

2 na raiz.
2 W = 14 P = W + PL + PR = 24 = PR = 0

PL = 10 = d chave d 1 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com duas chaves


Chaves 2 e 3:
2 na raiz.
2 W = 24 P = W + PL + PR = 44 = 20

r
PL = 0 =

rr r d = PR chave d 3 d

3 na raiz.
3 W = 24 P = W + PL + PR = 28 menor = PR = 0

PL = 4 = d chave d 2 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com duas chaves


Chaves 3 e 4:
3 na raiz.
3 W = 36 P = W + PL + PR = 52 menor = 16

rr
PL = 0 =

r r d = PR chave d 4 d

4 na raiz.
4 W = 36 P = W + PL + PR = 56 = PR = 0

PL = 20 = d chave d 3 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com duas chaves


Chaves 4 e 5:
4 na raiz.
4 W = 18 P = W + PL + PR = 20 menor =2

r
PL = 0 =

rr r d = PR chave d 5 d

5 na raiz.
5 W = 18 P = W + PL + PR = 34 = PR = 0

PL = 16 = d chave d 4 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com trs chaves


Chaves 1, 2 e 3:

1 na raiz.
1 W = 34 PL = 0 = P = W + PL + PR = 62 = 28

rr r d = PR chaves 2 e 3d

2 na raiz.
2 W = 34 P = W + PL + PR = 64 = 20

rr r PL = 10 = d d = PR chave chave 1 d 3 d 3 na raiz.


3 W = 34

P = W + PL + PR = 52 menor = PR = 0

PL = 18 = d chaves 1 e 2d
Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com trs chaves


Chaves 2, 3 e 4:

2 na raiz.
2 W = 40 PL = 0 = P = W + PL + PR = 92 = 52

rr r d = PR chaves 3 e 4d

3 na raiz.
3 W = 40 P = W + PL + PR = 60 menor = 16

rr r PL = 4 = d d = PR chave chave 2 d 4 d 4 na raiz.


4 W = 40

P = W + PL + PR = 68 = PR = 0

PL = 28 = d chaves 2 e 3d
Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com trs chaves


Chaves 3, 4 e 5:

3 na raiz.
3 W = 38 PL = 0 = P = W + PL + PR = 58 menor = 20

rr r d = PR chaves 4 e 5d

4 na raiz.
4 W = 38 P = W + PL + PR = 60 =2

rr r PL = 20 = d d = PR chave chave 3 d 5 d 5 na raiz.


5 W = 38

P = W + PL + PR = 90 = PR = 0

PL = 52 = d chaves 3 e 4d
Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com quatro chaves


Chaves 1, 2, 3 e 4:
1 na raiz.
1 W = 50 P = W + PL + PR = 110 = 60

r
PL = 0 =

rr r d = PR chaves d 2, 3 e 4 d

2 na raiz.
2 W = 50 P = W + PL + PR = 112 = 52

rr r r d = PR PL = 10 = d chaves chave d 1 d 3 e 4d d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com quatro chaves


Chaves 1, 2, 3 e 4:
3 na raiz.
3 W = 50 PL = 18 = P = W + PL + PR = 84 menor = 16

d chaves 1 e 2d d

rr

r r d = PR chave d 4 d

4 na raiz.
4 W = 50 P = W + PL + PR = 102 = PR = 0

PL = 52 = d chaves d 1, 2 e 3 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com quatro chaves


Chaves 2, 3, 4 e 5:
2 na raiz.
2 W = 42 P = W + PL + PR = 100 = 58

r
PL = 0 =

rr r d = PR chaves d 3, 4 e 5 d

3 na raiz.
3 W = 42 P = W + PL + PR = 66 menor = 20

rr r r d = PR PL = 4 = d chaves chave d 2 d 4 e 5d d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com quatro chaves


Chaves 2, 3, 4 e 5:
4 na raiz.
4 W = 42 P = W + PL + PR = 72 =2

r rr r d = PR PL = 28 = d chaves chave d 2 e 3d d 5 d 5 na raiz.


5 W = 42

P = W + PL + PR = 102 = PR = 0

PL = 60 = d chaves d 2, 3 e 4 d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com cinco chaves


Chaves 1, 2, 3, 4 e 5:

1 na raiz.
1 W = 52 PL = 0 = P = W + PL + PR = 114 = 62

rr r d = PR chaves 2, 5 3, 4 ed

2 na raiz.
2 W = 52 P = W + PL + PR = 120 = 58

rr r PL = 10 = d d = PR chave chaves 3, d 1 d 4e5 3 na raiz.


3 W = 52

P = W + PL + PR = 90 menor = 20

r r r PL = 18 = d d = PR chaves chaves 1 e 2d 4 e 5d
Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

rvores com cinco chaves

Chaves 1, 2, 3, 4 e 5:

4 na raiz.
4 W = 52 P = W + PL + PR = 106 =2

rr r PL = 52 = d d = PR chaves chave 1, 2e3 d 5 d 5 na raiz.


5 W = 52

P = W + PL + PR = 146 = PR = 0

PL = 94 = d chaves 1, 4 2, 3 ed

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

A rvore tima obtida


3 W = 52 P = W + PL + PR = 90

rr rr d d PL = 18 = = PR chaves chaves d d 4e5 d 1e2 d

= 20

Basta recuperar a rvore tima com chaves 1 e 2 e a rvore tima com chaves 4 e 5. Temos:
3

r rr

d d
2

d d d
5

Pode-se ver que o papel de W na quantidade P a ser minimizada nulo, j que W entra em todas as comparaes. Ento podemos dispensar o uso de W na minimizao de P.
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Algoritmo para construir uma rvore de busca tima


Sejam dadas n chaves k1 < k2 < . . . < kn , com suas freq. de busca ai de chaves presentes e freq. de busca de bi de chaves ausentes, conforme j denidas. Denote por Tij uma rvore binria de busca tima com as chaves ki+1 , ki+2 , . . . , kj , com peso wij e caminho pij denidos assim: wii = bi , 0 i n wij = wi(j1) + aj + bj , 0 i < j n pii = wii , 0 i n pij = wij + mini<mj (pi(m1) + pmj ), 0 i < j n. A nalidade obter T0n , que contm as chaves k1 , k2 , . . . , kn .
km wij

d pi(m1) = d d

r rr

A raiz km qualquer chave de Tij De todas as rvores com km na raiz escolhemos aquela que produz pij (menor) r = pmj

d d d

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Algoritmo para construir uma rvore de busca tima


Seja Tij uma rvore binria de busca tima com as chaves ki+1 , ki+2 , . . . , kj . A nalidade obter T0n . Seja h = j i, i j. Obtemos T0n a partir de rvores timas menores. Exemplo para n = 5: T00 T01 T02 T11 T03 T12 T04 T13 T22 T05 T14 T23 T15 T24 T33 h=5 T25 T34 h=4 T35 T44 h=3 T45 h=2 T55 h=1 h=0

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Algoritmo para construir uma rvore de busca tima

Dadas as freq. ai e bi , calculam-se os pesos wij : wii = bi , 0 i n wij = wi(j1) + aj + bj , 0 i < j n. Calculam-se pij : pii = wii , 0 i n pij = wij + mini<mj (pi(m1) + pmj ), 0 i < j n. Vamos ainda usar rij para guardar a posio m que produz o mnimo pij .

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Algoritmo para construir uma rvore de busca tima


for i 0 to n do pii bi end for for i 0 to n 1 do j i +1 pij wij + pij + pjj rij j end for for h 2 to n do for i 0 to n h do j i +h Acharm e min = min1<mj (pi(m1) + pmj ) pij min + wij rij m end for end for A complexidade de tempo do algoritmo de construo O(n3 ), mas pode ser reduzido para O(n2 ) (Knuth - The Art of Computer Programming Vol. 3).
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
Siang Wun Song - Universidade de So Paulo - IME/USP rvore Binria de Busca tima

Uso da tcnica de programao dinmica


O termo programao dinmica foi usado por Richard Bellman. A utlizada dessa tcnica pode ser mostrada em vrias outras aplicaes. Encontrar uma ordem de multiplicar matrizes M1 M2 . . . Mn que usa o menor nmero de operaes escalares. Encontrar o menor caminho entre dois vrtices de um grafo. Dadas duas seqncias de caracteres, transformar uma seqncia na outra usando operaes de edio como substituio, insero ou remoo. Essas aplicaes so tratadas em cursos de Anlise de Algoritmos.

Siang Wun Song - Universidade de So Paulo - IME/USP

rvore Binria de Busca tima

Você também pode gostar