Sie sind auf Seite 1von 53

SEMANA ACADÊMICA DE MATEMÁTICA/2018 – UNIR

DEPARTAMENTO DE MATEMÁTICA - DEMAT


MINICURSO:

UMA INTRODUÇÃO AOS CÓDIGOS


CORRETORES DE ERROS

Prof. Me. Sézani M. G. de Carvalho


INTRODUÇÃO
Criada pelo matemático Claude Elwood Shannon, a
Teoria dos Códigos Corretores de Erros foi, pela primeira vez,
apresentada num trabalho publicado em 1948.
Nas décadas seguintes, a Teoria dos Códigos
Corretores de Erros despertou o interesse dos mais variados
profissionais, cientistas e pesquisadores, motivados
principalmente pelas pesquisas espaciais, telecomunicações
e uso difundido de computadores.
A Teoria dos Códigos Corretores de Erros, tem como
principal objetivo, a garantia da confiabilidade nas
informações transmitidas ou armazenadas, possibilitando a
detecção e correção de erros, caso ocorram.
OBJETIVOS
O Minicurso “Uma Introdução aos Códigos Corretores
de Erros” tem como objetivos:
• Apresentar, de forma sucinta, os princípios básicos da
Teoria, as principais definições e teoremas, possibilitando
ao aluno, os conhecimentos necessários para a
compreensão das etapas de codificação e decodificação de
mensagens;
• Explicitar uma aplicação cotidiana de tópicos estudados
nos cursos de Matemática, mais especificamente em
Álgebra Abstrata e Álgebra Linear, com a finalidade
precípua de demonstrar que, por mais abstratos que sejam
os conceitos matemáticos, muitas vezes solucionam
problemas concretos do mundo real.
O que é um código?
A título de ilustração, podemos considerar o idioma que
usamos, como um código, da seguinte forma:

• Seja um alfabeto 𝑃 composto por 38 caracteres, sendo


um deles o “espaço entre palavras” e os outros 37
apresentados a seguir:
{𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓, 𝑔, ℎ, 𝑖, 𝑗, 𝑘, 𝑙, 𝑚, 𝑛, 𝑜, 𝑝, 𝑞, 𝑟, 𝑠,
𝑡, 𝑢, 𝑤, 𝑥, 𝑦, 𝑧, à, á, â, ã, é, ê, 𝑖, í, ó, ô, õ, 𝑢, ú}

• Considere a maior palavra que possa vir a ser escrita com


os caracteres do alfabeto 𝑃, por exemplo:
“pneumoultramicroscopicossilicovulcanoconiótico”
com 46 caracteres.
• Por meio do acréscimo de espaços (no fim), é
possível fazer com que cada palavra do nosso
idioma seja escrita com exatamente 46
caracteres disponíveis no alfabeto 𝑃;

• Define-se assim um código 𝐶 ⊂ 𝑃46 de todas


as palavras do nosso idioma.
O código 𝑪 ⊂ 𝑷𝟒𝟔
é eficiente na
detecção e correção de erros?
Suponha que três palavras sejam transmitidas e,
em razão de um canal ruidoso, cada uma delas
sofra exatamente um erro, de modo que as
palavras recebidas sejam:
• “belefone”
• “wola”
• “canela”
Quais foram realmente as palavras
transmitidas?
• “belefone” não pertence ao código
𝐶, portanto há a detecção do erro;

• “wola” não pertence ao código 𝐶, portanto, há


a detecção do erro;

• “canela” pertence ao código 𝐶, portanto, não


há detecção de erro.
Por hipótese, cada palavra sofreu
exatamente um erro! Como corrigir?
• No primeiro caso, a palavra de 𝐶 ⊂ 𝑃46 que mais
se “aproxima” de “belefone” é “telefone”,
portanto, a correção é possível de ser executada;

• No segundo caso, existem várias palavras de 𝐶 ⊂


𝑃46 que igualmente se “aproximam” de “wola”,
portanto, a correção é impossível;

• No terceiro caso, não houve sequer a detecção do


erro, portanto, a correção é impossível.
Analisando outra possibilidade:
Caso as palavras fossem transmitidas com
uma acréscimo de redundâncias, de modo que
as palavras recebidas fossem:

• “belefone celular”
• “wola de futebol”
• “canela esferográfica”

A detecção e correção do erro torna-se


mais fácil.
CONCLUSÃO:

O código 𝐶 ⊂ 𝑃46 , de todas as palavras do


nosso idioma não é eficiente para a detecção e
correção de erros.
Um exemplo mais “matemático”
• Suponha um robô que se desloque
horizontalmente sobre um tabuleiro
quadriculado, dotado dos seguintes
movimentos: Leste, Oeste, Norte e Sul.
• Os circuitos digitais baseiam seu funcionamento
na lógica binária. Logo, cada informação deve ser
expressa por meio dos dígitos 0 e 1.
• Existem quatro movimentos para serem
expressos por meio de elementos do conjunto
𝔽2 = {0,1}
Os comandos para movimentos podem ser
codificados como elementos do conjunto 𝔽22 =
{ 0,0 , 0,1 , 1,0 , 1,1 }, como na tabela a
seguir:
Fonte Código da fonte
Leste 00
Oeste 01
Norte 10
Sul 11
Suponha que seja realizada a seguinte
rotina:
• O comando “Oeste” é dado ao robô;
• A fonte “Oeste” é convertida para o código de
fonte 01;
• Suponha a ocorrência de exatamente um erro,
na primeira coordenada, em razão de ruídos
no canal, de forma que o comando recebido
seja 11;
• O robô se movimenta, erroneamente, para o
Sul.
O acréscimo de dígitos de redundância:
No caso apresentado, o circuito lógico do robô
não detectaria a ocorrência do erro, pois o código
11 é válido.
Tal como no exemplo do nosso idioma, façamos o
acréscimo de redundâncias aos códigos de fonte:
Fonte Código da Código de
fonte canal
Leste 00 00000
Oeste 01 01011
Norte 10 10110
Sul 11 11101
Supondo a ocorrência do mesmo erro,
para onde o robô iria se movimentar?
• Comando dado: “Oeste”;
• Código de Fonte: 01;
• Código de Canal: 01011;
• Transmissão e ocorrência do erro;
• Palavra código recebida: 11011;
• Detecção do erro e substituição da palavra código
11011 pela palavra código que mais se “aproxima”
dela, no caso, 01011;
• Movimentação do robô, corretamente para o
Oeste.
Etapas do processo de
codificação/decodificação:
Pré-requisitos para o estudo da Teoria
dos Códigos Corretores de Erros:
• Noções de Álgebra Abstrata: Corpos finitos.

• Noções de Álgebra Linear: Operações com


matrizes, Espaços Vetoriais, Subespaços
Vetoriais, Base e Dimensão, Transformações
Lineares e Produto Interno.
CONCEITOS ESTRUTURAIS PARA A TEORIA
DOS CÓDIGOS CORRETORES DE ERROS:
Métrica de Hamming
Definição 1: Considere um alfabeto como sendo
um conjunto 𝔸 finito, cujo o número de
elementos é representado por #𝔸 = 𝑞.
Denomina-se código a todo subconjunto próprio
de 𝔸𝑛 com 𝑛 ∈ ℕ. Dados 𝑢, 𝑣 ∈ 𝔸𝑛 , a distância
de Hamming é definida como sendo o valor:

𝑑 𝑢, 𝑣 = #{𝑖; 𝑢𝑖 ≠ 𝑣𝑖 , 1 ≤ 𝑖 ≤ 𝑛, 𝑖 ∈ ℕ}
Propriedade da distância de Hamming:
Dados elementos arbitrários 𝑢, 𝑣, 𝑤 ∈ 𝔸𝑛 , com
𝑢 = 𝑢1 𝑢2 𝑢3 … 𝑢𝑛 , 𝑣 = 𝑣1 𝑣2 𝑣3 … 𝑣𝑛 e 𝑤 =
𝑤1 𝑤2 𝑤3 … 𝑤𝑛 , são válidas as seguintes propriedades:
• i) 𝑑 𝑢, 𝑣 ≥ 0, valendo a igualdade quando 𝑢 = 𝑣;
• ii) 𝑑 𝑢, 𝑣 = 𝑑 𝑣, 𝑢 ;
• iii) 𝑑 𝑢, 𝑣 ≤ 𝑑 𝑢, 𝑤 + 𝑑(𝑤, 𝑣).

Nessas condições, 𝔸𝑛 é um Espaço Métrico,


pois neste conjunto está definida a Métrica de
Hamming.
Definição 2: Considere um elemento 𝑐 ∈ 𝔸𝑛 e
um número natural 𝑟 > 0. Define-se o disco de
centro 𝑐 e raio 𝑟 como sendo o conjunto:

𝐷 𝑐, 𝑟 = 𝑢 ∈ 𝔸𝑛 ; 𝑑(𝑢, 𝑐) ≤ 𝑟 .

De maneira análoga, define-se uma esfera de


centro 𝑐 e raio 𝑟 como o conjunto:

𝑆 𝑐, 𝑟 = 𝑢 ∈ 𝔸𝑛 ; 𝑑 𝑢, 𝑐 = 𝑟 .
Proposição 2: Para todo 𝑐 ∈ 𝔸𝑛 e todo número
natural 𝑟 > 0, tem-se que 𝐷 𝑐, 𝑟 e 𝑆 𝑐, 𝑟 são
conjunto finitos. Além disso, a cardinalidade de
𝐷 𝑐, 𝑟 é dada por:

𝑟
𝑛 𝑖
#𝐷 𝑐, 𝑟 = ෍ . 𝑞−1
𝑖
𝑖=0
Definição 3: Dado um código 𝐶, define-se sua
distância mínima como sendo um número 𝑑,
tal que 𝑑 = 𝑚𝑖𝑛 𝑑 𝑢, 𝑣 ; 𝑢, 𝑣 ∈ 𝐶 𝑒 𝑢 ≠ 𝑣 .

Observação: De maneira geral, considerando


𝑀 = #𝐶 , para a determinação de 𝑑 são
𝑀
necessários os cálculos de distâncias,
2
demandando um custo computacional
exagerado e inviabilizando o método.
Posteriormente, será vista a possibilidade de se
determinar 𝑑 de forma mais “econômica”.
Definição 4: Considerando 𝐶 um código com distância
𝑑−1 𝑑−1
mínima 𝑑, define-se 𝑡 = , onde representa
2 2
𝑑−1
a parte inteira do número real .
2

Teorema 1: Considere 𝐶 um código com distância mínima


𝑑. Então:
i) se 𝑐,𝑐′ ∈ 𝐶 e 𝑐 ≠ 𝑐′, vale que 𝐷 𝑐, 𝑡 ⋂𝐷 𝑐′, 𝑡 = ∅.
ii) 𝐶 pode detectar até 𝑑 − 1 erros.
𝑑−1
iii) o código 𝐶 pode corrigir até 𝑡 = erros.
2
Códigos equivalentes
Definição 5: Uma função 𝑓: 𝔸𝑛 → 𝔸𝑛 é uma isometria
de 𝔸𝑛 quando 𝑓 preservar distâncias de Hamming em
𝔸𝑛 , ou seja, 𝑑 𝑓 𝑢 , 𝑓 𝑣 = 𝑑(𝑢, 𝑣) para todo 𝑢, 𝑣 ∈
𝔸𝑛

Teorema 2: Se 𝑓: 𝔸𝑛 → 𝔸𝑛 é uma isometria de 𝔸𝑛 .


Então:
• i) 𝑓 é uma bijeção.
• ii) 𝑓 −1 é uma isometria de 𝔸𝑛 .
• iii) se 𝑔 é uma isometria de 𝔸𝑛 , 𝑓 ∘ 𝑔 é uma
isometria de 𝔸𝑛 .
Códigos equivalentes
Definição 6: Dados dois códigos 𝐶1 e 𝐶2 contidos
em 𝔸𝑛 , diz-se que 𝐶1 e 𝐶2 são códigos
equivalentes quando existe uma isometria 𝑓 de 𝔸𝑛
tal que 𝑓 𝐶1 = 𝐶2 .

Observação: Os parâmetros fundamentais de um


código 𝐶 ⊂ 𝔸𝑛 são o seu comprimento 𝑛, o seu
número de elementos 𝑀 e a sua distância mínima
𝑑. Os parâmetros de um código 𝐶 ⊂ 𝔸𝑛 são
representados pela terna 𝑛, 𝑀, 𝑑 .
Códigos equivalentes

Teorema 3: Códigos equivalentes possuem os


mesmos parâmetros.
Códigos Lineares

Seja 𝕂 um corpo finito com 𝑞 de elementos, o qual


é denominado alfabeto. Tem-se que 𝕂𝑛 , com 1 ≤
𝑛 ∈ ℕ, é um 𝕂-espaço vetorial de dimensão 𝑛.

Definição 7: Um código 𝐶 ⊂ 𝕂𝑛 é classificado


como um código linear quando 𝐶 for um
subespaço vetorial de 𝕂𝑛 .
Códigos Lineares
Conhecendo o número 𝑀 de vetores em um
código 𝐶 e o número 𝑞 de escalares em 𝕂 é
possível determinar a dimensão de 𝐶, pois:

𝑀 = 𝑞𝑘 ⇔
log 𝑞 𝑞 𝑘 = log 𝑞 𝑀 ⇔ 𝑘 = log 𝑞 𝑀, ou seja,
dim 𝐶 = 𝑘 = log 𝑞 𝑀.
Códigos Lineares

Definição 8: Considerando a métrica de


Hamming, define-se o peso de um vetor 𝑢 do 𝕂-
espaço vetorial 𝕂𝑛 como sendo o número
inteiro 𝜔 𝑢 = 𝑑(𝑢, 0) e, o peso de um código
𝐶, como sendo a distância de Hamming mínima
não nula dos vetores de 𝐶 ao vetor nulo. Em
outras palavras, 𝜔 𝐶 = 𝑚𝑖𝑛 𝜔 𝑢 ; 𝑢 ∈ 𝐶\ 0 .
Códigos Lineares

• Teorema 4: Considerando um código linear


𝐶 ⊂ 𝕂𝑛 , com distância mínima 𝑑, ∀ 𝑢, 𝑣 ∈ 𝐶,
se tem 𝑑 𝑢, 𝑣 = 𝜔(𝑢 − 𝑣) e 𝑑 = 𝜔(𝐶).
Gerando um Código Linear
Em álgebra linear, essencialmente, são
conhecidas duas maneiras de se descrever
subespaços vetoriais 𝐶 de um espaço vetorial
𝕂𝑛 :
• Como imagem de uma Transformação Linear;
• Como núcleo de uma Transformação Linear.

Nesse trabalho, os subespaços serão


gerados como imagens de transformações.
Gerando um Código Linear
Considere ν1 , ν2 , … , ν𝑘 uma base de 𝐶 ⊂ 𝕂𝑛 e
uma aplicação 𝑇: 𝕂𝑘 → 𝕂𝑛 dada por:
𝑇 𝑥 = 𝑥1 ∙ ν1 + 𝑥2 ∙ ν2 + ⋯ + 𝑥𝑘 ∙ ν𝑘
onde 𝑥 = (𝑥1 , 𝑥2 , … , 𝑥𝑘 ) ∈ 𝕂𝑘 .
Note que 𝑇 é uma transformação linear e além
disso, é injetiva, pois 𝐾𝑒𝑟 𝑇 = {0}.
Pelo Teorema do Núcleo e da Imagem o
subespaço 𝐶 gerado por 𝑇, tem a mesma dimensão 𝑘
de 𝕂𝑘 e cada vetor de 𝐶, por sua vez, está associado a
um único vetor de 𝕂𝑘 . Assim, pode-se considerar os
vetores de 𝕂𝑘 como sendo os códigos de fonte, os
vetores de 𝐶 como o código de canal e 𝑇 como uma
codificação.
Gerando um Código Linear
Utilizar uma transformação 𝑇: 𝕂𝑘 → 𝕂𝑛
como uma codificação é bastante eficiente para
a determinação do código de canal, dado um
código de fonte, porém exige um custo
computacional muito elevado quando se
pretende descobrir se um dado vetor 𝑣 pertence
ao código 𝐶, pois, para tanto, seria necessário
resolver um sistema com 𝑘 equações e 𝑛
incógnitas:
𝑥1 ∙ ν1 + 𝑥2 ∙ ν2 + ⋯ + 𝑥𝑘 ∙ ν𝑘 = 𝜈
Gerando um Código Linear
Definição 9: Sendo ℬ = ν1 , ν2 , ν3 , … , ν𝑘 uma base
ordenada de 𝐶, onde cada vetor ν𝑖 =
(𝜐𝑖1 , 𝜐𝑖2 , 𝜐𝑖3 , … , 𝜐𝑖𝑛 ), com 1 ≤ 𝑖 ≤ 𝑘, uma
ν1 𝜐11 𝜐12 ⋯ 𝜐1𝑛
ν2 𝜐21 𝜐22 ⋯ 𝜐2𝑛
matriz 𝐺 = ⋮ = ⋮ ⋮ ⋱ ⋮ é
ν𝑘 𝜐𝑘1 𝜐𝑘2 ⋯ 𝜐𝑘𝑛
denominada matriz geradora de 𝐶 associada à base
ℬ.
Observação: a matriz geradora de 𝐶 não é única, pois
cada base de C gera uma matriz diferente, porém,
equivalente por linhas à matriz 𝐺.
Gerando um Código Linear
Ao considerar um vetor 𝑥 = (𝑥1 , 𝑥2 , … , 𝑥𝑘 ) ∈ 𝕂𝑘 e
ν1
ν2
multiplicá-lo pela matriz 𝐺 = ⋮ , obtém-se 𝑥1 ∙
ν𝑘
ν1 + 𝑥2 ∙ ν2 + ⋯ + 𝑥𝑘 ∙ ν𝑘 ∈ 𝐶, o que é
equivalente a calcular 𝑇(𝑥), sendo 𝑇: 𝕂𝑘 → 𝕂𝑛 , ou
seja, 𝑇 𝑥 = 𝑥 ∙ 𝐺.
Pela praticidade operacional com as matrizes, a
partir de agora será utilizado esse método para a
geração de códigos lineares.
Gerando um Código Linear
Definição 10. Uma matriz 𝐺, geradora de um código 𝐶
obtido por meio de uma transformação 𝑇: 𝕂𝑘 → 𝕂𝑛 ,
encontra-se na forma padrão quando for apresentada
por 𝐺 = 𝐼𝑘 ȁ𝐴 , onde 𝐼𝑘 representa a matriz
identidade de ordem 𝑘 e 𝐴 é uma matriz de ordem
𝑘 × (𝑛 − 𝑘).

Observação: Uma das vantagens de se utilizar uma


matriz 𝐺 na forma padrão, consiste no fato de poder
visualizar nas palavras código do canal, as 𝑘 primeiras
coordenadas do código de fonte e as 𝑛 − 𝑘
coordenadas restantes como sendo a redundância
acrescida.
Gerando um Código Linear

Como é de interesse trabalhar com códigos


binários, a partir desse momento, para fins de
simplicidade os exemplos e aplicações serão
todos referentes a espaços vetoriais 𝔽𝑛2 sobre o
corpo 𝔽2 = {0,1}.
ATIVIDADE I (1º dia):
A tabela a seguir apresenta um conjunto de
fontes associadas aos seus respectivos códigos
de fonte:
𝑒𝑠𝑝𝑎ç𝑜 = 00000 𝐻 = 10010 𝑄 = 11100
𝐴 = 10000 𝐼 = 10001 𝑅 = 10110
𝐵 = 01000 𝐽 = 01100 𝑆 = 10101
𝐶 = 00100 𝐿 = 01010 𝑇 = 11010
𝐷 = 00010 𝑀 = 01001 𝑈 = 11001
𝐸 = 00001 𝑁 = 00110 𝑉 = 01110
𝐹 = 11000 𝑂 = 00101 𝑋 = 00111
𝐺 = 10100 𝑃 = 00011 𝑍 = 11110
ATIVIDADE I:
a) Construa uma matriz 𝐺 geradora de um
código de canal 𝐶, na forma padrão, com
dimensão 5, contido no espaço vetorial 𝔽92 ;

b) Determine o peso 𝜔(𝐶), sua capacidade de


detecção e sua capacidade de correção de erros;

c) Codifique a mensagem “AMO MATEMATICA”


Códigos Duais
Definição 11: Seja 𝐶 ⊂ 𝔽𝑛2 um código linear.
Define-se 𝐶 ⊥ = 𝑤 ∈ 𝔽𝑛2 ; 𝑢, 𝑤 = 0, ∀𝑢 ∈ 𝐶 . Em
outras palavras, o conjunto 𝐶 ⊥ (complemento
ortogonal de 𝐶) é formado por todos os vetores de
𝔽𝑛2 cujo produto interno com qualquer vetor de 𝐶
seja nulo.

Teorema 5: Se 𝐶 ⊂ 𝔽𝑛2 é um código linear, com


matriz geradora 𝐺, então:
⊥ 𝑛
i) 𝐶 é um código linear de 𝔽2 ;
ii) 𝑤 ∈ 𝐶 ⊥ ⇔ 𝐺 ∙ 𝑤 𝑇 = 0.
Teorema 6: Se 𝐶 ⊂ 𝔽𝑛2 é um código linear de
dimensão 𝑘 com a matriz geradora 𝐺 = 𝐼𝑘 ȁ𝐴 ,
na forma padrão, então:
i) dim 𝐶 ⊥ = 𝑛 − 𝑘
ii) A matriz geradora do código 𝐶 ⊥ é da forma
𝐻 = −𝐴𝑇 ȁ𝐼(𝑛−𝑘)

Teorema 7: Seja 𝐶 um código linear contido em


um espaço 𝔽𝑛2 , temos 𝐶 ⊥ ⊥ = 𝐶.
Teorema 8: Considerando 𝐶 um código linear e 𝐻 a
matriz geradora do código 𝐶 ⊥ , um vetor 𝑣 pertence
ao código 𝐶 se, e somente se, 𝐻 ∙ 𝑣 𝑇 = 0.

Observação: O teorema 8 constitui uma ferramenta


eficiente pra determinar se um dado vetor 𝑣 ∈ 𝔽𝑛2
pertence a um determinado código linear 𝐶 ⊂ 𝔽𝑛2 ,
bastando para isso, verificar se 𝐻 ∙ 𝑣 𝑇 = 0. A matriz
𝐻, geradora de 𝐶 ⊥ , é denominada matriz teste de
paridade do código 𝑪 e a transposta da matriz
𝐻 ∙ 𝑣 𝑇 , com 𝑣 ∈ 𝔽𝑛2 , é denominado a síndrome 𝒔
do vetor 𝒗. Em outras palavras. Tem-se 𝑠 𝑇 = 𝐻 ∙
𝑣𝑇.
Teorema 9: Seja 𝐻 a matriz teste de paridade de
um código 𝐶. O peso de 𝐶 é igual a 𝑧 se, e somente
se, quaisquer 𝑧 − 1 colunas de 𝐻 são linearmente
independentes e existem 𝑧 colunas de 𝐻
linearmente dependentes.

Observação: O teorema 9 fornece uma ferramenta


importante e de baixo custo computacional para a
determinação do peso (distância mínima) de um
código 𝐶, bastando para isso, analisar as colunas da
matriz teste de paridade de 𝐶.
O processo de Decodificação
Sendo 𝑐 uma palavra transmitida e 𝑟 uma
palavra recebida, define-se o vetor erro 𝑒 como
𝑒 = 𝑟 − 𝑐.

A síndrome do vetor 𝑒 é igual a síndrome da


palavra recebida 𝑟, pois:
𝐻 ∙ 𝑒 𝑇 = 𝐻 ∙ 𝑟 − 𝑐 𝑇 = 𝐻. 𝑟 𝑇 − 𝑐 𝑇
= 𝐻 ∙ 𝑟𝑇 − 𝐻 ∙ 𝑐𝑇 = 𝐻 ∙ 𝑟𝑇 − 0 = 𝐻 ∙ 𝑟𝑇
Teorema 10: Considere 𝐶 um código linear contido
em 𝔽𝑛2 , capaz de corrigir até 𝑡 erros. Se uma
palavra recebida 𝑟 pertence ao espaço 𝔽𝑛2 e a
palavra transmitida 𝑐 pertence ao código 𝐶 são tais
que 𝑑(𝑐, 𝑟) ≤ 𝑡, então existe um único vetor 𝑒 tal
que 𝜔(𝑒) ≤ 𝑡, cuja síndrome é igual a síndrome
de 𝑟, ou seja, 𝐻 ∙ 𝑒 𝑇 = 𝐻 ∙ 𝑟 𝑇 e 𝑐 = 𝑟 − 𝑒.

Observação: O teorema 10 garante que se um


código 𝐶 ⊂ 𝔽𝑛2 é tal que o peso de 𝑒 for menor ou
igual ao peso de 𝐶, então o erro é univocamente
determinado por 𝑟.
O processo de Decodificação
Definição 12: Sendo 𝑣 um vetor do espaço vetorial
𝔽𝑛2 , o conjunto 𝑣 + 𝐶 = 𝑣 + 𝑐, 𝑐 ∈ 𝐶 é
denominado classe lateral de 𝑣 segundo 𝐶.

Teorema 11: Dados dois vetores 𝑢, 𝑣 ∈ 𝔽𝑛2 ,


𝐻 ∙ 𝑢𝑇 = 𝐻 ∙ 𝑣 𝑇 se, e somente se, 𝑢 ∈ 𝑣 + 𝐶.
Demonstração: 𝐻 ∙ 𝑢𝑇 = 𝐻 ∙ 𝑣 𝑇 ⇔
⇔ 𝐻 ∙ 𝑢𝑇 − 𝐻 ∙ 𝑣 𝑇 = 0 ⟺ 𝐻 ∙ 𝑢𝑇 − 𝑣 𝑇 = 0 ⇔
⇔ 𝐻 ∙ 𝑢 − 𝑣 𝑇 = 0 ⟺ 𝑢 − 𝑣 ∈ 𝐶 ⟺ 𝑢 ∈ 𝑣 + 𝐶.
O processo de Decodificação
Definição 13: Seja 𝑥 um vetor pertencente a
uma classe lateral de 𝑣 segundo 𝐶. Se 𝜔 𝑥 =
𝑚𝑖𝑛 𝜔 𝑣𝑖 ; 𝑣𝑖 ∈ 𝑣 + 𝐶 , então 𝑥 é dito o líder
de 𝑣 + 𝐶.

Teorema 12: Considerando 𝐶 ⊂ 𝔽𝑛2 um código


com distância mínima 𝑑. Se 𝑣 ∈ 𝔽𝑛2 é um vetor
𝑑−1
tal que 𝜔 𝑣 ≤ = 𝑡, então 𝑣 é o único
2
elemento líder em sua classe lateral.
OBSERVAÇÕES:
Os teoremas 10, 11 e 12 constituem as
ferramentas necessárias para o processo de
decodificação de código de canal em código de
fonte, uma vez que garantem que, a partir da
determinação da síndrome 𝑠 de uma palavra
recebida 𝑟, é possível associá-la a uma única classe
lateral segundo 𝐶, cujo líder possua a mesma
síndrome e, uma vez identificada esta classe, a
palavra corretamente enviada 𝑐 é univocamente
determinada assumindo 𝑒 como o líder da classe
identificada, associada a síndrome 𝑠, por meio da
diferença 𝑐 = 𝑟 − 𝑒
O Algoritmo de Decodificação
(1) Determinar todos os elementos 𝑣𝑖 de 𝔽𝑛2 tais que 𝜔(𝑣𝑖 ) ≤ 𝑡
(serão os líderes de classes);
(2) Calcular todas as síndromes 𝑠𝑖 dos vetores 𝑣𝑖 determinados
na etapa anterior, relacionando cada síndrome ao seu
respectivo líder, em uma tabela;
(3) Seja 𝑟 uma palavra recebida. Calcule a síndrome 𝑠 de 𝑟 por
meio de 𝑠 𝑇 = 𝐻 ∙ 𝑟 𝑇 ;
(4) Se 𝑠 𝑇 = 0 então não ocorreram erros na transmissão. Assuma
a palavra correta 𝑐 transmitida igual à palavra 𝑟 recebida;
(5) Se 𝑠 𝑇 ≠ 0, ocorreram erros na transmissão. Verifique se 𝑠 é
uma síndrome presente na tabela e, caso for, assuma o erro 𝑒
igual ao líder da classe relacionada a síndrome determinada.
A palavra correta será determinada a diferença 𝑐 = 𝑟 − 𝑠.
Caso 𝑠 não esteja presente na tabela, então ocorreram mais
de 𝑡 erros na transmissão e a correção é impossível.
Atividade II
a) Construa uma matriz teste de paridade 𝐻 a
partir do código 𝐶 da Atividade I;
b) Monte uma tabela de líderes de classe e
calcule suas síndromes;
c) Sabendo que ocorreu no máximo um erro na
transmissão das palavras/código abaixo,
decodifique-as fazendo as correções, por fim,
traduzindo a mensagem para a fonte utilizada
na Atividade I:
100010000 110100100 100001110 101100011
REFERÊNCIAS
BAHIA, Flaviano. Um primeiro curso sobre códigos corretores de erros. ERMAC
2010: I Encontro Regional de Matemática Aplicada e Computacional, 2010.
Disponível em: <http://www.ufsj.edu.br/portal2-repositorio/File/i-
ermac/anais/minicursos/mc8.pdf> acesso em 13 de setembro de 2014.
BARBOSA, Tauan de S.; ASSIS, Aline M. Princípio teóricos dos códigos
corretores de erros: códigos lineares e cíclicos. Disponível em:
<seer.ucg.br/index.php/estudos/article/download/3364/1951> acesso em 21
de outubro de 2014.
DOMINGUES, Hygino H.; IEZZI, Gelson. Álgebra moderna. 3. ed. São Paulo:
Atual, 1982.
GARCIA, Arnaldo; LEQUAIN, Yves. Elementos de álgebra. 5. ed. Rio de Janeiro:
IMPA, 2010.
HOFFMAN, Kenneth; KUNZE, Ray. Álgebra linear. Trad. Renate Watanabe. 2.
ed. Rio de Janeiro: Livros Técnicos e Científicos Editora S. A., 1979.
HEFEZ, Abramo; VILLELA, Maria Lúcia T. Códigos corretores de erros. 2. ed. Rio
de Janeiro: IMPA, 2008.
LIMA, Elon Lages. Álgebra linear. 5. ed. Rio de Janeiro: IMPA, 2001.