BC-0504
Natureza da Informação
• Imaginemos que lançamos ao ar uma moeda
um milhão de vezes e anotamos o resultado “1” para cara e
“0” para coroa,
obtendo, por exemplo,
0101101001010110101100110010100110101 ...
• Como a probabilidade de cair cara ou coroa é
a mesma, nós temos que a informação de
cada jogada é um bit e a informação total é
• E se a moeda estivesse alterada para cair cara uma vez só a cada 1000 jogadas? Assim, obteríamos:
00000100...000000100000...0001
• Num milhão de jogadas, a moeda cairia cara umas 1000 vezes.
• Seria possível utilizar uma codificação mais enxuta para representar a sequência anterior? Veremos nos slides seguintes ...
Uma primeira tentativa de codificação
•Para identificar um 1 no meio de 1000000 de dígitospreciso de log2(1000000)= 20 bits (ou 20 perguntas bem formuladas).
•Então, para codificar os mil uns que aproximadamente há na sequência de 1 milhão de dígitos precisaríamos:
1000x 20= 20000 bits ou
20000/1000000= 0,02bits por dígito
Seria possível uma codificação ainda mais enxuta para codificar a posição dos mil uns?
Uma tentativa mais enxuta de codificação
• Ao invés de codificar a posição absoluta de cada 1, poderíamos identificar cada 1 pela distância de cada 1 para o 1 anterior.• Em média a distância de um 1 para o seguinte 1 é de cerca de mil dígitos.
• Suponhamos que a distância máxima entre dois uns seja 4000 dígitos, distância que pode ser codificada com log2(4000)=12 bits • Neste caso 12 bits seria o maior número de bits para codificar a distância entre uns, por exemplo (1230)dec = (001110011001)bin. •Para codificar os 1000 uns precisaríamos de 1000x12 bits=
12000bits ou 12000/1000000 = 0,012 bits por dígito
00010000....00000001000000...0000100000...01000000...0
1230 dígitos 990 dígitos
• Portanto, passamos de uma codificação de
1.000.000 de bits para uma com 20.000 bits e depois para uma 12.000 bits, alcançando uma taxa de compressão de
• E seria possível uma codificação ainda mais enxuta? % 8 , 98 100 1000000 12000 1000000
A fórmula de Shannon fornece a quantidade de
informação da codificação mais enxuta possível
• Mesmo que não saibamos como comprimir
mais a sequência, a fórmula de Shannon nos
diz quanta informação existe na codificação mais enxuta possível.
• No nosso exemplo,
bits S 0114 , 0 999 / 1000 log 32 , 3 999 , 0 1000 log 32 , 3 001 , 0 999 / 1000 log 999 , 0 1000 log 001 , 0 1000 999 log 1000 999 1000 1 log 1000 1 10 10 2 2 2 2 Eficiência de um código
• É obtida dividindo-se a entropia de Shanonn S, pelo número médio de bits por dígito
(bits/dígito).
• No caso da primeira tentativa de codificação
• E no caso da segunda tentativa:
• Por tanto, a segunda tentativa de codificação é mais eficiente.
5704
,
0
02
,
0
0114
,
0
L
S
95
,
0
012
,
0
0114
,
0
L
S
Mas qual é o melhor código
possível?
• Conhecemos a distribuição das probabilidades
de cada estado.
• Temos um alfabeto D para as palavras código
• e.g., D={0,1}
• Queremos construir um código ótimo.
• Menor comprimento médio possível
• Primeiramente, o código deve ter algumas
Qual é o melhor código possível?
• Código não-singular
• Cada estado x é mapeado para uma seqüência
diferente em C.
• Ou seja, dois estados diferentes não são
Qual é o melhor código possível?
• Código unicamente decodificável
• Definição: A extensão C* de um código é um
mapeamento de sequências finitas em X para sequências finitas em C, definido por:
• Ou seja, é apenas uma concatenação das
palavras código correspondentes à sequência em X.
Qual é o melhor código possível?
• Código unicamente decodificável
• Definição: Um código é unicamente decodificável
se a sua extensão é não-singular.
• Ou seja, qualquer sequência em C tem apenas
uma única sequência de estados que pode produzi-la.
• Ou seja, não há ambiguidade se uma
Qual é o melhor código possível?
• Código prefixo, ou instantâneo, ou
auto-pontuável.
• Vários nomes para a mesma coisa:
• Deve ser importante! ;-)
Qual é o melhor código possível?
• Código prefixo, ou instantâneo, ou
auto-pontuável.
• Códigos onde nenhuma palavra-código é prefixo
de outra.
• Ao receber uma palavra código, esta pode ser
imediatamente decodificada.
Qual é o melhor código possível?
• Relação entre as classes:
• Consegue provar estas
Qual é o melhor código possível?
• Exemplos das classes:
• Exercício: Explique os códigos de cada coluna acima
(porque a primeira coluna trata-se de um código
singular, porque a segunda trata-se de um código não-singular mas não unicamente decodificável, e assim por diante...)
Em direção ao código ótimo
• Algoritmos de Shannon-Fano e de Huffman
• Produzem códigos relativamente eficientes:
• Métodos que constroem uma árvore de
decisão, tentando dividir o espaço das
probabilidades de maneira mais equiprovável possível (aprox 50% de um lado, e 50% do
outro) 1 ) ( ) ( C L X S
Algoritmos de Shannon-Fano e de Huffman
• Cada símbolo a ser codificado se situa numa das
folhas da árvore
• Ou seja, nenhum símbolo pode ser ancestral de
outro na árvore
• Consequência: Como um símbolo nunca pode ser
ancestral de outro na árvore, nenhum símbolo é prefixo de outro
• Portanto, produzem códigos de prefixo
Relação da entropia com árvores de decisão
• Quantidade de informação: indica exatamente em
que nível cada símbolo deve se situar para que se obtenha a melhor árvore de decisão possível
(codificação ótima)
• Consequência: a entropia é o limite mínimo para a
quantidade de informação média por símbolo que uma fonte transmite (Primeiro Teorema de Shannon)
Relação da entropia com árvores de decisão
• Exemplo: P(A) = 1/2, P(B) = 1/4, P(C) = 1/8, P(D) = 1/8
•- log2(P(A)) = - log2(1/2) = 1 •- log2(P(B)) = - log2(1/4) = 2 •- log2(P(C)) = - log2(1/8) = 3 •- log2(P(D)) = - log2(1/8) = 3 A B C D Nível 1 Nível 2 Nível 3 0 1 1 1 0 0 A = 0 B = 01 C = 110 D = 111
Relação da entropia com árvores de decisão
• Ou seja, quanto menos provável (mais raro) um
símbolo, mais para o fundo da árvore (mais bits para codificá-lo)
• Em média, transmitimos o menor número de bits
possível por mensagem através dessa estratégia
Código de Shannon-Fano
• Um procedimento para se gerar um código
• Cada estado gerado é independente dos
anteriores.
• P(x) nunca muda
• Fornece código eficiente
• Procedimento para se construir uma árvore de
decisão 1 ) ( ) ( C L X S
Analogia com jogo das perguntas
• Queremos adivinhar um objeto em um conjunto,
com uma série de perguntas com resposta sim/não.
• Quais as melhores perguntas?
• Aquelas que dividem o universo pela metade
• Quantas perguntas ótimas são necessárias?
• Mínimo log2(numero de objetos)
• Supõe fonte DMS (Discreta sem memória)
• Necessário conhecer as probabilidades de cada símbolo:
• Fornece um código eficiente, ou seja, com
• Sendo o comprimento médio das palavras do código.
• Idéia: agrupar símbolos em par de grupos
aproximadamente equiprováveis. Daí, a codificação ótima de cada grupo consiste em simplesmente
atribuir um dígito binário a cada grupo, por exemplo, “0” para o primeiro e “1” para o segundo.
Código de Shannon-Fano
x P x P
xk P 1 , 2 , 1 L S LCódigo de Shannon-Fano
Descrição do algoritmo:
Ordenação: listar os símbolos segundo ordem de probabilidade decrescente.
Partição: dividir em dois grupos de maneira tão equiprovável quanto for possível.
Atribuir “0” ao primeiro grupo e “1” ao segundo.
Repetir o procedimento até que cada grupo contenha um único símbolo.
O código corresponde ao conjunto de dígitos (“0” ou “1”)
atribuídos a cada símbolo.
Exemplo de Cód. de Shannon-Fano
S = 2,36 bits/símbolo L = 2,38 bits/símbolo Eficiência = S/L = 0,99
• Também supõe fonte DMS e, também, é
necessário se conhecer as probabilidades dos símbolos.
• Em geral, fornece o código ótimo:
• Idéia: atribuir mais bits para os símbolos menos prováveis usando uma árvore binária.
• Pelo fato de seguir uma árvore binária, sempre fornece um código prefixo (o que garante
decodificação unívoca e instantânea).
Código de Huffman
1 ~ máx L S Código de Huffman
Descrição do algoritmo:
Ordenação: listar os símbolos segundo ordem de probabilidade decrescente.
Redução: agrupar os dois símbolos menos prováveis e reordenar, novamente, segundo probabilidades
decrescentes. (Esse é o passo de redução 1.)
Repetir a redução até que haja apenas dois grupos.
Codificação: a partir da última redução, atribuir “0” ao
primeiro dígito de todos os símbolos do primeiro grupo e “1” àqueles do segundo grupo.
Repetir o procedimento anterior até alcançar a primeira coluna.
Exemplo de Cód. de Huffman
[Coleção Schaum, Hwei Hsu]
S= 2,36 bits/símbolo L = 2,38 bits/símbolo Eficiência = S/L = 0,99
Exercício
1. [1, Ex.10.34, p.278] Uma fonte discreta sem memória (DMS) emite cinco símbolos,
s1, s2, s3, s4 e s5, com probabilidades P(s1)=0.4, P(s2)=0.19, P(s3)=0.16, P(s4)=0.15 e P(s5)=0.1. Pede-se:
a) Construa um código de Shannon-Fano.
b) Calcule a entropia da fonte, o comprimento médio do código do item anterior e a sua eficiência.
c) Construa um código de Huffman.
d) Calcule o comprimento médio do código do item anterior e a sua eficiência.
e) Compare a eficiência alcançada nas duas formas de codificação.
Resp.: a) 00, 01, 10, 110, 111 (atenção: há outras soluções possíveis); b) 2.15, 2.25, 95.6%; c) 1, 000,
001, 010, 011 (atenção: há outras soluções possíveis); d) 2.2; e) A eficiência do cód. de Huffman é maior do que a obtida usando Shannon-Fano.
Código de Lempel-Ziv
• Na prática, normalmente, não conhecemos as probabilidades dos símbolos da fonte.
• Além disso, fontes práticas não são DMS. Por
exemplo, na codificação de texto, a letra “Q” quase nunca é seguida de outra letra “Q”.
• O código proposto por Lempel e Ziv é adaptativo: reconhece padrões de bits que aparecem com mais frequência nos dados.
• Cria codebook (livro de código) com os padrões mais frequentes que aparecem nos dados.
• Padrões de bits correspondentes a sequências improváveis (como “QQ”) não são incluídos no
Código de Lempel-Ziv
(Cont.)• Para uma longa sequência de dados, o código de
Lempel-Ziv converge assintoticamente para o código ótimo.
• Para codificação de texto, supera a eficiência do cód. de Huffman porque leva em conta a dependência
entre os símbolos.
• Usado pelo programa de compressão de dados 7zip para o formato “.7z” (www.7-zip.org).
• Dada a sequência de entrada: 000101110010100101
• Codebook: supõe já armazenadas as palavras (#1) = “0” e (#2) = “1”
• Começando pela esquerda, simultaneamente, vai-se observando a sequência bit-a-bit e codificando. Sempre que aparece uma “palavra mais curta nunca vista antes” esta é acrescentada no codebook. No exemplo acima,
Sequencia 00 01 011 10 010 100 101
Codificação 11 12 42 21 41 61 62
Codebook #3 #4 #5 #6 #7 #8 #9
• Daí, é só transmitir os números da “Codificação” que o receptor poderá reconstruir a sequência e o codebook.
• Os números da “Codificação” podem ser representados em binário. Por exemplo, usando 4 bits para cada codificação, sendo 3 bits para a posição no codebook e 1 bit final (chamado de “inovação”) que é sempre 0 ou 1 , obtém-se o seguinte:
Codificação 11 12 42 21 41 61 62
Representa-ção binária
0010 0011 1001 0100 1000 1100 1101
Obs.: neste exemplo, trocou-se a “sequência de entrada” pela representação binária acima,
não havendo “compressão”. Contudo, para sequências mais longas, começa-se a ter maior eficiência na codificação.
2. Dada a sequência de entrada
000101110010100101
e usando a codificação em binária do exemplo anterior (com 4 bits), pede-se:
a) O número de palavras de código que podem ser armazenadas no codebook.
b) A saída codificada.
c) Houve compressão? Explique o motivo.
d) Faça a decodificação usando apenas a saída codificada.
Exercício
Lembremos da Charada de Maxwell
• Maxwell apresentou esta charada para Boltzmann
• O diabo abria a comporta (sem atrito e portanto sem exercer
trabalho) para que as moléculas mais rápidas e quentes (vermelhas) ficassem de um lado e as moléculas mais frias e lentas (azuis) do
outro.
• Assim a entropia diminui sem custo, e o sistema poderia acumular energia de graça, podendo ser usado como um “perpetuum mobile”
I
Entropia inicial: S1 Entropia final: S2
E lembremos que a diferencia entre as entropias das duas situações era justamente a informação que o diabo
arrecadava para abrir ou fechar a porta
Fonte fria Fonte quente Fonte de calor Q1 Q2 Trabalho
Fonte fria Fonte quente Fonte de calor Q1 Q2 Trabalho Fonte fria Fonte quente Fonte de calor Q1 Q2 Trabalho s
S
S
s
Informação transmitida, I
• É a diferencia entre o grau de entropia ou
imprevisibilidade inicial (S) e a imprevisibilidade final Sm 42
I
S
S
mS, I e S
msão entropias
• A entropia S é chamada também entropia da fonte de informação. Representa a capacidade potencial de informação que pode ser
fornecida por um determinado arranjo ou dispositivo.
• I é a chamada Informação transmitida ou “arredacada”.
• Sm é a entropia final, depois da mensagem
Exemplo:
• Joga-se uma bola de numa matriz com 16 possíveis
posições.
• Qual a entropia inicial (S) e qual a entropia final (Sm)? • Qual a quantidade de
informação (I) fornecida por esta bola?
Exemplo:
• Entropia inicial: S=log2(16)=4
Exemplo:
• Entropia final: Sm=log2(15)=3,9
• Informação transmitida pela bola de gude:
0.0931
15
16
log
15
log
16
log
2 2 2
S
S
mI
Introdução as probabilidades
• Probabilidades condicionais.
Cálculo da informação
transmitida, I, via probabilidades
m1, m2,...mi,..
I
r1, r2,...rj,..
log2( ( j)) ( 1)log2( ( 1)) ( n)log( ( n)) j j P r P r P r P r P r r P S
)) / ( log( ) / ( )) / ( ( log ) / ( )) / ( ( log / 1 2 1 2 i n i n i i i j j i j m m r P m r P m r P m r P m r P m r P S i
• Sm é a média dos Smi ( / )log ( ( / )) )) / ( ( log ) / ( )) / ( ( log ) / ( 2 , 2 2 i j i j j i i i i j i j j i j i j i j i i m i i m m m r P m r P m P m r P m r P m P m r P m r P m P S m P S S i i
Medida da informação, I, calculada com probabilidades
m
S S
Medida de informação, I, calculada com probabilidades 50
j i
j i
j i i j j j m m r P m r P m P r P r P S S I / log / ) ( log ) ( 2 , 2
j i
i i j P m P r m r P
/Tendo em consideração que:
Obtemos:
) ( / log / ) ( / log / ) ( log / ) ( 2 , 2 , 2 , j i j j i i j i i j i j j i i j i j j i i r P m r P m r P m P m r P m r P m P r P m r P m P IExemplo de cálculo de
informação transmitida
• Maria espera um email de Júlio (que é muito importante pra ela).
• Por isso o comportamento C de Maria está hoje muito imprevisível, com dois tipos de reações:
C=cruim: preocupada e chateada. C=cbom: alegre e feliz (como sempre)
9 , 0 ) | ( 1 , 0 ) | ( b b b r m M c C P m M c C P
• As amigas de Maria que estão estudando a disciplina Natureza da Informação decidem estimar a imprevisibilidade de Maria perante as duas possíveis
mensagens de Júlio:
M = mb= e-mail bom M = mr= e-mail ruim cujas probabilidades são:
Conhecendo muito bem Maria, as amigas calculam as probabilidades de Maria estar alegre ou preocupada, dependendo do e-mail ser bom ou ruim.
2 , 0 ) / ( 8 , 0 ) / ( r b r r m M c C P m M c C P 9 , 0 ) ( 1 , 0 ) ( r b m P m P
9 , 0 ) | ( 1 , 0 ) | ( b b b r m M c C P m M c C P
• Qual a incerteza inicial sobre o estado de Maria depois do email, agora que sabemos que a mensagem virá? Podemos obter esse resultado pelo teorema da probabilidade total.
2 , 0 ) / ( 8 , 0 ) / ( r b r r m M c C P m M c C P bits C Entropia 841 , 0 551 , 0 331 , 0 ) 27 , 0 log( 27 , 0 ) 73 , 0 log( 73 , 0 ) (
27 , 0 9 , 0 2 , 0 1 , 0 9 , 0 b b b b r r b P c m P m P c m P m c P
73 , 0 9 , 0 8 , 0 1 , 0 1 , 0 r b b r r r r P c m P m P c m P m c P• Qual seria a imprevisibilidade prevista de Maria se o e-mail for bom - (abuso de notação: P(M=mb) escrito como P(mb))
• Qual seria a imprevisibilidade prevista de Maria se o e-mail for ruim
47 , 0 9 , 0 log 9 , 0 1 , 0 log 1 , 0 )) | ( log( ) | ( )) | ( ( log ) | ( )) | ( ( log | 2 2
b b b b b r b r b j j b j b m m c P m c P m c P m c P m c P m c P S
72 , 0 2 , 0 log 2 , 0 8 , 0 log 8 , 0 )) | ( log( ) | ( )) | ( ( log ) | ( )) | ( ( log | 2 2 2
r b r b r r r r r j j r j r m m c P m c P m c P m c P m r P m r P S• Na verdade o e-mail ainda não foi encaminhado. Então a
imprevisibilidade média de Maria prevista pelas amigas dela é uma média ponderada pelas probabilidades da mensagem:
• Portanto a informação média transmitida pelo e-mail é:
69 , 0 72 , 0 9 , 0 47 . 0 1 , 0
m b mb r mr i i m m S P m S P m S P m S S i i 146 , 0 695 , 0 841 , 0 S Sm I• ATENÇÃO: Isto é uma média! Não sabemos qual será a mensagem!
– Por isso aparece a média ponderada!
• Podemos escrever Entropia(C|M) = 0,69
– Definição: Entropia Condicional (Conditional Entropy) – Significa “A entropia de C dado que sabemos M”
– Considera todos os possiveis valores de M, não um valor específico de M – É o Sm que mostramos no slides anteriores.
No caso de sabermos o conteúdo do email, como:
“Maria recebeu um e-mail bom!” entropia final seria:
... e a quantidade de Informação realmente transmitida seria
Obs.: podemos escrever
Entropia(C|M=mb)=0,47 bits,
que é a entropia dado um valor específico para M.
bits m M c C m M c C P m M c C m M c C P S b b b b b r b r mb 47 , 0 ) 9 , 0 ( log ) 9 , 0 ( ) 1 , 0 ( log 1 , 0 ) | ( log ) | ( ) | ( log ) | ( 2 2 2 2 bits S S I mb 0,841 0,47 0,371
Exemplos de cálculo da quantidade de
Informação
• Se a Maria não está nem aí pro Júlio, C não muda com a mudança da mensagem:
e a informação transmitida pelo e-mail seria:
58 ) ( ) | (cj mi P cj P
0 ) ( log | ) ( ) ( | log | ) ( 2 , 2 , j j j i i j i j i j j i i j i c P c P m c P m P c P m c P m c P m P IExercício
1. Num sistema de comunicação binário, uma fonte emite
dígitos (“0” e “1”) equiprováveis. O canal tem uma probabilidade p de cometer erro (trocar “1” por “0” e vice-versa). Calcular:
a) A entropia da fonte (S).
b) A entropia das bits recebidos na saída do canal (Sm).
c) A quantidade média de informação transmitida pelo
canal (I).
d) A informação (I) transmitida para p=0.1.
e) A informação (I) transmitida para p=0.5. Neste caso,
observar a saída permite concluir algo sobre a mensagem emitida pela fonte?
Resp.: a) 1 b) S(p), onde S(p) = -p.logp-(1-p).log(1-p) c) I = 1-S(p) d) 0,531 e) 0.