Você está na página 1de 155

Irineu Antunes Júnior

Murilo Bellezoni Loiola

Teoria da Informação e Códigos

Universidade Federal do ABC.


2017
Irineu Antunes Júnior
Murilo Bellezoni Loiola

Teoria da Informação e Códigos

Material didático para disciplina


de Teoria de Informação e Códi-
gos do curso de Engenharia de In-
formação da UFABC.

Universidade Federal do ABC.


2017
© 2017 Irineu Antunes Júnior
Murilo Bellezoni Loiola & Universidade Federal do ABC.
Qualquer parte desta publicação pode ser reproduzida, desde que citada a fonte.

Dados Internacionais de Catalogação na Publicação (CIP) Câmara Brasileira do


Livro, SP, Brasil

Antunes Júnior, Irineu , Loiola, Murilo Bellezoni.


Teoria da Informação e Códigos. / Irineu Antunes Júnior
Murilo Bellezoni Loiola. – São Paulo: Universidade Federal do ABC.Ltda.,
2017.
Bibliografia.
ISBN XXXX-XXXX-XX.
1. Teoria da Informação. 2. Entropia. 3. Códigos Corretores de Erros. 4.
Codificação de Fonte. 5. Codificação de Canal.
Lista de ilustrações

Figura 1 – Desempenho de sistema ideal: taxa (R b /B ) versus ener-


gia (E b /N0 ): (1) energia mínima, E b /N0 = l n(2) ≈ 0,6931 ≈
−1.5917dB ; (2) taxa igual à capacidade do canal, R b =
C ; (3) prolongamento linear de (2). Fonte própria. . . . . . . 46
Figura 2 – Sistema de comunicação digital. [3, Fig.10.1] . . . . . . . . . . . . . . . 53
Figura 3 – Função de Entropia (função "ferradura") . . . . . . . . 87
Lista de tabelas
Sumário

Prefácio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

I Teoria da Informação 9
I.1 Revisão de Conceitos de Probabilidade . . . . . . . . . . 11
I.1.1 Freqüência Relativa, Probabilidade Condicional, Indepen-
dência, Distribuição Binomial . . . . . . . . . . . . . . . . . 11
I.2 Informação e Entropia . . . . . . . . . . . . . . . . . . . . . 15
I.2.1 Fonte de Informação . . . . . . . . . . . . . . . . . . . . . 15
I.3 Codificação de Fonte . . . . . . . . . . . . . . . . . . . . . . 19
I.3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
I.4 Codificação Ótima de Fonte . . . . . . . . . . . . . . . . . 25
I.4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
I.5 Canal Discreto Sem Memória . . . . . . . . . . . . . . . . 31
I.5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
I.5.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
I.5.3 Exercícios Adicionais . . . . . . . . . . . . . . . . . . . . . 35
I.6 Capacidade de Canal Discreto . . . . . . . . . . . . . . . . 37
I.6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
I.6.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
I.7 Capacidade de Canal Contínuo . . . . . . . . . . . . . . . 41
I.7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
I.7.2 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
I.8 Aplicações da Teoria da Informação . . . . . . . . . . . . 45
I.8.1 Desempenho de Sistemas de Comunicação Digitais . . . 45
I.8.2 Medidas adequadas para a intensidade do sinal e do ruído. 47

II Códigos Corretores de Erros 51


II.1 Códigos de Bloco . . . . . . . . . . . . . . . . . . . . . . . . 53
II.1.1 Controle de Erros . . . . . . . . . . . . . . . . . . . . . . . 53
II.2 Códigos de Bloco Lineares de Comprimento fixo . . . 59
II.2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
II.2.2 Condição de Hamming . . . . . . . . . . . . . . . . . . . . 59
II.3 Códigos Cíclicos: Introdução . . . . . . . . . . . . . . . . 63
II.3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II.4 Códigos Cíclicos . . . . . . . . . . . . . . . . . . . . . . . . . 67
II.4.1 Tratamento de Erros . . . . . . . . . . . . . . . . . . . . . . . 67
II.5 Códigos de Bloco Práticos . . . . . . . . . . . . . . . . . . 71
II.5.1 Exemplos de Códigos . . . . . . . . . . . . . . . . . . . . . . 71
II.6 Códigos Convolucionais . . . . . . . . . . . . . . . . . . . 75
II.6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Soluções dos Capítulos 83


Solução I.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Solução I.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Solução I.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Solução I.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Solução I.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Solução I.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Solução I.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Solução I.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Solução II.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Solução II.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Solução II.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Solução II.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Solução II.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Solução II.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Prefácio

E STEmaterial foi preparado para servir de apoio para o aluno acom-


panhar as aulas, realizar atividades propostas e se aprofundar no
assunto da disciplina durante as horas de estudo individual. O assunto
Teoria da Informação e Códigos (TIC), ...

Estrutura do Texto
A disciplina de TIC conta com ..., o texto foi organizado em duas partes.
A Parte 1 serve de apoio para as aulas teóricas, tendo cada capítulo um
resumo da teoria, alguns exemplos e exercícios que podem ser usados
em sala de aula. A Parte 2 é formada por exercícios para cada uma das
aulas....

Agradecimentos
Este material foi elaborado ao longo dos vários oferecimentos da disci-
plina de Teoria da Informação e Códigos. Contou com a contribuição dos
alunos xx, xx, ..., em especial das primeiras turmas, que auxiliaram na re-
solução dos exercícios. Posteriormente, estes foram revisados e editados
pelo monitor da disciplina, José Fábio Santos Barros. A todos os autores
agradecem incondicionalmente.

Irineu Antunes Júnior


Murilo Bellezoni Loiola
Santo André, São Paulo, Dezembro de 2016.
Parte I
Teoria da Informação
C APÍTULO I.1

Revisão de Conceitos de Probabilidade

As primeiras tentativas de desenvolver uma teoria que permitisse tratar


matematicamente a informação partiram de conceitos de probabilidade.
Por este motivo, oferecemos neste capítulo uma breve a revisão desses
conceitos e das ferramentas matemáticas que serão utilizadas posterior-
mente.

I.1.1 Freqüência Relativa, Probabilidade Con-


dicional, Independência, Distribuição Bi-
nomial
Neste capítulo, descrevemos a teoria que permite estudar fontes de infor-
mação de maneira geral, como representada na Figura 1, na qual a fonte
emite a informação que deve passar por um processo de codificação ou
modulação apropriados para que possa ser veiculada pelo canal.
Aqui, o termo canal se refere a qualquer meio que possa ser usado
para transferir ou armazenar a saída do codificador, fornecendo na sua
saída a informação recebida que, em virtude de distorções ou outras
pertubações inerentes a todo o processamento, pode ser diferente da
informação inicialmente codificada.
A partir da informação recebida, um decodificador (ou demodulador)
recupera a mensagem que é uma estimativa da mensagem originalmente
emitida pela fonte.

Figura 1 - Fonte de informação e processamento. (Adapt.: ?)


12 Capítulo I.1. Revisão de Conceitos de Probabilidade

Consideramos sinais como formas de onda usadas para representar


a informação, podendo ser classificados como determinísticos, sinais
com valores determinados segundo um mecanismo de formação co-
nhecido, por exemplo s(t ) = cos(ωt ), e probabilísticos, sinais gerados
por um processo aleatório, por exemplo, uma realização de ruído n(t ),
uma mensagem recebida m(t ) ou quaisquer grandezas associadas a um
fenômeno físico de interesse, como [x(t ),v(t )], a posição e velocidade de
um elétron. Deve-se observar que, em todos estes casos, não é possível
prever com exatidão os valores do sinal, havendo a necessidade de se
empregar alguma forma de descrição estatística para a informação.
Vale observar que sinais, ou a informação a eles associada, ainda po-
dem ser classificados como de tempo discreto, basicamente sequências
de valores, ou de tempo contínuo, como funções de variável contínua.
Quanto aos valores, podem ser de amplitude contínua, em geral, valores
reais, ou de amplitude discreta, normalmente um conjunto finito de va-
lores possíveis. A rigor, um sinal de tempo e amplitude discretos é dito
digital, já que uma implementação digital deste necessariamente envolve
uma amostragem nos instantes de tempo do sinal e uma quantização
nos valores de amplitude. O termo analógico, em geral, aplica-se a sinais
de tempo e amplitudes contínuos.
Outra possível classificação de sinais diz respeito ao número de va-
riáveis independentes. Quando há uma única variável, comumente o
tempo, o sinal é unidimensional; caso haja duas variáveis independentes,
o sinal é dito bidimensional, a exemplo de uma imagem impressa; ou,
tridimensional, como na descrição do relevo de um terreno. Pode-se ter
ainda sinais multidimensionais, como a representação holográfica de
uma cena.
Qualquer que seja o tipo de informação de uma certa aplicação, do
ponto de vista do receptor, a mensagem é sempre um sinal que tem certo
grau de incerteza quanto aos seus valores, tendo portanto caráter alea-
tório. Nesta aula, revemos alguns conceitos básicos de probabilidade e
estatística, e os empregamos para resolver problemas simples de comuni-
cação binária, onde supomos que a informação se encontra representada
por uma sequência de dígitos binários.
• Define-se a Freqüência Relativa

nA
f (A) = lim ,
N →∞ N

sendo A = evento, n A = “número de ocorrências de A”, N = “número total


de provas”. Nesta expressão, o limite não deve ser interpretado como a
definição formal de limite do cálculo. Trata-se apenas de um abuso de
notação para expressar que se está tomando N suficientemente grande
para uma dada situação prática.
Associa-se ao evento A uma medida de probabilidade P (A) obede-
cendo 0 ≤ P (A) ≤ 1. Muitas vezes, na prática, toma-se P (A) que corres-
ponde ao valor esperado de f (A).
I.1.1. Freqüência Relativa, Probabilidade Condicional, Independência, Distribuição
Binomial 13

• União de Eventos. Se A e B são eventos mutuamente exclusivos,


vale
n A + nB
f (A ∪ B ) = lim = f (A) + f (B ),
N →∞ N
logo P (A ∪ B ) = P (A) + P (B ).
Exemplo 1 [Ex. 10.1-2, p437Lathi] Definimos S = “espaço amostral” (con-
junto de todos os resultados possíveis de um experimento) e A = evento
(um subconjunto de S). Para o experimento “jogar um dado”, determine:
a) O espaço amostral; b) As probabilidades dos 6 resultados possíveis; c)
A probabilidade do evento A i mpar . d) A probabilidade do evento certo S.
Exemplo 2 [Ex. 10.1, p438Lathi] Jogamos dois dados. Qual a probabilidade
da soma dos dados ser 7 ?
• Seja um experimento E executado N vezes. Um evento A ocorre n A
vezes e um evento B ocorre n B vezes. O evento conjunto AB (= A∩B³= “A´
e B ”) ocorre n AB vezes, logo P (AB ) = limN →∞ nNAB = limN →∞ nNA nnAB
¡ ¢ ¡ ¢
A
.
Daí resulta que
P (AB ) = P (A)P (B |A),

sendo P (B |A) = “probabilidade de B dado A”.


Exemplo 3 [Ex. 10.5, p440L] Um experimento aleatório consiste em retirar,
seguidamente, duas cartas de um baralho com 52 cartas. a) Atribua um
valor à probabilidade de obtermos duas cartas “ás vermelho”. b) Repita o
item anterior considerando o experimento modificado no qual retiramos
uma carta do baralho e, em seguida, embaralhamos novamente antes da
retirada subseqüente.
Exemplo 4 [Ex. 10.6, p441L] Um canal binário simétrico (CBS) tem pro-
babilidade de erro P e = 10−5 (i.e., P e = “probabilidade de receber um 0
quando um 1 é transmitido e vice-versa”). Transmitimos uma seqüência
de n = 8 dígitos binários através deste canal. a) Determine a probabili-
dade de receber extamente k = 2 dígitos errados. b) Qual a taxa de erros
(B E R = “Bit Error Rate”, http://en.wikipedia.org/wiki/Bit_error_rate) do
canal?
• O Teorema de Bayes (http://en.wikipedia.org/wiki/Bayes%27_theorem)
diz que
P (A)P (B |A)
P (A|B ) = , desde que P (B ) 6= 0.
P (B )

Quando P (A|B ) = P (A), diz-se que A é independente do evento B .


Exemplo 5 Uma fábrica de componentes eletrônicos possui um equi-
pamento de teste na sua linha de produção. Uma amostra da produção
indicou que há 10% de componentes defeituosos e que o equipamento
de teste detecta defeito em 95% dos componentes defeituosos. Deter-
mine a probabilidade de que um componente seja defeituoso quando o
equipamento de teste acusa a existência de defeito.
14 Capítulo I.1. Revisão de Conceitos de Probabilidade

Exercícios

1. [Ex. 10.4, p438, Lathi] Jogamos uma moeda quatro vezes. Determine a
probabilidade de obtermos exatamente 2 caras.
2. [Ex. 10.4, p443, Lathi] Em comunicação binária, uma das técnicas usadas
para aumentar a confiabilidade de um canal é repetir a mensagem várias
vezes. Por exemplo, podemos enviar cada mensagem (0 ou 1) três vezes.
Desta forma, os dígitos transmitidos são 000 (para mensagem 0) ou 111
(para mensagem 1). Devido ao ruído do canal, podemos receber uma
das 8 combinações possíveis de três dígitos binários. A decisão de qual
mensagem foi transmitida é feita pela “regra da maioria”; isto é, se pelo
menos dois dos três dígitos detectados forem 0, a decisão é 0, e assim por
diante. Para uma probabilidade de erro em um dígito P e = 10−4 , calcule
a probabilidade de erro de decisão P er r o deste esquema de comunicação
binário..
3. [Ex. 10.7, p442, Lathi] Uma das fontes de erros em sistemas PCM (Pulse-
Code Modulation) é o ruído no canal de comunicação binário no qual
um pulso p (t ) é usado para representar o dígito 1 e um pulso −p (t ) é
usado para representar o dígito 0. Para combater estes erros, repetidores
são frequentemente usados para regenerar pulsos digitais e retransmitir
pulsos “limpos":

Um certo canal digital possui n = 3 links em cascata. Os pulsos são


detectados no final de cada link e pulsos limpos são transmitidos para o
proximo link. Dado que P ε = 10−5 é a probabilidade de erro de detecção
num único link, pede-se:
a) Obtenha a probabilidade P E de erro total na cascada de 3 links.
(Dica: caso ocorra erro em exatamente 2 links, o pulso será recebido
corretamente.)
b) Supondo que a taxa de transmissão seja de 9600 bits/segundo: em
média, quantos bits errados são recebidos durante 1 segundo? E, em
média, quanto tempo leva para se observar um bit errado na saída da
cascata?
C APÍTULO I.2

Informação e Entropia

I.2.1 Fonte de Informação


• Uma fonte de informação é qualquer dispositivo prático que emite
mensagens que podem ser analógicas (como, por exemplo, a saída de
um sensor de temperatura ao longo do tempo) ou discretas (como, por
exemplo, valores obtidos ao se lançar um dado). Deve-se lembrar que
fontes analógicas podem ser transformadas em fontes discretas pelos
processos de amostragem e de quantização (cf. Fig. 1). Por isso, passamos
a considerar apenas o caso de fontes discretas.

Fig. 1 - Codificação de fonte analógica num sistema de comunicação


digital. (GALLAGER, 2006, Fig. 2.1)

• Um modelo de fonte discreta muito empregado é a “Fonte Dis-


creta sem Memória” (DMS, Discrete Memoryless Source, Fig.2) que tem as
seguintes características:
a) A fonte é discreta, i.e., num dado instante, a saída assume um dos
símbolos (ou letras) de um “alfabeto”: A = {x 1 , x 2 , x 3 , . . . , x K }, sendo K o
número de símbolos.
b) A fonte não possui memória, i.e., o símbolo produzido num dado
instante não depende dos símbolos anteriores.
c) O símbolo x i tem probabilidade de ocorrência P (x i ). E, como há
K símbolos possíveis, tem-se P (x 1 ) + P (x 2 ) + · · · + P (x K ) = 1.
d) (Opcional) A fonte emite continuamente símbolos a uma taxa
r = 1/T s (símbolos/s), sendo T s o intervalo entre símbolos. Obs.: Em
alguns casos, T s não é constante e devemos considerar o seu valor médio
como, por exemplo, no caso dos “traços” e “pontos” produzidos por um
telégrafo.
16 Capítulo I.2. Informação e Entropia

Fig. 2 - Fonte Discreta sem Memória (modelo simplificado de uma fonte


discreta “prática”).(HSU, 2012, Fig. xx)

• Considere o caso hipotético de uma fonte que emite sempre um


mesmo símbolo. Por exemplo: x 1 com probabilidade P (x 1 ) = 1. Tal fonte
não emite informação alguma, pois a sua saída é sempre conhecida! Dito
de outro modo: o “conteúdo de informação” do simbolo x 1 é nulo.
O caso hipotético considerado, sugere que uma medida matemática
da informação veiculada por um³ símbolo ´ deve ser proporcional à incer-
1
teza de ocorrência do símbolo: P (x ) . Por isso, define-se a quantidade
i ³ ´
1
de informação de x i como I (x i ) = logb P (x ) = − logb P (x i ). A unidade
i
de I (x i ) é bit caso se empregue b = 2. Ressalte-se que, aqui, “bit” é uma
medida da quantidade de informação e não deve ser confundida com
“bit” significando dígito binário, embora seja acrônimo de “Binary digIT”.
Observe-se que não há qualquer obrigatoriedade em se empregar b =
2. Em partircular, para o caso de base b = 10, a quantidade I terá unidade
de hartley ou decit (“DECimal digIT”). Também se pode empregar base
b = exp (1), caso em que I terá unidade de nat (“NATural unit”).
• A quantidade I (x i ) satisfaz as seguintes propriedades:
a) I (x i ) = 0, para P (x i ) = 1. Que é o caso já citado de símbolo com
informação nula.
b) É uma quantidade não negativa: I (x i ) ≥ 0. Além do mais, a obser-
vação de um valor x i nunca resulta numa perda de informação.
c) Símbolos menos frequentes têm¡maior ¢ entropia, ou seja, ¡ ¢
para P (x i ) < P x j , tem-se I (x i ) > I x j .
¡ ¢ ¡ ¢
d) I x i x j = I (x i ) + I x j se x i e x j forem símbolos independentes.
• Em um sistema de comunicação prático, uma fonte discreta emite
uma longa seqüência de símbolos. Daí, para caracterizar uma dada DMS
X , interessa-nos determinar a quantidade média de informação que é
produzida. A quantidade

m
X m
X
H (X ) = E [I (X )] = P (x i ) I (x i ) = − P (x i ) log2 P (x i ) bits/símbolo
i =1 i =1

é chamada de entropia da fonte X e mede a quantidade de informação


média por símbolo da fonte. Observe-se que X é uma variável aleatória e
I.2.1. Fonte de Informação 17

que H (X ) é um número real, i.e., uma estatística associada a essa variável


aleatória. Note-se que a taxa de informação média R = r H (X ) bits/s.1
• Exemplo 1 a) Calcule a entropia de uma fonte binária que gera
símbolos “0” e “1” com igual probabilidade. b) Verifique que o resultado
satisfaz a relação geral 0 ≤ H (X ) ≤ log2 K .
Resolução:

H (X ) = −0.5 log2 0.5 − 0.5 log2 0.5 = 1 bit/símbolo


vale : 0 ≤ H (X ) ≤ log2 2 = 1

Exercícios
1. (HSU, 2012, 10.5) Uma TV preto e branco de alta resolução possui cerca
de 2 × 106 elementos de imagem (pixels) e 16 níveis de cinza. Imagens
são exibidas a uma taxa de 32 quadros por segundo. Supondo que todos
os pixels são independentes e que cada um dos níveis tenha igual proba-
bilidade de ocorrer, calcule a taxa de informação média dessa fonte de
informação.
(Resp.: 256 Mbits/s.)
2. (HSU, 2012, 10.6) Um telégrafo emite dois símbolos: “ponto” e “traço”.
A duração de um “ponto” é de 0.2 s e a de um “traço” é três vezes maior. A
probabilidade de um “ponto” ocorrer é o dobro daquela de um “traço” e
o intervalo entre símbolos é de 0.2 s. Calcule a taxa de informação média
dessa fonte de informação.
(Resp.: 1,725 bits/s.)

1
Normalmente, a taxa de símbolos (“taxa de sinalização” ou “baud rate”), r , é cons-
tante. Contudo, há aplicações, como a de um telégrafo, em que os símbolos têm
durações diferentes, devendo-se considerar a taxa média, r¯. Neste caso, R = r¯ H
(bits/s).
C APÍTULO I.3

Codificação de Fonte

I.3.1 Introdução
• A codificação de fonte consiste em converter a saída de uma fonte (aqui
considerada DMS) em uma seqüência de símbolos binários (palavras de
código binário). Um codificador de fonte eficiente deve empregar uma
pequena quantidade de bits em cada palavra de código.

Fig. 2 - Codificação de fonte. (HSU, 2012, 10-6)

Suponha que o codificador de fonte da Fig. 2 implemente um código


C no qual a cada símbolo x i é associado a uma palavra de código c i de
comprimento l i bits (“dígitos binários”). Nestas condições, o compri-
mento médio do código é de
K
X
L̄ = E [l i ] = P (x i ) l i bits/símbolo.
i =1

O Teo. da Codificação de Fonte diz que para uma DMS X com entropia
H (X ), vale
L̄ ≥ L̄ min ≥ H (X ) bits/símbolo, (I.3.1)
onde L̄ min é o menor valor (médio) possível de bits por símbolo da fonte
(como, por exemplo, para um código de prefixo definido, a seguir, no
Exemplo 1). A eficiência do código C é definida como
H (X )
η= . (0 ≤ η ≤ 1)

Uma demonstração de (I.7.4) pode ser obtida calculando-se um li-
mitante superior para a diferença H (X ) − L̄ pela aplicação da inequação
ln x ≤ x − 1, para x > 0. [4, sec. 2.5.2]
• Exemplo 1 (HSU, 2012, p.252) Seja uma fonte com K = 4 símbolos codi-
ficada pelos códigos binários da tabela
20 Capítulo I.3. Codificação de Fonte

xi codigo C 1 codigo C 2 codigo C 3 codigo C 4 codigo C 5 codigo C 6


x1 00 00 0 0 0 1
x2 01 01 1 10 01 01
x3 00 10 00 110 011 001
x4 11 11 11 111 0111 0001

Estes códigos podem ser classificados segundo os critérios a seguir:

códigos de comprimento fixo: C1, C2


códigos de comprimento variável: todos, exceto C 1 , C 2
códigos com palavras distintas: todos, exceto C 1
códigos de prefixo: C2, C4, C6
códigos univocamente decodificáveis: os de prefixo e C 5
códigos com decodificação instantânea: C2, C4, C6

Os códigos de comprimento fixo têm l i = l (constante), para i = 1, 2,


. . ., K . Já os de comprimento variável têm pelo menos um l i 6= l j , para
algum i 6= j .
Os códigos com palavras distintas têm c i 6= c j , para todo i 6= j . (Esta
é uma condição desejável na grande maioria das aplicações práticas!)
Quando nenhuma palavra de código pode ser formada adicionando-
se bits a outra palavra de código válida, ou seja, nenhuma palavra de
código é “prefixo” de outra, o código é dito de prefixo.1 Um código com
prefixo tem alguma palavra de código que não satisfaz esta condição; por
exemplo, em C 5 , “011” é prefixo de “0111”, não sendo de prefixo.
Os códigos univocamente decodificáveis são aqueles cuja sequência
de símbolos emitidos pela fonte sempre pode ser perfeitamente recons-
truída a partir da sequência de bits recebida (suposta sem erros). Por
exemplo, C 3 codifica a sequência “x 1 x 2 x 2 ” como a sequência de bits
“011”. No lado do receptor, esta sequência de bits pode ser interpretada
como “x 1 x 2 x 2 ” (o que está correto) ou como “x 1 x 4 ”, por isto o código C 3
não é univocamente decodificável.
Nos códigos com decodificação instantânea é possível identificar
imediatamente o final de cada palavra de código logo na recepção do seu
último bit, não havendo necessidade de se examinar os bits subsequentes,
isto sempre ocorre nos códigos de prefixo.
Para uma DMS, um código de prefixo ótimo possui comprimento
L̄ = L̄ min e vale2 :
H (X ) ≤ L̄ min ≤ H (X ) + 1. (I.3.2)
Em todos os casos anteriores, para que seja possível recuperar a
sequência de símbolos a partir da sequência de bits, supõe-se que haja
alguma forma de sincronização entre o transmissor e o receptor.

Exercícios
1
Em português, muitos autores usam o termo “códigos de prefixo” para se referirem
aos códigos “sem prefixo” (prefix-free codes).
2
[4, Theorem 2.5.1] - Entropy bounds for prefix-free codes.
I.3.1. Introdução 21

1. (HSU, 2012, 10.25) Considere uma DMS X com dois símbolos x 1 e x 2 ,


sendo P (x 1 ) = 0.9 e P (x 2 ) = 0.1. Calcule a eficiência η do código C abaixo:

simbolo código C
x1 0
x2 1
(Resp.: 46.9%)
Obs.: Neste exercício, não é possível melhorar a eficiência do código,
uma vez que não é possível empregar menos de um bit para cada um dos
símbolos. Contudo, o próximo exercício sugere uma técnica que pode
ser empregada para aumentar a eficiência da codificação: agrupar os
símbolos x i em blocos com dois símbolos.
22 Capítulo I.3. Codificação de Fonte

2. (HSU, 2012, 10.26) A extensão de segunda ordem da DMS X do exercí-


cio anterior, denotada por X 2 , é formada por blocos de dois símbolos.
Calcule a eficiência η do novo código:
símbolo P (a i ) código C 2
a1 = x1 x1 0.81 0
a2 = x1 x2 0.09 10
a3 = x2 x1 0.09 110
a4 = x2 x2 0.01 111
(Resp.: 72.7%)
Obs. 1: Este exercício mostra que as entropias
¡ 2 ¢ de duas fontes de infor-
mação independentes se somam, pois H X = H (X ) + H (X ) = 2H (X ).
Com isto, caso se queira melhorar ainda mais a eficiência, pode-se formar
grupos com número maior de elementos x i . O preço que se paga ao se
fazer isto é um maior atraso na transferência da informação: deve-se acu-
mular vários símbolos x i antes de enviar o símbolo a i correspondente a
um bloco. Este atraso pode se tornar intolerável em algumas situações
práticas caso o bloco seja formado por um número muito grande de
elementos x i .
Obs. 2: Aplicando-se a Equação (I.7.3) para uma fonte X n , vem
H X n ≤ E L X n min ≤ H X n + 1.
¡ ¢ © ¡ ¢ª ¡ ¢
(I.3.3)
Então
E L (X n ) min
© ª
1
H (X ) ≤ ≤ H (X ) + , (I.3.4)
n n
E {L ( X n )}min
no qual n = E {L (X )}min = L̄ min é o número médio de bits efe-
tivamente empregados por símbolo da fonte X quando se faz a codi-
ficação dos blocos de comprimento n. Nesta inequação, nota-se que
L̄ min →+ H (X ) quando n → ∞, de maneira que esta estratégia de codifi-
cação é assintoticamente ótima, proporcionando eficiência η ≈ 1 para n
grande. Infelizmente, ao se aumentar n, passa-se a ter maior atraso na
codificação e decodificação dos blocos de símbolos.
3. Classifique cada uma das afirmações abaixo como “verdadeira”
ou “falsa” e justifique sua resposta.
a) Um código de prefixo sempre é univocamente decodificável.
b) Todo código univocamente decodificável é de prefixo.
c) Códigos de prefixo têm decodificação instantânea.
d) Códigos de prefixo sempre são distintos.
e) Um código de prefixo construído para uma DMS tem comprimen-
tos obedecendo à inequação
KX
−1
2−l K ≤ 1. (Kraft Inequality) (I.3.5)
k=0

f ) Um código que não obedece à inequação de Kraft não pode ser de


prefixo.
I.3.1. Introdução 23

g) Um código que obedece à inequação de Kraft deve ser de prefixo.


Dica: A Inequação (I.7.5) pode ser demonstrada associando a cada
“folha” c i de uma árvore binária um sub-intervalo de comprimento 2−l i
dentro do intervalo [0, 1]. Resumidamente,¡ temos ¢o seguinte:
Para um símbolo x i , o código c i = y 1 y 2 . . . y l i binário é uma palavra
binária de comprimento l i . Associamos a c i o valor decimal d (c i ) =
Pl i
y 2− j e o intervalo real
j =1 j
h i
r (c i ) = d (c i ) ; d (c i ) + 2−l i

de comprimento 2−l i . Nestas condições, se d c j ∈ r (c i ), então c i é pre-


¡ ¢

fixo de c j . [4, sec. 2.5.2]


C APÍTULO I.4

Codificação Ótima de Fonte

I.4.1 Introdução
• Neste capítulo, consideramos algumas formas de se obter um código
de comprimento variável: primeiro, a proposta inicial de Shannon-Fano
e, em seguida, uma solução melhor para o problema descoberta por
Huffman. No final, apresentamos um algoritmo que fornece um código
melhor que estes últimos pois não supõe que a fonte seja discreta e sem
memória (DMS) e não exige o conhecimento das probabilidades dos
símbolos.
Por hora, consideramos códigos de prefixo pois sempre produzem
códigos distintos e instantâneos e supomos conhecidas as probabili-
dades dos símbolos da fonte (DMS), p 1 , p 2 , . . ., p K , e desejamos obter
palavras de código (binárias) que resultem num comprimento médio
L̄ próximo da entropia H da DMS. Num código ótimo, o comprimento
médio alcança o valor mínimo L min .
• Código de Shannon-Fano.
Estratégia: agrupar símbolos em pares de grupos aproximadamente
equiprováveis. Daí, a codificação ótima de cada grupo consiste em sim-
plesmente atribuir um dígito binário a cada grupo, por exemplo, “0” para
o primeiro e “1” para o seguindo.
Em geral, esta estratégia fornece um código com boa eficiência, isto
é,
H
η = ≈ 1,

mas não necessariamente ótimo.
Descrição do Algoritmo:
- Ordenação: listar os símbolos segundo ordem de probabilidade
decrescente.
- Partição: dividir em dois grupos tão equiprováveis quanto 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 1 (HSU, 2012, p.256) Abaixo, a codificação segundo Shannon-
Fano para uma fonte com 6 símbolos:
26 Capítulo I.4. Codificação Ótima de Fonte

Fonte: (HSU, 2012, Tab. 10-2) .

Neste exemplo, H = 2.36 bits/símbolo, L̄ = 2.38 bits/símbolo e η =


H /L̄ = 0.99.
Obs.: na codificação de Shannon-Fano, pode surgir ambiguidade na
escolha de grupos aproximadamente equiprováveis. (Exercício: tente
construir um exemplo em que isto ocorra.)
I.4.1. Introdução 27

• Código de Huffman.
Também supõe DMS e, também, exige que sejam conhecidas as pro-
babilidades dos símbolos. Sempre fornece um código ótimo (e, caso seja
possível, alcança eficiência η = 1); sempre produz código com eficiência
maior ou igual ao Código de Shannon-Fano.
Estratégia: atribuir mais bits para os símbolos menos prováveis usando
uma árvore binária. E, pelo fato de seguir uma árvore binária, sempre
fornece um código de prefixo.
Descrição do Algoritmo:
- Ordenação: relacionar os símbolos segundo ordem de probabilidade
decrescente.
- Redução: agrupar os dois símbolos menos prováveis e reordenar,
novamente, segundo probabilidades decrescentes. (Este é o passo de
redução 1.)
- Repetir a redução até que haja apenas dois grupos.
- Codificação: a partir da última redução, tomar “0” como primeiro
dígito de todos os símbolos do primeiro grupo e “1” para aqueles do
segundo.
- Repetir o procedimento anterior (decompondo os grupos) até al-
cançar a primeira coluna.
• Exemplo 2 (HSU, 2012, p.256) Na codificação de Huffman, quando um
grupo tem probabilidade igual a um símbolo pré-existente, na ordenação, é
aconselhável colocar o grupo acima deste símbolo. Pode-se demonstrar que
esta ordenação resulta menor variação (variância) no comprimento das palavras
de código, sendo preferível. Por exemplo, na figura seguinte, o grupo x 4 x 5 x 6
(com prob. 0.25) deveria ser colocado acima do símbolo x 2 (também, com
probabilidade 0.25).

Fonte: (HSU, 2012, Tab. 10-3) .

Neste exemplo, como no exemplo anterior, obteve-se:

H = 2.36 bits/símbolo, L̄ = 2.38 bits/símbolo e η = H /L̄ = 0.99.


28 Capítulo I.4. Codificação Ótima de Fonte

• Código de Lempel-Ziv.
Na prática, normalmente, não conhecemos as probabilidades dos
símbolos da fonte. Além do mais, fontes práticas geralmente 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 um codebook (livro de código) a partir dos padrões mais frequen-
tes que aparecem nos dados.
Padrões de bits correspondentes a sequências pouco prováveis (como
“QQ”) acabam não sendo incluídos no codebook.
Pode-se demonstrar que, para uma longa sequência de dados, o có-
digo de Lempel-Ziv converge assintoticamente para o código ótimo.[4,
Sec. 2.9.2] E, para codificação de texto, supera a eficiência do código de
Huffman porque leva em conta a dependência entre os símbolos.[4, Sec.
2.10]
Atualmente, o algoritmo Lempel-Ziv é usado pelo programa de com-
pressão de dados 7zip para o formato “.7z” (www.7-zip.org), semelhante
ao formato “.zip”.
Estratégia: particionar a sequência de dados da fonte em segmentos
tão pequenos quanto possível mas que não tenham sido anteriormente
observados.
• Exemplo 3 (HAYKIN, 2004, p.580) Considere a sequência de dígitos
binários
0 0 0 1 01 1 1 0 0 1 0 1 0 0 1 0 1 . . .
Supõe-se que os símbolos binários “0” e “1” já estejam armazenados
no codebook:
½
Armazenado: 0, 1
A analisar: 0 0 0 1 01 1 1 0 0 1 0 1 0 0 1 0 1 . . .

A partir da esquerda, “0 0” é a primeira subsequência não observada


antes, daí:
½
Armazenado: 0, 1, 00
A analisar: 0 0 | 0 1 01 1 1 0 0 1 0 1 0 0 1 0 1 . . .

Continuando:

Armazenado: 0, 1, 00, 01
½
A analisar: 0 0 | 0 1 | 01 1 1 0 0 1 0 1 0 0 1 0 1 . . .
−−−−→

Armazenado: 0, 1, 00, 01, 011


½
A analisar: 0 0 | 0 1 | 01 1 | 1 0 0 1 0 1 0 0 1 0 1 . . .
−−−−−−−−→
Juntando tudo numa tabela e prosseguindo com a codificação:
I.4.1. Introdução 29

Posição no codebook 1 2 3 4 5 6 7 8 9
Subseq. 0 1 00 01 011 10 010 100 101
Cód. Numérico 11 12 42 21 41 61 62
Cód. Binário 0010 0011 1001 0100 1000 1100 1101

As palavras de código binário obtidas têm comprimento fixo, neste


exemplo, o comprimento escolhido é de 4 dígitos binários. Na coluna 9
da tabela, o código “1101” corresponde à subsequencia “110” = 6, ou seja,
“10” no codebook seguido do “bit de inovação” que, neste caso, é o “1”
no final do código. Então, o dado decodificado é: “10” “1”, ou seja, “101”.

Observe que dados de comprimento variável são associados a pa-


lavras de código de comprimento fixo, sendo esta uma característica
adequada para transmissão síncrona do código obtido. Deve-se ressal-
tar que, neste exemplo, não houve compressão (pois o dado “101” foi
codificado como “1101”); contudo, na medida em que mais bits forem
analisados, blocos extensos de dados serão representados por palavras
de código de menor comprimento, provendo a compressão desejada.

Neste exemplo, não se observou compressão porque o tamanho do


dicionário é muito pequeno e a entrada é muito curta1 ; note que o código
na saída é sempre de 4 bits para um comprimento variável na entrada de
2 ou 3 bits.

É possível construir um exemplo em que padrões longos de bits aca-


bam sendo armazenados logo no início do dicionário, provendo boa
compressão mesmo com um dicionário pequeno. Experimente repetir
o exemplo para “00 000 001 0000 0001 00001 00000 00000 00001 00000
00000 00000 00001 00000” e calcule a taxa de compressão (quantidade de
bits na saída dividida pela quantidade de bits na entrada: 56/61 ≈ 0.91.)

Na prática, toma-se um dicionário bem maior para que este consiga


representar a maioria das “sub-sequências típicas” ou “padrões mais
frequentes” de bits emitidos pela fonte.

1
Experimente usar o programa 7zip para comprimir uma arquivo com poucos bytes
e veja o resultado.
30 Capítulo I.4. Codificação Ótima de Fonte

Exercícios
1. (HSU, 2012, 10.34) Uma fonte discreta sem memória (DMS) emite cinco
símbolos com probabilidades

p 1 = 0.4, p 2 = 0.19, p 3 = 0.16, p 4 = 0.15 e p 5 = 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 a entropia da fonte, 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.
2. Conforme visto no texto, o algoritmo de Lempel-Ziv associa pala-
vras de código de comprimento fixo a trechos de dados de comprimento
variável. Na prática, blocos de 12 dígitos binários são normalmente em-
pregados. Determine o número máximo de subsequências que podem
ser armazenadas no codebook neste caso.
Resp.: 4096
3. Faça a codificação e a decodificação dos dados do “Exemplo 3”
usando o algoritmo Lempel-Ziv com palavras de código de 4 bits. Quantas
subsequências podem ser armazenadas no codebook neste caso?
C APÍTULO I.5

Canal Discreto Sem Memória

I.5.1 Introdução
• Nesta aula, passamos a considerar a transmissão da informação através
de um canal de comunicação que supomos capaz de transmitir símbolos
discretos.

Adapt.: (HSU, 2012, Fig. xx)


A cada utilização, o canal recebe em sua entrada um símbolo x de
um alfabeto X = {x 1 , . . ., x n } e fornece em sua saída um símbolo y de um
alfabeto Y = {y 1 , . . ., y m }, sendo Y geralmente uma versão corrompida
de X .
• Um canal discreto sem memória (DMC, Discrete Memoryless Chan-
nel) é um modelo para canais práticos no qual o símbolo atual de saída
não depende de símbolos anteriores. E, neste caso, ¡ o efeito do
¢ ruído é
modelado pelas probabilidades de transição P Y = y j |X = x i , para to-
dos os índices i , j . Estas probabilidades podem ser dispostas na matriz
de transição
 ¡ ¢ ¡ ¢ ¡ ¢ 
P ¡ y 1 |x 1 ¢ P ¡ y 2 |x 1 ¢ · · · P ¡ y m |x 1 ¢
 P y 1 |x 2 P y 2 |x 2 · · · P y m |x 2  £ ¤
[P (Y |X )] =  = p i j n×m ,
 
.. .. . . .. 

¡ . ¢ ¡ . ¢ . ¡ . ¢

P y 1 |x n P y 2 |x n · · · P y m |x n n×m
¡ ¢ (I.5.1)
com p i j , P y j |x i .
Cada linha desta matriz corresponde a uma possível entrada e cada
coluna corresponde a uma possível saída do canal.
Num sistema prático, o desempenho (taxa de erros) de um canal de-
pende de uma série de fatores, tais como: a potência do sinal, a potência
do ruído, a largura de banda, o esquema de modulação etc. Contudo,
32 Capítulo I.5. Canal Discreto Sem Memória

todos estes fatores estão indiretamente considerados nos valores de pro-


babilidades condicionais da matriz de transição. Daí, pode-se dizer que
a essa matriz caracteriza completamente um dado DMC
• Exemplo 1 Forneça um exemplo de matriz de transição para cada
um dos seguintes DMCs:
a)canal sem perdas 3 × 5 (três entradas e cinco saídas); b) canal determi-
nístico 5 × 3; c) canal sem ruído 3 × 3; d) canal binário simétrico (BSC,
Binary Symmetric Channel) com probabilidade de erro p = 0.1.
• Exemplo 2 Para um BSC, os símbolos binários de entrada têm pro-
babilidades [P (X )] = [0.25, 0.75]. Calcule as probabilidades dos símbo-
los na saída [P (Y )] e a matriz de probabilidades conjuntas [P (X ,Y )] =
d i ag {P (x i )} [P (Y |X )]. ¡ ¢
• Entropia Condicional: é o valor médio de H X |Y = y j sobre o
alfabeto Y : Ã !
Xm ¡ ¢ ¡ ¢ X m X n ¡ ¢ ¡ ¢ 1
H (X |Y ) = H X |Y = y j P y j = P x i |y j P y j log2 ¡ ¢
j =1 j =1 i =1 P x i |y j
à !
Xm X n ¡ ¢ 1
= P x i ,y j log2 ¡ ¢ . (I.5.2)
j =1 i =1 P x i |y j
Uma entropia H (X ) representa o “grau de aleatoriedade” de X . (Quanto
mais “aleatório”, maior a quandidade ¡ média
¢ de bits por símbolo.) De ma-
neira análoga, a entropia H X |Y = y j pode ser interpretada como a
“aleatoriedade” (ou “incerteza”) de X dado que um valor específico de
saída (Y = y j ) foi observado. Deste modo, a entropia condicional H (X |Y )
é a entropia da saída supondo-se que sejam conhecidos os valores da
entrada.
• Informação Mútua. Definição [4, Sec. 15.2]:
¡ ¢
¡ ¢ P x i |y j 1 1 ¡ ¢
I x i ;y j , log = log − log ¡ ¢ = I (x i ) − I x i |y j
P (x i ) P (x i ) P x i |y j
(I.5.3)
que é a quantidade de informação transferida quando x i é transmitido e
y j recebido. Tomando-se a média de (I.7.4), vem
X ¡ ¢ ¡ ¢ X ¡ ¢ X ¡ ¢ ¡ ¢
P x i ,y j I x i ;y j = P x i ,y j I (x i ) − P x i ,y j I x i |y j . (I.5.4)
i,j i,j i,j
| {z } | {z } | {z }
I (X ;Y ) H (X ) H (X |Y )

O lado esquerdo desta equação é definido como a Informação Mútua


entre X e Y , denotada por I (X ;Y ), e representa a quantidade média de
informação transferida pelo canal com entrada X e saída Y . No lado
direito desta equação, pode-se ver que I (X ;Y ) pode ser calculado pela
quantidade média de informação na entrada menos a “perda” causada
pelo ruído, dada pela diferença

I (X ;Y ) = H (X ) − H (X |Y ) . (I.5.5)
I.5.1. Introdução 33

Analogamente, podemos escrever

I (Y ;X ) = H (Y ) − H (Y |X ) , (I.5.6)

que é a “incerteza” (ou “aleatoriedade” total) na saída menos a contri-


buição do ruído (“aleatoriedade” devido ao ruído). Ambas as entropias
condicionais H (X |Y ) e H (Y |X ) são conhecidas como “equivocação” do
canal, já que expressam como podem ocorrer a detecção equivocada de
símbolos.
• Exemplo 3 Verifique as seguintes propriedades da informação mú-
tua:
a) simetria: I (X ;Y ) = I (Y ;X ).
b) não negativa: I (X ;Y ) ≥ 0, sendo igual sse X e Y independentes.
c) I (X ;Y ) = H (X ) + H (Y ) − H (X ,Y ), ou seja, H (X ,Y ) = H (X |Y ) +
H (Y ).
d) Diagrama de Venn, relações entre as entropias e a informação
mútua, abaixo.

Fonte: <http://ieg5154.pbworks.com/w/page/46171731/Scribe_Note_2_1>
34 Capítulo I.5. Canal Discreto Sem Memória

I.5.2 Exercícios
1. (HSU, 2012, 10.9) Um Binary Erasure Channel pode ser usado para mode-
lar situações práticas em que se pode receber um dado sinal interpre-
tado como “0”, outro sinal interpretado como “1” ou, no caso de dúvida,
apaga-se o bit recebido (considerado “e”, erasure, y 2 ). Este canal pode ser
descrito pela seguinte matriz de transição

· ¸
1−p p 0
[P (Y |X )] =
0 p 1−p

na qual y 1 = “0”, y 2 = “e” e y 3 = “1”. Para p = 0.2 e símbolos da fonte


equiprováveis, pede-se:
a) Desenhe o diagrama de transições deste canal.
b) Obtenha as probabilidades dos símbolos na saída.
c) Calcule H (X ) e H (Y ).
d) Encontre H (Y |X ) e verifique que H (Y |X ) ≤ H (Y ). Comente.
e) Determine H (Y ,X ) e verifique que I (Y ;X ) = H (Y ) − H (Y |X ) =
H (X ) + H (Y ) − H (Y ,X ).
f ) Quanta informação é enviada pelo canal?
Resp.: a) diagrama 2x3; b) [0.4 0.2 0.4]; c) 1 bit, 1.5219 bit;

d) 0.722 bit; e) 1.722 bit; f) 0.8 bit.

2. (HSU, 2012, 10.16) Um BSC com probabilidade de erro de bit p é ali-


mentado por uma fonte binária, X = {x 1 , x 2 }, com P (x 1 ) = ω e P (x 2 ) =
ω̄ = 1 − ω.
a) Desenhe um diagrama indicando os símbolos de entrada, suas
probabilidades, as transições do canal e os símbolos de saída.
b) Mostre que a informação mútua é dada por

I (Y ;X ) = Ω ωp + ω̄p̄ − Ω p ,
¡ ¢ ¡ ¢

sendo a função entropia Ω p , p log2 p −1 + p̄ log2 p̄ −1 , com p̄ = 1 − p.


¡ ¢

c) Calcule I (Y ;X ) para ω = 0.5 e p = 0.1.


d) Repita o item anterior para ω = 0.5 e p = 0.5. Comente o resultado.
Resp.: a) diagrama 2x2; b) (cf. gabarito) ; c) 0.531 bit; d) 0.
I.5.3. Exercícios Adicionais 35

I.5.3 Exercícios Adicionais


1. (WELLS, 2009, Ex.2.1.1) Seja X um alfabeto binário X = {0, 1} com
© símbolos
ª
equiprováveis e seja Y um conjunto com três elementos Y = y 0 , y 1 , y 2 .
Para canal com matriz de transição
 
0.8 0.05
[P (Y /X )] =  0.15 0.15  ,
0.05 0.8

pede-se:
a) As probabilidades dos elementos na saída, [P (Y )].
b) A matriz de probabilidades conjuntas, [P (X ,Y )].
c) Verifique que a soma de cada coluna da matriz de transição dada é
igual a 1.
d) Explique como o conhecimento do elemento na saída pode ser
usado na decodificação. Temos decodificação hard ou soft?
e) Calcular a entropia na saída, H (Y ), e na entrada, H (X ).
f ) Explique por que a entropia na saída é maior.
g) Determinar a informação mútua “parcial”

X ¡ ¢ P (y j /x i )
I (Y ;x i ) = P y j /x i log2 ,
y j ∈Y P (y j )

para cada uma das saídas x i possíveis. É possível dizer algo sobre x i
quando é recebido y¡ 1 ? Justifique
¢ com base no valor da informação trans-
ferida neste caso, I y 1 ;x i .
h) Determinar, em média, quanta informação a observação da saída
fornece sobre o símbolo na entrada dada, ou seja, calcular a informação
mútua X
I (X ;Y ) = I (Y ;x i ) P (x i ) .
x i ∈X

i) Este canal é binário? É simétrico? É sem memória? Justifique de


maneira breve cada resposta.
Resp.: a) [0.425 0.15 0.425]; h) 0.78543.
2. (WELLS, 2009, Ex. 2.1.3) Repeta o exercício anterior para Y = {0, 1} e ma-
triz de transição · ¸
0.98 0.05
[P (Y /X )] = .
0.02 0.95
Resp.: a) [0.515 0.485]; e) 0.999935<1

0
Ref.: [0] RICHARD B. WELLS. Applied Coding and Information Theory for Engineers,
Pearson Education, 2009.
C APÍTULO I.6

Capacidade de Canal Discreto

I.6.1 Introdução
• A informação mútua é uma medida da quantidade de informação
transferida através de um canal. Entretando, na sua expressão, pode-se
observar que a informação mútua depende de P (x i ) que é um parâmetro
da fonte. Para contornar este problema, definimos a capacidade de canal
como a máxima transferência de informação que pode ocorrer

C s = max {I (X , Y )} [bits/símbolo ou bits/“uso do canal”] (I.6.1)


{P (x i )}

sendo a maximação feita considerando todas as distribuições de proba-


bilidade {P (x i )} da fonte X . Se r símbolos são transmitidos por segundo,
a capacidade em bits/s é C = r C s .
• Exemplo 1 Determine a capacidade dos seguintes DMCs: a) canal
sem perdas; b) canal determinístico; c) canal sem ruído; d) BSC com
probabilidade condicional p.
• A inevitável presença de ruído num canal provoca erros nos dados
de saída. Por exemplo, para um canal binário ruidoso, a probabilidade de
erro de bit pode chegar a 10−1 , ou seja, dentre 10 bits enviados, em média,
1 bit está errado. Como em muitas aplicações é exigido probabilidade de
erro menores do que 10−5 , deve-se lançar mão de codificação de canal:
acrescentam-se bits de redundância que permitem detectar e corrigir
erros.

Adapt.: (?)
• Códigos de Bloco. A cada bloco de k bits de dados da fonte, acres-
centam-se n − k bits, produzindo blocos de n bits que são transmitidos.
A razão ρ = k/n é chamada de taxa de código.
Se a fonte produz um símbolo a cada T s segundos, a taxa de infor-
mação média da fonte é H (X ) /T s (bits/s). E, se o canal é usado a cada
Tc segundos, a sua capacidade é C s /Tc (bits/s).
• Teorema da Codificação de Canal
38 Capítulo I.6. Capacidade de Canal Discreto

i) Seja uma DMS X com entropia H (X ) produzindo símbolos a cada


T s segundos e seja um DMC com capacidade C s usado a cada Tc segun-
dos. Se

H (X ) C s
≤ , (I.6.2)
Ts Tc

então existe um esquema de codificação para o qual a taxa de erro pode


ser feita tão pequena quanto se queira.

ii) Por outro lado, se

H (X ) C s
> , (I.6.3)
Ts Tc

então não é possível reconstruir a informação com probabilidade de erro


arbitrariamente pequena.

• Exemplo 2 Considere uma DMS binária que emite dígitos equi-


prováveis em intervalos de T s segundos. Estes dígitos são aplicados na
entrada de um codificador de canal com taxa ρ e realiza uma transmissão
a cada Tc segundos através de um BSC com capacidade C s . Obtenha uma
relação entre ρ e C s que garanta a existência de um código capaz de
prover uma probabilidade de erro arbitrariamente baixa.
I.6.2. Exercícios 39

I.6.2 Exercícios
1. Um canal binário simétrico realiza uma transmissão a cada TC = 1 s.
a) Calcule a capacidade deste canal em bits por segundo para proba-
bilidade de erro de bit p = 0.1.
b) Supondo que a taxa de código seja dada por ρ = 3/n, sendo n um
inteiro ímpar, qual o n mínimo que satisfaz a condição de existência de
um bom código?
(Resp.: 0,531 bits/s; n = 7.)

2. Considere um BSC com probabilidade de erro de bit p = 10−2 e com


taxa de sinalização Tc = 1 ms. Determine:
a) A capacidade do canal C s .
b) Conforme o Teo. da Codificação de Canal, pode-se afirmar que para
qualquer ε > 0 (p. ex., 10−8 ), existe um código com n suficientemente
grande que garante probabilidade de erro após a decodificação menor
do que ε, isto desde que a taxa de código ρ esteja abaixo da taxa crítica
C s . Calcule o valor da taxa crítica e confira se está corretamente indicada
na Fig. 1.
c) Considere o uso de código de repetição como codificação de canal:
cada bit da fonte é repetido n = 2m +1 vezes e, no lado do receptor, toma-
se o valor da maioria como o bit decodificado. Deduza a expressão de P e
(probabilidade de erro de decodificação) para este código e complete a
Tab. 1.
d) Calcule o atraso na transmissão dos bits da fonte caso se queira
P e < 10−8 usando código de repetição.
e) É possível aumentar a taxa de código, mantendo-se a exigência de
P e < 10−8 ? Caso afirmativo, explique como isto pode ser feito. Neste caso,
o que ocorre com o valor do atraso na transmissão dos bits?

Taxa de Código ρ = 1/n Probabilidade de Erro P e


1
1/3
1/5
1/7
1/9
1/11
Tab. 1 - Probabilidade de erro para o Código de Repetição.
40 Capítulo I.6. Capacidade de Canal Discreto

Fig. 1 - Desempenho do código de repetição (figura de (HAYKIN, 2004, p.592))


C APÍTULO I.7

Capacidade de Canal Contínuo

I.7.1 Introdução
As fontes e canais considerados até o momento eram discretos, entre-
tanto, no mundo real, muitas vezes, tem-se fontes e canais analógicos.
Os conceitos de entropia, informação mútua etc. podem ser estendidos
para estes casos. Basicamente, devemos substituir variáveis R discretas (x i )
por analógicas (x (t )) e somatórios (Σ) por integrais ( ), como se pode
observar no exemplo a seguir.
Exemplo 1 (HSU, 2012, Ex. 10.20) Determine a entropia diferencial
Z ∞
1
h (X ) , f X (u) log2 du (I.7.1)
−∞ f X (u)
de uma variável aleatória X uniformemente distribuída,
½
1/a, 0 ≤ u ≤ a
f X (u) = (I.7.2)
0, c.c.

com a) a = 1, b) a = 2 e c) a = 1/2.
Exemplo 2 (HSU, 2012, Ex. 15.4) Um sinal de amplitude x é um processo
aleatório uniformemente distribuído no intervalo [−1, 1]. Este sinal passa
por um amplificador de ganho 2 e produz ¡ ¢ a saída y também com distri-
buição uniforme. a) Calcule h (x) e h ¡y ¢; b) Dado
¡ ¢ que as entropias abso-
lutas H (x) = h (x) − lim log2 ∆x e H y = h y − lim log2 ∆y, mostre
∆x→∞ ∆y→∞
que a entropia absoluta (“quantidade de informação média") não muda
com o ganho.
Exemplo 3 Dado que para uma variável gaussiana X ∼ N 0, σ2 a
¡ ¢

entropia diferencial é
1
log2 2πeσ2 .
¡ ¢
h (X ) = (I.7.3)
2
a) Como o valor da entropia desta variável se compara com aquela de
uma variável uniforme de mesma variância? b) Existe uma distribuição
que produza maior entropia?

Seja um canal analógico limitado a uma banda B (Hz) e a uma po-


tência média P (W) de transmissão. Também, considere que o ruído
42 Capítulo I.7. Capacidade de Canal Contínuo

presente neste canal é AWGN (Additive White-Gaussian Noise) de mé-


dia nula e densidade espectral de potência N0 /2 (W/Hz). Como o ruído
acaba sendo limitado pela banda B , a sua variância (ou potência já que a
média é nula) é σ2 = N0 B (W).
Se o canal analógico for utilizado para transmissão de M amostras
do sinal analógico x (t ) durante o intervalo de T (s), para que seja res-
peitado o critério de Nyquist, no máximo, pode-se ter M = 2BT amostas
transmitidas durante o intervalo T .
A capacidade de informação do canal é definida como a máxima infor-
mação mútua das amostras da entrada (x i ) para a saída (y j ), respeitando
a limitação de potência (cf. demonstração no Exemplo 4):

P
n o 1 µ ¶
C s = max I (X , Y ) : Pot (X ) = P = log2 1 + 2 [bits/símbolo].
{P (X i )} 2 σ
(I.7.4)
Para um canal contínuo com largura de banda B Hz, pertubado por
AWGN com potência N0 /2 (W/Hz) e, igualmente, limitado à banda B Hz,
a capacidade de informação é dada por

P
µ ¶
C = 2BC s = B log2 1 + = B log2 (1 + SN R) [bits/s]. (I.7.5)
N0 B

Devemos alertar que supomos ruído e sinal têm espectros (PSD, Power
Spectral Density) planos e, por isto, as amostras são independentes entre
si e, ainda, as amostras do sinal são independentes daquelas do ruído. Daí,
a quantidade de informação transmitida por segundo é 2B multiplicado
por C s .
Agora, quando o espectro não é plano, tem-se C < 2BC s , não valendo
(I.7.5). Já a equação (I.7.4), por sua vez, não exige que o ruído seja branco,
devendo-se apenas ter distribuição gaussiana pois, neste caso, a entropia
é dada por (I.7.3).
Exemplo 4 [3, Secs. 9.9-9.10] Sejam x i , i = 1, 2, . . ., M , amostras da
entrada x (t ) ∼ N (0, P ) e n i amostras do ruído n (t ) ∼ N (0, N0 B ) inde-
pendentes ¡ ¢de x i .¡Considerando
¡ ¢ a¡saída¢ y (t ) = x (t ) +¡n (t ),¢ determine: a)
h (n) e h y ; b) I x; y = h y −h y|x ; c) C s = max I x; y : x ∼ N (0, P ).
¢

I.7.2 Exercícios
1. Um canal de voz da rede telefônica tem uma largura de banda de 3,4
kHz (suposta plana). a) Calcule a capacidade de informação do canal
telefônico correspondente a uma SNR de 30 dB; b) Calcule a SNR mínima
necessária para suportar transmissão de informação através do canal
telefônico a uma taxa de 9600 bits/s.
(Resp.: 33888 bits/s ; 7.83dB)
2. Dados alfanuméricos são introduzidos em um computador através
de um canal telefônico de voz. O canal tem largura de banda de 3,4 kHz e
I.7.2. Exercícios 43

SNR de 20 dB e são transmitidos 128 símbolos. Suponha que os símbolos


sejam equiprováveis e as transmissões sucessivas sejam estatisticamente
independentes. a) Calcule a capacidade de informação do canal; b) Cal-
cule a taxa de símbolos máxima para a qual é possível uma comunicação
isenta de erros através do canal.
(Resp.: 22638 bits/s ; Ts=0.3092 ms ou 1/Ts=3234 simb./s)
3. Uma imagem de televisão em preto e branco pode ser vista como
uma imagem que consiste de aproximadamente 3×105 elementos, sendo
que cada um tem a mesma probabilidade de ocupar um dos 10 níveis de
brilho distintos. Suponha que a taxa de transmissão seja de 30 quadros
por segundo e que a SNR seja de 30 dB. Calcule a largura de banda
mínima necessária para a transmissão do sinal de vídeo resultante.
(Resp.: 3.61 Mhz)
4. Uma fonte discreta de informação possui um alfabeto quaternário
com símbolos equiprováveis emitidos a taxa de 11000 símbolos/s. Depois
da codificação de canal, a informação é transmitida por um canal de
44000 bits/s. Suponha o esquema abaixo:

a) Determine a o intervalo de tempo entre os dígitos binários na


entrada do codificador de canal.
b) Qual a menor taxa de código para que haja uma transmissão com
probabilidade de erro arbitrariamente baixa?
c) Para este cenário, qual deve ser a largura de banda do canal sa-
bendo que a SNR é de 35 dB? (Resp.: 45.4e-6; 0.5; 3.78kHz)
C APÍTULO I.8

Aplicações da Teoria da Informação

Neste capítulo, a teoria da informação é usada para fornecer a capacidade


máxima teórica de um canal de comunicação. A capacidade calculada
pode ser usada para medir o desempenho de sistemas de comunicação
práticos como alguns sistemas digitais discutidos a seguir.

I.8.1 Desempenho de Sistemas de Comuni-


cação Digitais
Considere um canal com ruído aditivo, gaussino e branco (AWGN), com
banda de frequência limitada, B , suposta plana e, portanto, potência
N = B N0 .
Um sistema de comunicação digital utiliza o canal e transmite com
uma potência média S e uma taxa de R b bits/s. Nos livros didáticos de
comunicações digitais, é comum se encontrar a potência expressa como
energia por bit de informação (E b ) de maneira que a potência média
S = E b Rb .
Um sistema ideal alcançaria uma taxa igual à capacidade do canal.
Substituindo a potência média do sinal S = E b R b = E b C e do ruído N =
B N0 na fórmula
S
µ ¶
C = B log2 1 +
N
obtém-se
C Eb C E b 2C /B − 1
µ ¶
= log2 1 + =⇒ = . (I.8.1)
B N0 B N0 C /B
Já um sistema prático (Pulse Amplitude Modulation, PAM; Quadrature
Amplitude Modulation, QAM etc.) deve ter desempenho inferior. Mais
especificamente, para um dado valor de E b /N0 , um sistema prático deve
ter eficiência espectral, R b /B , dada em (bits/s)/Hz, obedecendo:

R b /B ≤ C /B.

A Equação (I.8.1) permite traçar uma curva que relaciona a taxa com
a potência de um sistema ideal (Figura 1).
46 Capítulo I.8. Aplicações da Teoria da Informação

Figura 1 – Desempenho de sistema ideal: taxa (R b /B ) versus energia


(E b /N0 ): (1) energia mínima, E b /N0 = l n(2) ≈ 0,6931 ≈
−1.5917dB ; (2) taxa igual à capacidade do canal, R b = C ; (3)
prolongamento linear de (2). Fonte própria.

A Fig. 9.17 traz a curva prevista por (I.8.1) juntamente com os valores
de R b /B para alguns sistemas. E a Fig. 9.18 apresenta o limite de desem-
penho para comunicação binária empregando sinalização bipolar num
canal AWGN. (Figuras do Haykin [3].)
I.8.2. Medidas adequadas para a intensidade do sinal e do ruído. 47

• Exemplo 1 Mostre que para banda infinita: a) o valor mínimo de


E b /N0 tende ao limite ln 2 = 0.693 ≈ −1.59 dB. b) A capacidade do canal
C tende a S/N0 log2 e ≈ 1.44S/N0 .

I.8.2 Medidas adequadas para a intensidade


do sinal e do ruído.
Quando a largura de banda não é muito grande, diz-se que o sistema
trabalha em regime de banda limitada. Podemos citar o caso de modens
telefônicos que trabalham com larguras de banda da ordem de alguns ki-
lohertz. Na literatura, é usual empregar E b /N0 para representar a energia
do sinal nesses sistemas.
48 Capítulo I.8. Aplicações da Teoria da Informação

Já em sistemas de comunicação que trabalham com uma largura de


banda muito grande ou virtualmente ilimitada, a densidade espectral
de energia do sinal pode ser muito baixa, produzindo valores muito
pequenos de E b . Como exemplo, tem-se as comunicações de satélites.
As publicações mais recentes definem a relação sinal ruído normalizada
para estes casos, conforme as fórmulas a seguir. [4, Chap. 4]
Partindo da fórmula de Shannon
Rb
< log2 (1 + SNR) ⇒ SNR > 2(Rb /B ) − 1 (I.8.2)
B

definimos a relação sinal-ruído normalizada

SNR
SNRnor m , Rb
> 1. (I.8.3)
2 B −1

em que a SNR do sistema prático foi normalizada com respeito à relação


Rb
sinal-ruído de um sistema ideal, que seria (2 B − 1). Um sistema ideal
trabalha com mínima potência de sinal, já que possui SNRnor m = 1 ou
0dB.
Note-se que as duas medidas de intensidade do sinal são relacionadas
por
E b Rb
SNR = = (E b /N0 ) (R b /B ) . (I.8.4)
N0 B
Substituindo esta relação em (I.8.2), vem

2(Rb /B ) − 1
(E b /N0 ) > (I.8.5)
(R b /B )

Vale notar que o limite de Shannon para a energia E b /N0 é uma


função monotônica da taxa R b /B . Por exemplo, para R b /B = 2, ele é igual
a 3/2 (1,76 dB); para R b /B = 1, ele é igual a 1 (0 dB); e, na medida em que
(R b /B ) → 0, ele se aproxima de l n2 ≈ 0.69 (−1.59 dB), que é chamado de
limite final de Shannon para a razão E b /N0 . [4, Chap. 4]
• Exemplo 2 [Carlson, p.731] Seja um canal AWGN com largura de banda
de transmissão B T e relação sinal-ruído no receptor (S/N )R = S R / (N0 B T ).
Considere, ainda, a transmissão de sinal binário usando pulsos sinc com
esquema polar. Neste caso, a máxima taxa de “sinalização” é 2B T e, caso
sehempregueifiltro casado no receptor, a probabilidade de erro é P e =
p
Q 2E b /N0 . Tal sistema pode ser visto como um BSC com taxa de
símbolos R s = 2B T e probabilidade de erro de bit p = P e . Pede-se:
a) Escreva (S/N )R em função de E b /N0 ;
b) Obtenha C /B T em função de (S/N )R para o BSC;
c) Traçe a curva de C /B T (em escala linear) versus (S/N )R (em dB)
para o BSC e para o sistema ideal: C /B T = log2 [1 + (S/N )R ].
I.8.2. Medidas adequadas para a intensidade do sinal e do ruído. 49

e) O que ocorre com o desempenho do BSC para valores elevados


de relação sinal-ruído? Qual esquema seria melhor se empregar nestes
casos?
f ) E no caso de largura de banda muito grande e relação sinal-ruído
baixa, o que se pode afirmar quanto ao desempenho do BSC? Como
se pode alcançar este desempenho a partir do sinal binário com nível
elevado de ruído?
Exercícios
1. [Carlson, p.731-2] Repita o “Exemplo 1” para o caso de comunicação
M -ária (sem codificação de canal) segundo o seguinte esquema

Suponha uma fonte binária que emite dígitos equiprováveis à taxa R b


bits/s. Estes dígitos binários são convertidos em “sinal de linha M -ário”
com M = 2K , empregando pulsos sinc com esquema polar e filtro casado
no receptor. Nesta situação, tem-se:
Rb
= 2K
BT
µ ¶ Ãr !
2 1 6K
P be ≈ 1− Q γb , (I.8.6)
K M M2 −1
sendo γb = E b /N0 e E b = S R /R b . Pede-se:
a) Para P be ≈ 10−4 , faça o gráfico de R b /B versus γb .
b) Use (I.8.1) para traçar no mesmo gráfico a curva correspondente
ao sistema ideal.
50 Capítulo I.8. Aplicações da Teoria da Informação

c) Para P be ≈ 10−4 e R b /B ≥ 2, o sistema M -ário deve ter quantos dB’s


a mais de sinal para alcançar o desempenho do sistema ideal?
d) O que pode ser feito para melhorar o desempenho do sistema
M -ário aproximando-o do ideal?

2. [mit-ocw II, Sec.4.4.2] a) Escreva P e do “Exemplo 1” em função de SNR


e de SNRnor m . b) Coloque as curvas do exercício anterior no mesmo
gráfico do “Exemplo 1”.
Resp.: Pe = Q(sqrt(SNR)) = Q(sqrt(3SNRnorm))
Parte II
Códigos Corretores de Erros
C APÍTULO II.1

Códigos de Bloco

II.1.1 Controle de Erros


Considere o modelo da Figura 2 que representa um sistema de comuni-
cação digital. Os dados emitidos pela fonte são mapeados em símbolos
discretos pelo codificador. O canal é um meio físico que serve que trans-
porta formas de onda portadoras dos símbolos, normalmente, pela de
modulação de suas características. O ruído introduz pertubações nas for-
mas de onda que, ocasionalmente, provocam erros nos dados recebidos.

Figura 2 – Sistema de comunicação digital. [3, Fig.10.1]

A taxa de erros depende da razão sinal-ruído (dada por E b /N0 , SNR


ou SNRnor m etc.) para um dado esquema de modulação/demodulação
e canal de comunicação. A qualidade dos dados pode ser melhorada
lançando mão de estratégias de controle de erros [3, Sec. 10.1], sendo as
mais comuns:
- FEC (Forward Error Correction): codificador de canal introduz re-
dundância nos bits de dados. Emprega códigos corretores de erro. Para
melhorar o desempenho (eficiência de banda), pode juntar “codificador
com modulador” no transmissor e “decodificador com demodulador”
no receptor. Também pode usar estratégia Soft-Decision (ou invés de
Hard-Decision) para melhorar a detecção de pulsos no receptor.
- ARQ (Automatic-repeat request): canal de retorno do receptor para
o transmissor usado para solicitar retransmissão em caso de erro na
decodificação. Usa códigos detectores de erro. Pode usar as estratégias
stop and wait (canal half-duplex), pullback ou selective repeat (canal
full-duplex).
• Códigos de Bloco. Conceitos preliminares:
54 Capítulo II.1. Códigos de Bloco

a) Um campo é um conjunto de elementos com operações de soma


e multiplicação bem definidas: {F; ⊕; ⊗}. Exige-se, ainda, que exista para
qualquer a ∈ F:
– Elemento nulo: a ⊕ 0 = a.
– Elemento inverso para a adição: a ⊕ (−a) = 0. (Permite definir a
subtração.)
– Elemento identidade para a multiplicação: a ¡ ⊗ 1¢= a.
– Elemento inverso para a multiplicação: a ⊗ a −1 = 1, a 6= 0.
Consideramos apenas campos abelianos, isto é, ainda vale: a ¯ b =
b ¯ a, sendo ¯ a multiplicação ou a soma. A divisão é definida a partir da
multiplicação.
O campo binário F2 = {0, 1} tem soma módulo 2 (que proporciona o
mesmo resultado que o “ou-exclusivo”) e produto binário (tal como um
“and” lógico).
b) Um espaço vetorial sobre um campo {F; ⊕; ⊗}:
– Deve conter o vetor nulo: 0 ∈ F.
– Deve ser fechado em relação à soma: v 1 ⊕ v 2 ∈ F, para quaisquer v 1 ,
v 2 ∈ F.
– Tem definida uma multiplicação por escalar.
O conjunto de n-uplas (F2 )n (produto cartesiano de n elementos bi-
nários) com adição binária realizada componente a componente é um es-
paço vetorial binário. Por exemplo: (F2 )1 = {0, 1}; (F2 )2 = {00, 01, 10, 11}
etc.
c) Um código de bloco C com n bits de comprimento é um subes-
paço de (F2 )n . Para dados com k bits, o código C deve conter 2k elemen-
tos (vetores) escolhidos dentro do espaço (F2 )n que possui 2n vetores.
Empregamos a notação: código de bloco C (n, k), com |C | = 2k (“ta-
manho” do código) e |(F2 )n | = 2n (“tamanho” do espaço).
O subespaço C é gerado por k vetores geradores G = g1 , g2 , . . . , gk ∈
© ª

(F2 )n , podendo-se escrever


nX o
k
C (G) = α g , com α j ∈ F2 e j = 1, 2, . . . , k
j =1 j j
(II.1.1)

como queremos |C (G)| = 2k , os vetores geradores devem ser linearmente


independentes (L.I.).
Conclusão: Um código de bloco (n, k) binário é qualquer cojunto de
2k palavras de código (n-uplas binárias) que deve ser fechado em relação
à soma binária realizada bit a bit.1 Além do mais, ele sempre deve conter
o elemento nulo (00 . . . 0) já que a soma de qualquer palavra consigo
mesma é sempre nula: a ⊕ a = 0, para qualquer palavra de código a.
• Exemplo 1 [4, Exemplo 2, p.62] Códigos de bloco (Binary Linear Block
Codes) simples:
· (n, n) : C = (F2 )n . Código universo de comprimento n.
1
Um código é dito “linear” se a soma de qualquer par palavras de código sempre
resulta numa palavra do código.
II.1.1. Controle de Erros 55

· (n, 0) : C = {0}. Código trivial contém apenas o vetor nulo 0 = [00 . . . 0]


de comprimento n.
· (n, 1) : C = {0, 1}. Código de repetição de comprimento n.
Obs.: C 0 = {0, a}, com a 6= 0, também é um código de bloco (n, 1)
válido. O código de repetição corresponde ao caso particular em que
a = 1 = [1 1 . . . 1]. ©
· (n, n − 1) : C = V ⊂ (F2 )n : v ∈ V tem número par de 1’s . Código de
ª

paridade ou SPC (single-parity-check).


• Teorema¡(Invariância da Distância): O conjunto de distâncias de
Hamming d H x, y entre qualquer palavra de código x ∈ C e todas as
¢

demais palavras de código y ∈ C é independende de x.


Corolário: O conjunto de distâncias é o mesmo ¡ ¢se fixarmos x = 0. E,
neste caso, são iguais aos pesos de Hamming w H y .
Um código de bloco C (n, k) possui distância mínima dada por
¡ ¢
d = min d H x, y
(x6=y)∈C

e passamos a denotá-lo por C (n, k, d ).


O número de palavras com distância d a partir de uma dada palavra
fixada qualquer é sempre Nd (constante).
A distância mínima d = 2t + 1 possibilita detecção e correção de erro
em até t bits.
Já a distância mínima d = t + 1 possibilita apenas detecção de erro
em até t bits.
• Exemplo 2 [4, Exemplo x, p.xx] Códigos simples:
· Código universo: d = 1 e Nd = n.
· Código trivial: d = ∞ por convenção.
· Código de repetição: d = n e Nd = 1.
· Código SPC: d = 2 e Nd = n (n − 1) /2.
• Exemplo 3 O código SPC C (3, 2, 2) possui 4 palavras {000, 011, 101, 110}
e qualquer par de palavras de código não nulas gera o código. Note que
a base não é ortogonal já que os vetores geradores não são ortogonais
entre si.
• Código Dual (ortogonal a C ) é um conjunto de n-uplas ortogonais
a todos elementos de C :

C ⊥ = y ∈ (F2 )n |〈x,y〉 = 0, para qualquer x ∈C


© ª

e, além do mais, o código dual C ⊥ é um código de bloco (n, n − k).


• Notação matricial: a base G do código C (n, k) é um conjunto de n-
uplas L.I. que podem ser dispostas numa matriz Gk×n de posto k. Neste
k
caso, podemos escrever C = aG, a ∈ (F2 ) .
© ª

De maneira semelhante, a base H do código dual C ⊥ (n, n − k) ªpode


ser representada por uma matriz H(n−k)×n e C ⊥ = bH, b ∈ (F2 )n−k .
©

Vale
GHT = {0}
56 Capítulo II.1. Códigos de Bloco

sendo HT chamada de matriz de verificação de paridade do código C


uma vez que um vetor x ∈ C , se e somente se, xHT = 0.

• Exemplo 4 O código de Hamming foi o primeiro código de correção


binário a ser criado e são códigos de bloco C (2m − 1, 2m − 1 − m, 3).

a) Informe quantos dígitos binários um código de Hamming é capaz


de corrigir.

Agora, para m = 2, considere um código de Hamming sistemático


que tenha palavras código c = [C 1 C 2 C 3 ] da seguinte forma

01 10 11 ←posição em binário
[P 1 , P 2 , D 1 ] (1)

sendo P 1 e P 2 os dígitos de paridade e D 1 o dado. Pede-se:

b) Faça uma tabela com os vários padrões de erro (num único dígito)
que podem ocorrer. Lembre-se que a palavra recebida r = c + e.

c) Dado que a síndrome s , rHT , para a cada padrão de erro e =


[E 1 E 2 E 3 ], escolha s = [S 1 S 2 ] de maneira que (S 2 S 1 )bi nar i o indique a
posição, cf. definida em (1), do dígito errado.

d) A partir da tabela, deduza as expressões de cada S i e obtenha a


matriz de verificação de paridade HT .

e) Deduza as expressões de cada C i da palavra de código e obtenha a


matriz geradora G.

f ) Verifique que GHT = {0}. As matrizes estão em forma canônica?

• Um “codebook” é uma tabela que relaciona as palavras de código


(n-uplas) e respectivos blocos de dados (k-uplas). A regra de associação
entre os dados e as palavras de código também pode ser dada por uma
operação algébrica ou por um algoritmo.
II.1.1. Controle de Erros 57

Exercícios

1. Códigos de Hamming permitem a correção de erro em 1 bit.


a) Em geral, para qualquer código de bloco linear e binário, se o
número de bits de dados for k, então o número de bits de paridade
necessários m = n − k na palavra de código com n bits deve satisfazer a
inequação:
2m ≥ k + m + 1 (Condição de Hamming)
Em particular, para k = 4 bits de dados, qual o valor mínimo de m neces-
sário? Qual o tamanho, n, das palavras de código?
Agora, considere um código de Hamming sistemático que tenha pala-
vras código da seguinte forma
001 010 011 100 101 110 111
P1 , P2 , D 1, P3 , D 2, D 3, D 4
sendo P i os bits de paridade, D j os bits de dados. Note que, acima de
cada bit da palavra de código, foi anotada a posição em binário.
b) Faça uma tabela com os vários padrões de erro (num único bit)
que podem ocorrer. Lembre-se que a palavra recebida r = c + e.
c) Dado que a síndrome: s = [S 1 S 2 S 3 ], associe a cada padrão de erro
um valor para (S 3 S 2 S 1 )bi nar i o que aponte a posição do bit errado.
d) A partir da tabela, deduza as expressões de cada S i e obtenha a
matriz de verificação de paridade H.
e) Deduza as expressões de cada C i da palavra de código em função
dos dígitos de dados D j e, a partir dessas expressões, obtenha a matriz
geradora G.
2. Usando o código do “Exercío 1”:
a) Suponha que a palavra 0011001 foi transmitida, mas no receptor
obteve-se 0010001. Use a matriz H para encontrar o bit errado.
b) Usando a matriz G, obtenha a palavra de código correspondente
ao dado igual a 1001.
Obs.: Alguns autores, definem a palavra de código com os dígitos de
dados agrupados no final (ou no começo) da palavra de código, de ma-
neira que, para um C (7, 4, 3), teríamos: c = [C 1 , C 2 , C 3 , C 4 , C 5 , C 6 , C 7 ] =
.
[P , P , P , D , D , D , D ] = [p .. d] em que p é a paridade. Neste caso
1 2 3 1 2 3 4
específico, as matrizes H e G assumiriam um formato especial, conhe-
. .
cido como canônico, no qual H = [PT .. I ] e G = [P .. I ], sendo P uma
m k
sub-matriz que fornece a paridade, p = d.P.
Para evitar a confusão, o código descrito pelo “Algoritmo de Ham-
ming” é conhecido como “Código de Hamming Posicional”, sendo o
termo “Código de Hamming” usado para se referir aos códigos
C 2m − 1, 2m − 1 − m, 3
¡ ¢

de maneira geral.
C APÍTULO II.2

Códigos de Bloco Lineares de Comprimento fixo

II.2.1 Introdução
Códigos de repetição, de verificação de paridade e os códigos de Ham-
ming, todos, são Códigos de Bloco Lineares (CBL), muitas vezes chama-
dos apenas de códigos de bloco, deixando-se implícito a linearidade que,
como foi vista, possibilita o tratamento algébrico desses códigos.
Também é comum se supor apenas o caso de comprimento fixo para
os dados, d = [D 1 , D 2 , . . . , D k ] (k-uplas), e para as palavras de código,
c = [C 1 , C 2 , . . . , C n ] (n-uplas).
Além disso, caso o código seja sistemático, os dígitos de dados D i
aparecerão em algumas posições da palavra de código e demais posições
poderão servir para verificação conforme exemplificado a seguir.
Exemplo 0 - Seja código de bloco C (n,k) = C (3,2) = {000, 010, 100, 110}.
Uma possível associação entre blocos de dado e de código é a seguinte:

Dado Pal. de Cód.


00 000
001
010
01 011
100
10 101
11 110
111

Os códigos não usados são denominados redundantes e podem ser


usados para tratar erros. Neste exemplo, tem-se um SPC em que o último
dígito é a paridade. O dígito de paridade pode ser usado para detectar
um número ímpar de erros.

II.2.2 Condição de Hamming


Esta condição, em inglês, Hamming Bound, permite determinar quantos
dígitos de paridade (m) são necessários para corrigir erros simples, isto
quando se deseja transmitir k dígitos de dado. Pode ser obtida contando-
se o número de palavras usadas
60 Capítulo II.2. Códigos de Bloco Lineares de Comprimento fixo

- Pal. de Cód. (1): tem n Pal. Redundantes


- Pal. de Cód. (2): tem n Pal. Redundantes
..
.
- Pal. de Cód. (2k ): tem n Pal. Redundantes
Total (usado): 2k Pal. de Cód. (válidas) + 2k n Pal. Redundantes

e comparando com o total disponível: 2n códigos (n-uplas). Daí, conclui-


se que
2n ≥ 2k + 2k n ⇒ 2m ≥ k + m + 1 (II.2.1)
Já para o caso de de erros múltiplos (t ≥ 1), de maneira análoga ao
raciocínio anterior, para cada Pal. de Cód. (válida) tem-se:

- com erro em 1 dígito: n ¡ ¢ Pal. Redundantes;


- com erro em 2 dígitos: n2 Pal. Reduntantes;
..
. ¡ ¢
- com erro em t dígitos: nt Pal. Reduntantes.
Total (usado): 2k Pal. de Cód. (válidas) + 2k tj =1 nj Pal. Redundantes
P ¡ ¢

Daí, deve-se ter


à !
t n
n k k
X
2 ≥ 2 +2 ⇒ chega-se em (II.2.2).
j =1 j

• Hamming Bound (para o caso binário). O emprego de síndrome


num Código de Bloco Linear C (n, k) permite corrigir até t erros na
palavra de código binário recebida desde que
à ! à !
t n n n!
2n−k ≥
X
, =¡ ¢ . (Veja [2, Cap. 16].) (II.2.2)
j =0 j j n − j !j!

Códigos que alcançam o limite acima com a igualdade são chama-


dos de “códigos perfeitos” e, no caso de palavras empregando símbolos
binários, pode-se citar como exemplos: os códigos de repetição de com-
primento ímpar, os códigos universo e os códigos de Hamming.1 Deve-se
ressaltar que a condição acima é necessária, mas não suficiente, para a
existência de um dado C (n, k, d ).
• Há outras condições envolvendo os parâmetros n, k e d de um
código de bloco como, por exemplo, o Singleton Bound,
cf. [http://en.wikipedia.org/wiki/Singleton_bound].
Exemplo 1 Verifique a expressão anterior para alguns códigos simples:
Universo, SPC, Hamming, Repetição e Trivial. Quais são perfeitos?
1
“In 1973, it was proved that any non-trivial perfect code over a prime-power alphabet
has the parameters of a Hamming code or a Golay code.” [Hamming bound, wiki]
II.2.2. Condição de Hamming 61

• Códigos Reed-Muller. Constituem uma família de códigos (line-


ares) de bloco a qual pertencem alguns códigos já vistos (cf. Fig. 1). De-
pende dos parâmetros: m ≥ 0 e −1 ≤ r ≤ m. O comprimento (n = 2m ) e a
distância mínima (d = 2m−r , para r ≥ 0) são, ambos, potência de 2. São
aninhados, de maneira que RM(r −1, m) ⊆ RM(r , m) e toda a tabela pode
ser construída a partir dos códigos “elementares” usando a contrução “u
u + v” [4, Chap.6]:
© ª
RM(r , m) = [u, u + v] : u ∈ RM(r , m − 1), v ∈ RM(r − 1, m − 1) (II.2.3)

Fig. 1 - Tabela de Códigos Reed-Muller ([4, Chap.6, Fig.2])

Obs.[4, Chap.6, p.66]:


- Para inteiros m ≥ 0 e 0 ≤ r ≤ m, existem códigos RM, denotados por
RM (r , m) que têm comprimento n = 2m e distância mínima d = 2m−r .
- No caso de r = m, RM (m, m) é definido como sendo o código uni-
verso C (2m , 2m , 1).
- Já para r = −1, RM (−1, m) , C (2m , 0, ∞) que são códigos triviais
de comprimento 2m .
• Exemplo 2 Obter alguns códigos RM, para m ≥ 1 e 0 ≤ r < m, a
partir dos códigos elementares: o código universo e o código trivial.
62 Capítulo II.2. Códigos de Bloco Lineares de Comprimento fixo

Exercícios
1. [1,Probl.11.13] Para um Código de Bloco Linear C (6, 3) sistemático, os
três dígitos de verificação de paridade são formados pelas equações:

C4 = D1 + D3
C 5 = D 1 + D 2 + d3
C6 = D1 + D2

Pede-se:
a) Escreva a matriz geradora G.
b) Construa todas as palavras de código possíveis.
c) Suponha que a palavra de código recebida seja 010111. Decodifique
esta palavra encontrando a posição do erro e determinando os bits de
dados transmitidos.
2. [1,Probl..11.14] Um código de bloco possui a seguinte matriz de verifi-
cação de paridade H T , sendo
 
1 0 1 1 0 0
H =  1 1 0 0 1 0 .
0 1 1 0 0 1

Supondo código sistemático com os dígitos de verificação de paridade


agrupados no final da palavra de código, pede-se:
a) Determine a matriz geradora G.
b) Encontre a palavra de código que começa com 101....
c) Suponha que a palavra recebida seja 110110. Decodifique esta
palavra.
• Obs.: (Teorema) A distância mínima d de um Código de Bloco (Li-
near) C é igual ao mínimo número de linhas da matriz HT que produzem
soma 0. (Prova: usar o peso mínimo das palavras de código.)
C APÍTULO II.3

Códigos Cíclicos: Introdução

II.3.1 Introdução
Os códigos cíclicos constituem uma classe de códigos de bloco lineares.

Fig. 1 - Códigos cíclicos são códigos de bloco lineares.Fonte: [6, pág.137].

Definição: Um código de bloco linear C (n, k, d ) é cíclico se, para


toda palavra do código c = [C 0C 1 · · ·C n−1 ], todos os deslocamentos circu-
lares
c(1) = [C n−1C 0C 1 · · ·C n−2 ] ,
c(2) = [C n−2C n−1C 0C 1 · · ·C n−3 ] etc.
também são palavras de código válidas.

Dito de outro modo, para um código cíclico há duas exigências:

• a linearidade: a soma de duas palavras de código é outra palavra


válida;

• a propriedade cíclica: o deslocamento circular de uma palavra de


código é outra palavra válida.

Dentre os códigos de bloco lineares, há poucos códigos obedecem


à propriedade cíclica. Por exemplo, apenas dois dos códigos binários
C (7,3), dentre os 11811 possíveis, são cíclicos. (MCELIECE, 2000 apud
ABRANTES, 2010)

Exemplo 0 Determine quantos códigos (3,1) existem e quantos são


lineares e quantos são cíclicos.
Exemplo 1 Verifique se são cíclicos: a) C a = {000, 110, 101, 011}; b)
C b = {000, 100, 011, 111}.
64 Capítulo II.3. Códigos Cíclicos: Introdução

Pode-se estabelecer uma relação entre:


· Vetor c = [c 0 c 1 . . . c n−1 ] · Polinômio c (x) = c 0 + c 1 x + · · · + c n−1 x n−1
n
c ∈ (F2 ) c (x) ∈ F2 [x]
1
anel de n-uplas binárias anel de polinômios com n coeficientes binários,
ou seja, com grau deg {c (x)} ≤ n − 1.

· O deslocamento · O produto/divisão de polinômios


é realizado “mod n” é realizado “mod (x n + 1)”

O polinômio c (i ) (x) correspondente ao deslocamento de i posições


para a direita pode ser obtido pela multiplicação de c (x) por x i :

c (i ) (x) = x i c (x) mod x n + 1 .


¡ ¢

Dem.: Para códigos de comprimento n, temos

c (x) = C 0 +C 1 x + · · · +C n−1 x n−1 ,


então

c (1) (x) = C n−1 +C 0 x + · · · +C n−2 x n−1 = xc (x) −C n−1 x n +C n−1


= xc (x) −C n−1 x n − 1 . (II.3.1)
¡ ¢

Tomando-se mod (x n − 1), vem

c (1) (x) mod x n − 1 = xc (x) −C n−1 x n − 1 mod x n − 1


¡ ¢ £ ¡ ¢¤ ¡ ¢
| {z }
c (1) (x)
= xc (x) mod x n − 1 −C n−1 x n − 1 mod x n − 1 . QED
¡ ¢ ¡ ¢ ¡ ¢
| {z }
0

Note que usamos a propriedade distributiva do módulo:

(a − b) mod c = a mod c − b mod c.

E, em F2 , a subtração coincide com a operação de soma, de maneira


que (x n − 1) = (x n + 1).
É possível definir uma relação alternativa entre o vetor e o polinômio.
Em (ABRANTES, 2010), os coeficientes são enumerados a partir do final
do vetor segundo potências decrescentes de x, de maneira que

y = [y n−1 y n−2 . . . y 0 ] e y(x) = y n−1 x n−1 + y n−2 x n−2 + · · · + y 0 .

Uma vantagem é que o polinômio já se encontra na forma adequada para


realizar a operação de divisão longa, já que não é necessário inverter a
1
Um “anel” é semelhante a um “campo”, ou corpo, exceto que alguns elementos (não
nulos) não têm inverso.
II.3.1. Introdução 65

ordem dos coeficientes. Deve-se atentar que a multiplicação por x, agora,


ocasiona um deslocamento circular à esquerda.
Exemplo Determine o polinômio e o vetor correspondente à sequên-
cia binária 101011 com os dígitos transmitidos da esquerda para a direita.
Faça a multiplicação do polinômio por x e determine o deslocamento
produzido.
Solução 1: y = [101011] e polinômio com potências crescentes y(x) =
1 + x 2 + x 4 + x 5.
Multiplicação por x: y(x) = x(1+x 2 +x 4 +x 5 ) mod(x 6 +1) = 1+x +x 3 +x 5 ,
produzindo um deslocamento à direita: y = [110101].
Solução 2: y = [101011] e polinômio com potências decrescentes
y(x) = x 5 + x 3 + x + 1.
Multiplicação por x: y(x) = x(x 5 + x 3 + x +1) mod(x 6 +1) = x 4 + x 2 + x +1,
produzindo um deslocamento à esquerda: y = [010111] .
Teorema: [5, Teo. 4.2.1] Seja C um código cíclico não nulo em (F2 )n .
Existe um polinômio mônico g (x) ∈ C com as seguintes propriedades:
(i) o polinômio mônico de mínimo grau em C é único, sendo tomado
como polinômio gerador.
(ii) g (x) é fator de (x n + 1).
Seja deg g (x) = n − k, ou melhor, g (x) = n−k i
© ª P
i =0 g i x , com g n−k = 1.
Então:
(iii) a dimensão de C é k e g (x) , xg (x) , x k−1 g (x) é uma base para
© ª

C (n,k) e
(iv) cada elemento de C pode ser expresso de maneira única pelo
produto

c (x) = d (x) g (x) ,

sendo d (x) = 0 ou então deg {d (x)} ≤ k − 1.


(vi) uma matriz geradora para C é

 

g0 g1 g2 · · · g n−k 0
 g (x)
 0 g0 g1 · · · g n−k−1 g n−k   xg (x) 
G= = 
··· ··· ··· ..
  .
 
 
0 g0 ··· g n−k x k−1 g (x)

a qual, em geral, não produz um código sistemático.


Exemplo 2 Para o código do item “a)” do “Exemplo 1”: a) Encontre o
polinômio gerador g (x); b) Obtenha os fatores de (x n + 1) e verifique as
cláusulas do teorema.
66 Capítulo II.3. Códigos Cíclicos: Introdução

Exercícios
1. [1,Probl.11.25] a) Mostre que C = {0000, 0101, 1010, 1111} é um código
de bloco linear cíclico.
b) Forneça um exemplo de código de bloco linear C 0 , também de
comprimento n = 4, mas que não seja cíclico.
2. [1,Probl.11.28] Considere o código cíclico do exercício anterior.
a) Forneça os parâmetros n, k e d . Em seguida, encontre o polinômio
gerador g (x).
b) Mostre que todos os polinômios do código são múltiplos de g (x),
isto é, c (x) = d (x) g (x), para todos os d (x) ∈ F2 [x] de grau estritamente
menor do que k.
c) Verifique que g (x) é fator de (x n + 1).
Notação: g (x) | (x n + 1), que pode ser lida, em inglês, como g (x)
divides (x n + 1).
d) Encontre os fatores de (x n + 1) e verifique que o fator (polinômio
mônico) de mínimo grau é único.
e) Para a palavra de código c = [0101] use a divisão longa c (x) /g (x)
para encontrar o vetor de dados d.

0
Ref.: [1] HWEI HSU, Schaum’s Outlines of Theory and Problems of Analog and Digi-
tal Communications, 2a. Ed., McGraw-Hill, 2003, Cap. 10. [2] LATHI, B. P. Modern
Digital and Analog Comunication Systems, 3a. Ed. [3] S. HAYKIN, “Sistemas de Co-
municação: Analógicos e Digitais”, Bookman, 4.a Ed., 2004. [4] OCW-MIT, Digital
Communications II, Chap. 7-8. [5] W. CARY HUFFMAN, Fundamentals of Error-
Correcting Codes.
C APÍTULO II.4

Códigos Cíclicos

II.4.1 Tratamento de Erros


Conforme vimos no capítulo anterior, para um código cíclico, a codifica-
ção pode ser feita pelo produto
c (x) = d (x) g (x) , (II.4.1)
correspondendo à convolução dos coeficientes dos polinômios. Ou seja,
usando vetores, temos que c = d ∗ g.
Na ausência de erros, a decodificação pode ser feita pela divisão dos
polinômios
c (x)
= d (x) . (II.4.2)
g (x)
Já na presença de erro, a palavra recebida
r (x) = c (x) + e (x) (II.4.3)
e a síndrome
s (x) = r (x) mod g (x) = e (x) mod g (x) (II.4.4)
em que e (x) é o polinômio de erro.
Se o erro for conhecido, a palavra de código pode ser recuperada:
r (x) + e (x) = c (x) . (II.4.5)
Contudo, dado que para uma síndrome há vários padrões de erro pos-
síveis, há que se adotar um desses padrões como uma estimativa. Ge-
ralmente, adota-se o padrão de erro com menor peso. Normalmente,
este é o padrão mais provável, o que produz uma estimativa de máxima
verosimilhança.
• Teorema: [1, Teo. 11.6] Seja C um código cíclico com distância mínima
d . E seja o polinômio r (x) = c (x) + e (x). Então todos os polinômios de
erro e (x) com peso menor do 12 d tem um único polinômio de síndrome
s (x) = r (x) mod g (x). Prova: [1, Probl. 11.32]
• Teorema: [5, Teo. 4.2.7] Seja C um código cíclico (n, k) com polinômio
gerador g (x). A partir deste, pode-se calcular

(x n − 1) X k
h (x) = = hi x i . (II.4.6)
g (x) i =0
68 Capítulo II.4. Códigos Cíclicos

Então o polinômio gerador do código dual C ⊥ é g ⊥ (x) = x k h x −1 /h 0 ,


¡ ¢

h̄ (x), o polinômio recíproco de h (x). Além do mais, uma matriz geradora


de C ⊥
 
h k h k−1 h k−2 · · · h0 0
 0 h k h k−1 h k−2 · · · h 0 
H = . (II.4.7)
 ··· ··· ··· 
0 h k h k−1 h k−2 · · · h 0

Prova: [1, Probl. 11.39]


A partir do formato da matriz de verificação de paridade, pode-se
observar que o código dual também é cíclico.
O polinômio h (x) é fator 1 de (x n − 1), portanto g (x) h (x) = (1 + x n )
ou, de maneira equivalente,

g (x) h (x) mod 1 + x n = 0.


¡ ¢
(II.4.8)

Disto, conclui-se que c (x) h (x) = d (x) g (x) h (x) = 0. Por isto h (x) faz as
vezes de polinômio de verificação de paridade.
• Relações entre os polinômios geradores, polinômios de verificação
de paridade e recíprocos:

C : g (x) → h (x) → h̄ (x)


q q
h̄ ⊥ (x) ← h ⊥ (x) ← g ⊥ (x) : C ⊥
(Fonte: [6, Fig. 3.1])

• Exemplo 1 Verifique os teoremas para os códigos: a) C a (3,2,2); b)


C b (3,1,3). Em seguida, mostre como a codificação e a decodificação
podem ser implementadas com registradores de deslocamento (atrasos
unitários).

1
Para campos binários, a soma é igual à multiplicação, de maneira que (x n − 1) =
(x n + 1) = (1 + x n ).
II.4.1. Tratamento de Erros 69

Exercícios
1. [1,Probl.11.33] Seja um código cíclico C (7, 4) com polinômio gerador
g (x) = 1 + x + x 3 .
a) Construa a tabela de síndromes:

e (x) s (x) = e (x) mod g (x)


1 1
..
x .
x2
..
.

b) Estime qual o possível dado d enviado para a sequência recebida


r = [1110011]. Dica: use a tabela do item anterior para obter e (x).
c) Obtenha a matriz geradora G.
d) Use a matriz geradora para obter a palavra de código c para dado
d = [1010]. Esse código é sistemático?
e) Obtenha o polinômio de verificação de paridade h (x) e, a partir
dele, a matriz H.
e) Verifique que GHT = 0.
2. [1, p.289] Considere o código do exercício anterior.
a) Desenhe uma implementação de um codificador empregando
registradores de deslocamento.
b) Faça um “teste de mesa” (simulação passo a passo) obtendo a saída
c para a entrada d = [1010].
c) Implemente um decodificador usando registradores de desloca-
mento realimentados.
d) Faça um “teste de mesa” (simulação passo a passo) obtendo a saída
d para a entrada c, obtida no item “b)”. Qual a a sequência de bits na
saída após n passos de simulação?
e) Introduza um erro no último bit de c e repita a decodificação. Qual
o conteúdo dos registradores após n passos de simulação?

1
Ref.: [1] HWEI HSU, Schaum’s Outlines of Theory and Problems of Analog and Digital
Communications, 2a. Ed., McGraw-Hill, 2003, Cap. 10. [2] LATHI, B. P. Modern Digital
and Analog Comunication Systems, 3a. Ed. [3] S. HAYKIN, “Sistemas de Comunica-
ção: Analógicos e Digitais”, Bookman, 4.a Ed., 2004. [4] OCW-MIT, Digital Commu-
nications II, Chap. 6. [5] W. CARY HUFFMAN, Fundamentals of Error-Correcting
Codes. [6] ABRANTES, S. A., Códigos Correctores de Erros em Comunicações Digitais,
1a ed., FEUP Edições, 2010.
C APÍTULO II.5

Códigos de Bloco Práticos

"I swear by Galois that I will be true to the noble of coding theory;
that I will speak of it in the secret language known only to my fellow
initiates; and that I will vigilantly guard the sacred theory from
those who would profane it by practical applications" –James L.
Massey. Coding Theorist’s Pledge.

Nesta aula, apresentamos alguns códigos de bloco lineares, na mai-


oria cíclicos, que são considerados “avançados” pois são capazes de
corrigir erros em uma grande quantidade de dígitos na palavra de código
recebida.

II.5.1 Exemplos de Códigos


• Código de Goley: C (23, 12, d )2 . É o único código binário perfeito
capaz de corrigir até 3 erros. É um código cíclico, podendo ser gerado por
um dos seguintes polinômios:

g 1 (x) = 1+ x + x 5 + x 6 + x 7 + x 11 ou g 2 (x) = 1+ x 2 + x 4 + x 5 + x 6 + x 10 + x 11 .

• Códigos BCH (Bose-Chaudhuri-Hocquenghem). Dados dois in-


teiros m ≥ 3 e t ≥ 1, existe um código de bloco linear:

C 2m − 1, 2m − 1 − mt , d ≥ 2t + 1 2
¡ ¢
(II.5.1)

Escolhendo t = 1, obtém-se o código de Hamming.


• Códigos CRC (Cyclic Redundant Check) são capazes de reconhecer
muitos padrões de erros. Tornaram-se populares dada a facilidade de
implementação a partir do polinômio gerador.

Código n −k k g (x)
CRC-12 12 6 bits 1 + x + x + x 3 + x 11 + x 12
2

CRC-16 16 8 bits 1 + x 2 + x 15 + x 16
CRC-ITU 16 8 bits 1 + x 5 + x 12 + x 16

• Exercício (desafio) - a) Verifique que (1 + x) é fator primo do polinô-


mio gerador de todos os CRC’s acima. b) Demonstre que este fato torna
72 Capítulo II.5. Códigos de Bloco Práticos

os CRC’s anteriores capazes de detectar um número ímpar de erros, a


exemplo do SPC (ou “CRC-1”) que tem polinômio gerador igual a (1 + x).
• Códigos em Campos não Binários. Até o momento, considera-
mos apenas símbolos binários com símbolos c i ∈ F2 . De maneira mais
geral, é possível se empregar símbolos num campo Fq , denotados por
C (n, k, d )q no caso de códigos de bloco lineares.
• Exemplo 1 O código C (3, 2, 2)3 de verificação de paridade em F3 .
• Mesmo considerando-se símbolos q-ários, ainda existe um limite
para t (o número de símbolos que podem ser corrigidos) em função dos
comprimentos n e k, conforme estabelece o teorema a seguir.
Teorema (Singleton bound for linear codes): Um código de bloco li-
near C (n, k, d )q sobre qualquer campo finito Fq tem

k ≤ n − d + 1. (II.5.2)

Quando vale a igualdade, o código é dito de máxima distância (MDS,


“Maximum Distance Separable”).
Infelizmente, para o caso binário (q = 2), os únicos códigos MDS são:
o código trivial, o código universo e o SPC.
• Exemplo 2 Verificar o teorema para alguns códigos de bloco e apre-
sentar uma demonstração para o caso binário.
• Códigos RS (Reed-Solomon). Dados os comprimentos n e k, com
1 ≤ k ≤ n, existe um código de bloco linear

C (n, k, n − k + 1)q

sobre um campo finito Fq , desde que n ≤ q + 1. Os códigos RS são de


máxima distância.
Normalmente, para p primo e M potência de 2, emprega-se q =
p M = 28 de maneira que cada símbolo q-ário pode ser representado por
uma palavra binária de M = 8 “bits” (dígitos binários). Estes, por sua
vez, podem ser representados por um polinômio d (x), sendo o código
c (x) = d (x) .g (x), com gerador g (x) ∈ F2 [x].
Note que o código RS opera em blocos de “bits”, ao contrário de
códigos binários cujos símbolos são os “bits” individuais.

Exercício

1. [6, Exerc. 5.2.14] O esquema de numeração ISBN (International Stan-


dard Book Number) usado para catalogação de livros emprega um código
0
Ref.: [1] HWEI HSU, Schaum’s Outlines of Theory and Problems of Analog and Digi-
tal Communications, 2a. Ed., McGraw-Hill, 2003, Cap. 10. [2] LATHI, B. P. Modern
Digital and Analog Comunication Systems, 3a. Ed. [3] S. HAYKIN, “Sistemas de Co-
municação: Analógicos e Digitais”, Bookman, 4.a Ed., 2004. [4] OCW-MIT, Digital
Communications II, Chap. 7-8. [5] W. CARY HUFFMAN, “Fundamentals of Error-
Correcting Codes”. [6] S. G. WILSON, “Digital Modulation and Coding”.
II.5.1. Exemplos de Códigos 73

de bloco linear sobre o campo F11 . Mais especificamente, cada livro re-
cebe uma identificação única com nove dígitos x 0 -x 1 x 2 -x 3 x 4 x 5 x 6 x 7 x 8
indicando a língua, a editora e o livro. Em seguida, é anexado um último
dígito, x 9 , obedecendo
X9 ¡ ¢
j + 1 x j = 0,
j =0

sendo as operações aritméticas realizadas módulo 11. Caso o símbolo de


paridade (x 9 ) não seja um dígito decimal (0 a 9), emprega-se o símbolo
“X”.
a) Calcule o dígito de verificação x 9 do ISBN 0-13-283796-x 9 .
b) Determine a matriz de verificação de paridade H T .
c) Forneça uma palavra de código de mínimo peso e determine:
c.1) os parâmetros C (n, k, d )q ;
c.2) o número máximo de erros nos dígitos (símbolos na palavra
de código) que podem ser detectados e corrigidos.
d) Por que não empregar apenas símbolos decimais (0 a 9)? É possível
construir um campo algébrico de tamanho 10?
C APÍTULO II.6

Códigos Convolucionais

II.6.1 Introdução
Assim como os códigos cíclicos, os códigos convolucionais tornaram-se
populares por causa da facilidade de codificação e decodificação usando
registradores de deslocamento. No entanto, diferentemente dos códigos
cíclicos, nos quais blocos de dados (de comprimento fixo k) produzem
respectivos blocos de código (de comprimento fixo n), os códigos con-
volucionais produzem um fluxo contínuo de dígitos de código obtido
pela convolução do fluxo de dados com a resposta impulsiva de um sis-
tema linear invariante no tempo (SLIT). Nos codificadores binários, a
convolução é feita usando aritmética binária.
• Exemplo 1 No codificador binário da Fig. 1 (SLIT com 1 entrada e
2 saídas), supondo estado inicial 00, pede-se: a) Para entrada 1011 e o
restante 0s, obtenha a sequência de saída. b) Qual a taxa de codificação?
c) Forneça o diagrama de transição de estados. d) Faça o diagrama de
treliça. e) A partir do diagrama de treliça, determine a distância mínima
(d f r ee ).

Fig. 1 - Codificador convolucional. [Schaum, Fig. 11-6]


76 Capítulo II.6. Códigos Convolucionais

• Exemplo 2 [1, Prob. 11.50] O codificador convolucional da Fig. 1 é usado


em um canal binário simétrico (BSC). Na saída do canal, a sequência
recebida foi r = [1100000111] e o restante 0s. Use o VA (Viterbi Algorithm)
para determinar o caminho de mínimo peso através do diagrama de
treliça e estimar os 5 dígitos de dados. Suponha estado inicial 00.
• Um codificador é catastrófico quando um erro de peso finito é capaz
de produzir um número infinito de erros na sequência decodificada.
II.6.1. Introdução 77

• Exemplo 3 O codificador da Fig. 2 é ligado a um BSC. a) Determine


a resposta impulsiva. b) Projete um decodificador. c) O que acontece
na saída do decodificador se, durante o recebimento de uma sequência
muito longa de 0s, ocorrer erro num único dígito?

Fig. 2 - Codificador convolucional catastrófico.


78 Capítulo II.6. Códigos Convolucionais
II.6.1. Introdução 79

Exercícios
1. [1,Probl.11.67] Dado o codificador convolucional

a) Forneça a resposta impulsiva g e a respectiva representação poli-


nomial g (D).
b) Usando representação polinomial, encontre a sequência codifi-
cada para entrada u = [1100101].
c) Desenhe o diagrama de estados.
d) Esboçe o diagrama de treliça.
e) Usando o diagrama de treliça, encontre a sequência codificada
para entrada u = [1100101].
f ) Determine a distância mínima livre d f r ee neste código.

2. [1,Probl.11.68] Seja o codificador convolucional

a) Desenhe o diagrama de estados.


b) Determine se o código é catastrófico ou não.
Soluções dos Capítulos
Solução I.1 – Revisão de Conceitos de Probabilidade

Exemplo 1

a) Definimos o espaço amostral S como o conjunto de todos os re-


sultados possíveis de um experimento aleatório. Cada resultado é um
"elemento "ou "amostra"deste espaço e pode ser representado como
um ponto no espaço amostral. No experimento de jogar um dado, o es-
paço amostral é constituído de 6 elementos representados pelos pontos:
ξ1 ,ξ2 ,ξ3 , . . . ,ξ6 , com ξi representando que "o n° i foi obtido".

b) Um evento é um subconjunto do espaço amostral S. Cada resul-


tado possível ξi constitui um evento elementar A i = {ξi } constituído de
apenas um elemento ξi .
Associamos a um evento A i uma medida P (A i ) chamada de proba-
bilidade do evento A i . P (A) é uma medida (função) que associa a cada
evento A ⊂ S um número real no intervalo [0,1].
Devido à simetria dos resultados do experimento, temos que:
P ({ξ1 }) = P ({ξ2 }) = . . . = P ({ξ6 }) i.e, qualquer número pode ser obtido com
1
igual probabilidade. Ainda, como 6i =1 P ({ξi }) = 1, resulta que: P ({ξi }) =
P
6
c) A ímpar = ξ1 , ξ3 , ξ5 ocorre em três resultados dentre os 6 possíveis,
logo:
3 1
P (A i mpar ) = = ou seja 50 %
6 2

d) Ã !
6
[ 6
X 1 1
P (S) = P {ξi } = P ({ξi }) = +...+ = 1
i =1 i =1 |6 {z 6}
| {z }
evento certo
6 parcelas
| {z }
união de todos os eventos elementares
84 Solução I.1 – Revisão de Conceitos de Probabilidade

OBS: P (S) é sempre 1!


Exemplo 2
Para este experimento, o espaço amostral contem 36 pontos (amos-
tras ), pois há 36 resultados possíveis:(1,1),(1,2), . . . ,(6,6). Todos estes re-
sultados são igualmente prováveis. Portanto, a probabilidade de cada
resultado é 36.
A soma 7 pode ser obtida em 6 combinações : (1,6), (2,5), (3,4), (4,3),
(5,2), (6,1), logo, o evento "a soma é 7 "é a união de 6 resultados equipro-
váveis.
1 1 6 1
P ( soma= 7 ) = +...+ = =
|36 {z 36} 36 6
6 parcelas

Exemplo 3 Experimento = "retirar 1° carta, não repor, retirar 2º carta ".

a) Eventos: A= "1º carta é ás vermelho"; B = "2º carta é ás vermelho"

2 1 1
P (A.B ) = P (A).P (B |A) = . = ' 0,0754%
52 51 1326

ou seja o evento A.B ocorre em média 1 vez a cada 1326 provas.

b) Experimento = "retirar 1° carta, devolver, retirar 2º carta ".


2 2 1
P (A.B ) = P (A). P (B | A) = . = ' 0,1479%
| {z } 52 52 676
P (B ) pois A e B são independentes

Exemplo 4 C.B.S. com P e = 10−5 Sendo P e = P (0 | 1) = P (1 | 0)

Experimento = "transmitir n bits"


85

a) evento A = "receber k bits errados"


Obs. : Considere o caso simples de n=3 e k=2. O evento A = "receber 2 bits
errados"pode ocorrer de 3 formas. Em geral o "nº de formas"é :
à !
n 3! 3.2!
C n.k = = = = 3.
k 2!(3 − 2!) 2!1!
Cada "forma ", por exemplo, "erro, erro, acerto "tem probabilidade:

nº de formas
z}|{
P e .P e . (1 − P e ) = P e2 .(1 − P e )3−2 logo: P (A) = 3 . P e2 .(1 − P e )3−2 .
| {z } | {z }
Probabilidade de acerto probabilidade de cada forma

à !
m
Em geral P (A) = .P ek .(1 − P e )n−k
k

Para P e = 10−5 n=8 e k=2, calculamos:


à !
8
P (A) = .(10−5 )7 .(1 − 10−5 )8−2 ' 2,8.10−9
2
b) Temos, em média, 1 bit errado a cada 1/P e = 105 bits ∴ B E R ∼
=
P e = 10−5

Exemplo 5 10% dos componentes defeituosos : P (D) = 0,1. O apare-


|{z}
evento defeito
lho detecta o defeito em 95 % dos componentes defeituosos.

D c ) = 0,05
P (Y | D) = 0,95. Daí resulta que: P (Y | |{z}
| {z }
(evento YES , tem defeito) (evento complementar ao evento D, ou seja , evento não tem defeito)

P (D).P (Y | D)
P (D | Y ) = → P (Y ) = P (D).P (Y | D) + P (D c ).P (Y | D c )
P (Y )

0,1 . 0,95 0,095


∴ P (D | Y ) = = ' 0,68.
(0,1 . 0,95) + (0,9 . 0,05) 0,14

Ou seja ,embora o aparelho detecte defeito em 95 % dos componen-


tes defeituosos, a probabilidade do componente ter defeito dado que o
aparelho detectou o defeito é de apenas 70 % .
Solução I.2 – Informação e Entropia

Exemplo 1
Para k = 2 símbolos.
S = {S 0 , S 1 }, S 1 com probabilidade P i = Probabilidade de{i }

H (S) = −p 0 .log2 .p 0 − p 1 .log2 .p 1


chamando p = p 0 e p i = 1 − p o → p i = 1 − p , vem :

Ω(p) , −p.log2 .p−(1−p).log2 (1−p) Que é chamada de Função de Entropia

Figura 3 – Função de Entropia (função "ferradura")

1
∴ a) Caso "0" e "1" emitidos com igual probabilidade, temos p = 0,5 e H (S) = Ω(0,5) = 1.
símbolo

Sendo que 1 bit é a quantidade de informação adquirida ao se obser-


var um dentre dois eventos equiprováveis.

b) Para qualquer D.M.S, vale:

0 ≤ H (S) ≤ log2 K
88 Solução I.2 – Informação e Entropia

OBS: Máxima entropia ocorre para fonte com distribuição uniforme.


É o caso de maior "aleatoriedade"possível em uma fonte D.M.S.
b.2’) Prova do limite inferior:

Se um dos símbolos x j tem P (x j ) = 1, resulta que os demais símbolos


x i 6= j com P (x i ) = 0. Daí, vem:

K
X X
H (S) = − p i .log2 .p i = −1log2 1 − p j .log2 p j = 0
i =1 j 6=i
| {z }
ZERO, prova: calcule o limite de p j →0+

b2’) Prova do limite superior, caso k=2 símbolos:


H (S) = Ω(p) é máximo quando:

Ω(p)
· ¸
1 1
= 0 → −log2 p − − −log2 (1 − p) − =0
dp ln2 ln2

1−p 1−p
µ ¶
log2 =0→ = 1 → p = 0,5
p p
e nesse caso, H (S) = Ω(0.5) = 1 = log2 k .

b.2”) Prova de limite superior, caso k ≤ 2: considere duas distribui-


ções {P (x i ) = P i } e {Q(x i ) = Q i } sobre um alfabeto x i , i = 1,2, . . . ,k.

X Qi 1 X Qi
P i log2 = p i ln
i P i ln2 i Pi

Usando a inequação : l nx ≤ x − 1 ,x ≥ 0 vem:


Prova: faça o gráfico de lnx e de (x-1)

Qi X Qi
µ ¶
X X X X
P i ln ≤ P i ln − 1 = (Q i − P i ) = Q i − P i = 0
i Pi i Pi | {z } | {z }
1 1

k
X
µ
Qi

∴ P i log2 ≤ 0 ("Inequação Fundamental")
i =1 Pi
Agora, suponha que Q i = k1 ,i = 1, . . . ,k (equiprovável),essa fonte tem
entropia:
X
H (Q) = Q i log2 k = log2
89

Da Inequação Fundamental, nesse caso, temos:

Pi
µ ¶
X X ¡ ¢ X
− P i log2 ≥ 0 → − P i log2 P i log2 k ≥ o → − P i log2 P i ≥ log2 k
k | {z }
H (P )de fonte "P"arbitrária.

1)
2.106 pixels, 16 níveis de cinza, 32 quadros/segundo.
x i = {x 1 ,x 1 . . . ,x 6 } ← símbolos.
1
P (x i ) = 16 ; i = 1,2, . . . ,16 ←equiprováveis.

16
X 1
H (S) = − P (x i )(l og )2 P (x i ) → H (S) = (l og )2 ∴ H (S) = 4bits/símb.
i =1 16

Transmitimos 32 quadros/seg → 32 × 2.106 pixels/seg. r=64 Msimb./s


R = r H → R = (64M ) × 4 ∴ R = 256M bps
2)
ponto : t empo = 0,2seg traço : t empo = 0,6seg
2
p(ponto) = 2p(traço) → p(ponto)+p(traço) = 1 → p(ponto) = e p(traço) =
3
1
,
3
1 2
Tmédio = (0,2 + 0,2) + (0,6 + 0,2) = 0,533 seg
3 3
1
R= = 1,875 símbolos/segundo.
Tmédio
µ ¶ µ ¶
1 1 2 2
H (S) = − log2 − log2 = 0,918 bits/símbolo
3 3 3 3
R = 1,875 × 0,918 = 1,721 bits/segundo.
Solução I.3 – Codificação de Fonte

Exemplo 1
D.M.S. com k=2

Xi Ci pi
x1 0 0,9
x2 1 0,1

L̄ = 1 ∗ 0,9 + 1 × ∗0,1
µ ¶1
= µ ¶
1 1
H (x) = 0,9 log2 + 0,1 log2 = 0,46
0,9 0,1
H
η = = 0,46 = 46%

Exemplo 2

Xi pi Ci
x1 x1 0,81 0
x1 x2 0,09 10
x2 x1 0,09 110
x2 x2 0,01 111

L̄ = 1 × 0,81 + 2 ×µ0,09 +¶ 3 × 0,09 + 3µ× 0,01


¶ → L̄ = 1,29.
µ ¶ µ ¶
1 1 1 1
H (x) = 0,81 log2 +0,09 log2 +0,09 log2 +0,01 log2
0,81 0,09 0,09 0,01
0,937
H (x) = = 72,71%
1,29
Exemplo 3

a) VERDADEIRO; Os códigos de prefixo podem ser reconstituídos per-


feitamente na fonte visto que, além de serem não prefixados são distintos.
92 Solução I.3 – Codificação de Fonte

b)FALSO; Um código prefixado pode ser reconstituído, dependendo


da codificação. Por exemplo C i dado a seguir é prefixado e pode ser re-
construído identificando um bit 0 para iniciar uma nova palavra.

Ci
0
01
011
0111
c) VERDADEIRO; Como o código é não prefixado, só existe uma
sequênciade bits possível para cada palavra, e dessa forma é possível
identificar o símbolo transmitido ao fim de cada palavra no seu último
bit.

d) FALSO; O fato de ser não prefixado implica em ser distinto. e)


VERDADEIRO; Através da demonstração da inequação de kraft pode ser
provado que todo código de prefixo tem kl=1 2−l i ≤ 1. Sendo definida
P
uma distância entre 0 e 1 na reta real, e definido que cada palavra ocupa
2−l na reta, onde l é o tamanho da palavra. Têm-se que em cada nó da
árvore, os ramos criados ocupam a mesma distância no eixo que seu nó
anterior.
Como os códigos de prefixo podem não "conter"todas a folhas da árvore

têm-se ki=1 2−l i ≤ 1


P
f) VERDADEIRO; Todos os códigos não prefixados obedecem a inequação
de Kraft.
j) FALSO; O exemplo dado no item b obedece a inequação de Kraft e é
prefixado.
Solução I.4 – Codificação Ótima de Fonte

1)
a)

step 1 step 2 step 3 código


x1 0,4 0 0 00
x2 0,19 0 1 01
x3 0,16 1 0 10
x4 0,15 1 1 0 110
x5 0,1 1 1 1 111

b)
X
H (x) = − p i l og 2 (p i ) = 2,149
X
L̄ = p i .L i = 2,25

c) Código de Huffman

código P (x i )
1 1 1 0
1 ← 0,40 0,40 0,40 0,60 1
000 01 00
000 ← 0,19 0,25 0,35 0,40
001 000 1
001 ← 0,16 0,19 0,25
010 01
010 ← 0,15 0,16
001
011 ← 0,10
011
d)

L̄ = 0,41 + 3 × (0,19 + 0,16 + 0,15 + 0,10) = 2,29 bits/símbolo;

e)

H (x) 2,149
η= = = 0,955%
L̄ 2,25
94 Solução I.4 – Codificação Ótima de Fonte

H (x) 2,149
η hu f f man = = = 0,976%
L̄ 2,2
Ambos tiveram bom desempenho porém o código de Huffman ob-
teve maior eficiência.

2)
A lista é indexada para um valor binário de 12 bits, então o codebook
pode ter até 212 códigos N t ot al = 212 = 4096

3)

podem ser armazenadas até 24 = 16 códigos .

Sequência :
0 00 1 0 1 11 001 01 0010 1
0 2 1 0 1 6 3 5 8 1

Índice 0 1 2 3 4 5 6 7 8 9 10
Palavra 0 1 00 001 10 01 11 110 0010 010 00101
Cód. Dec. 0 1 00 21 10 01 11 60 30 50 81
Cód. Bin. 0 1 0000 0101 0010 0001 0011 1100 0110 1010 10001
Índice 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 10

Leipel Zip -Teórico.

Sequência :

00 01 011 1 0 010 100 101


2 3 4 5 6 7 8

Posição no codebook 0 1 2 3 4 5 6 7 8
Subseq. 0 1 00 01 011 10 010 100 101
Cód. Numérico 00 01 31 10 30 50 51
Cód. Binário 0000 0001 0111 0010 0110 1010 1011
Solução I.5 – Canal Discreto Sem Memória

Exemplo 1
a) Sem perdas 3 × 5 : nenhuma informação é perdida na transmissão.

 
0,75 0,25 0 0 0
[P (Y |X )] =  0 0 0,40 0,60 0 
0 0 0 0 1

b) Determinístico 5 × 3
Quando um símbolo da fonte é enviado, está determinado qual será
o símbolo recebido
96 Solução I.5 – Canal Discreto Sem Memória

 
1 0 0

 1 0 0 

[P (Y |X )] = 
 0 1 0  ← um único elemento de cada linha deve ser 1

 0 1 0 
0 0 1

c) Sem Ruído 3 × 3 : sem perdas e determinístico.

 
1 0 0
[P (Y |X )] =  0 1 0  ← Deve ter m=n, não é obrigatório y i = x i
0 0 1

d) B.S.C.

· ¸ · ¸
1−p p 0,9 0,1
[P (Y |X )] = = ← p=0,1
p 1−p 0,1 0,9
97

Exemplo 2 B.S.C, probabilidade de erro p .

[P (Y )] = [P (x)] . [P (Y |X )] 
1 0 0
[P (Y1 )P (Y2 )] = [P (x 1 )P (x 2 )] .  0 1 0 
0 0 1
£ ¤
= (1 − p).P (x 1 ) + p.P (x 2 ) p.P (x 1 ) + (1 − p).P (x 2 )
· ¸ · ¸
P (x 1 ) 0 1−p p
[P (X ,Y )] = d i ag {P (X )}. [P (Y |X )] = .
0 P (x 2 ) p 1−p

· ¸
(1 − p).P (x 1 ) p.P (x 1 )
[P (X ,Y )] = d i ag {P (X )}. [P (Y |X )] =
p.P (x 2 ) (1 − p).P (x 2 )
onde p.P (x 2 ) é a probabilidade de transmitir x2 e receber y1
· ¸
P (x 1 ,y 1 ) P (x 1 ,y 2 )
[P (X ,Y )] =
P (x 2 ,y 1 ) P (x 2 ,y 2 )
Exemplo 3 Veja texto do Haykin.

Obs: Canal sem perdas : H (X |Y ) = 0 → I (X ; Y ) = H (X )


| {z } | {z }
Transferência de info Ent r opi ad a f ont e

∴ não há perda de informação no canal!

Canal Determinante H (Y |X ) = 0 → I (X ; Y ) = H (Y )

Canal Sem Ruído I (Y ; X ) = H (Y ) = H (X )

Resolução dos Exercícios


1. a)
98 Solução I.5 – Canal Discreto Sem Memória

b)

[p(y)] = [p(x)].[p(y|x)]
· ¸
0,8 0,2 0
[p(y)] = [0,5 0,5 ]. = [0,4 0,2 0,4]
0 0,2 0,8

c)
³ ´ ³ ´ ³ ´
P 1 1 1
H (x) = x P (x).l og 2 P (x)
= 0,5.l og 2 0,5
+ 0,5.l og 2 0,5
= 1 bi t
³ ´ ³ ´ ³ ´
P 1 1 1
H (y) = y P (y).l og 2 P (y) = 0,4.l og 2 0,4 + 0,2.l og 2 0,2
³ ´
1
+0,4.l og 2 0,4 = 1,5219 bi t

d)
Organizando os cálculos numa tabela :
³ ´
P 1
P (x i ) 0P (y i |x i ) P (y i ; x i ) P (y i |x i ).l og 2 P (y i |x i )
0,5 0.8 0,2 0 0,4 0,1 0 0,361
0,5 0 0,2 0,8 0 0,1 0,4 0,361

H (y|x) = 0,361 + 0,361 = 0,722 bi t s


H (y|x) = 0,361 6 1,522, ou seja , observar X pode diminuir a incerteza
acerca de Y .

e)
µ ¶
X 1
H (y,x) = P (y,x).l og 2
y,x P (y,x)
µ ¶ µ ¶ µ ¶ µ ¶
1 1 1 1
H (y,x) = 0,4.l og 2 +0,1.l og 2 +0,1.l og 2 +0,4.l og 2
0,4 0,1 0,1 0,4

H (y,x) = 1,722 bi t e portanto :

I (y,x) = H (y) − H (y|x) = 1,522 − 0,722 = 0,8 bi t s

H (x) + H (y) − H (y,x) = 1 + 1,522 − 1,722 = 0,8 bi t s ok!

f ) 0,8 bis
99

2. a)

b)

wp +wp wp +wp
· ¸ · ¸
p p
[p(y)] = [p(x)].[p(y|x)] = [w w]. =
p p
| {z } | {z }
P (y 1 ) P (y 2 )

A saída y pode ser vista como uma DMS com P (y 1 ) = α e P (y 2 ) = α


calculadas acima . Neste caso

H (y) = Ω(α) = Ω(w p + w p) (II.6.1)

· ¸ · ¸ · ¸
w 0 p p wp wp
[p(y,x)] = d i ag .[p(x)].[p(y|x)] = . =
0 w p p wp wp

µ ¶ µ ¶ µ ¶ µ ¶
X 1 1 1 1
H (y|x) = P (y|x).l og 2 = w p.l og +w p.l og +w p.l og
P (y|x) p p p

³ ´
1
+w p.l og p

µ ¶ µ ¶
1 1
= Ω(p)
¡ ¢ ¡ ¢
H (y|x) = w p + w p .l og + w p + w p .l og (II.6.2)
| {z } p | {z } p
p p

Logo, I (y,x) = H (y) − H (y|x) = Ω(w p − w p) − Ω(p)


| {z } | {z }
(I I .6.1) (I I .6.2)
100 Solução I.5 – Canal Discreto Sem Memória

Interpretação Gráfica: da figura, resulta que I (y,x) > 0

1
0,9
Ω(α)
0,7
I(y,x)
0,6
Ω(p)
0,4
0,3
0,2
0,1
0
0 0,5 0
p α α p
Probabilidade p

De fato, tem-se que α = (w p − w p) está sempre entre p e p. Daí tem-


se que H (y|x) 6 H (y) e, portanto, a informação mútua é sempre não
negativa.

c)

I (y,x) = Ω(0,5 × 0,1 + 0,5 × 0,9) − Ω(0,1) = 1 − 0,4690 = 1,531 bit.

d)

I (y,x) = Ω(0,5 × 0,5 + 0,5 × 0,5) − Ω(0,5) = 1 − 1 = 0 bit

A informação transmitida pelo canal é nula . O canal é simétrico com


taxa de erro de 50% ,logo observar a saída não traz informação alguma
sobre o que foi transmitido, observar a saída equivale a observar um
gerador aleatório uniforme.
Solução I.6 – Capacidade de Canal Discreto

Exemplo 1
a) Canal sem perdas : Para fixar as idéias, considere um canal |{z}
2 × |{z}
3
m n

· ¸
1 0 0
[P (X ,Y )] = →1
0 1 1
3
X 3 X
X 2
H (X |Y ) = − P (y j ).H (X |Y j ) = − P (y i ). P (x i |y j )log2 P (x i |y j )
j =1 j =1 i =1 | {z }
sempr e=0
∴ H (X |Y ) = 0 e I (X ; Y ) = H (X ) − H (X |Y ) = H (X ) ∴ C s = max H (X ) =
log2 m = log2 2 = 1bit/uso do canal

b)Canal determinístico:

P (y 1 |x 1 ) = P (y 1 |x 2 ) = 1
∴ H (Y |X ) = 0 e I (X ; Y ) = H (Y ) − H (Y |X )
I (X ; Y ) = H (X ) e C s = max H (X ) = log2 m = log2 1 = 0
| {z }
{P (x i )}
102 Solução I.6 – Capacidade de Canal Discreto

c) Sem ruído:
I (X ,Y ) = H (x) − Ω(p) → Ω(p) = −p.log2 p − (1 − p).log2 (1 − p)
C s = max I (X ,Y ) = max{H (Y )} −Ω(p) = 1 − ω(p) ∴ C s = 1 − plog2 p + (1 −
| {z } | {z }
{P (x i )} {P (x i )}
p)log2 (1 − p)
103

Exemplo 2

DMS X, com P (x 1 ) = P (x 2 ) = 0,5 (dígitos equiprováveis)


∴ H (X ) = Ω(0,5) = 1 bi t

k
ρ=
n
Taxa de informação da fonte :

H (X ) 1
= bi t s/s
Ts Ts

Taxa de transmissão do canal:


bit
bi t s/s
Tsegundos

Capacidade do canal :
Cs
bits/s , C s = 1 − Ω(p)
Tc

Para que não haja acúmulo de bits , deve-se ter

k Tc
k.T s = n.Tc −→ = =ρ
n Ts

∴ ρ ≤ Cs
Obs: Exemplo 2 A resolução está na seção "Aplication of The Channel
Coding Theorem to binary Symmetric Channels "pág.591, do texto [3,Sec.
9.8](livro do Haykin)

Resolução dos Exercícios


(1) a)
p i = 0,1 C = max{I (X ; Y )} I (x|Y ) = I (Y |X ) = H (Y ) −Ω(p) → Ω(0,1) =
| {z } | {z }
P (x i ) log2 2=1
104 Solução I.6 – Capacidade de Canal Discreto

0,469.
então:
C = 1 − 0,469 = 0,531

3
b) e = para n ímpar inteiro
n
1
z }| {
H (x) C s Tc Rs
≤ ⇒ ≤ Cs ⇒ ≤ Cs ⇒ e ≤ Cs ⇒
Ts Tc Ts Rc

3 3
e ≤ Cs ⇒ ≤ Cs ⇒ ≤ 0,531 3 ≤ 0,531 n ≤ 5,6497
n n

Então como n deve ser ímpar e inteiro → n = 7

(2)
P e = 10−2 B.S.C . Tc = 1ms.
a) Capacidade C s :
| {z } I (X |Y ) = 1 − Ω(p) = 1 − Ω(0,01) = 0,91921
C s = max
{P (x i )}
b)
e ≤ C s = 1 − Ω(p) Se ... então é possível obter p e quão pequeno quanto se
queira .
c) Ã !
n n i
p (1 − p)n−i
X
Pe =
i =m+1 i

Taxa de Código ρ = 1/n Probabilidade de Erro P e


1 10−2
1/3 3−4
1/5 10−6
1/7 4−7
1/9 10−8
1/11 5.10−10

Pois erramos caso haja pelo menos m =+1 erros individuais de proba-
bilidade p
d)
Pa 10−8 temos que utilizar p = 19 então ssó será possível decodificar o bit
enviado após 9 bits recebidos do canal → 9ms
e)
105

Sim , pois esta taxa corresponde a 19 = 0,111 que é bem inferior ao valor
máximo L s = 0,91921 Isto é possível usando técnicas mais eficazes de
codificação , porém estas provocam maiores atrasos e tem complexidade
computacional superior.
Solução I.7 – Capacidade de Canal Contínuo

Exemplo 1
Z a 1 1 1
h(x) = log2 d u = log2 a.u |0a = log2 a
0 a (1/a) a
a) a = 1, h(x) = 0

b) a = 2, h(x) = 1

c) a = 1/2, h(x) = −1

Obs: ∴"Entropia "→ medida da incerteza (quantidade de "bits de


informação"de um fato).

"Entropia Diferencial"→ aumenta com aumente da dispersão, con-


tudo,não pode ser interpretada como a "Entropia "(bits de informação )
pois pode até mesmo ser negativa!

Exemplo 2

a)
Z a 1 1
h(x) = log2 d u = log2 (2a) = log2 (2×1) = 1h(y) = log2 (2×2) = 2
−a 2a (1/2a)

Amplificador aumentou a Entropia Diferencial (mas não pode aumentar


a quantidade de informação)

b)
n
1
X
H (x) = − P (x i )logP (x i ) ,onde x i = x(t )|t =i .Ts e T s = fs
i =1
O intervalo de amostragem do critério de Nyquist.

P (x i ) ∼
= f x (x i )∆x i é a probabilidade de x(t ) ∈ [x i ; x − i + ∆x i ]
108 Solução I.7 – Capacidade de Canal Contínuo

f x (x i ) log( f x(x i )∆x i ) ∆x i =


X
∴ H (x) = −
| {z }
log( f (x i ))+log∆x i

f x(x i )log∆x i ∆x i
X X
− f x (x i )log f x (x i )∆x i H (x) = −

No limite , ∆x i → 0+
Z +∞ Z +∞
H (x) = f x(u)log f x(u).d u − log∆x f x(u)d u
| −∞ } referência | −∞ {z
| {z }
{z }
h(x) 1

H (x) é ∞ → x(t ) tem infinitas amplitudes → necessita de infinitos


"bits"
x(t ) ∼ Uniforme [-1,1], tem H (x) = 1 − log2 ∆x, com ∆x → 0+
y(t ) ∼ Uniforme [-2,2], tem H (x) = 2 − log2 ∆y, com ∆y → 0µ+ ¶
∆t
Agora, H (y) − H (x) = (2 − 1) − (log∆y − log∆x) = −1 − log =0 ∴
∆x
| {z }
G anho 2
H (y) = H (x).

Exemplo 3

a)

y(b) ∼ Uniforme [−a; a]


¯a
1 a u 3 ¯¯ a3
Z
2
Variância de y(t ) = σ2y
= E [y(t ) ] = 2
u du = =
−a 2a 6a ¯−a 3
2 p
a
σ2y = σ2x = σ2 =⇒ = σ2 =⇒ a = σ 3
3
³ p ´ 1 ³ p ´2 1
h(y) = log (2a) = log 2 3σ = log 2 3σ = log2 12σ2
2
¡ ¢
2 2
 
1 1
h(y) = log2 12σ2 < h(x) = log |{z} 2πe σ2  σ2 6= 0
¡ ¢
2 2
17,1

p/ sinal de potência limitada → processo gaussiano tem máxima en-


tropia diferencial.

b)

Não (Demonstração pelo cálculo variacional)


109

Obs: para sinal com amplitude limitada → processo com distribuição


uniforme tem máxima entropia diferencial .

Exemplo 4

a)
média
z}|{
n(t ) ∼ N ( 0 ; N0 B ) → h(n) = 12 log2 (2πeN )
|{z}
(potência N )

y(t ) ∼ N (0; P y ) → h(y) = 21 log2 (2πe(P + N ))


|{z}
potência: p y =p x +p n =P +N pos x e n são independentes.

b)
Ï∞
1
h(y|x) = f (y; x) .log2 d yd x
| {z } f (y|x)
−∞ f (y|x). f (x)
Z +∞ Z +∞
1
h(y|x) = f (y|x).log2 dy f (x)d x
−∞ f (y|x) −∞
| {z }
1
agora para x fixo, y = n + x =⇒ f (y|x) = f n (y − x) a distribuição do
ruído ( f n (n) ) deslocada de x substituindo acima, vem
Z +∞ µ ¶ Z +∞ µ ¶
1 1
h(y|x) = f n (y−x).log d y |{z}
= f n (z)log dz
−∞ f n (y − x) −∞ f n (x)
z=y−x
1
H (n) = 2
l og 2 (2πeN )

∴ I (x; y) = h(y)−h(y|x) = 21 log2 [2πe(P +N )]− 21 log2 (2πeN ) = 12 log2 1 + NP


¡ ¢

P
C s = 21 log2 1 + N
¡ ¢ © ª
pois C s = max{I : P x = P } = max h(y) : P x = P −h(n)
| {z }
é máx para y ∼N (0;P )

Resolução dos Exercícios


Exercício 1)
B=3,4 KHz SNR =30dB SNR =1000

a) C= ? C = B log2 (1 + SN R) = 3,4k H Z log2 (1001) = 3388 bps

b C = 9600bps = 3,4K H zlog2 (1 + SN R)


110 Solução I.7 – Capacidade de Canal Contínuo

2,8 = log2 (1 + SN R) → 6,98 = 1 + SN R → snr = 6,9 = 7,838dB

Exercício 2)
B= 3,4 kHz SNR =20dB =100 e 128 símbolos

a)C = B.log2 (1 + SN R) = (3,4k H z)log2 (101) = 22,638kbps

b)

M = 128 = 2N N = 7 → para cada símbolo são necessários 7 bits


Taxa de símbolos é então

Rb 22,638
Rs = = = 3,240 Sps
7 7
1
Ts = = 0,3086 ms
Rs
Exercício 3)

NR X = 3.105 pi xel s 10 níveis de brilho distintos

N q ps = 30q ps

SN R = 30bB

Necessita-se de taxa de informação:


³ ´ ³ ´
1 1
H (X ) = − 10
P
i =1 p(i )log p = −10p(i )log p = −10 × 0,1 × (−3,321)
i i

H (X ) = 3,32 bpSymbol

Rb = 30 × 3.105 × 3,32 = 29,88.106 pbs

C = 29,88.106 = log2 (1 + SN R).B

29,88.106
B= = 2,997M H z
log2 (1 + SN R)
porém se forem usados Mbits por símbolo temos :

Rb 30 × 3.105 × 4
C= = = 3,61M H z
log2 log(1001)
Exercício 4
a)
111

Rb=44 Kbps cada símbolo transmite 2 bits


1
Rs = 22 K sps Ts = = 4,54.105 s no limite.
Rs
b)
H (S) C TC
≤ , Porem T s necessita de pelo menos 2 e no máximo de
Ts Tc
H =1
1.1
Então ≤ C e desta forma ρ ≤ C e ρ = 0,5
2
c)

Cs 44e 3
B= = = 3,78K hz
log2 (1 + SN R) 11,62
Solução I.8 – Aplicações da Teoria da Informação

Exemplo 1

a)
C
Eb 2B −1 2x − 1
Conforme equação (1) do Cap. I.8: lim = lim C
= lim
B →∞ N0 B →∞ |{z} x→0 x
B x= CB
x
2 l n2
Apl i c and o L 0 Hospi t al t emos : lim = l n2
x→0 1
Eb
∴ a razão N 0
mínima necessária tende a Ln2 = 0,693 ou 10. log10 (0,693) '
1,59d B quando B → ∞

b)
P P P
µ ¶ µ ¶
1
C ∞ = lim B.log2 1 + = lim ³ ´ .log2 1 +
B →∞ N0 B B →∞ N0 1 N0 B
N0 B
P
Fazendo x =
N0 B Ã 1 !
P 1 0 P (x+1).l n2
C∞ = lim .log2 (1+x) → Apl i c and o L Hospi t al → lim
N0 x→0 x N0 x→0 1
P 1 P
C∞ = . ' 1,44
N0 l n2 N0
Exemplo 2)
a)
£J¤
SR . h1 i .R S
³ ´
SR
µ
S

SR
S RS bi t s
s RS
.R S SR
µ ¶
Eb Rs
= = = → = E b →= .
N R NR N0 .B T N0 B T SR N0 B T

S Eb
µ ¶
Como R s = 2B T vem = 2. (II.6.3)
N R N0
(obs ∴ neste exemplo , R b = R S )
b) BSC:
C
C = R S .C S = 2B (1 − Ω(p)) → = 2(1 − Ω(p)) (II.6.4)
B
114 Solução I.8 – Aplicações da Teoria da Informação

Agora,
"s # "sµ ¶ #
2.E b S
p = Pe = Q → da equeção (1) temos que: Q =
N0 N R

à "sµ ¶ #! (II.6.5)
C S
De (2) e (3), vem = 2 − 2Ω Q OBS: ∴ função Q(x) =
B N R
Z ∞
1 −u 2
p e 2 d u não tem fórmula "fechada".
2π x
vale a aproximação
µ ¶: 2
1 0,7 −x 1 −x 2
Q(x) ∼
= p . 1 − 2 e 2 ,para x > 2 ou Q(x) ∼
= p .e 2 ,para x >
x 2π x x 2π
3

Tabela

¡S¢
N R
-5 0 5 10 15 [dB]

¡C ¢
B
0.2705 0.7378 1.5369 1.98 2

l og 2 1 + NS R 0.3964
£¡ ¢ ¤
1 2.05 3.45 5.02

O comando no Matlab é :
1 snr=[-5:5:15];
2 y= sqrt(10.^(snr/10));
3 x= .5*erfc(y/sqrt(2));
4 cb=2+2*(x.*log2(x)+(1-x).*log2(1-x));
5 plot(snr,cb);
6 yideal=[ 0.3964 1 2.05 3.45 5.02];
7 hold on
8 plot(snr,yideal);)

e)

Para valores de NS R elevados, o desempenho do sistema de comu-


¡ ¢

nicação binário atinge o limite teórico de 1 bit de informação por "sím-


bolo"(pulso), de maneira que BCT = 2 , ou seja C = 2B T = R S . Para au-
mentar a capacidade C (para B T fixo), pode-se usar pulsos de várias
amplitudes (sistema de comunicação com símbolos M-ários enviados
pelo canal ).
115

C/BT versus (S/N)R


6
BSC
Ideal ( log2 [1+(S/N)R])

C/BT 4

0
−5 0 5 10 15
(S/N)R [dB]

f)
Qauando NS R é baixa e CB é baixa devido B ser muito grande (situação
¡ ¢ ¡ ¢

de comunicação em enlaces de micoondas e satélites) o esquema biná-


rio consegue se aproximar do sistema ideal. Para alcançar CB maiores,
¡ ¢

quando NS R é baixa devido ao elevado nível de ruído NR , pode-se utili-


¡ ¢

zar códigos corretores de erro. Estes permitem que se trabalhe com taxas
C maiores, sem que se tenha muitos erros.
Solução II.1 – Códigos de Bloco

Exemplo 4 a)


 corrige erro em até t = 1 dígito binário

∵ 2t + 1 = 3
d = 3 =⇒

 detecta erro em até t = 2 dígito binário

∵ t +1 = 3

b) C (2m − 1,2m − 1 − m, 3) =⇒ n = 3, k = 1 ea d = 3 ∵ m = 2.

Decodificação por símdorme :s = r.HT , sendo s = [S 1 S 2 ]


projetada de maneira que (S 2 S 1 )bi n seja a posição do bit errado em r

E1 E2 E3 (S 1 S 2 )bi n Posição do Erro


0 0 0 0 0 (Pos. ;, @ er r o)
1 0 0 0 1 (Pos.1)
0 1 0 1 0 (Pos.2)
0 0 1 1 1 (Pos.3)

Equações de H T

S 1 = R 2 + R 3 ( verifica erro nas posições 2 e 3 )


S = R + R (verifica erro nas posições 1 e 3 )
2 1 3

Forma Matricial :
118 Solução II.1 – Códigos de Bloco

 
 
1 0 
 1 0 1 

[S 1 S 2 ] = [R 1 R 2 R 3 ] . 0 1 → H = 
   
0 1 1 
1 1
| {z } | {z }
s r
| {z } |{z}
| {z } I n−k pT
HT n×(n−k)

Matriz geradora :

G = [ P | I k ] = [1 1 | 1] (II.6.6)
ou seja , a palavra de código

[ C C C ] = [ D ] . [1 1 | 1] ∴ é igual ao código de repetição C (3,1)


| 1 {z2 3 } | {z1 } | {z }
c d G

Prova de ( II.6.6 )

d .G = c

d . [ Ik | P ] = [ d | p ]
| {z } |{z}
G
bits de par. p=d .P

vale: p + p = 0, logo :
¸ ·
P
d .P + p = 0 → [ d | p ] .
| {z } | {z Ik
c
}
HT
Exemplo de codificação e correção de erro :
er r o
D 1 = 0 ∴ c = [ 0 0 0 ] −−−→ [010] =r
| {z }
pos. 01 10 11
 
1 0 S1 S2
[ 0 1 0 ] .  0 1  = [ 0 1 ] → erro na posição(S 2 S 1 )bi n = (10)2 = 2
1 1
| {z }
r
| {z }
HT
Obs:

O algoritmo de Hamming 1 coloca os bits de paridade nas posições


da palavra código que são potências de dois :

1
Livro : Floyd , Digital Fundamentals
119

01 10 11
z }| {
[C 1 C 2 C 3] = [P 1 P 2 D 1 ]

Os bits de dado ficam nas demais posições . Daí cada paridade veri-
fica os dados que tem 1 na mesma posição que o 1 da paridade:

pos. 01 10 11

P1 D 1 → P 1 ver i f i c a D 1

P2 D 1 → P 2 ver i f i c a D 1
Isto vale para demais valores de m. Por exemplo, para m=3 ;

C (23 − 1, 23 − 1 − 3, 3) = C (7, 4, 3) tem palavra de código .


pos: 001 010 011 100 101 110 111
z }| {
[C 1 C 2 C 3 C 4 C 5 C 6 C 7 ]

p 1 p 2 ... p 3 ... ... ... ← p j nas posições 2 j −1

... ... D 1 ... D 2 D 3 D 4 ← D j nas demais posições

Equações de HT :

P 1 = D 1 + D 2 + D 4 ( verifica a posição 1 xx)

P 2 = D 1 + D 3 + D 4 ( verifica a posição x1x)

et c.

Resolução dos Exercícios


1. a) A Condição de Hamming permite determinar quantos bits de pa-
ridade são necessários para corrigir erros simples quando se transmite
Kbits de dados .

redundante = n° de bits da palavra - n° de bits de dados

m = n −k

Total disponível :

2n > 2k + n.2k
120 Solução II.1 – Códigos de Bloco

2n−k > 1 + n
2m > 1 + m + k

b) k=4
m = 2 → 22 > 1 + 2 + 4 (i ncor r et o)
m = 3 → 23 > 1 + 3 + 4 X (cor r et o)
m=3
n=7

c) m = 3 → P 1 P 2 P 3

Palavra =

[ P 1 r 2 y 1 r 3 y 2 y 3 y 4 ] → [ R1 R2 R3 R4 R5 R6 R7 ]

[ D 1 D 2 D 3 D 4 ].G = [ P 1 P 2 D 1 P 3 D 2 D 3 D 4 ]

r.H T = s = [P 1 P 2 P 3 ]

E1 E2 E3 E4 E5 E6 E7 P3 P2 P1
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1 1
0 0 0 1 0 0 0 1 0 0
0 0 0 0 1 0 0 1 0 1
0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 1 1 1 1

d)

1 0 0
 
 0 1 0 
P1 = R1 ⊕ R3 ⊕ R5 ⊕ R7 1 1 0
 
 
P2 = R3 ⊕ R3 ⊕ R6 ⊕ T
R7 → H = 

0 0 1


P3 = R4 ⊕ R5 ⊕ R6 ⊕ R7 1 0 1
 
 
 0 1 1 
1 1 1
f)
121

1 0 0
 
 0 1 0 
1 1 0
 
 
[ R 1 R 2 R 3 R 4 R 5 R 6 R 7 ].  0 0 1  = [P 1 P 2 P 3 ]
 
1 0 1
 
 
 0 1 1 
1 1 1
| {z }
HT

 
1 0 1 0 1 0 1
H= 0 1 1 0 0 1 1 
0 0 0 1 1 1 1

e )G.HT = 0

1 0 0 0 0 0
   
   0 1 0 0 0 0
a b 1 c 1 0 0
  
1 1 0 0 0 0
   
 d e 0 f 0 0 0 
   
. 0 0 1 = 0 0 0
   
 g h 0 i 0 0 0  
 
1 0 1 0 0 0
  
j k 0 l 0 0 1
   
 0 1 1   0 0 0 
1 1 1 0 0 0

a +1 =0 → a =1
  

b +1 =0 → b=1


  

e =0 → e =0
  

  

d +1 =0 → d =1
  

  
  
e +0 =0 → e =0 1 1 1 0 0 0 0
  

  

f +1 =0 → f =1  1 0 0 1 1 0 0 
  
G=
  
j =0 → j =0  0 1 0 1 0 1 0 
 
  

h +1 =0 → h=1 1 1 0 1 0 0 1
  

  


 i +1 =0 → i =1 






 j +1 =0 → j =1 





 k +1 =0 → k =1  



l +1 =0 → l =1
122 Solução II.1 – Códigos de Bloco

2. a)

r = [0 0 1 0 0 0 1 ]

↑ ↑ ↑
P1 P2 P3

1 0 0
 
 0 1 0 
1 1 0
 
 
r.HT = [0 0 1 ] → [ 0 0 1 0 0 0 1 ].  0 0 1  = [0 0 1]
 
1 0 1
 
 
 0 1 1 
1 1 1
posição de bit errado= P 3 P 2 P 1 = 100 = 4° posição

b) [ D 1 D 2 D 3 D 4 ].G = C
 
1 1 1 0 0 0 0
 1 0 0 1 1 0 0 
[1 0 0 1 ] .  =[0011001]
| {z }  0 1 0 1 0 1 0  | {z }
d ad o 1 1 0 1 0 0 1 cod i f i c ad o
um"dois
Solução II.2 – Códigos de Bloco Lineares de Comprimento fixo

¥1 ¦
Exemplo 1 d > 2 + 1 → t 6 2
(d − 1)

C (n, n, 1) → código universal , t 6 21 (1 − 1) → t = 0


¥ ¦

à ! à !
0 n n n!
n−n
X
2
| {z } ≥ , ,
1 i =0 i i (n − i )!i !
| {z }
1
C (n, n − 1, 2) → SPC , t 6 12 (2 − 1) → t = 0
¥ ¦

à !
0 n
n−(n−1)
X
|2 {z } ≥
2 i =0 i
| {z }
1

C (2n − 1, 2n − 1 − m, 3) → Hamming , t 6 12 (3 − 1) → t = 1
¥ ¦

à !
0 n
m m
2 −1−(2 −1−m)
X m 1 2 3 4
2 }≥
| {z
i =0 i
n 1 3 7 15
2m | {z }
1+n

¥1 ¦
C (n, 1, n) → Código de Repetição , t 6 2 (n − 1)

n 2 3 4 5 . . . etc
t
à ! ..
n−1
X n t 0 1 1 2 .
2 ≥ ..
i =0 i
n−1
2 2 4 8 16 .
1 + n + n(n+1)
P
1 1+n 1+n 2!
. . . et c
∴ Códigos de repetição com n ímpar são perfeitos .

C (n , 0 , ∞) → Código Triviais , t 6 12 (∞ − 1) → t = ∞
¥ ¦

à !
∞ n n(n + 1) n(n + 1)(n + 2)
n−0
X
2 ≥ = 1+n + +1+n + +...
i =0 i 2! 3!
124 Solução II.2 – Códigos de Bloco Lineares de Comprimento fixo

¥1 ¦
Código Grolay[wi ki ] C ( n = 23 , k = 12 , d = 7), t 6 2 (d − 1) → t =
3
à ! à !
t n 3 n
2n−k ≥ → |223−12
X X
i {z } ≥
i =0 2048 i =0 i
| {z }
à ! à ! à ! à !
23 23 23 23
+ + +
0 1 2 3
1 23 253 1771
| {z }
2048
Exemplo 2
C (1,1,1) = R M (0, 0) = {0, 1} código universal

C (1,0, ∞) , R M (−1, 0) = {0} código trivial

Combinando os códigos acima segundo :


à ! à !
t n n n!
2n−k ≥
X
, =¡ ¢
j =0 j j n − j ! j ! [TIC10 equação 2]
R M (u = 1 , u + v = 0) = { [0 0], [1 1] } = C (n = 2m , k = 2, d = 2m−r )
. = C (2 ,1 ,2 )(Código de repetição)

C (2 , 2 , 1) = R M (1, 1) = {00, 01, 10, 11} código universal

C (2 , 2 , ∞) , R M (−1, 1) = {0 0} código trivial

Na figura 1 da TIC 10 , temos as combinações :

C (2,2,1) = R M (1, 1)
&
R M (1, 2) {00 00 , 0011, 0110 , 1010 , 1001 , 1111, 1100 }
u u+v
C (4,3,2)SPC
%
C (2,1,2) = R M (0,1)
&
R M (0, 2) {0000, 1111}
C (4,1,4) Código Repetição
%
C (2,0,∞) = R M (−1,1)
De maneira análoga, podem-se obter os demais códigos da Fig. 1
125

Resolução dos Exercícios


Exercício 1)
Código de bloco linear C(6,3)

C 4 = d1 ⊕ d3
C 5 = d1 ⊕ d2 ⊕ d3
C 6 = d1 ⊕ d2
(a) C k+1 = p m1 .d 1 ⊕ p m2 .d 2 ⊕ · · · ⊕ p mk .d k⊕
 
p 11 p 12 . . . p 1k
 p 21 p 22 . . . p 2k 
P =  .. .. 
 
..
 . . . 
p m1 p m2 . . . p mk

 
C 4 = 1.d 1 ⊕ 0.d 2 ⊕ 1.d 3 1 0 1
C 5 = 1.d 1 ⊕ 1.d 2 ⊕ 1.d 3 ⇒ P =  1 1 1 
C 6 = 1.d 1 ⊕ 1.d 2 ⊕ 0.d 3 1 1 0
 
1 0 0 1 1 1
G = [ I k |P T ] = [ I 3 |P T ] =  0 1 0 0 1 1 
0 0 1 1 1 0
 
1 0 0 1 1 1
G= 0 1 0 0 1
 1 
0 0 1 1 1 0
(b) k = 3 → 23 = 8 palávras de dados

Para

d1 = [ 0 0 0 ]
 
1 0 0 1 1 1
c 1 = d 1 .G = [ 0 0 0 ].  0 1 0 0 1 1  = [ 0 0 0 0 0 0 ]
0 0 1 1 1 0

d2 = [ 0 0 1 ]
 
1 0 0 1 1 1
c 2 = d 2 .G = [ 0 0 1 ].  0 1 0 0 1 1  = [ 0 0 1 1 1 0 ]
0 0 1 1 1 0

d3 = [ 0 1 0 ]
126 Solução II.2 – Códigos de Bloco Lineares de Comprimento fixo

 
1 0 0 1 1 1
c 3 = d 3 .G = [ 0 1 0 ].  0 1 0 0 1 1  = [ 0 1 0 0 1 1 ]
0 0 1 1 1 0

d4 = [ 0 1 1 ]
 
1 0 0 1 1 1
c 4 = d 4 .G = [ 0 1 1 ].  0 1 0 0 1 1  = [ 0 1 1 1 0 1 ]
0 0 1 1 1 0
d5 = [ 1 0 0 ]
 
1 0 0 1 1 1
c 5 = d 5 .G = [ 1 0 0 ].  0 1 0 0 1 1  = [ 1 0 0 1 1 1 ]
0 0 1 1 1 0

d6 = [ 1 0 1 ]
 
1 0 0 1 1 1
c 6 = d 6 .G = [ 1 0 1 ].  0 1 0 0 1 1  = [ 1 0 1 0 0 1 ]
0 0 1 1 1 0

d7 = [ 1 1 0 ]
 
1 0 0 1 1 1
c 7 = d 7 .G = [ 1 1 0 ].  0 1 0 0 1 1  = [ 1 1 0 1 0 0 ]
0 0 1 1 1 0

d8 = [ 1 1 1 ]
 
1 0 0 1 1 1
c 8 = d 8 .G = [ 1 1 1 ].  0 1 0 0 1 1  = [ 1 1 1 0 1 0 ]
0 0 1 1 1 0

c1 → 000000
c2 → 001110
c3 → 010011
c4 → 011101
⇒ Distância mínima igual a 3
c5 → 100111
c6 → 101001
c7 → 110100
c8 → 111010
c) Palavra recebida ⇒ 010111
127

 
1 1 1
 0 1 1 
T
· ¸  
P 1 1 0
HT =
 
= 
I3 
 1 0 0 

 1 1 0 
1 0 1
vetor r :

r =[010111]

síndrome S:
 
1 1 1

 0 1 1 

T
 1 1 0 
S = r.H = [ 0 1 0 1 1 1 ].  =[100]

 1 0 0 

 1 1 0 
1 0 1
S é igual a quarta linha de H T , logo o 4° bit do vetor r está errado . O
código recebido correto é igual a 010011 que equivale a sequência de bits
de mensagem d 3 = 010 .

2)  
1 0 1 1 0 0
H = 1 1 0 0 1 0 
0 1 1 0 0 1
(a) H tem dimensão 6 x 3, logo n=6 e k=3 .
 
1 1 0
· T ¸  0 1 1 
   
1 1 0
P 1 0 1 
HT = T 0 1 1 
 
I3  1 0 0 ⇒P
=

 0 1 0 
 1 0 1
0 0 1
 
1 0 0 1 1 0
G = [ I3 | P T ] =  0 1 0 0 1 1 
0 0 1 1 0 1

(b)d = [ 1 0 1 ]
 
1 0 0 1 1 0
c = d .G = [ 1 0 1 ].  0 1 0 0 1 1  = [ 1 0 1 0 1 1 ]
0 0 1 1 0 1
128 Solução II.2 – Códigos de Bloco Lineares de Comprimento fixo

(c) r = [ 1 1 0 1 1 0 ]
 
1 1 0

 0 1 1 

T
 1 0 1 
S = r.H = [ 1 1 0 1 1 0 ].  =[011]

 1 0 0 

 0 1 0 
0 0 1
S é igual a 2° linha de H T , logo o 2° bit de r está errado , a sequência
correta equivale a 100110.
A sequência de dados equivalente
 a esse código
 é igual a :
1 0 0 1 1 0
1 1 0 1 1 0 = [ d 1 d 2 d 3 ].  0 1 0 0 1 1 
0 0 1 1 0 1
d1 = 0
d 2 = 0 ⇒ Sequência de bits equivalente aos dados = 100∗
d3 = 0
* pode ser lida diretamente na palavra de código c, já que o código é
sistemático.
Solução II.3 – Códigos Cíclicos: Introdução

Exemplo 1 a) C a = {000, 110, 101, 011}


1° ) Verificar se é código de bloco linear (CBL)

- contém o vetor nulo = [000] ok !

-Soma de duas palavras de código é outra palavra de código válida :

110 +101 = 011


110 +011 = 101 ok ∴ é C B L!
101 +011 = 110
2º ) verificar se é cíclico :

c = [000] → c i = [000] ∈ C a , ∀i
ok
c = [110] → c 1 = [011], c 2 = [101], c 3 = [110] . . . et c ∈ C a

Obs: todas os deslocamentos circulares são palavras de códigos váli-


das ∴ é CBL!

b) C b = {000, 100, 011, 111}

1º ) é CBL , já que tem 000 e a soma de duas palavras códigos qualquer


é uma palavra código válida .
2° ) NÃO É CÍCLICO , pois para C = [011] , temos C i = [101]R ∉ C b

Exemplo 2
a) Polinômio Gerador g(x)=?

K= 2 (pois temos 2k = 22 = 4 palavras de código em C a )

∴ g r au{g (x)} = n − k = 3 − 2 = 1.

g (x) = g (x) + g (x)1 ⇒ g (x) = 1 + x


130 Solução II.3 – Códigos Cíclicos: Introdução

Dado Código d (x) = d 0 + d 1 .x 1


[ 0 0 ] → d (x) = 0 d (x).g (x) = 0 →[000]
[ 0 1 ] → d (x) = x x.(1 + x) = x + x 2 →[011]
[ 1 0 ] → d (x) = 1 1.(1 + x) = 1 + x →[110]
[ 1 1 ] → d (x) = 1 + x (1 + x).(1 + x) = 1 + x 2 →[101]
⇒ gerou C a .

{g (x) ; x.g (x)} = {1 + x ; x + x 2 } ∴ {[110] ; [011]} é a base para C a

pois :

C a = {α.[110] + β [011]; α, β ∈ F2 }
| {z }
Combinaçao Linear gera o Código C a

Neste exemplo ,

· ¸ · ¸
g (x) 110
G= = e c = d .G
x.g (x) 011
b)

fatores de (1 + x 3 ) ?

g (x) = 1 + x divide (1 + x 3 ) ?

1 + x3 1+x
1 + x 1 + x + x2
x + x3
x + x2
x2 + x3
x2 + x3
0
1 + x + x 2 ⇒ é primo , só é divisível por 1 e por si mesmo .

+ x} ; |1 + x{z+ x }2 }
∴ fatores de (1 + x 3 ) ⇒ {1| {z
g (x) g 0 (x)

Obs.: caso k = 1.

Dado Código
[ 0 ] → d (x) = 0 d (x).g 0 (x) = 0 →[000]
[ 1 ] → d (x) = 1 1. (1 + x + x 2 ) = 1 + x + x 2 →[111]
| {z }
g er au n−k=3−1=2

⇒ é o código dual C a .
∴ g (x) é o único fator (primo) de mínimo grau que gera o código C a .
131

Resolução dos Exercícios


(1) a)
Solução II.4 – Códigos Cíclicos

Exemplo 1 a)

C a (n = 3, k = 2, d = 2)

Supomos LINEAR → [ 0 0 0 ] ∈ C a

d = 2 → peso mínimo é 2 → [0 1 1 ] [0


 01]
[1 0 1 ] [0
 1 0]

[1 1 0 ] [1
 00]
distância = 1 m
[1
 11]
k = 2 → 22 = 4 palavras de código .

∴ C a = { [000], [110], [101], [011] } → SPC e, ainda, é CÍCLICO.


| {z }
g r au (n−k)=1 ∴ g (x)=1+x

(1 + x n ) = g (x).h(x)

(1 + x 3 ) = (1 + x).h(x)

∴ h(x) = 1 + x + x 2

x3 + 1 x +1
x3 + x2 x2 + x + 1
x2 + 1
x2 + x
x +1
x +1
0
| {z }
de fato g(x) é fator de (1+x 2 )

g 1 (x) = x k .h(x −1 )
g 1 (x) = x 2 .(1 + x −1 + x −2 ) = x2 + x + 1 = 1 + x + x2
h0 h1 h2 h0 h1 h2 h2 h1 h0
134 Solução II.4 – Códigos Cíclicos

Matriz G.
· ¸ · ¸
g0 g1 0 110
G= =
0 g0 g1 011 k×n=2×3

Matriz H.
 
£ ¤ £ ¤ 1
H= h2 h1 h0 (n−k)×n = 1 1 1 1×3 =  1 
1 3×1

Matriz Geradora deG1

G1 =
£ ¤ £ ¤
h2 h1 h0 = 1 1 1 1×3 =H
¡ ¢T
Gk×n . H(n−k)×n = 0 k×(n−k)
 
· ¸ 1 · ¸
1 1 0 0
. 1 =
 
0 1 1 0 2×1
1

[0 0 ].G = [0 0 0 ]
[0 1 ].G = [0 1 1 ]
[1 0 ].G = [1 1 0 ]
[1 1 ] .G =[1 0 1 ]
k n

obs :

O código dual C a1 é (n = 3, k = 1, d = 1) que é o código do item b C b

e corresponde a um código de repetição ou a um código de Hamming


com m=2.
As palavras de código podem ser obtidas pelo produto;

d (x).g (x) = c(x)


[ 1 0 ] → 0.(1 + x) =0 →[000]
[ 0 1 ] → x.(1 + x) = x + x2 → [ 0 1 1 ] OK .
[ 1 0 ] → 1.(1 + x) = 1+x → [ 1 1 0 ]
[ 1 1 ] → (1 + x).(1 + x) = 1 + x 2 → [ 1 0 1 ]
A decodificação é feita pela divisão : c(x) ÷ g (x) = d (x) e r est o = 0 .
135

x2 + 1 x +1
x2 + x x +1
x +1 ∴ d (x) = 1 + x → d = [ 1 1 ]
x +1
0

Na presença de erro , r (x) = c(x) + e(x) e a divisão (decodificada)


fornece :

r (x) g (x)
Síndrome : s(x) = r (x) mod g (x)
s(x) d 0 (x) + 1
Caso o peso de e(x) < 21 d , então a síndrome s(x) está associada a um
único e(x) e o erro pode ser corrigido : r (x) + e(x) = c(x)

O erro e(x) é determinado consultando a tabela de síndrome .


Por exemplo , para C b , temos:

b)

C b é (n = 3 , k = 1 , d = 3) = {[ 0 0 0 ] , [1 1 1 ]} é linear e cíclico.
| {z }
pol .g er ad or g (x)=1+x+x 2 com g r au (n−k)=2
¥1 ¦
Esse código é capaz de corrigir até t = 2 (d − 1) = 1 er r o

A tabela de síndromes é :

e(x) = s(x) = e(x) mod g (x)


0→ =0 0 mod (1 + x + x 2 )
1→ =1 1 mod (1 + x + x 2 )
x→ =x x mod (1 + x + x 2 )
x2 → = 1 + x x 2 mod (1 + x + x 2 )
e(x) é a relação de todos os possíveis polinômios e(x) com peso menor
do que 21 d = 1,5 e suas respectivas síndromes .

x2 x2 + x + 1
2
x +x +1 1
x +1
Obs :

A operação "mod"tem a seguinte propriedade :



Se x 1 mod n = s 1

e x 2 mod n = s 2 ,

então (x + x ) mod n = (s + s )
1 2 1 2
136 Solução II.4 – Códigos Cíclicos

∴ r (x) mod g (x) = e(x) mod g (x) = s(x)

Suponha que :

x + 1 x 2 + x + 1 = g (x)
0 0 s(x) = x + 1
x +1
consultando a tabela , obtém-se e(x) = x 2

∴ c(x) = r (x) + e(x) = 1 + x + x 2 → [ 1 1 1 ]

A codificação (multiplicação de d(x) por g(x)) pode ser implemen-


tada usando registradores de deslocamento . Por exemplo , para g (x) =
1 + x + x2

i = ... 0 1 2 3 4 5 6 7 8 ...
di = . . . 0 0 0 1 0 0 0 0 0 . . .
k
ci = . . . 0 0 0 1 1 1 0 0 0 . . .
n
Note-se que após entrar o dado d i (de comprimento k = 1), deve-se
entrar com (n − k) = 2 zeros para produzir uma palavra de código c de
comprimento n = 3.

Essa implementação corresponde a um filtro FIR (de tempo discreto )


com função de transferência

H (z) = 1 + z −1 + z −2

A decodificação (divisão r (x) por g (x) pode ser feita pelo filtro in-
verso G(z)) tal que :

H (z).G(z) = z −N

onde N é o atraso total .


137

z −2
escolhendo: G(z) = , temos :
1 + z −1 + z −2
Y (z) z −2
= → X [n − 2] = Y [n] + Y [n − 1] + Y [n − 2]
X (z) 1 + z −1 + z −2
∴ Y [n] = X [n − 2] + Y [n − 2] |{z}
+ Y [n − 1]
⊕ ª é a mesma operação para Y [n],X [n]∈F2

ou d i = c i −2 + d i −2 + d i −1 que pode ser implementado como no dia-


grama a seguir

i= 0 1 2 3 4 5 6 7 8
ci = 1 1 1 0 0 0 1 0 1
d i = R 10 = 0 0 1 0 0 0 0 0 1 1
R0 = ci + di = 1 1 0 0 0 0 1 0 0 1
& & & & & & & & &
R 00 = 0 1 1 0 0 0 1 0 0
R i0 = R 00 + d i = 0 1 0 0 0 0 0 1 1 1
  
resto resto resto
[R 0 R 1 ] = [00] [0 0] [01]*

* síndrome s(x) = x, consultando a tabela, e(x) = x.

Obs : Se o erro for no último bit , obtemos resto [ 1 1 ] que corresponde


à síndrome s(x) = 1 + x e restoe(x) = x 2 .

Resolução dos Exercícios


Solução II.5 – Códigos de Bloco Práticos

Exemplo 1)

Fq é um campo algébrico ?

Sim , caso q primo .

no caso Fq = 0 , 1 , 2 , temos as operações de

0 1 2 0 1 2
SOMA 0 0 1 2 MULT 0 0 0 0
e
(mod.3) 1 0 2 0 (mod.3) 1 0 1 2
2 1 0 1 2 0 2 1
C (3 , 2 , 2)3 tem palavra de código de comprimento n=3 dígitos , dimensão
k=2 (há q k = 32 = 9 palavras de código validas) e a distância de hamming mínima
d=2. Queremos códigos SPC, logo c = [C 0 C 1 C 2 ] deve obedecer à verificação de
paridade :

n−1
X
Ci = 0 (II.6.7)
i =0

Daí temos :

000 010 020 100 110 120 200 210 220


001 011 021 101 111 121 201 211 221
002 012 022 102 112 122 202 212 222
com os 9 códigos válidos em negrito.

A matriz HT pode ser obtida diretamente de (I I .6.7)


 
1
c.HT = 0 → [ C 0 C 1 C 2 ].  1  = 0
1
| {z }
HT
Tomando-se [ C 0 C 1 C 2 ] = [ P 0 | D 0 D 1 ] (1° dígito como paridade ), vem
140 Solução II.5 – Códigos de Bloco Práticos

P
 
z}|{
 1  · ¸
T  = 0 l og o G = [ P | αI n−k ] = 1 2 0
 
H = 1
  1 0 2
 1
|{z}

I n−k
é a matriz geradora(α é uma constante , α ∈ F3 )
d c
z }| { z }| {
[00] .G = [000]
[01] .G = [1 0 2]
de fato , [ 0 2 ] .G= [2 0 1] ([ 204 ] mod 3 )
[10] .G = [1 2 0]
.. ..
. .
Obs: O código gerado por G não é sistemático ; contudo, pode-se
recuperar o dado a partir dos dois últimos dígitos do código : ÷2

Exemplo 2
A condição de Singleton (Richard Collen Singleton)

k 6 n −d +1 (II.6.8)

Permite saber o limite para d, quando n e k são escolhidos. Por exem-


plo : quais os valores possíveis para n, k, d e q ?

a) C (n = 20 , k = 19 , d = 17)2

Não é possível pos com n=k=20 ,teríamos o dódigo C(20 , 20 , 1); ao se


reduzir k para 19 não é esperado que seja possível se ter d=17.
De fato, 19
20 − 17 + 1 (não obedece (I I .6.8))

b C (n = 20,k = 19,d )q

Qual o valor de ’d’ é possível ?

19 6 20 − d + 1 → d = 2 é possível.

De fato, pode-se usar um SPC q em (II.6.7)

Sendo a soma definida em Fq (Campo q-ário)

Note que para obedecer à verificação de paridade em (II.6.7 ), um


código válido deve ter no mínimo , peso 2, daí resulta que a distância
mínima é d =2 (igual ao peso mínimo ).

c) C (n = 20,k = 18,d )q
141

Qual o valor máximo possível para ’d’ ?

18 6 20 − d + 1 → max(d ) = 3

Note que esta é uma condição necessária para a existência do código


, mas que não garante que o código existe!

Prova de (II.6.8)
Seja um C (n, k, d )2 com todas as palavras
de código relacionadas abaixo

Palavras Truncadas
z }| { Palavras Truncadas distintas
1
 z }| {


 2 1 0 0
0 1 1



 3
1 1 1


 4
2k palávras de código 5 Exemplo: C (3,2,2)2 0 0 0

 1 0 0

 . . . .
 . . . . 0 1 1
.

. . .


 1 1 1
2k

|{z}
|{z} d-1
apagar d-1 dígitos

comprimento n

Como a distancia mínima é de ’d’, resulta que as ’palavras truncadas’


são distintas.
Há, no máximo, 2n−(d −1) ’palavras truncadas ’ possíveis .Daí, que deve-se
ter

2k 6 2n−(d −1)
,ou seja
k 6 n − (d − 1)
∴ Para comprimentos não fixados, ao se escolher ’d’ grande , deve-se
ter k pequeno e vice-versa.
Códigos como o C (3,2,2)2 , que obedecem à equação (II.6.8) com igual-
dade , são ditos de máxima distância (MDS do inglês Maximum Distance
Separeable).

Resolução dos Exercícios


1 [5.2.14, wilson]

a) 1 × 0 + 2 × 1 + 3 × 3 + 4 × 2 + 5 × 8 + 6 × 3 + 7 × 7 + 8 × 9 + 9 × 6 + 10 × X 9 = 0

(252 mod 11) + 10 × X 9 = 0


142 Solução II.5 – Códigos de Bloco Práticos

10 + 10 × X 9 = 0

→ (÷10) → 1 + X 9 = 0

→ (+10) → (11 mod 11) + X 9 = 10

X 9 = 10 ou dígito 0 X 0
 
1

 2 


 3 


 4 


 5 

b)[x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 , x 9 ] . 
 6 
 =0
n = 10 dígitos 
 7 

 8 
9
 
 
10
 
 |{z} 
Dígito X n×(n−k)
1
 
 2 
3
 
 
4
 
 
5
 
T
⇒H =
 
6

 
7
 
 

 8 

 9 
X
c) d = [x 0 , x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 ]
k = 9 dígitos

m = n − k = 10 − 9 = 1 dígito de verificação

[ 1 0 0 0 0 0 0 0 0 | 1 ] → é uma palavra de código de mínimo peso →


d =2

c.1) C (10, 9, 2)
c.2) O código ISBN-10 é capaz de corrigir até t = 12 (d − 1) = 21 (2 − 1) = 0
¥ ¦ ¥ ¦

erros. E é capaz de detectar até 1 erro nos dígitos . (Obs ∴ É possível de-
monstrar que esse código também é capaz de detectar inversão de 2
dígitos , detectando eventual erro de digitação.)

d) O dígito de verificação necessita um símbolo para representar a


quantidade 10 , por isso não se pode empregar apenas digitos de 0 a
9. Além do mais , não é possível construir um campo de tamanho 10 .
143

Por exemplo : A operação de produto ⊗ (módulo 10) deve ter um único


elemento nulo 0 . Contudo , 2 ⊗ 5 =10 módulo 10 =0 , violando a condição
do elemento nulo.
Solução II.6 – Códigos Convolucionais

Exemplo 1) Preparar a resolução deste exercício.

Resolução dos Exercícios

Exercício 1
146 Solução II.6 – Códigos Convolucionais

Exercício 2
Dica (código Matlab):
1 function [y,sf]=Exerc2TIC14(u,si)
2 D0=u;
3 D1=si(1);
4 D2=si(2);
5 y1=mod(D0+D1,2);
6 y2=mod(D1+D2,2);
7 sf=[D0 D1];
8 y=[y1 y2];
147
Referências

ABRANTES, S. A. Códigos Correctores de Erros em Comunicações Digitais.


[S.l.]: FEUP edições, 2010. Citado 2 vezes nas páginas 63 e 64.

GALLAGER, R. course materials for 6.450 Principles of Digital


Communications I. 2006. MIT OpenCourseWare (http://ocw.mit.edu/),
Massachusetts Institute of Technology. Downloaded on 05/Oct./2008.
Citado na página 15.

HAYKIN, S. Sistemas de comunicação analógicos e digitais. 4.ed. ed. Porto


Alegre: Bookman, 2004. 837 p. ISBN 85-7307-936-3. Citado 2 vezes nas
páginas 28 e 40.

HSU, H. Schaum’s Outline of Analog and Digital Communications.


McGraw-Hill Education, 2012. (Schaum’s Outline Series). ISBN
9780071812849. Disponível em: <https://books.google.co.in/books?id=
Eq6oLxVNkLQC>. Citado 12 vezes nas páginas 16, 17, 19, 21, 22, 25, 26,
27, 30, 31, 34 e 41.

MCELIECE, R. J. Material da disciplina EE127 – Error Correcting Codes.


2000. California Institute of Technology. Citado na página 63.

WELLS, R. B. Applied Coding and Information Theory for Engineers. [S.l.]:


Pearson Education, 2009. Citado na página 35.
Sinta-se convidado a ajudar no aprimoramento deste material.

Estas são notas de aulas elaboradas pelos autores e contou com o


auxílio de outros colaboradores como monitores e alunos nos vários
oferecimentos da disciplina.

Os autores esforçaram-se ao máximo para incluir as devidas refe-


rências dos materiais aqui utilizados. No entanto, nenhum texto está
livre de erros. Por isto, agradecemos a ajuda para alertar sobre eventuais
problemas no texto.

Você também pode gostar