MEENNTTO
OD DEE MA ATTEEMMÁÁTTIICCA
A
SEEM
MA ANNA ADDEE MA ATTEEM
MÁ A - 2018
ÁTTIICCA
Minicurso
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:
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:
Definição 3: Dado um código , define-se sua distância mínima como sendo um número , tal que
.
4. CÓDIGOS EQUIVALENTES
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
.
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, .
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, .
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, .
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.
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 .
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”
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)
O subespaço vetorial , que, como foi provado, é um código linear e recebe o nome de código
dual de .
, 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 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 .
Como , entã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:
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 .
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.
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.
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
(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
(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.