13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5. Programação dinâmica<br />

(começando com profundida<strong>de</strong> 1 na raiz). Caso a chave não pertence à árvore,<br />

po<strong>de</strong>mos imaginar chaves artificiais que representam os intervalos entre as chaves,<br />

e o número <strong>de</strong> comparações necessárias é um menos que a profundida<strong>de</strong><br />

<strong>de</strong> uma chave artificial. Um exemplo <strong>de</strong> uma árvore com chaves artificiais<br />

(representadas pelos intervalos correspon<strong>de</strong>ntes) é<br />

x2 <br />

<br />

<br />

x1 <br />

x3<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

] − ∞, x1[ ]x1, x2[ ]x2, x3[ ]x3, ∞[<br />

Para facilitar a notação, vamos introduzir chaves adicionais a0 = −∞ e an+1 =<br />

∞. Com isso, obtemos a <strong>complexida<strong>de</strong></strong> média <strong>de</strong> busca<br />

cM = <br />

1≤i≤n<br />

Pr[c = ai]prof(ai) + <br />

ela <strong>de</strong>pen<strong>de</strong> da árvore concreta.<br />

0≤i≤n<br />

Pr[ai < c < ai+1](prof(]ai, ai+1[) − 1);<br />

Como achar a árvore ótima? A observação crucial é a seguinte: Uma das<br />

chaves <strong>de</strong>ve ser a raiz e as duas sub-árvores da esquerda e da direita <strong>de</strong>vem<br />

ser árvores ótimas pelas sub-sequências correspon<strong>de</strong>ntes.<br />

Para expressar essa observação numa equação, vamos <strong>de</strong>notar com cM (e, d) a<br />

<strong>complexida<strong>de</strong></strong> média <strong>de</strong> uma busca numa sub-árvore ótima para os elementos<br />

ae, . . . , ad. Para a <strong>complexida<strong>de</strong></strong> da árvore inteira, <strong>de</strong>finido acima, temos cM =<br />

cM (1, n). Da mesmo forma, obtemos<br />

cM (e, d) = <br />

e≤i≤d<br />

Pr[c = ai]prof(ai)+ <br />

Árvore <strong>de</strong> Busca Binária Ótima<br />

e−1≤i≤d<br />

Pr[ai < c < ai+1](prof(]ai, ai+1[)−1)<br />

Supondo que ar é a raiz <strong>de</strong>sse sub-árvore, essa <strong>complexida<strong>de</strong></strong> po<strong>de</strong> ser escrito<br />

118

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!