Anda di halaman 1dari 13

DEEPPAARRTTAAM

MEENNTTO
OD DEE MA ATTEEMMÁÁTTIICCA
A
SEEM
MA ANNA ADDEE MA ATTEEM
MÁ A - 2018
ÁTTIICCA

Porto Velho, 13 a 15 de junho.

Minicurso

Uma introdução aos Códigos Corretores de Erros

Prof. Me. Sézani Morais Gonçalves de Carvalho


1
1. INTRODUÇÃO

O avanço rápido da tecnologia está presente em nosso cotidiano. Dispomos, na atualidade, de grande
facilidade em armazenar dados ou nos comunicar de maneira prática e rápida utilizando aparelhos eletrônicos
como celulares, tablets, microcomputadores, além dos meios de comunicação convencionais tais como televisão,
rádio etc., que geram ao mesmo tempo eficiência, conforto e lazer aos usuários. No entanto, passa despercebido
à maioria dos usuários, todo um contexto matemático utilizado e necessário para o funcionamento desses
aparelhos. Embora não utilizemos matemática de maneira direta ao, por exemplo, enviarmos uma mensagem via
celular, de forma indireta isso só é possível por meio da utilização da matemática.
Um aspecto importante no envio ou armazenamento de informações consiste na incerteza em saber se a
informação transmitida por de um dispositivo eletrônico de comunicação será recebida tal qual fora enviada ou
se um dado hoje armazenado será acessado amanhã com o mesmo grau de fidedignidade. Informações enviadas
ou armazenadas serão passíveis de erros? Caso haja erros na transmissão ou armazenamento de informações,
serão possíveis as detecções e correções?
A teoria dos códigos foi criada pelo matemático americano Claude Elwood Shannon, no laboratório Bell, e
foi apresentada em um trabalho publicado no ano de 1948. Nas décadas de 50 e 60 vários matemáticos, que se
interessaram pelo assunto, contribuíram de forma considerável com o desenvolvimento dessa teoria. A partir da
década de 70, profissionais engenheiros passaram a ter interesse pela teoria em razão das pesquisas espaciais,
telecomunicações e o uso difundido de computadores. Na atualidade, qualquer aparelho que seja utilizado para a
transmissão ou armazenamento de dados, faz uso dessa teoria.
Este minicurso tem por objetivo apresentar e desenvolver, de forma sucinta, os fundamentos
matemáticos da teoria dos códigos corretores de erros, ocupando-se, exclusivamente, com os aspectos de
natureza algébrica, nos processos de transformação de códigos de fonte em códigos de canal, as decodificações
de códigos de canal em códigos de fonte, com detecções e correções de possíveis erros ocorridos na transmissão.

2. O QUE É UM CÓDIGO?

Podemos, a título de ilustração, utilizar como código o idioma que usamos. Considere um alfabeto
formado por 38 caracteres, sendo 37 deles os caracteres a seguir:
e mais um caractere
correspondendo ao espaço entre palavras. Denominaremos esse alfabeto de . Considere que a maior palavra
desse alfabeto seja “pneumoultramicroscopicossilicovulcanoconi tico”1. Percebe-se que possui 38 elementos
(caracteres) e sua maior palavra possui 46 caracteres. É possível, por meio do acréscimo de espaços no fim de
cada palavra de formada com os elementos de , fazer com que todas elas possuam exatamente 46 caracteres.
Define-se assim um código como sendo um conjunto de todas as palavras existentes no nosso idioma.
Note, porém, que o código não é eficiente para detectar e corrigir erros, pois, caso fosse transmitida a palavra
“telefone” e ocorresse um erro na transmissão, de modo que a palavra recebida fosse “belefone”, o código
detectaria a ocorrência desse erro, pois “belefone” não pertence ao conjunto . Uma vez detectado o erro, seria
fácil corrigi-lo, pois a palavra pertencente a que mais se “aproxima” de belefone é “telefone”. Sendo assim,
saber-se-ia que a palavra transmitida, na realidade teria sido “telefone”, e a correção seria feita. Em
contrapartida, se a palavra transmitida fosse “bola” e por ventura ocorresse um erro na transmissão, de modo
que a palavra recebida fosse “wola”, o erro seria facilmente detectado, pois wola não é uma palavra pertencente
a , porém, a correção seria impossível, uma vez que em existem várias palavras que igualmente se
“aproximam” de “wola”, por exemplo: “bola”, “cola”, “mola”, “sola” e “gola”. Em uma última hipótese, se a
palavra transmitida fosse “caneca” e ocorresse um erro na transmissão, de modo que a palavra recebida fosse
“caneta”, o código nem detectaria o erro, pois a palavra caneta também pertence a .
Nesse estudo serão considerados apenas canais simétricos, ou seja, canais em que todos os caracteres
têm a mesma probabilidade (ínfima) de serem recebidos errados e, se um caractere é recebido errado, a
probabilidade de que ele seja qualquer um dos outros caracteres é a mesma.

Exemplo 1: (Um exemplo “mais matemático”): Suponha que um robô se desloque sobre um tabuleiro
quadriculado, obedecendo sempre a dos seguintes comandos: Leste, Oeste, Norte ou Sul.
Os circuitos digitais (ou circuitos lógicos) baseiam seu funcionamento na lógica binária, ou seja, cada
informação deve ser expressa por meio da utilização de dois dígitos, a saber, 0 e 1. Como existem dois dígitos
disponíveis para expressar os comandos e quatro comandos a serem expressos, considerando o conjunto
como alfabeto, pode-se codificar os quatro comandos como elementos de

1
Doença pulmonar causada pela inalação de cinzas de origem vulcânica.
2
, os quais, por simplicidade de notação, serão escritos como , , e e
denominados “c digo da fonte”:
Fonte Código da fonte
Leste 00
Oeste 01
Norte 10
Sul 11
Imagine agora que os comandos (mensagens) sejam transmitidos ao robô via sinais de rádio frequência,
por meio de um controle remoto por exemplo. Suponha que seja acionado o comando “Oeste”, o qual será
convertido para o código de fonte e enviado ao robô, indicando para que ele se mova para o Oeste. Suponha
ainda que a transmissão do sinal, por alguma interferência (ruído), sofra exatamente um erro e chegue até o robô
como , acarretando que o seu deslocamento seja, equivocadamente, realizado para o Sul. Observe que o
circuito digital do robô seria incapaz de detectar o erro, pois é um comando existente em seu banco de dados.
Diante de uma situação como a descrita acima, é realizada a inserção de redundâncias, por meio do
acréscimo de dígitos nos códigos da fonte, de modo que se possa detectar e corrigir possíveis erros de
transmissão, dando origem a um novo código o qual é denominado de “c digo de canal”:
Fonte Código da fonte Código de canal
Leste 00 00000
Oeste 01 01011
Norte 10 10110
Sul 11 11101
Nesta nova codificação, da forma como apresentada acima, os dois primeiros dígitos representam o
código da fonte enquanto os três últimos dígitos são as redundâncias acrescidas.

Reanalisando o exemplo anterior: Suponha que seja dado o comando “Oeste”, o qual será convertido
para o código da fonte e em seguida acrescido de redundâncias resultará no código de canal e enviado
ao robô, indicando para que ele se desloque para o Oeste. Suponha ainda que a transmissão do sinal, por algum
ruído, sofra exatamente um erro e chegue até o robô como . Note que esse comando não existe em banco
de dados, o que acarreta a detecção do erro pelo seu circuito digital. O comando que “mais se aproxima” de
é e, portanto, o circuito digital faz a correção, interpretando o comando recebido como ,
convertendo-o para o código de fonte 01 e movimentando o robô, corretamente, para o Oeste.
A seguir são apresentadas, em diagrama de blocos, as etapas desde o comando dado até a chegada da
mensagem transmitida:
Codificador Codificador
Fonte
de fonte de canal

Canal

Decodificador Decodificador
Usuário
de canal da fonte

3. MÉTRICA DE HAMMING

Definição 1: Considere um alfabeto como sendo um conjunto finito, cujo o número de elementos será
representado por . Denomina-se código a todo subconjunto próprio de com . Dados ,a
distância de Hamming é definida como sendo o valor:

Exemplo 2: Dado e , tem-se que é um código e, as distâncias de


Hamming entre seus elementos são:
, , , , , .

Proposição 1: De maneira geral, dados elementos arbitrários , com ,


e , são válidas as seguintes propriedades:
i. , valendo a igualdade quando ;
3
ii. ;
iii. .
Demonstração:
i. Por definição de distância de Hamming, tem-se que , pois não se pode ter um conjunto com um
número negativo de elementos. Além disso, quando , tem-se que ,o
que significa que para todo , acarretando que .
ii. Se , então sabe-se que existem índices para os quais se tem , o que é equivalente a
afirmar que existem índices para os quais se tem , implicando com isso que . Logo,
.
iii. A contribuição das coordenadas de e para é igual a zero se e igual a um se
. Considerando que a contribuição das coordenadas de e para seja zero, ou seja,
, tem-se que , pois as contribuições das coordenadas de e
para e de e para são iguais a 0 ou 1, o que acarreta que a contribuição das
coordenadas para será igual a 0, 1 ou 2. Por outro lado, se a contribuição das
coordenadas de e para for igual a 1, ou seja, se , não se pode ter e , ou seja,
se , tem-se , se tem-se ou ainda pode-se ter e . Em qualquer um
dos casos tem-se que , pois a contribuição das coordenadas para
será 1 ou 2.
As três propriedades acima demonstradas caracterizam a distância de Hamming, entre os
elementos de , como uma métrica em , a qual é denominada de métrica de Hamming.

Definição 2: Considere um elemento e um número natural . 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 , tem-se que e são conjunto finitos.
Além disso, a cardinalidade de é dada por:

Demonstração: Dado , como , então existem possibilidades de se preencher uma


coordenada de de modo a se obter um elemento tal que . Considerando que exatamente coordenadas
do elemento sejam diferentes do elemento , então, pelo Princípio Fundamental da Contagem, existem
possibilidades para essas coordenadas. Como possui comprimento e as entradas distintas podem
percorrer qualquer coordenada de , então existem combinações para de modo que . Portanto,
o número de elementos da esfera de centro e raio é dado por , o que mostra que
é finito. Note ainda que quando , além disso, , portanto,
. Pela disjunção das esferas , quando varia de zero até , resulta que
. Logo, , ou seja,
é um conjunto finito e sua cardinalidade é .
Como foi visto acima, a cardinalidade de depende exclusivamente de e .

Definição 3: Dado um código , define-se sua distância mínima como sendo um número , tal que
.

Exemplo 3: No caso do robô, o código é tal que . Note


que e , portanto,
, ou seja, a distância mínima de é 3.
De maneira geral, considerando , para a determinação de são necessários os cálculos de
distâncias, 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 mínima , define-se , onde representa a


parte inteira do número real .
4
Teorema 1: Considere um código com distância mínima . Então:
i) se , e , vale que .
ii) pode detectar até erros.
iii) o código pode corrigir até erros.
Demonstração:
i) Suponha que dados , , com , se tenha . Isso acarreta que existe
, implicando que e . Do fato de resulta que e, de
maneira análoga, o fato de resulta que . Mas, pela métrica de Hamming, sabe-se que
, logo, , um absurdo, pois a menor
distância entre duas palavra de é igual a .
ii) Sendo a distância mínima de um código , sabe-se que dada uma palavra , qualquer outra palavra do
código está a uma distância no mínimo igual a da palavra . Isso significa que em cada palavra de podem
ser introduzidos até erros sem encontrar outra palavra de , ou seja, pode detectar até erros.
iii) Suponha que uma palavra sofra erros, com , de modo que seja a palavra recebida. Tem-se
então que , o que acarreta que e, pelo item (i), a distância de a qualquer outra
palavra de é maior do que , assim, a palavra é univocamente determinada a partir da palavra .

4. CÓDIGOS EQUIVALENTES

Considerando um alfabeto e um número natural , o conjunto de todas as palavras de tamanho ,


como foi visto anteriormente, é um espaço métrico, pois nele está definida a métrica de Hamming.

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) é uma isometria de .
iii) se é uma isometria de , é uma isometria de .
Demonstração:
i) Se é uma isometria de então, dados , tais que , tem-se que
. Mas, por hipótese, é uma isometria, então . Logo,
, o que implica que é injetiva. Como é um conjunto finito e é injetiva segue que também é uma
função sobrejetiva. Assim, é uma bijeção.
ii) Do fato de ser uma bijeção (item (i)) decorre que existe . Como é uma isometria, tem-se que
. Portanto, também é uma isometria de .
iii) Se e são isometrias de , então
. Logo, é uma isometria de .

Definição 6: Dados dois códigos e contidos em , diz-se que e são códigos equivalentes quando
existe uma isometria de tal que .
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
.

Teorema 3: Códigos equivalentes possuem os mesmos parâmetros.


Demonstração: Suponha que são os parâmetros de um dado código de . Sendo um código de
, todas as suas palavras também têm comprimento . Se e são equivalentes então existe uma isometria
de tal que e, pelo item (i) do teorema 2, é bijetiva, logo . Por fim, sejam
tais que , tem-se então, , mostrando que a distância mínima
em também é . Assim, os parâmetros do código são também a representados pela terna .

5. CÓDIGOS LINEARES

Considere um corpo finito com de elementos, o qual é denominado alfabeto. É fácil verificar que ,
com e , é um -espaço vetorial de dimensão .
5
Definição 7: Um código é classificado como um código linear quando for um subespaço vetorial de .
No exemplo do robô, o conjunto , com as operações adotadas, é um corpo finito, o que
acarreta que é um -espaço vetorial. O código é um subespaço vetorial do espaço (verifique) e,
portanto, um código linear.
Como um código linear é um subespaço de um -espaço vetorial de dimensão finita, então todo código
linear é, também, um -espaço vetorial de dimensão finita. Sendo o número de elementos de uma das bases
de (dimensão de ) e, sendo uma dessas bases, então qualquer que seja , tem-se, de
maneira única, , e, portanto, o número de elementos do
código é (pelo P.F.C. pois para cada vetor da base de há possíveis escalares em ). Desse modo,
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:
, ou seja, .

Exemplo 4: No código utilizado no robô, tem-se , , logo, a dimensão do subespaço vetorial


é dado por . Em outras palavras, quaisquer dois vetores linearmente independentes de
constituem uma base para .

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 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, .

Teorema 4: Considerando um código linear , com distância mínima , , se tem


e .
Demonstração: Dados , tais que . Pela definição de distância,
e. Como e , então existe tal que . Logo,
.
O peso de um código é de extrema importância, pois é equivalente a distância mínima do código e,
para determiná-lo são necessário o cálculo de distâncias em vez de distâncias, o que torna o custo
computacional consideravelmente mais baixo.

5.1. 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 , uma como imagem e outra como núcleo de transformações lineares. Pretende-se,
neste trabalho, obter a representação de como imagem e, para tanto, basta tomar uma base de
e considerar a aplicação linear dada por , onde
. Note que é injetiva, pois para todo , com , se , tem-se
que , o que ocorre somente quando , pois os são
vetores da base, portanto LIs. Logo, o núcleo de é igual ao vetor nulo de , implicando que é uma
transformação linear injetiva. Desse modo o subespaço gerado por , pelo teorema do núcleo e da imagem,
tem a mesma dimensão de e cada vetor de , por sua vez, está associado a um único vetor de . Em
decorrência disto, pode-se considerar os vetores de como sendo os códigos de fonte, os vetores do subespaço
de como sendo o código de canal e a transformação linear como uma codificação.

Exemplo 5: Um código para o robô pode ser assim obtido: para todo , considere a
transformação linear definida como , com e sendo dois vetores
quaisquer LI de , por exemplo e , que constituirão uma base para . Assim, tem-se:

Logo, .

O método anteriormente demonstrado para se obter códigos, embora eficiente no processo de


codificação, exige um custo computacional muito elevado quando, a partir de , se desejar decidir se um vetor
é ou não um vetor (palavra) do código , pois, para isso, deve-se resolver o sistema de equações e
incógnitas .
6
Definição 9: Considere um corpo finito com elementos e um código linear . À terna é
denominada parâmetros do código linear , onde representa o número de coordenadas de cada vetor
(palavra) do código , é a dimensão de e é a distância mínima em , equivalente ao peso do código.
Sendo uma base ordenada de , onde cada vetor , com

, uma matriz é denominada matriz geradora de associada à base .

Note que a matriz geradora de um código não é única, pois, cada base diferente de determina uma matriz
geradora diferente. Note ainda que uma matriz geradora de um código pode ser obtida de outra matriz
geradora por meio de transformações elementares sobre as linhas.

Observe que ao considerar um vetor e multiplicá-lo pela matriz , obtém-

se , o que é equivalente a calcular , sendo . Pela praticidade


operacional com as matrizes, a partir de agora será utilizado esse método para a geração de códigos lineares.

Exemplo 6: O código utilizado no caso do robô pode ser obtido da seguinte forma:
Considere a transformação linear definida por , onde é uma matriz geradora de .
Como possui dimensão 2, então, constrói-se composta por duas linhas sendo vetores linearmente
independentes de , os quais constituirão uma base para o código a ser gerado:
. Assim:

Donde .

Caso fossem escolhidos dois outros vetores linearmente independentes de para representar as linhas
da matriz geradora, seria construída uma matriz , a qual geraria um código linear , distinto de , porém,
equivalente a . Por exemplo:
e , sendo uma transformação de em . Daí:

Donde .

Note que a matriz é equivalente por linhas a matriz , pois:

Embora e sejam códigos lineares equivalentes, o conveniente em se utilizar o código em


detrimento do código consiste na possibilidade de se visualizar nos dois primeiros dígitos de cada palavra do
código , de forma explícita, o código de fonte que foi utilizado na geração do código de canal, sendo os três
últimos, dígitos de redundância acrescidos por meio da codificação. Isso ocorre quando a matriz geradora se
encontrar na “forma padrão”.

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 .
A matriz , utilizada no código do robô, foi apresentada na forma patrão, pois é, na verdade, a
concatenação da matriz com a matriz , ou seja, . A matriz é de ordem 2,
ou seja, ordem igual a dimensão do subespaço , enquanto a matriz é de ordem , com o número de linhas
igual a dimensão do subespaço e o número de colunas igual a diferença entre a dimensão do espaço ea
dimensão de .
Observação: 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 sobre o corpo .
7
ATIVIDADE I
A tabela a seguir apresenta um conjunto de fontes associadas aos seus respectivos códigos de fonte:

a) Construa uma matriz geradora de um código de canal , na forma padrão, com dimensão 5, contido no
espaço vetorial ;
b) Determine o peso , sua capacidade de detecção e sua capacidade de correção de erros;
c) Codifique a mensagem “AMO MATEMATICA”

5.2. Códigos Duais e Matriz Teste de Paridade

Antes de serem abordados os conceitos e propriedades dos códigos duais, vale comentar que o produto
interno entre dois elementos , com e , é dado por
e goza das seguintes propriedades, para todo e :
i) (bilinearidade)
iii)

Definição 11: Seja um código linear. Define-se . Em outras palavras, o


conjunto (complemento ortogonal de ) é formado por todos os vetores de cujo produto interno com
qualquer vetor de seja nulo.

Teorema 5: Se é um código linear, com matriz geradora , então:


i) é um código linear de ;
ii) .
Demonstração:
i) Para que seja um código linear de basta provar que é um subespaço vetorial de . Pra isto,
considere , e . Veja que , indicando que
pertence a , ou seja, é um subespaço vetorial de , portanto, um código linear de .
ii) Seja . Tem-se:

Se , então , o que implica que .

Se , então se tem , o que implica que

O subespaço vetorial , que, como foi provado, é um código linear e recebe o nome de código
dual de .

Teorema 6: Se é um código linear de dimensão com a matriz geradora , na forma padrão,


então:
i)
ii) A matriz geradora do código é da forma
Demonstração:
i) Da álgebra linear sabe-se que, se é um subespaço de dimensão de um espaço vetorial de dimensão ,
então (complemento ortogonal de ) também o é e .
Mas, , logo, , o que implica que .
ii) Uma matriz possui linhas linearmente independentes, em razão do bloco .
Portanto, as linhas de constituem uma base para um subespaço de com dimensão . Além disso, as
linhas de são ortogonais às linhas de , então, o subespaço gerado pelas linhas de está contido em e,
como e possuem a mesma dimensão então se conclui que , provando, portanto, que
é uma matriz geradora do código .
8
Exemplo 7: A matriz , apresentada na forma padrão , onde é
geradora do código do robô. O código dual de , a saber, , será gerado então por uma matriz

, onde – e , portanto, .

Teorema 7: Considerando um código linear de dimensão , contido em , cuja matriz geradora seja . Uma
matriz , qualquer, de ordem , com elementos pertencentes a e cujas linhas sejam linearmente
independentes, é geradora do código se, e somente se,
Demonstração: Como as linhas de são linearmente independentes, então formam uma base de um subespaço
vetorial de , cuja dimensão é ou seja, dimensão igual de . O produto consiste no produto
interno dos vetores linhas de pelos vetores colunas de , mas os vetores colunas de são os vetores linhas
de e, caso se tenha , então os vetores linhas de e os vetores linhas de são, entre si, ortogonais,
logo, todos os vetores do subespaço gerado por estão em e, portanto, é matriz geradora de .

Teorema 8: Seja um código linear contido em um espaço , temos .


Demonstração: Considere as matrizes e geradoras dos códigos e , respectivamente. Pelo teorema 7,
. Mas se , então e, pelas propriedades das matrizes, tem-se que
, e , logo , o que implica que é matriz geradora de , mas por
hipótese, é matriz geradora de , portanto, .

Teorema 9: Considerando um código linear e a matriz geradora do código , um vetor pertence ao código
se, e somente se, .
Demonstração: Pelo teorema 8, tem-se que , portanto, se, e somente se, e, pelo
teorema 5-ii, tem-se que se, e somente se , donde segue o resultado esperado.
Observação: O teorema 9 constitui uma ferramenta eficiente pra determinar se um dado vetor pertence
a um determinado código linear , bastando para isso, verificar se . A matriz , geradora de ,
é denominada matriz teste de paridade do código e a transposta da matriz , com , é denominado
a síndrome do vetor . Em outras palavras. Tem-se .

Teorema 10: Seja a matriz teste de paridade de um código . O peso de é maior ou igual que se, e somente
se, quaisquer colunas de são linearmente independentes.
Demonstração: Suponha, inicialmente, que cada conjunto de colunas de é linearmente independente.
Seja uma palavra não nula de , e sejam as colunas de . Como , tem-
se que . Como é o número de , com , se for assumido
que , então ter-se-ia uma combinação linear de ou menos colunas de igual ao vetor nulo,
com coeficientes não todos nulos, contrariando a hipótese de que cada conjunto de colunas de é LI.
Logo, e, como foi escolhido de forma arbitrária, conclui-se que .
Por outro lado, admita que . Suponha por absurdo que tenha pelo menos um conjunto com
colunas linearmente dependentes, digamos . Isto implica que existem , nem
todos nulos, tais que , portanto, ,
com ou menos coordenadas não nulas, contrariando a hipótese de que , logo, colunas de
são linearmente independentes.

Teorema 11: Seja a matriz teste de paridade de um código . O peso de é igual a se, e somente se,
quaisquer colunas de são linearmente independentes e existem colunas de linearmente
dependentes.
Demonstração:
Se , pelo teorema 10, todo conjunto de colunas de é linearmente independentes e, por
outro lado, existem colunas de linearmente dependentes, pois caso contrário, pelo teorema 10, ter-se-ia
, contrariando a hipótese.
Supondo que todo conjunto com colunas de seja linearmente independente e existem colunas
linearmente dependentes em tem-se então, pelo teorema 10, que . Mas, em razão das colunas
linearmente dependentes em , não se pode ter , pois caso contrário, pelo teorema 10, ter-se-ia todo
conjunto com colunas de linearmente independente, portanto, .
9
Observação: O teorema 11 fornece uma ferramenta importante e de baixo custo computacional para a
determinação do peso (distância mínima) de um código , pastando para isso, analisar as colunas da matriz teste
de paridade de .

Exemplo 8: Verificar se as palavras código e pertencem ao código do robô.


Como foi visto, no teorema 9, basta determinar e . Em cada um dos casos, se o resultado
for o vetor nulo, tem-se que , caso contrário e o vetor não nulo encontrado é a síndrome de :

Como , então:

Portanto, enquanto que e a síndrome de é .


Isto significa que, caso a palavra código tenha sido transmitida por algum canal, então
ocorreram erros nessa transmissão. O trabalho agora consiste em saber determinar qual a palavra correta que
fora transmitida.

5.3. O Processo de Decodificação

Considere o vetor como sendo uma palavra transmitida e o vetor a palavra recebida. Define-se o
vetor erro como a diferença entre a palavra recebida e a palavra transmitida, ou seja, . Quando
significa que a palavra recebida é igual à palavra transmitida e, neste caso, não houve erro na transmissão. Caso
, entende-se que houve erro na transmissão. Note ainda, que o peso do vetor define o número de erros
ocorridos na transmissão, ou seja, implica em erros na palavra recebida.
Sendo a matriz teste de paridade do código e um vetor (palavra) de , foi visto no teorema 9 que a
síndrome de é nula, pois , ou seja, . Portanto, a síndrome do vetor erro é dada por:

Donde se conclui que a síndrome do erro é igual à síndrome da palavra recebida .

Teorema 12: Considere um código linear contido em , capaz de corrigir até erros. Se uma palavra recebida
pertence ao espaço 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 .
Demonstração: Para provar a existência, veja que pelo enunciado do teorema, tem-se e, por tratar-se
de uma métrica, sabe-se que e pelo teorema 4, , logo,
, mostrando a existência de .
Por outro lado, suponha que seja a matriz teste de paridade do código em e que existam
e , não nulos, tais que , (ou seja, no máximo coordenadas
não nulas em e ) e , com sendo uma palavra recebida. Tem-se então:

Como existem no máximo coordenadas não nulas em e , então, a combinação linear acima possui no
máximo coeficientes não nulos, o que implica que existe um conjunto com ou menos colunas de
que são linearmente dependentes, mas, pelo teorema 11, quaisquer conjuntos com colunas de é
linearmente dependente, portanto, para todo , se tem , ou seja, , provando a
unicidade.
Observação: O teorema 12 garante que se um código é tal que sua matriz teste de paridade é , sua
distância mínima (peso) é e sua capacidade de correção é então, se o peso de for menor ou igual ao
peso de , o erro é univocamente determinado por .

Definição 12: Sendo um vetor do espaço vetorial , o conjunto é denominado classe


lateral de segundo .
10

Teorema 13: Dados dois vetores , se, e somente se, .


Demonstração:
.

Exemplo 9: Considerando o código linear , utilizado no exemplo do robô e,


dados , tais que , e . As classes laterais de segundo
são:

O teorema 13 garante uma correspondência biunívoca entre classes laterais e síndromes, de modo que todos os
vetores de uma classe lateral possuem síndromes iguais e vetores de classes laterais diferentes possuem
síndromes diferentes.

Definição 13: Seja um vetor pertencente a uma classe lateral de segundo . Se


, então é dito o líder de + .

No exemplo anterior se tem como é o líder de , é o líder de e e


são os líderes de . Note que o líder de uma classe não necessariamente é único.

Teorema 14: Considerando um código com distância mínima . Se é um vetor tal que
, então é o único elemento líder em sua classe lateral.
Demonstração: Suponha que existam dois vetores tais que e , tais
que e pertençam a mesma classe segundo . Logo, , então
, portanto, , pois o único vetor de com peso inferior a é o vetor nulo. Portanto, ,
provando a unicidade.
Observação: O teorema 14 constitui uma ferramenta importante para a determinação dos líderes de classes de
peso menor ou igual a . Para isso, basta tomar os vetores , para os quais se tenha .
Cada um dos é líder de uma e somente uma classe.

Exemplo 10: O peso do código utilizado para movimentar o robô,


determinado anteriormente foi que corresponde à distância mínima entre as palavras de . Foi visto
também que em é capaz de detectar erros e corrigir erro. Pelo teorema 14, os líderes
de classes segundo serão os vetores tais que , no caso, os vetores do conjunto:

Observação: Os teoremas 12, 13 e 14 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 .

5.4. O Algoritmo de Decodificação

(1) Determinar todos os elementos de 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 então não ocorreram erros na transmissão. Assuma a palavra correta transmitida igual à palavra
recebida;
(5) Se , 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.
11
COMPILAÇÃO DOS PASSOS UTILIZADOS DESDE A CODIFICAÇÃO ATÉ A DECODIFICAÇÃO DO CÓDIGO DO ROBÔ:

I – CODIFICAÇÃO:

(1) Fonte:
(2) Códigos da Fonte: As fontes serão representadas com elementos do alfabeto . Para tanto, faz-se
necessário a utilização do conjunto , uma vez que são necessários quatro
comandos.
(3) Matriz geradora: A matriz , do código de canal , cujas linhas são dois vetores LI dos
espaço vetorial , uma vez que foram acrescidos três dígitos de redundância em cada vetor do código de fonte.
(4) Determinação do código de canal:
Fonte Código da Fonte Código de Canal
Leste

Oeste

Norte

Sul

II – DECODIFICAÇÃO (Suponha que tenham sido recebidas as palavras e :

(1) Determinação da matriz teste de paridade do código


Se , então a dimensão de é 2, e como , então a dimensão de é , ou
seja, a matriz possui três linhas e 5 colunas. Além disso, como e , tem-se:

(2) O peso do código é , pois a distância mínima entre os vetores não nulos de até o é
igual a 3. Logo, o código tem capacidade de detecção de até erros e capacidade de correção de
erro. Portanto, os líderes de classes, em , são: , , , , , .A
tabela de líder e síndromes é apresentada a seguir:
Líder Síndrome Líder Síndrome

(3) Cálculo das síndromes das palavras recebidas, e :


Palavra recebida Síndrome
12

(4) As síndromes de e encontram-se nas tabelas de classes e síndromes e seus líderes de classes são,
respectivamente, e , portanto, assuma e . As palavras corretas
que foram enviadas são:
(Oeste)
(Sul)

A síndrome de não se encontra na tabela de classes e síndromes. Isto significa que em o número de erros foi
superior à capacidade de correção do código . Sendo assim, é impossível corrigir.

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:

6. CONCLUSÃO

O propósito deste minicurso foi abordar uma das inúmeras aplicações da Matemática, mais precisamente:
Álgebra Linear e Álgebra Abstrata, presentes no cotidiano de cada um dos usuários dos recursos atuais de
comunicação e armazenamento de dados, embora grande parte deles desconheça a matemática envolvida no
funcionamento desses dispositivos.
A teoria dos Códigos Corretores de Erros é responsável, nos dias atuais, por congregar várias áreas do
conhecimento tais como a matemática, estatística, engenharias, informática entre outras. As pesquisas motivadas
por essa teoria têm sido responsáveis por grandes avanços nestas ciências. O minicurso restringiu-se aos códigos
lineares, enunciando várias definições e teoremas e os processos de codificação e decodificação, com finalidade
de divulgar parte dessa teoria, suas aplicações e sua notável importância, além de, possivelmente, motivar os
estudantes de graduação em matemática e demais áreas das Ciências Exatas e Tecnológicas ao vislumbre do
quanto importante, bonita e abstrata é a matemática.

7. 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.

Me. Sézani Morais Gonçalves de Carvalho


Técnico em Assuntos Educacionais – UNIR
E-mail: sezani@unir.br