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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4. <strong>Algoritmos</strong> gulosos<br />

Proposição 4.4<br />

O conjunto das folhas <strong>de</strong> cada árvore binária correspon<strong>de</strong> com um código livre<br />

<strong>de</strong> prefixo.<br />

Prova. Dado uma árvore binária com as folhas representando códigos, nenhum<br />

código po<strong>de</strong> ser prefixo <strong>de</strong> outro: senão ocorreria como nó interno. <br />

Qual o melhor código?<br />

• A teoria <strong>de</strong> informação (Shannon) fornece um limite.<br />

• A quantida<strong>de</strong> <strong>de</strong> informação contido num símbolo que ocorre com freqüência<br />

f é<br />

− log 2 f,<br />

logo o número médio <strong>de</strong> bits transmitidos (para um número gran<strong>de</strong> <strong>de</strong><br />

símbolos) é<br />

H = − fi log 2 fi.<br />

• H é um limite inferior para qualquer código.<br />

• Nem sempre é possível atingir esse limite. Com<br />

A = 1/3, B = 2/3; H ≈ 0.92b<br />

mas o código ótimo precisa ao menos 1b por símbolo.<br />

• Nosso exemplo: H ≈ 1.92.<br />

Como achar o melhor código?<br />

92<br />

<br />

<br />

<br />

• Observação 1: Uma solução ótima é uma árvore completa.<br />

• 1<br />

<br />

•<br />

∗<br />

•<br />

0<br />

<br />

<br />

<br />

1<br />

<br />

• •<br />

⇒ • 1<br />

<br />

•<br />

0<br />

<br />

1<br />

<br />

• •<br />

• Observação 2: Em uma solução ótima, os dois símbolos com menor<br />

freqüência ocorrem como irmãos no nível mais alto. Logo: Po<strong>de</strong>mos<br />

substituir eles com um nó cujo freqüência é a soma dos dois.

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

Saved successfully!

Ooh no, something went wrong!