C´
odigos Corretores de Erros
Autor: Carla Meneghesso
Orientador: Prof. Dr. Sadao Massago
Disciplina: Trabalho de Conclus˜
ao de Curso
Curso: Licenciatura em Matem´
atica
Professores Respons´
aveis: Karina Schiabel Silva
Sadao Massago
Vera L´
ucia Carbone
C´
odigos Corretores de Erros
Autor: Carla Meneghesso
Orientador: Prof. Dr. Sadao Massago
Disciplina: Trabalho de Conclus˜
ao de Curso
Curso: Licenciatura em Matem´
atica
Professores Respons´
aveis: Karina Schiabel Silva
Sadao Massago
Vera L´
ucia Carbone
Institui¸
c˜
ao: Universidade Federal de S˜
ao Carlos
Centro de Ciˆ
encias Exatas e de Tecnologia
Departamento de Matem´
atica
S˜
ao Carlos, 6 de agosto de 2012.
Dedicat´
oria
Este trabalho dedico aos meus pais Onofre e Maria de Lourdes que me fizeram lutar at´e o final apesar de todas as dificuldades e possibilitaram que eu realizasse o meu maior sonho: estudar.
Agrade¸co ao Prof. Dr. Sadao Massago pela imprescind´ıvel ajuda e tempo dedicados, pela orienta¸c˜ao no desenvolvimento do meu trabalho fosse desenvolvido. Muito obrigada pela compreens˜ao por eu trabalhar e n˜ao pude me dedicar tanto quanto gostaria neste trabalho.
Agrade¸co ao meu namorado Carlos Eduardo Domingues Naz´ario por toda a paciˆencia, carinho, compreens˜ao e ajuda dedicada, pois sem seu companheirismo eu n˜ao teria con-seguido ir at´e o fim da gradua¸c˜ao. Muit´ıssimo obrigada, pois muitos foram os momentos que vocˆe deixou de buscar seus sonhos para que o meu se realizasse. Sem o seu apoio este trabalho n˜ao existiria.
Este trabalho simboliza a supera¸c˜ao de um momento muito delicado da minha vida na qual aprendi n˜ao s´o a importˆancia da Matem´atica, mas tamb´em que podemos seguir em frente mesmo que alguns obst´aculos tenham surgido e tentado impedir que nossos sonhos fossem concretizados. A Matem´atica me conquistou desde o col´egio e esta monografia ´e uma pequena demonstra¸c˜ao de que esta ciˆencia ´e singular em minha vida.
Resumo
Neste trabalho ser˜ao apresentados conceitos b´asicos de c´odigos, vetores para projetar c´odigos detectores de erros que podem ocorrer na transmiss˜ao de dados e os d´ıgitos de verifica¸c˜ao. Posteriormente definimos o que ´e um c´odigo detector de erros, como tamb´em a m´etrica de Hamming, os parˆametros de um c´odigo e equivalˆencia de c´odigos. Para o desenvolvimento do projeto foi necess´ario estudar an´eis, corpos e an´eis de polinˆomios para que pud´essemos descrever os corpos finitos e sua constru¸c˜ao. Foram estudados os C´odigos Lineares (C´odigos Duais e C´odigos de Reed-Muller), C´odigos C´ıclicos, decodifica¸c˜ao destes e finalmente trabalhamos com algumas aplica¸c˜oes de c´odigos. Neste trabalho foi poss´ıvel identificar a aplica¸c˜ao da Matem´atica em mercadorias e transmiss˜ao de dados, que ´e uma vasta aplica¸c˜ao de conceitos alg´ebricos que facilitam o dia-a-dia das pessoas.
meios anal´ogicos tais como a luz, ondas de r´adio, grava¸c˜oes eletromagn´eticas, etc. Com a introdu¸c˜ao dos computadores no s´eculo XX, houve uma necessidade de transmitir grandes quantidades de dados com rapidez e precis˜ao. Al´em dos computadores, outros avan¸cos tecnol´ogicos dependem de c´odigos, tais como: comunica¸c˜ao via sat´elite, CD, C´odigos Universais de Produtos (UPC-Universal Product Code) associados aos c´odigos de barras e o Padr˜ao Internacional de Numera¸c˜ao de Livros (ISBN- International Standard Book Number).
Os vetores utilizados para o estudo de c´odigos n˜ao s˜ao vetores de Rn, mas vetores em Fn onde F ´e um corpo finito. Assim, ter˜ao um n´umero finito de possibilidades para cada componente. Tais vetores dependem de um tipo diferente de aritm´etica - chamada aritm´etica modular.
A teoria moderna de c´odigos originou-se com o trabalho de Claude Shannon (1916 − 2001), que teve um papel importante na cria¸c˜ao da teoria da informa¸c˜ao e da base te´orica para os hoje chamados c´odigos corretores de erros.
A teoria dos c´odigos vem sendo utilizada com sucesso na nossa hist´oria recente. Em 1965, a nave espacial Mariner 4 enviou 22 fotos em preto e branco de Marte com 64 tons de cinza para cada um de seus 200 × 200 pontos, que ´e um elemento de Z62. A esses vetores n˜ao acrescentavam-se informa¸c˜oes adicionais, pois a transmiss˜ao era muito lenta, demorando em torno de 8 horas para transmitir cada foto.
Em 1972, a nave espacial Mariner 9 transmitiu imagens de Marte com uma resolu¸c˜ao de 700×832 pontos. Como a velocidade da transmiss˜ao era maior, o c´odigo foi recodificado atrav´es de uma fun¸c˜ao injetora ϕ : Z6
2 =⇒ Z322 para acrescentar o c´odigo de canal
que permite detectar e corrigir at´e sete erros. O dado recebido era corrigido e decodificado atrav´es de uma transforma¸c˜ao ϕ(−1), obtendo-se o elemento de Z6
2 que representa o tom
de cinza correspondente. Esse c´odigo pertence `a fam´ılia de c´odigos chamados de C´odigos de Reed-Muller.
Em 1979, a nave espacial Voyager transmitiu imagens coloridas de J´upiter. Cada elemento de imagem de uma cor foi representado por uma das 212= 4096 tonalidades. O
xii
o chamado c´odigo de Golay que permitia corrigir at´e trˆes erros.
No cap´ıtulo 1, s˜ao apresentados conceitos alg´ebricos que dar˜ao suporte aos demais cap´ıtulos que tratam de c´odigos detectores e c´odigos corretores de erros, como anel dos inteiros, classifica¸c˜ao e constru¸c˜ao de corpos finitos, espa¸co vetorial, etc.
O cap´ıtulo 2 trata dos c´odigos bin´arios e como os vetores de c´odigos s˜ao determinados, incluindo o processo de codifica¸c˜ao e de decodifica¸c˜ao de uma mensagem.
No cap´ıtulo 3 s˜ao estudados os c´odigos detectores de erros, incluindo os c´odigos bit de paridade. Neste cap´ıtulo ser˜ao dadas aplica¸c˜oes dos c´odigos detectores de erros, como o UPC (Universal Product Code), o EAN13 e o ISBN (International Standard Book Number).
No cap´ıtulo 4 ´e feita um abordagem dos c´odigos corretores de erros, tratando da matriz geradora do c´odigo e de teste de paridade no Matlab, M´etrica de Hamming, Equivalˆencia de c´odigos, C´odigo de Hamming, Decodifica¸c˜ao, Algoritmo da decodifica¸c˜ao, Distˆancias m´ınimas e Corretores de erros geom´etricos.
No cap´ıtulo 5 s˜ao estudados os C´odigos lineares, a matriz geradora destes c´odigos, C´odigos duais, C´odigos de Reed-Muller e Decodifica¸c˜ao de C´odigos de Reed-Muller.
Sum´
ario
1 Conceitos Preliminares 1
2 C´odigos 7
2.1 C´odigos Bin´arios . . . 7
3 C´odigos Detectores de Erros 9 3.1 C´odigo bit de paridade par (3, 2) . . . 9
3.2 Aplica¸c˜oes de C´odigos Detectores de Erros . . . 11
4 C´odigos Corretores de Erros 17 4.1 Matriz geradora e de teste de paridade no Matlab . . . 21
4.2 M´etrica de Hamming . . . 23
4.3 C´odigos de Hamming . . . 25
4.4 Decodifica¸c˜ao . . . 26
4.5 Algoritmo da Decodifica¸c˜ao . . . 27
4.6 Distˆancias M´ınimas e Corretores de Erros Geometricamente . . . 28
5 C´odigos Lineares 29 5.1 Equivalˆencia de C´odigos . . . 31
5.2 Matriz Geradora de um C´odigo . . . 32
5.3 C´odigos Duais . . . 35
5.4 C´odigos de Reed-Muller . . . 37
5.5 Decodifica¸c˜ao de C´odigos de Reed-Muller . . . 39
Lista de Figuras
1.1 Aritm´etica m´odulo m . . . 2
1.2 Aritm´etica m´odulo 3 . . . 2
1.3 Reta numerada enrolada em volta de um c´ırculo . . . 3
3.1 Palavras de c´odigo de bit de paridade par (3, 2) . . . 10
3.2 Exemplo de UPC . . . 12
3.3 Explica¸c˜ao do c´odigo de barras utilizado em produtos . . . 13
3.4 Exemplo do c´odigo de barras utilizado atualmente . . . 14
3.5 ISBN . . . 15
4.1 Procedimento para transmiss˜ao de dados . . . 18
4.2 Representa¸c˜ao do disco e da esfera de centro em a e raio t . . . 24
4.3 Representa¸c˜ao geom´etrica dos c´odigos corretores de erros . . . 28
Cap´ıtulo 1
Conceitos Preliminares
Para o desenvolvimento do estudo de c´odigos, precisamos introduzir alguns conceitos b´asicos de estruturas alg´ebricas, tais como an´eis e corpos, o que permitem tratar os conjuntos que possuem opera¸c˜oes com propriedades similares.
Defini¸c˜ao 1.1. Um anel comutativo ´e um conjunto A munido de duas opera¸c˜oes,
+ : A × A → A
(a, b) 7→ a + b e
· : A × A → A (a, b) 7→ a · b
que chamaremos respectivamente de adi¸c˜ao e multiplica¸c˜ao, possuindo as seguintes pro-priedades:
(i) Associatividade da adi¸c˜ao: ∀a, b, c ∈ A, (a + b) + c = a + (b + c).
(ii) Existˆencia de elemento neutro para a adi¸c˜ao: Existe um elemento chamado zero e denotado por 0, tal que ∀a ∈ A, a + 0 = 0 + a = a.
(iii) Existˆencia de elemento inverso para a adi¸c˜ao: Dado a ∈ A, existe um ´unico elemento chamado sim´etrico de a e denotado por −a tal que
a + (−a) = −a + a = 0. (iv) Comutatividade da adi¸c˜ao: ∀a, b ∈ A, a + b = b + a.
(v) Associatividade da multiplica¸c˜ao: ∀a, b, c ∈ A, (a.b).c = a.(b.c).
(vi) Existˆencia de elemento neutro para a multiplica¸c˜ao: Existe um elemento neutro chamado unidade e denotado por 1 tal que ∀a ∈ A, a.1 = 1.a = a.
(vii) Comutatitvidade da multiplica¸c˜ao: ∀a, b ∈ A, a.b = b.a.
(viii) Distributividade da multiplica¸c˜ao com rela¸c˜ao `a adi¸c˜ao: ∀a, b, c ∈ A, a.(b + c) = a.b + a.c.
2 1. Conceitos Preliminares
Exemplo 1.2. O anel dos inteiros m´odulo m. O Zm = {0, 1, 2, . . . , m − 1, }, m ≥ 0
possui as opera¸c˜oes + e · definidas por: (i) a + b = a + b,
(ii) a · b = a · b
No exemplo 1.2, o conjunto Zm = {0, 1, 2, . . . , m − 1, } de inteiros m´odulo m
corres-ponde ao rel´ogio de m horas representado pela Figura 1.1 e o conjunto dos vetores m-´arios de comprimento n s˜ao denotados por Znm. Os c´odigos que utilizam os vetores m-´arios s˜ao chamados c´odigos m-´arios.
Figura 1.1: Aritm´etica m´odulo m
No caso dos inteiros m´odulo 3, podemos representar o conjunto como um rel´ogio de trˆes horas, como na Figura 1.2 .
Figura 1.2: Aritm´etica m´odulo 3
Quando calculamos 1 + 2 = 0 interpretamos do seguinte modo: duas horas ap´os 1 hora ´
e 0 hora. Assim, como 24:00 e 12:00 s˜ao representados pela mesma marca em um rel´ogio de doze horas, 3 e 0 s˜ao equivalentes em um rel´ogio de trˆes horas. Todos os n´umeros m´ultiplos de 3 s˜ao equivalentes a 0; os n´umeros que s˜ao iguais a 1 mais um m´ultiplo de 3 ´e equivalente a 1; e 2 ´e equivalente a qualquer n´umero que seja igual a 2 mais um m´ultiplo de 3. ´E como se fosse uma reta numerada enrolada em volta de um c´ırculo como na Figura 1.3.
Exemplo 1.3. Em Z5
Figura 1.3: Reta numerada enrolada em volta de um c´ırculo
u · v = 2 · 1 + 2 · 2 + 0 · 2 + 1 · 2 + 2 · 1 = 2 + 1 + 0 + 2 + 2 = 1 Os vetores de c´odigo em Z5
3 s˜ao chamados de vetores tern´arios de comprimento 5.
Defini¸c˜ao 1.4. Um anel A ser´a chamado de dom´ınio de integridade, se possuir a seguinte propriedade:
∀a, b ∈ A, a 6= 0 e b 6= 0 ⇒ a.b 6= 0.
Como [2] n˜ao ´e invert´ıvel, temos que Z4 n˜ao ´e um corpo. Como [2] · [2] = [4] = [0],
temos que esse anel n˜ao ´e um dom´ınio de integridade.
Defini¸c˜ao 1.5. Um elemento a de um anel A ser´a dito invert´ıvel se existir um elemento b ∈ A tal que a · b = 1. Nesse caso, dizemos que b ´e um inverso de a.
Defini¸c˜ao 1.6. Um anel onde todo elemento n˜ao nulo ´e invert´ıvel ´e chamado de corpo. Um exemplo de corpo s˜ao os inteiros m´odulo 3 que consistem no conjunto Z3 =
{0, 1, 2}, com adi¸c˜ao e multiplica¸c˜ao dadas como no exemplo 1.3. A tabela de opera¸c˜ao ´e como segue.
Tabela 1.1: Opera¸c˜oes de adi¸c˜ao e multiplica¸c˜ao em Z3
+ 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 e · 0 1 2 0 0 0 0 1 0 1 2 2 0 2 1
Como os elementos n˜ao nulos 1 e 2 s˜ao invert´ıveis, com inversos respectivamente 1 e 2, temos que Z3 ´e um corpo.
Teorema 1.7. O anel Zm ´e um corpo se, e somente se, m ´e um n´umero primo.
Exemplo 1.8. Seja b = (b1, b2, · · · , bn) um vetor de Zn3. Incluindo um d´ıgito de checagem
ao vetor de c´odigo, vamos ter um c´odigo com n + 1 termos e pode ser expresso como v = (b1, b2, · · · , bn, d) onde d ´e um d´ıgito de checagem de forma que 1 · v = 0 e v ´e um
4 1. Conceitos Preliminares
b1+ b2+ . . . + bn+ d = 0 em Z3
Defini¸c˜ao 1.9. Um conjunto n˜ao vazio V ´e um espa¸co vetorial sobre (um corpo) K se em seus elementos, denominados vetores, estiverem definidas as seguintes opera¸c˜oes:
(A) A cada par u, v de vetores de V corresponde um ´unico vetor u + v ∈ V , chamado soma de u e v, de modo que:
(A1) u + v = v + u, ∀ u, v ∈ V (propriedade comutativa).
(A2) (u + v) + w = u + (v + w), ∀ u, v, w ∈ V (propriedade associativa).
(A3) existe um vetor em V , denominado vetor nulo e denotado por 0, tal que 0 + v = v ∀ v ∈ V .
(A4) a cada vetor v ∈ V , existe um vetor em V denotado por −v, tal que v + (−v) = 0. (M) A cada par α ∈ K e v ∈ V , corresponde um vetor α · v ∈ V , denominado produto
por escalar de α por v de modo que:
(M1) (αβ) · v = α · (β · v), ∀α, β ∈ K e ∀v ∈ V (propriedade associativa). (M2) 1 · v = v, ∀v ∈ V (onde 1 ´e o elemento identidade de K).
Al´em disso, vamos impor que as opera¸c˜oes dadas em (A) e (M ) se distribuam, isto ´e, que tenham as seguintes propriedades:
(D1) α · (u + v) = α · u + α · v, ∀α ∈ K e ∀u, v ∈ V . (D2) (α + β) · v = α · v + β · v, ∀α, β ∈ K e ∀v ∈ V .
Defini¸c˜ao 1.10. Seja V um espa¸co vetorial sobre um corpo K. Um subconjunto W de V ´
e um subespa¸co vetorial de V se a restri¸c˜ao das opera¸c˜oes de V a W torna esse conjunto um K-espa¸co vetorial.
Note que como Z2 ´e corpo, Zn2 ´e um espa¸co vetorial.
Dado um corpo F, V = Fn´e um espa¸co vetorial com produto escalar canˆonico.
No exemplo 1.3, considerando o vetor u = (2, 2, 0, 1, 2), ao somarmos suas coordenadas temos 2 + 2 + 0 + 1 + 2 = 1 e vemos que o d´ıgito de checagem deve ser 2 para que a soma das coordenadas com o d´ıgito de checagem seja igual a zero m´odulo Z3 e ent˜ao o vetor
c´odigo de checagem ´e v = (2, 2, 0, 1, 2, 2).
Os c´odigos de checagem de d´ıgitos podem detectar erros simples, mas para detectar a troca de duas coordenadas adjacentes, por exemplo, outros tipos de c´odigos s˜ao utilizados. Muitos deles substituem o vetor de checagem 1 por algum outro vetor c cautelosamente escolhido.
Como os dados no computador, os dados s˜ao codificados usando sequˆencia de 0s e 1s que podem ser associados ao vetor bin´ario v ∈ Zn
2. Por esta raz˜ao, o corpo Z2 tem papel
(ii) x, y ∈ I =⇒ x − y ∈ I (I ´e fechado para a diferen¸ca) (iii) x, y ∈ I =⇒ x · y ∈ I (I ´e fechado para o produto).
Defini¸c˜ao 1.12. Seja A um anel e seja I um subanel de A. Dizemos que I ´e um ideal de A se
(i) (x + y) ∈ I, ∀x, y ∈ I
Cap´ıtulo 2
C´
odigos
2.1
C´
odigos Bin´
arios
Os c´odigos bin´arios consistem em vetores cujas coordenadas s˜ao iguais a 0 ou 1. Os computadores descrevem dados em termo de 0s e 1s (que podem ser interpretados como desligado/ligado, fechado/aberto, falso/verdadeiro ou n˜ao/sim). A aritm´etica ´e como segue + 0 1 0 0 1 1 1 0 e · 0 1 0 0 0 1 0 1
Com tais opera¸c˜oes, nosso conjunto de escalares {0, 1} ´e o conjunto dos inteiros m´odulo 2 que denotaremos por Z2.
Exemplo 2.1. Soma em Z2
1 + 1 + 0 + 1 = 1 e 1 + 1 + 1 + 1 = 0
Regra de Paridade, ou seja se n´umero de 1’s for par, a soma ´e 0. Se for ´ımpar, a soma ser´a 1.
O vetor do espa¸co vetorial Zn
2 (sobre o escalar Z2) ´e o conjunto das n-uplas de 0s e 1s.
Os vetores em Zn
2 s˜ao chamados de vetores bin´arios de comprimento n.
Exemplo 2.2. Os vetores em Z2
2 s˜ao (0, 0), (0, 1), (1, 0) e (1, 1)
Exemplo 2.3. Sejam u = (1, 1, 0, 1, 0) e v = (0, 1, 1, 1, 0) dois vetores bin´arios de com-primento 5. Determine u.v
O c´alculo de u.v ´e feito em Z2, por isso temos
u.v = 1.0 + 1.1 + 0.1 + 1.1 + 0.0 = 0 + 1 + 0 + 1 + 0
8 2. C´odigos
Para a transmiss˜ao de dados, come¸camos codificando cada “palavra”da mensagem por um vetor bin´ario. Ou seja, converte-se o que se quer transmitir numa sequˆencia de bits que comp˜oe o vetor bin´ario.
Defini¸c˜ao 2.4. Um c´odigo bin´ario ´e um conjunto de vetores bin´arios (de mesmo com-primento) chamados vetores de c´odigos. O processo de convers˜ao de uma mensagem em vetores de c´odigo ´e chamado codifica¸c˜ao, e o processo inverso ´e chamado decodifica¸c˜ao.
Cap´ıtulo 3
C´
odigos Detectores de Erros
O C´odigo detector de erros ´e a representa¸c˜ao de uma mensagem que permite detectar erros. Note que no envio de mensagens atrav´es de um canal (por exemplo uma linha de telefone, ondas de r´adio, um cabo de fibra ´otica) podem ocorrer “ru´ıdos”, como sinais de interferˆencia ou sujeira. O mesmo ocorre quando se faz a leitura de c´odigo de barras, CD/DVD ou HD, na qual o erro pode ser introduzido. O objetivo do c´odigo ´e detectar poss´ıveis erros na transmiss˜ao ou na leitura.
Um destes c´odigos detectores de erros ´e o bit de paridade, que permite obter um c´odigo eficiente e relativamente simples. A seguir faremos uma abordagem do c´odigo bit de paridade par (3, 2).
3.1
C´
odigo bit de paridade par (3, 2)
No c´odigo bit de paridade par (3, 2) adiciona-se um bit de paridade no final da mensagem. Esse bit ´e a soma m´odulo 2 dos bits da mensagem obtendo-se assim a palavra de c´odigo c = [c0, c1, c0+ c1]
Logo, somando-se os d´ıgitos temos:
Soma dos d´ıgitos = [n´umero de bits ativo] ×1 = (
0 se for par 1 se for ´ımpar Logo, a soma de d´ıgitos de c sempre ´e 0.
Vejamos na tabela 3.1, as palavras de c´odigo para cada mensagem enviada. Este c´odigo tem d = 2 e detecta a presen¸ca de 1 e 3 bits errados, pois o valor d = 2 garante que erros de 1 bit podem ser detectados, para qualquer c´odigo. Neste c´odigo ´e poss´ıvel tamb´em detectar 3 bits errados. A decodifica¸c˜ao ´e realizada recalculando a paridade da mensagem recebida e fazendo a compara¸c˜ao da mesma com o c´odigo transmitido. Se as palavras enviada e recebida forem iguais n˜ao ser˜ao detectados erros, caso contr´ario poder˜ao ser detectados 1 ou 3 erros na palavra recebida. A figura 3.1 mostra a posi¸c˜ao relativa das palavras de c´odigo, mostrando que d = 2, pois ´e necess´ario percorrer duas arestas do cubo para ir de uma at´e outra palavra de c´odigo. Quando ocorrem um n´umero
10 3. C´odigos Detectores de Erros
Tabela 3.1: Mensagens e palavras de c´odigo para o c´odigo bit de paridade par (3, 2)
Mensagem Palavra de c´odigo
00 000
01 011
10 101
11 110
´ımpar de erros sobre qualquer palavra de c´odigo, ´e poss´ıvel detect´a-los, j´a que resulta numa palavra que n˜ao pertence ao c´odigo.
Figura 3.1: Palavras de c´odigo de bit de paridade par (3, 2)
Vejamos como funcionam os c´odigos detectores de erros atrav´es de alguns exemplos. Exemplo 3.1. Desejamos codificar e transmitir uma mensagem que consiste em uma das palavras up, down, left, right. S˜ao quatro palavras, mas acrescentando bit de paridade no final, teremos quatro vetores de Z3
2, como na Tabela 3.2.
Tabela 3.2: Comandos codificados como elementos de Z32
Mensagem Up Down Left Right
C´odigo (0,0,0) (0,1,1) (1,0,1) (1,1,0)
Decodificar uma mensagem ´e simples quando n˜ao ocorrem erros na sua transmiss˜ao. Vamos considerar que ocorreu um erro na transmiss˜ao, resultando em altera¸c˜ao em uma das coordenadas do vetor de c´odigo e o “down”que ´e (0, 1, 1), foi recebido como (1, 1, 1), (0, 0, 1) ou (0, 1, 0). Como nenhum deles ´e um c´odigo v´alido (up, down, left ou right), sabemos que ocorreu um erro na transmiss˜ao, mas ainda n˜ao temos as ferramentas para detectar onde est´a o erro.
O exemplo 3.1 ´e um c´odigo detector de erros. Mas o avan¸co tecnol´ogico permitiu n˜ao somente detectar como tamb´em corrigir erros de transmiss˜ao. Uma forma de detectar erros ´e utilizar o c´odigo de checagem de paridade, que consiste na introdu¸c˜ao de d´ıgito de
vetor de c´odigo seja par. Logo, o vetor de c´odigo ser´a (1, 0, 0, 1, 0, 1, 1). Se acontecer algum erro na transmiss˜ao da mensagem ele ser´a detectado, pois a paridade do vetor de c´odigo ser´a alterada de par para ´ımpar. Por exemplo, se ocorrer um erro na terceira coordenada, o vetor de c´odigo a ser recebido ´e (1, 0, 0, 1, 0, 1, 1) e sua paridade ´e ´ımpar, pois tem cinco 1s.
Agora veremos o d´ıgito de checagem mais geral. Vamos supor a mensagem que se quer enviar seja o vetor b = (b1, b2, . . . , bn) em Znk. O vetor c´odigo de checagem de
paridade ´e v = (b1, b2, . . . , bn, d) em Zn+1k , onde o d´ıgito de checagem d ´e escolhido de
maneira que
b1 + b2+ . . . + bn+ d = 0 em Zk
ou 1.v = 0
onde 1 = (1, 1, . . . , 1) ´e um vetor com todas as coordenadas iguais a 1. O vetor 1 ´e chamado vetor de checagem. Quando ocorrem erros, temos que 1 · v 6= 0 para algum v. Nesse projeto, estamos estudando o caso que ocorre apenas um erro.
As coordenadas dos vetores de c´odigo podem ser elementos do conjunto finito Zk+1 =
{0, 1, 2, . . . , k} para k ≥ 2 que ´e um anel.
3.2
Aplica¸
c˜
oes de C´
odigos Detectores de Erros
Dentre as aplica¸c˜oes dos C´odigos Detectores de Erros est˜ao o UPC (C´odigo Universal de Produto), o EAN-13 (C´odigo de barras) e o ISBN (Padr˜ao Internacional de Numera¸c˜ao de Livros), que s˜ao c´odigos que possuem o d´ıgito de checagem.
UPC(Universal Product Code) - C´odigo Universal de Produto e EAN-13 H´a dois tipos de c´odigos de barras em uso para identifica¸c˜ao dos itens `a venda. O UPC ´e o mais antigo deles, usado inicialmente apenas na Am´erica do Norte. Ele utiliza doze d´ıgitos (escrito na forma de barras) para ser lidos por uma m´aquina de luz refletida. Tamb´em vem com os n´umeros abaixo das barras para ser lidos por um humano quando necess´ario. Com o tempo, passou-se a usar o EAN-13 que utiliza treze d´ıgitos, que permite tamb´em distinguir o pa´ıs de origem do produto. Esse ´e o que est´a sendo utilizado no Brasil. Os dois tipos de c´odigos s˜ao muito semelhantes, onde o UPC usa apenas um d´ıgito para
12 3. C´odigos Detectores de Erros
identificar o pa´ıs de origem, enquanto o EAN-13 utiliza dois d´ıgitos e portanto possui 13 d´ıgitos.
Para compreender o funcionamento dos c´odigos detectores de erros ´e preciso entender como ´e atribu´ıdo a cada produto, um d´ıgito que permite essa detec¸c˜ao.
Suponhamos que um produto est´a identificado. O UPC ´e um c´odigo associado aos c´odigos de barras encontrados em mercadorias, na qual o leitor do c´odigo de barras esca-neia as barras pretas e brancas que correspondem a um vetor 10-´ario
v = (v1, v2, . . . , v11, d) ∈ Z1210
de comprimento 12. As informa¸c˜oes sobre o fabricante e o produto s˜ao dadas pelas 11 primeiras componentes. A ´ultima componente d ´e o d´ıgito de checagem escolhido de maneira que c.v = 0 em Z10, onde o vetor de checagem c ´e dado por
c = (3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1)
Depois de um rearranjo, temos
3(v1 + v3+ v5+ v7+ v9+ v11) + (v2+ v4+ v6+ v8+ v10) + d = 0
onde d ´e o d´ıgito de checagem.
Os pesos dos d´ıgitos das posi¸c˜oes pares e ´ımpares s˜ao diferentes para detectar o deslocamento de digitos devido a erros de entrada, como troca de posi¸c˜ao de dois d´ıgitos consecutivos. O d´ıgito de checagem ´e escolhido de maneira que o lado esquerdo da express˜ao resulte num m´ultiplo de 10.
Exemplo 3.3. Seja o UPC como mostrado na Figura 3.3. Vamos verificar se o d´ıgito de checagem realmente ´e 6, considerando que os c´alculos s˜ao feitos em Z10.
Figura 3.2: Exemplo de UPC
Temos que v = (0, 7, 4, 9, 2, 7, 0, 2, 0, 9, 4, d) e sabendo que c = (3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1), obtemos:
Exemplo 3.4. O UPC permite detectar erros simples (erro na coordenada) ou erros gerados por trocas entre as coordenadas. Vamos supor que no exemplo 3.3, o UPC seja escrito como v = (0, 7, 4, 2, 9, 7, 0, 2, 0, 9, 4, 6), ou seja, a quarta e a quinta coordenadas tiveram suas posi¸c˜oes invertidas. Fazendo os c´alculos em Z10 obtemos:
c · v0 = 3 · 0 + 1 · 7 + 3 · 4 + 1 · 9 + 3 · 2 + 1 · 7 + 3 · 0 + 1 · 2 + 3 · 0 + 1 · 9 + 3 · 4 + 1 · 6 = 3.(0 + 4 + 9 + 0 + 0 + 4) + 1.(7 + 2 + 7 + 2 + 9 + 6)
= 3.(7) + 1.(3) = 4
Como c · v0 = 4 6= 0 em Z10, ent˜ao conclu´ımos que houve algum erro.
Agora suponhamos que um determinado produto est´a identificado no sistema EAN-13, por uma dada sequˆencia de d´ıgitos v = (v1, v2, . . . , v12, d).
Os primeiros doze d´ıgitos identificam o pa´ıs de origem, o fabricante e o produto es-pec´ıfico, e s˜ao determinados a cargo de uma autoridade classificadora em cada pa´ıs. Veja a figura a seguir.
Figura 3.3: Explica¸c˜ao do c´odigo de barras utilizado em produtos
O d´ecimo terceiro d´ıgito, chamado de d´ıgito de verifica¸c˜ao utilizado para a de-tec¸c˜ao de erros, e ser´a denotado por d. Denotaremos essa sequˆencia como um vetor α = (v1, v2, . . . , v12, d). O sistema EAN − 13 utiliza o vetor de checagem ou vetor de
pesos c = (1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1).
A sistem´atica ´e a mesma do UPC, mudando apenas o n´umero de d´ıgitos do vetor que representa o artigo.
Por exemplo, no caso do c´odigo da figura que segue, os n´umeros indicam o pa´ıs de origem, o fabricante e o produto s˜ao 789500026624.
14 3. C´odigos Detectores de Erros
Figura 3.4: Exemplo do c´odigo de barras utilizado atualmente
Vamos determinar o d´ıgito de verifica¸c˜ao d e fazendo o produto escalar com o vetor de pesos, temos: 7 + (3.8) + 9 + (3.5) + 0 + (3.2) + 6 + (3.6) + 2 + (3.4) + d = 99 + d
Logo, deve-se ser d = 1, pois a soma acima deve ser m´ultiplo de 10. Se fosse qualquer outro n´umero de 0 a 9, n˜ao resultaria no m´ultiplo de 10 e ent˜ao o computador avisaria que um erro foi cometido.
Se mais de um erro for cometido na digita¸c˜ao, provavelmente ser´a detectado, mas isso n˜ao ´e garantido j´a que eles podem compensar mutuamente e a soma poderia ainda continuar sendo um m´ultiplo de 10.
Veremos a fun¸c˜ao do vetor de pesos? Se a escolha do d´ıgito de verifica¸c˜ao fosse feita para a soma das coordenadas de (v1, v2, . . . , v12, d) ser m´ultiplo de 10, o que equivaleria
a considerar o vetor de pesos (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), ainda poderia detectar um erro. Acontece que h´a um outro tipo de erro de digita¸c˜ao muito comum, que consiste em digitar todos os n´umeros corretamente, mas trocar a ordem de dois d´ıgitos consecutivos. Nesse caso o vetor (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) n˜ao detecta o erro. Logo, o sistema de detec¸c˜ao acima n˜ao tem a capacidade de detectar todo erro de transposi¸c˜ao cometido. A transposi¸c˜ao de dois d´ıgitos vi e vi+1 n˜ao ´e detectada no EAN-13, se e somente se
|vi− vi+1| = 5 (se vi ´e ´ımpar, tem-se a diferen¸ca com o sinal trocado).
ISBN(Intenational Standard Book Number)- Padr˜ao Internacional de Nu-mera¸c˜ao de Livros
O ISBN ´e um outro c´odigo de checagem de d´ıgito, utilizado universalmente para a clas-sifica¸c˜ao de livros. ´E projetado para detectar mais tipos de erros que o UPC. O vetor de c´odigo ´e um vetor em Z10
11. As primeiras 9 componentes d˜ao pa´ıs, editor e informa¸c˜ao
sobre o livro e a d´ecima componente ´e o d´ıgito de checagem. Para o c´odigo ISBN, o vetor de checagem ou vetor peso ´e
c = (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
e a condi¸c˜ao ´e que c.b = 0 em Z11, ou seja, de que o produto escalar do vetor de c´odigo
pelo vetor de checagem seja m´ultiplo de 11. Sendo o vetor b = (v1, v2, v3, . . . , v9, d), temos:
c.b = 10.v1+ 9.v2+ 8.v3+ 7.v4 + 6.v5+ 5.v6+ 4.v7+ 3.v8+ 2.v9+ d
onde d ´e o d´ıgito de checagem. Ou seja, d deve ser escolhido de modo que c.b seja m´ultiplo de 11. Quando o d´ıgito de checagem ´e 10, utiliza-se o numeral romano X em seu lugar, pois ´e prefer´ıvel que cada componente de um ISBN seja um ´unico d´ıgito.
Figura 3.5: ISBN
(8, 5, 2, 4, 4, 0, 1, 6, 9, 9).(10, 9, 8, 7, 6, 5, 4, 3, 2, 1) =
80 + 45 + 16 + 28 + 24 + 0 + 4 + 18 + 18 + 9 = 242, que ´e um m´ultiplo de 11. Segundo Milies [5], autores como D.F. Beckley e J. Verhoeff investigaram os erros cometidos por operadores humanos. Os erros num ´unico d´ıgito e as transposi¸c˜oes s˜ao os mais frequentes, atingindo cerca de 80%. A codifica¸c˜ao apresentada aqui foi projetada para detectar tais erros.
Cap´ıtulo 4
C´
odigos Corretores de Erros
Vamos estudar neste cap´ıtulo c´odigos corretores de erros, que permitem tanto detectar como corrigir certos tipos de erros na transmiss˜ao ou armazenamento de dados. Para entender como funcionam, vamos utilizar como exemplo, um robˆo que se move sobre um tabuleiro quadriculado e que ao darmos um dos comandos (leste, oeste, norte, sul), o robˆo se desloca de uma casa para a outra.
Os quatro comandos acima podem ser codificados como elementos de Z22, como se
segue:
Leste 7→ 00 Norte 7→ 10
Oeste 7→ 01 Sul 7→ 11
Cada c´odigo que representa um dos comandos acima (00, 01, 10, 11) ´e chamado de c´odigo da fonte. Suponhamos que os pares ordenados devam ser transmitidos via r´adio que pode sofrer interferˆencias. Suponhamos que ao enviar a mensagem como 00 (ir para leste), o robˆo recebeu a mensagem 01 (ir para oeste) o que faria com que fosse para oeste. Para evitar que a mensagem seja um dos comandos existente, ´e necess´ario introduzir re-dundˆancias na codifica¸c˜ao para permitir detectar e corrigir erros. Ent˜ao vamos introduzir mais d´ıgitos aos c´odigos que representam os comandos, como segue:
00 7→ 00000 01 7→ 01011 10 7→ 10110 11 7→ 11101
Na recodifica¸c˜ao acima, as duas primeiras posi¸c˜oes s˜ao o c´odigo da fonte e nas trˆes posi¸c˜oes restantes s˜ao redundˆancias introduzidas. Este novo c´odigo recodificado ´e cha-mado de c´odigo de canal. Como exemplo, suponhamos que tenha ocorrido um erro na transmiss˜ao do c´odigo 10110 e que foi recebido 11110. O c´odigo recebido n˜ao corresponde a nenhum dos c´odigos da tabela, portanto, detectamos erros. O c´odigo mais pr´oximo da mensagem v´alida, ou seja, o c´odigo da tabela que apresenta a menor quantidade de d´ıgitos distintos do c´odigo recebido ´e 10110, que ´e a palavra transmitida.
18 4. C´odigos Corretores de Erros
Figura 4.1: Procedimento para transmiss˜ao de dados
O funcionamento dos c´odigos corretores do exemplo do robˆo ´e esquematizado a seguir: O esquema acima exemplifica os c´odigos corretores de erros. Inicialmente, transforma-mos os dados a serem transmitidos em um c´odigo da fonte que ´e convertido num c´odigo de canal, acrescentando-se redundˆancias. Ao receber, detecta e corrige os erros e em seguida, o c´odigo de canal ´e decodificado em c´odigo da fonte. Neste projeto ser˜ao estudados os c´odigos, denominados c´odigos sim´etricos que apresentam as seguintes propriedades: (a) Todos os s´ımbolos (d´ıgitos) transmitidos tˆem a mesma probabilidade de serem
rece-bidos errados e essa probabilidade ´e pequena;
(b) Se um s´ımbolo ´e recebido errado, a probabilidade de ser qualquer um dos outros s´ımbolos ´e a mesma.
Agora vamos entender matematicamente como funciona o vetor de c´odigo e o processo de gera¸c˜ao de um c´odigo. Seja a nossa mensagem, um vetor x em Zk2 para algum k, e iremos codific´a-lo utilizando uma transforma¸c˜ao por meio da matriz
T : Zk
2 → Zn2 para algum n > k
T (x) ser´a um vetor de c´odigo. Um c´odigo pode ser descrito atrav´es de uma trans-forma¸c˜ao envolvendo matriz.
Exemplo 4.1. Seja G = h 1 1 1 i e definimos T : Z2 → Z32 por T (x) = G tx
Onde elementos de Z2 s˜ao matrizes 1 × 1.
A matriz G ´e chamada de Matriz geradora do c´odigo.
Para checar se um vetor recebido ´e um c´odigo, precisamos fazer duas verifica¸c˜oes de paridade. Pela G, ´e necess´ario que o vetor recebido c =
c1 c2 c3 satisfa¸ca c1 = c2 = c3 Em Z2, temos
Se P =
1 0 1 , ent˜ao ´e equivalente a P · c = 0.
A matriz P ´e chamada de matriz de verifica¸c˜ao de paridade para o c´odigo e p · c 6= 0 implica que houve erros.
Observe que P Gt = " 0 0 # .
Para entender como funciona, vamos supor que enviamos uma mensagem codificada como (1, 1, 1) = 1 1 1
Suponha que ocorreu um erro na transmiss˜ao e recebemos c0 = (1, 0, 1) Logo, P · c’ = " 1 1 0 1 0 1 # · 1 0 1 = " 1 + 0 · 1 + 0 · 1 1 + 0 · 0 + 1 · 1 # = " 1 0 # 6= 0.
Logo, c’ n˜ao pode ser um vetor de c´odigo. Mas onde estar´a o erro? Podemos verificar que P · c’ =
" 1 0
#
que ´e a segunda coluna da matriz de verifica¸c˜ao de paridade P. Isso significa que o erro est´a na segunda coordenada de c’, o que permite corrigir o erro, invertendo 0 para 1.
Defini¸c˜ao 4.2. Se k < n. Um c´odigo bin´ario (n, k) dado como T : Zk
2 → Zn2 ´e
dito de comprimento n e dimens˜ao k. Uma matriz G = h Ik A
i
k×n, onde A ´e uma
matriz k × (n = k) sobre Z2 ´e dito matriz geradora padr˜ao para o c´odigo. Uma matriz
P =h B In−k
i
´e dito matriz de verifica¸c˜ao de paridade padr˜ao. G e P s˜ao associados ao c´odigo T : Z2
k → Z2n quando T x = G
tx e P Gtx = 0 ∀x,
ou seja, P Gt= 0.
No teorema a seguir temos a condi¸c˜ao para G ser a matriz geradora padr˜ao para um c´odigo bin´ario de corre¸c˜ao de erros e como encontramos uma matriz de verifica¸c˜ao de paridade padr˜ao associada a P .
Teorema 4.3. Sejam G = h Ik A i e P = h B In−k i
. P ser´a a matriz de verifica¸c˜ao de paridade associada a matriz geradora padr˜ao G se, e somente se, At= B. Al´em disso,
o c´odigo bin´ario correspondente (n, k) ser´a um corretor de erros (em uma componente) se, e somente se, as colunas de P forem n˜ao nulas e distintas.
Demonstra¸c˜ao. Chamamos at
i a i-´esima linha de uma matriz A e bi, o i-´esima coluna de B.
Seja G uma matriz geradora padr˜ao e P uma matriz de verifica¸c˜ao de paridade. Vamos assumir que as duas matrizes correspondem ao mesmo c´odigo bin´ario. Portanto, para todo x em Zk
20 4. C´odigos Corretores de Erros P Gt x = h B I i " I At # x = 0 para todo x em Zk 2 Ou seja, h B I i " I At # x = (BI + IAt) x = 0 Para todo x em Zk 2, temos Bx + Atx = 0 =⇒ Bx = −Atx = Atx ou B x = A x
Se agora tomarmos x = ei, o i-´esimo vetor de base canˆonica de Zk2, vemos que
bi = B ei = At ei = ati para todo i Portanto, B=At. Reciprocamente, se B = At, PGt = h B I i " I At # = B + At = 0 em Z 2. Agora,
veremos que se Pi forem n˜ao nulas e distintas, ent˜ao ´e matriz de paridade para corretor
de erros, precisamos verificar que P detecta posi¸c˜ao de erros. Seja x, a mensagem em Zk2 e c = Gx. Ent˜ao ter´ıamos P c = 0. Se ocorrer um erro na i-´esima posi¸c˜ao de c, o c´odigo recebido seria c0 = c + ei. Ent˜ao temos P c0 = P c + P ei = 0 + Pi que ´e a i-´esima coluna de
P . Como todas as coluna sde P s˜ao distintas (e n˜ao nulas) podemos identificar a posi¸c˜ao do erro.
Exemplo 4.4. Veremos um c´odigo corretor de erros que usa trˆes equa¸c˜oes para verifica¸c˜ao de paridade, que formam as linhas de P . Ent˜ao temos n−k = 3 e logo k = n−3. Os vetores da mensagem pertencem a Zk
2, e queremos que k (portanto n) seja o maior poss´ıvel para
transmitir mais informa¸c˜oes. Pelo Teorema 4.3, as colunas de P precisam ser distintas e n˜ao nulas. O m´aximo ocorre quando consistem em todos os 23− 1 = 7 vetores n˜ao nulos
de Zn−k2 = Z32. Uma destas op¸c˜oes ´e
P = 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1
Isso significa que
A = 1 1 0 1 1 0 1 1 0 1 1 1
Para exemplificar como a matriz geradora funciona, vamos considerar x = (0, 1, 0, 1) e codificar como
c = G xt = (0, 1, 0, 1, 0, 1, 0)
Se esse vetor for recebido, ser´a considerado correto, j´a que P c = 0. Agora, se for recebido c’ = h 0 1 1 1 0 1 0 iT , ent˜ao P c0 = 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 · h 0 1 1 1 0 1 0 it = h 0 1 1 it Como P c0 6= 0, ocorreu um erro. Como o vetor ´eh 0 1 1
i
, que ´e a terceira coluna da matriz P . O erro est´a na terceira componente de c0. Alterando essa componente, recuperamos o vetor de c´odigo c. Como as quatro primeiras componentes de um vetor de c´odigo s˜ao o vetor de mensagem original,podemos decodificar c e obtemos o vetor original x =
h
0 1 0 1
iT .
O c´odigo do exemplo 4.4 ´e chamado de c´odigo de Hamming (7,4). Em geral, todos os c´odigos bin´arios constru´ıdos dessa forma s˜ao chamados de c´odigo de Hamming (n, k), o que veremos mais adiante. Um c´odigo de Hamming (n, k) tem n = 2n−k− 1.
4.1
Matriz geradora e de teste de paridade no Matlab
Vamos determinar a matriz geradora padr˜ao (G) e a matriz de verifica¸c˜ao de paridade (H) para um c´odigo bin´ario (7, 4), utilizando a fun¸c˜ao hammgen no Matlab. O parˆametro de entrada ´e o fator r de desenho do c´odigo, tal que (n, k) = (2r− 1, 2r− 1 − r). A fun¸c˜ao
hammgen retorna, al´em das matrizes H e G definidas neste caso como G = " A Ik # e H = " In−k AT # , tamb´em os valores de n e k.
No Matlab executamos a primeira linha, que tem como parˆametro de entrada apenas r = 3, e os dados de sa´ıda s˜ao H, G e os valores de n e k.
No Matlab tamb´em podemos obter uma palavra de c´odigo, ou seja, um vetor de c´odigo (c´odigo da fonte) acrescido de redundˆancias introduzidas, chamadas de c´odigo de canal. Para isso, multiplicamos o vetor de c´odigo pela matriz geradora G.
4.2
M´
etrica de Hamming
Seja A um conjunto finito que daqui em diante ser´a chamado de alfabeto. Um c´odigo corretor de erros ´e um subconjunto pr´oprio qualquer de An. Para ter a no¸c˜ao de
proxi-midade entre palavras (sequˆencia de alfabetos), veremos um modo de medir a distˆancia entre palavras.
Defini¸c˜ao 4.5. Dados dois elementos u, v ∈ An, a distˆancia de Hamming entre u e v ´e
definida como
d(u, v) = |{i : ui = vi, 1 ≤ i ≤ n}|.
Proposi¸c˜ao 4.6. Dados u, v, w ∈ An, valem as seguintes propriedades:
(i) Positividade: d(u, v) ≥ 0 e d(u, v) = 0 ⇐⇒ u = v. (ii) Simetria: d(u, v) = d(v, u).
(iii) Desigualdade Triangular: d(u, v) ≤ d(u, w) + d(w, v).
Logo, a distˆancia de Hamming ´e uma m´etrica, tamb´em chamados de m´etrica de Ham-ming.
24 4. C´odigos Corretores de Erros
d = min{d(u, v) : u 6= v com u, v ∈ C e u 6= v }.
No exemplo do robˆo dado no in´ıcio deste cap´ıtulo, se C ´e o c´odigo do robˆo, temos que d = 3.
Defini¸c˜ao 4.8. Dado a ∈ An e um n´umero real t > 0, definimos o disco e a esfera de
centro em a e raio t como sendo
D(a, t) = {u ∈ An : d(u, a) ≤ t}, S(a, t) = {u ∈ An: d(u, a) = t}. respectivamente.
A defini¸c˜ao 4.8 pode ser representada da seguinte forma:
Figura 4.2: Representa¸c˜ao do disco e da esfera de centro em a e raio t
Como consequˆencia da defini¸c˜ao 4.8 e desigualdade triangular, temos:
Lema 4.9. Seja C um c´odigo com distˆancia m´ınima d. Se c e c0 s˜ao palavras distintas de C, ent˜ao
D(c, κ) ∩ D(c0, κ) = ∅.
Teorema 4.10. Seja C um c´odigo com distˆancia m´ınima d. Ent˜ao C pode corrigir at´e κ = bd−12 c erros e detectar at´e d − 1 erros.
Demonstra¸c˜ao. Se ao transmitirmos uma palavra c do c´odigo cometermos t erros com t ≤ κ, originando a palavra r, ent˜ao d(r, c) = t ≤ κ. Pelo Lema 4.9, a distˆancia de r a qualquer outra palavra do c´odigo ´e maior do que κ. Isso determina c univocamente a partir de r, como sendo o c´odigo mais pr´oximo. Por outro lado, dada uma palavra do c´odigo, podemos nela introduzir at´e d − 1 erros sem encontrar uma outra palavra do c´odigo, e assim, a detec¸c˜ao do erro ser´a poss´ıvel.
A tabela 4.1 apresenta as capacidades de detec¸c˜ao, corre¸c˜ao e detec¸c˜ao e corre¸c˜ao simultˆaneas, em fun¸c˜ao da distˆancia m´ınima, para alguns valores.
2 1 0 N˜ao tem
3 2 1 N˜ao tem
4 3 1 (2,1)
5 4 2 (3,1)
(1) Apenas para d ≥ 4 ´e que se torna poss´ıvel a detec¸c˜ao e a corre¸c˜ao em simultˆaneo; (2) A capacidade de detec¸c˜ao ´e sempre superior `a capacidade de corre¸c˜ao;
(3) Um c´odigo com d = 1 n˜ao tem capacidade para detectar erros; por exemplo, con-siderando as 8 palavras do c´odigo bin´ario natural a 3 bit, verifica-se que qualquer altera¸c˜ao de um bit numa palavra vai produzir outra palavra que pertence ao c´odigo; este erro ´e indetect´avel (as palavras de c´odigo s˜ao excessivamente semelhantes entre si).
As capacidades de detec¸c˜ao e corre¸c˜ao s˜ao obtidos `a custa da introdu¸c˜ao de re-dundˆancias e dependem da distˆancia m´ınima do c´odigo. Aumentar a distˆancia m´ınima melhora as capacidades de detec¸c˜ao e corre¸c˜ao, mas em contrapartida diminui a aficiˆencia do c´odigo. Os crit´erios para determina¸c˜ao dos c´odigos de codifica¸c˜ao de canal s˜ao: (1) Dado o R, onde R ´e a medida da eficiˆencia do c´odigo, maximizar d;
(2) Dada a d minimizar R.
Defini¸c˜ao 4.11. Seja C ⊂ An um c´odigo com distˆancia m´ınima d e seja κ = bd−1 2 c. O
c´odigo C ser´a dito perfeito se
[
c∈C
D(c, κ) = An.
Um c´odigo C sobre um alfabeto A possui trˆes parˆametros fundamentais [n, M, d], que s˜ao, respectivamente, o seu comprimento (o n´umero n corresponde ao espa¸co ambiente An onde C se encontra), o seu n´umero de elementos e a sua distˆancia m´ınima.
4.3
C´
odigos de Hamming
Um c´odigo de Hamming de ordem m sobre F2 = Z2 ´e um c´odigo com matriz teste de
paridade Hm de ordem m × n, cujas colunas s˜ao os elementos de F2m{0} numa ordem
26 4. C´odigos Corretores de Erros
Temos que o comprimento de um c´odigo de Hamming de ordem m ´e n = 2m− 1 e a sua dimens˜ao ´e κ = n − m = 2m− m − 1. Como veremos no pr´oximo cap´ıtulo, podemos
converter a matriz geradora de verifica¸c˜ao de paridade na forma padr˜ao. Considere a matriz H3 = 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 .
Essa ´e a matriz de um c´odigo de Hamming (matriz de verifica¸c˜ao de paridade) corres-pondente a m = 3.
Proposi¸c˜ao 4.12. Todo c´odigo de Hammming ´e perfeito.
4.4
Decodifica¸
c˜
ao
A decodifica¸c˜ao ´e o procedimento de detec¸c˜ao e corre¸c˜ao de erros num determinado c´odigo. Define-se o vetor erro e como sendo a diferen¸ca entre o vetor recebido r e o vetor trans-mitido c, isto ´e,
e = r − c
Exemplo 4.13. Suponha que num c´odigo dado sobre F2, tenhamos transmitido a palavra
(010011) e foi recebido a palavra recebida tenha sido (101011), ent˜ao
e = (101011) − (010011) = (111000).
O peso do vetor erro corresponde ao n´umero de erros cometidos durante a transmiss˜ao. Seja H a matriz teste de paridade do c´odigo, chamamos Hv de s´ındrome de v. Como Hc = 0, temos que
Het = H(r − c) = Hr − Hc = Hr.
Portanto, a palavra recebida e o vetor erro tˆem mesma s´ındrome.
Lema 4.14. Seja C um c´odigo linear em Kn com capacidade de corre¸c˜ao κ. Se r ∈ Kn
e c ∈ C s˜ao tais que d(c, r) ≤ κ ent˜ao existe um ´unico vetor e com ω(e) ≤ κ, tal que a s´ındrome ´e igual `a s´ındrome de r. Al´em disso, que c = r − e.
Cada conjunto da forma v + C ´e chamado de classe lateral de v segundo C. Note que
v + C = C ⇐⇒ v ∈ C.
(1) Calcule a s´ındrome s = Hr.
(2) Se s est´a na tabela de c´alculo das s´ındromes, seja l o elemento l´ıder da classe determinada por s; troque r por r − l.
(3) Se s n˜ao est´a na tabela de c´alculo das s´ındromes, ent˜ao mensagem recebida foram cometidos mais do que κ erros.
Exemplo 4.17. Considere o c´odigo linear (6, 3) definido sobre F2 com matriz teste de
paridade H = 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 .
Neste caso d = 3 e, portanto, κ = bd−12 c = 1.
Os vetores de peso ≤ 1 com suas respectivas s´ındromes est˜ao relacionados abaixo
L´ıder S´ındrome 000000 000 000001 001 000010 010 000100 100 001000 101 010000 011 100000 110
Suponhamos, agora, que a palavra recebida seja
(a) r = (100011). Logo, S = Hr = (101) e, portanto, e = (001000). Consequen-temente, c = r − e = (101011).
(b) r = (111111). Logo, S = Hr = (111), que n˜ao se encontra na tabela. Sendo assim, foi cometido mais do que 1 erro na mensagem r.
28 4. C´odigos Corretores de Erros
4.6
Distˆ
ancias M´ınimas e Corretores de Erros
Geo-metricamente
Seja C um c´odigo de tripla repeti¸c˜ao, temos um subconjunto de Z3
2. Podemos representar
os vetores de Z3
2 como v´ertices de um cubo unit´ario (figura 4.3(a)). A distˆancia de
Hamming entre quaisquer dois vetores x e y ´e s´o o caminho mais curto para ir de x at´e y, passando pelas arestas. O c´odigo C corresponde a dois desses v´ertices, c0 = 000 e
c1 = 111. O fato de d(C) = 3 corresponde ao fato de c0 e c1 estarem a trˆes unidades
(arestas) um do outro (figura 4.3(b)). Se um vetor recebido x estiver ao m´aximo de uma unidade de algum desses vetores-c´odigos e soubermos que ocorreu no m´aximo um erro, poderemos corretamente decodificar x como o vetor-c´odigo mais pr´oximo. Em geral, n˜ao podemos desenhar figuras de Zn
2.
Figura 4.3: Representa¸c˜ao geom´etrica dos c´odigos corretores de erros
Considere um c´odigo que pode corrigir at´e κ erros e os vetores-c´odigo nos centros das esferas de raio κ. Os vetores-c´odigo est˜ao separados um dos outros por pelo menos d unidades. Se um vetor recebido x estiver no interior de uma dessas esferas, ele ser´a decodificado como o vetor correspondente ao centro daquela esfera (veja a figura 4.4).
Figura 4.4: Representa¸c˜ao esf´erica dos c´odigos corretores de erros
Esse processo ´e conhecido como decodificador pelo vizinho mais pr´oximo. A figura sugere que se um c´odigo ´e capaz de corrigir κ erros, ent˜ao as “esferas” centradas nos vetores-c´odigo n˜ao podem ser tocadas nem sobrepostas, tendo-se d > 2κ.
Cap´ıtulo 5
C´
odigos Lineares
Neste cap´ıtulo apresentaremos a classe de c´odigos denominada de C´odigos Lineares. Defini¸c˜ao 5.1. Um c´odigo C ⊂ Kn ser´a chamado de c´odigo linear se for um subespa¸co
vetorial de Kn.
O c´odigo do robˆo citado anteriormente, por exemplo, ´e um c´odigo linear, pois o alfa-beto nesse caso ´e A = F2, o c´odigo ´e o subespa¸co vetorial de F52, que ´e a imagem da
transforma¸c˜ao linear
T : F2
2 → F52
(x1, x2) 7→ (x1, x2, x1, x1+ x2, x2)
Pela defini¸c˜ao, todo c´odigo linear ´e um espa¸co vetorial de dimens˜ao finita. Seja κ a dimens˜ao do c´odigo C e seja {v1, v2, . . . , vκ} base C, portanto, todo elemento de C se
escreve de modo ´unico na forma
λ1v1+ λ2v2+ · · · + λκvκ
onde os λi, i = 1, . . . , κ, s˜ao elementos de K. Segue da´ı que
M = |C| = qκ e, consequentemente,
dimKC = κ = logqqκ = logqM.
Defini¸c˜ao 5.2. Dado x ∈ Kn, define-se o peso de x como sendo o n´umero inteiro ω(x) := |{i : xi 6= 0} | = d(x, 0)
30 5. C´odigos Lineares
onde d representa a m´etrica de Hamming.
Defini¸c˜ao 5.3. O peso de um c´odigo linear C definido como inteiro
ω(C) := min{ω(x) : x ∈ C {0}.
Proposi¸c˜ao 5.4. Seja C ⊂ Kn um c´odigo linear com distˆancia m´ınima d. Temos que
(i) ∀x, y ∈ Kn, d(x, y) = ω(x − y).
(ii) d = ω(C).
Devido o item ii da Proposi¸c˜ao 5.4, a distˆancia m´ınima de um c´odigo linear C ser´a tamb´em chamada de peso do c´odigo C. Em ´algebra linear, existem duas maneiras pr´aticas de descrever subespa¸cos vetoriais: uma como imagem, e outra como n´ucleo de trans-forma¸c˜oes lineares. Veremos como se obt´em a representa¸c˜ao de C como imagem. Esco-lhemos uma base v1, v2, . . . , vκ de C e considere a aplica¸c˜ao linear
T : Kκ → Kn
x = (x1, x2, . . . , xκ) 7→ (x1v1+ x2v2+ · · · + xκvκ)
Ent˜ao T ´e uma transforma¸c˜ao linear injetora, cuja imagem ´e C.
Portanto, ter um c´odigo C ⊂ Knde dimens˜ao κ ´e equivalente a ter uma transforma¸c˜ao
linear injetora
T : Kκ → Kn
com C = Im(T ).
Ele ´e denominado de forma param´etrica, pois os elementos de C s˜ao parametrizados pelos elementos x de Kκ. Agora veremos como representar como n´ucleo da transforma¸c˜ao
linear. Tome um subespa¸co C0 de Kn complementar de C, isto ´e,
C ⊕ C0 = Kn, e considere a aplica¸c˜ao linear
H : C ⊕ C0 → Kn−k
9(= qκ = 32) elementos, por ter dimens˜ao 2 sobre um corpo de 3 elementos. Uma representa¸c˜ao param´etrica ´e dada por
x1v1+ x2v2
O c´odigo C ´e o n´ucleo da transforma¸c˜ao linear
H : F4
3 → F23
x = (x1, . . . , x4) 7→ (2x1+ 2x2+ x3, 2x1 + x2+ x4)
5.1
Equivalˆ
encia de C´
odigos
A no¸c˜ao de equivalˆencia de c´odigos usa o conceito de isometria.
Defini¸c˜ao 5.6. Sejam A um alfabeto e n um n´umero natural. Diremos que uma fun¸c˜ao F : An → An ´e uma isometria de An se ela preserva a distˆancia de Hamming. Em
s´ımbolos:
d(F (x), F (y)) = d(x, y) ∀ x, y ∈ An. Algumas propriedades conhecidas da isometria s˜ao:
Proposi¸c˜ao 5.7.
1. Toda isometria ´e uma bije¸c˜ao.
2. A fun¸c˜ao identidade ´e uma isometria.
3. Se F ´e uma isometria, ent˜ao F−1 ´e uma isometria. 4. Se F e G s˜ao isometrias, ent˜ao F ◦ G ´e uma isometria.
Dado a permuta¸c˜ao π de {1, . . . , n}, denotemos Tπ(a1, . . . , an) = (aπ(1), . . . , aπ(n)). Se
f : A =⇒ A ´e bije¸c˜ao, definimos Tfi(a1, . . . , an) = (a1, . . . , f (ai), . . . , an).
Defini¸c˜ao 5.8. Dados dois c´odigos C e C0 em An, diremos que C0 ´e equivalente a C se
existir uma isometria F de An tal que F (C) = C0.
O estudo mais aprofundado sobre a isometria costuma ser feita em livros sobre espa¸cos m´etricos.
32 5. C´odigos Lineares
Teorema 5.9. Seja F : An → An uma isometria, ent˜ao existem uma permuta¸c˜ao π de
{1, . . . , n} e bije¸c˜oes fi de A, i = 1, . . . , n, tais que
F = Tπ ◦ Tf11 ◦ · · · ◦ T
n fn.
Corol´ario 5.10. Sejam C e C0 dois c´odigos em An. Temos que C e C0 s˜ao equivalentes
se, e somente se, existem uma permuta¸c˜ao π de {1, . . . , n} e bije¸c˜oes f1, . . . , fn de A tais
que
C0 = {(fπ(1)(xπ(1)), . . . , fπn(xπ(n))) : (x1, . . . , xn) ∈ C}.
Defini¸c˜ao 5.11. Seja K um corpo finito. Dois c´odigos lineares C e C0 s˜ao linearmente equivalentes se existir uma isometria linear T : Kn→ Kn tal que T (C) = C0.
Pelo Teorema 5.9, segue que dois c´odigos lineares C e C0 em Kn s˜ao linearmente equi-valentes se, e somente se, existir uma permuta¸c˜ao π de {1, . . . , n} e elementos c1, . . . , cn
de K\{0} tais que
C0 = {(c1xπ(1), . . . , cnxπ(n)) : (x1, . . . , xn) ∈ C}.
Logo, dois c´odigos s˜ao linearmente equivalentes se, e somente se, cada um deles pode ser obtido do outro por uma sequˆencia de opera¸c˜oes do tipo:
i. Multiplica¸c˜ao dos elementos numa dada posi¸c˜ao por um escalar n˜ao nulo.
ii. Permuta¸c˜ao das posi¸c˜oes das palavras do c´odigo, por uma permuta¸c˜ao de {1, 2, . . . , n} aplicado em todas as palavras do c´odigo.
5.2
Matriz Geradora de um C´
odigo
Sejam K um corpo finito com q elementos e C ⊂ Kn um c´odigo linear. Denominamos
parˆametros do c´odigo linear C `a terna de inteiros (n, κ, d), onde κ ´e a dimens˜ao de C sobre K, e d representa a distˆancia m´ınima de C (que ´e igual ao peso ω(C)). O n´umero de elementos M de C ´e igual a qκ. Seja β = {v
1, . . . , vκ} uma base ordenada de C e
considere a matriz G, cujas linhas s˜ao os vetores vi = (vi1, . . . , vin), i = 1, . . . , κ, isto ´e,
G = v1 .. . vk = v11 v12 · · · v1n .. . ... . .. ... vk1 vk2 · · · vkn
A matriz G ´e chamada de matriz geradora de C associada `a base β. Considere a trans-forma¸c˜ao linear definida por
c´odigo de canal e a transforma¸c˜ao T , uma codifica¸c˜ao.
Duas matrizes geradoras de um mesmo c´odigo C podem ser obtidas uma da outra por uma sequˆencia de opera¸c˜oes do tipo:
(L1) Permuta¸c˜ao de duas linhas.
(L2) Multiplica¸c˜ao de uma linha por um escalar n˜ao nulo. (L3) Adi¸c˜ao de um m´ultiplo escalar de uma linha a outra.
Que s˜ao as opera¸c˜oes elementares usadas no processo de escalonamento.
Tamb´em podemos construir c´odigos a partir de matrizes geradoras G. Para isso, tome uma matriz cujas linhas s˜ao linearmente independentes e defina um c´odigo como sendo a imagem da transforma¸c˜ao linear
T : Kκ → Kn
x 7→ Gtx
Exemplo 5.12. Tome K = F2 = Z2 e seja
G = 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 .
Considerando a transforma¸c˜ao linear T : F3
2 → F52
x 7→ Gtx
e seja C = Im(T ), o c´odigo associado, por exemplo,a palavra 101 do c´odigo da fonte ´e codificada como 01010. Suponhamos agora que seja dado o c´odigo de canal 10101, e que gostar´ıamos de decodific´a-la, isto ´e, achar x de F3
2 tal que 10101 = T (x). Ent˜ao
precisamos resolver o sistema:
GT x1 x2 x3 = 1 0 1 0 1
34 5. C´odigos Lineares (x1, x2, x3)G = (10101), ou seja, x1+ x2+ x3 = 1 x2+ x3 = 0 x1+ x3 = 1 x2+ x3 = 0 x1+ x3 = 1, Logo x1 = 1, x2 = 0 e x3 = 0.
Observe que efetuando opera¸c˜oes sobre as linhas de G do tipo L1, L2 e L3, podemos converter G na forma G0 = 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 .
que ´e a forma padr˜ao. Nesta forma, temos que G0Tx = (x1, x2, x3, x2, x3)
xG0 = (x1 x2 x3 x2 x3)
Assim, o vetor x ´e apenas as trˆes primeiras componentes do vetor a ser decodificado. Logo, a palavra (10101) ´e facilmente decodificada como (101).
Defini¸c˜ao 5.13. Diremos que uma matriz geradora G de um c´odigo C est´a na forma padr˜ao se tivermos
G = (Idκ|A),
onde Idκ ´e a matriz κ × κ e A, uma matriz κ × (n − κ).
Dado um c´odigo C, nem sempre ´e poss´ıvel obter uma matriz geradora de C na forma padr˜ao.
Exemplo 5.14. O c´odigo em F5
2 com matriz geradora
0 0 1 0 1 0 0 0 1 1
!
que ´e a matriz geradora na forma padr˜ao de novo c´odigo C0 equivalente a C.
De modo geral, al´em das opera¸c˜oes nas linhas, efetuamos tamb´em sequˆencias de opera¸c˜oes sobre as colunas do tipo:
(C1) permuta¸c˜ao de duas colunas,
(C2) multiplica¸c˜ao de uma coluna por um escalar n˜ao nulo,
obtemos uma matriz G0 de um c´odigo C0 equivalente a C. Com isso, temos o seguinte resultado:
Teorema 5.15. Dado um c´odigo C, existe um c´odigo equivalente C0 com matriz geradora na forma padr˜ao.
5.3
C´
odigos Duais
Seja C ⊂ Kn um c´odigo linear, definimos o c´odigo dual como complemento ortogonal.
C⊥= {v ∈ Kn : hu, vi = 0, ∀u ∈ C}.
As propriedades do complemento ortogonal costuma ser tratado no texto de ´algebra linear.
Lema 5.16. Se C ⊂ Kn ´e um c´odigo linear, com matriz geradora G, ent˜ao
i) C⊥ ´e um subespa¸co vetorial de Kn;
ii) x ∈ C⊥ ⇐⇒ Gx = 0.
Proposi¸c˜ao 5.17. Seja C ⊂ Knum c´odigo de dimens˜ao κ com matriz geradora na forma
G = (Idκ|A). Ent˜ao
i) dimC⊥= n − κ;
ii) H = (−A|Idn−κ) ´e uma matriz geradora de C⊥.
Lema 5.18. Seja C um c´odigo linear em Kn. Para toda permuta¸c˜ao σ de {1, . . . , n},
36 5. C´odigos Lineares i) (Tσ(C))⊥= Tσ(C⊥) ii) (Tj c(C)) ⊥ = Tj c−1(C⊥)
Proposi¸c˜ao 5.19. Sejam C e D dois c´odigos lineares em Kn que s˜ao linearmente equi-valentes, ent˜ao C⊥ e D⊥ s˜ao linearmente equivalentes.
Lema 5.20. Suponha que C seja um c´odigo de dimens˜ao κ em Kn com matriz geradora
G. Uma matriz H de ordem (n − κ) × n, com coeficientes em K e com linhas linearmente independentes, ´e uma matriz geradora de C⊥ se, e somente se,
GHt= 0.
Proposi¸c˜ao 5.21. Seja C um c´odigo linear e suponhamos que H seja uma matriz gera-dora de C⊥. Temos ent˜ao que
v ∈ C ⇐⇒ Hv = 0. Isto significa que H ´e matriz teste de paridade.
Exemplo 5.22. Seja dado o c´odigo C sobre F2 com matriz geradora
G = 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 .
Como G est´a na forma padr˜ao, podemos usar a Proposi¸c˜ao 5.17 (ii) e ter a matriz teste de paridade H = 1 0 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 . Dados v = (100111) e v0 = (010101), como Hv = 0 0 0 e Hv 0 = 1 1 0 6= 0, temos que v ∈ C e v0 ∈ C./
A matriz teste de paridade de um c´odigo cont´em, de maneira bastante simples, in-forma¸c˜oes sobre o valor do peso do c´odigo.
Teorema 5.23. Seja H a matriz teste de paridade de um c´odigo C. Ent˜ao o peso de C ´e igual a s se, e somente se, quaisquer s − 1 colunas de H s˜ao linearmente independentes.
Um c´odigo ser´a chamado de MDS (Maximum Distance Separable) se valer a igualdade d = n − κ + 1.
5.4
C´
odigos de Reed-Muller
Relembrando que os c´odigos de Reed-Muller foi usado pela sonda espacial Mariner 9 para transmitir fotos de Marte. Para ser transmitida, cada fotografia foi dividida em elementos pictogr´aficos, ou pixels. Foi sobreposta `a fotografia uma grade de 700 × 832 pixels, e en seguida associou-se a cada pixel um entre 64 tons de cinza, variando de brando (0) a preto (63). Sabendo que 64 = 26, usamos aritm´etica bin´aria para representar cada uma dessas
tonalidades, onde o branco ´e 000000 e o preto ´e 111111. Podemos, ent˜ao, reescrever esses 64 n´umeros bin´arios como vetores de Z6
2 e codific´a-los usando um c´odigo que corrija tantos
erros quanto poss´ıvel. O c´odigo escolhido para ser usado no Mariner 9 pertence a uma grande fam´ılia de c´odigos que s˜ao mais facilmente definidos intuitivamente.
Defini¸c˜ao 5.25. Os c´odigos de Reed-Muller (de primeira ordem) Rn s˜ao definidos
indu-tivamente por:
1 Para n = 0, R0 = Z2.
2 Para n ≥ 1, Rn´e o subespa¸co de Z2n2 cuja base ´e formada por todos os vetores da forma
" u u # e " 0 1 #
onde u ´e o vetor da base em Rn−1, 0 ´e o vetor nulo de Z2n−12 , e 1 ´e o vetor formado
por 1s em Z2n−12 .
Usando a defini¸c˜ao acima, construiremos R1 e R2, e verificaremos o tipo de vetores
que esses c´odigos contˆem. Uma base para R0 = Z2 ´e somente {1}, portanto, uma base
para R1 ´e (" 1 1 # , " 0 1 #)
que gera o c´odigo
38 5. C´odigos Lineares R1 = (" 0 0 # , " 0 1 # , " 1 0 # , " 1 1 #) = Z2 2
Realizando o mesmo procedimento obter´ıamos a seguinte base para R2
1 1 1 1 , 0 1 0 1 , 0 0 1 1
e pela propriedade do fechamento para a adi¸c˜ao, ´e f´acil ver que os 8 = 23 vetores de
R2 s˜ao R2 = 0 0 0 0 , 0 0 1 1 , 0 1 0 1 , 0 1 1 0 , 1 0 1 0 , 1 0 0 1 , 1 1 0 0 , 1 1 1 1
Em R1 todo vetor de c´odigo tem peso 1, exceto 0 e 1;e, em R2 todo vetor de c´odigo
tem peso 2, exceto 0 e 1. Essa ´e uma propriedade geral dos c´odigos de Reed-Muller. Observa¸c˜ao 5.26. O complemento de um vetor x de Zn
2 ´e o vetor de x obtido trocando-se
todos os zeros por 1s, e vice-versa. Exemplo 5.27. x = 1 1 0 1 ⇐⇒ x = 0 0 1 0
Observe que x = x + 1, onde 1 ´e o vetor formado inteiramente de 1s.
Teorema 5.28. Para n ≥ 1, o c´odigo de Reed-Muller Rn ´e um c´odigo linear (2n, n + 1)
no qual todo vetor de c´odigo, exceto o 0 e o 1, tem peso 2n−1.
Demonstra¸c˜ao. Para demonstrar esse teorema vamos utilizar indu¸c˜ao em n. Para n = 1 temos que R1 = Z22 ´e um c´odigo linear (2, 2) = (21, 1 + 1) para o qual todo vetor de c´odigo,
exceto o 0 e o 1, tem peso 1 = 21−1. Vamos assumir que o resultado ´e v´alido para n = k, ou seja, que Rk ´e um c´odigo linear (2k, k + 1) no qual todo vetor de c´odigo, exceto o 0 e
o 1, tem peso 2k−1. Agora, consideremos Rk=k+1.
Por constru¸c˜ao, Rk+1 tem uma base formada pelos vetores da forma
" u u
#
, onde u ´e
um elemento de Rk, juntamente com o vetor
" 0 1
#
1
Finalmente observemos que Rk+1 ´e um c´odigo linear (2k+1, k + 2). Para a afirma¸c˜ao
final, observe que os vetores de Rk+1 s˜ao obtidos por combina¸c˜ao linear dos vetores da
base, e, portanto, s˜ao da forma
v = c1 " u1 u1 # + . . . +ck+1 " uk+1 uk+1 # + ck+2 " 0 1 # onde {u1, . . . , uk+1} com ci ∈ Z2.
Suponha que v 6= 0, 1 e seja u = c1 u1 + . . . + ck uk+1. Dessa forma, u ´e um elemento
de Rk. Se ck+2=0, ent˜ao u 6= 0, 1, e, portanto, pela hip´otese de indu¸c˜ao, u tem peso 2k−1.
Mas ent˜ao v tem peso 2 · 2k−1= 2k. Se c
k+2 = 1, ent˜ao v tem a forma
v = " u u # + " 0 1 # = " u u + 1 # = " u u #
onde u ´e um elemento de Rk. Como
w(u) = 2k - w(u) temos que
w(v) = w(u) + w (u) = 2k
como quer´ıamos demonstrar. Logo, o teorema ´e verdadeiro para todo n ≥ 1.
Sabemos da introdu¸c˜ao desta se¸c˜ao que o Mariner 9 requeria um c´odigo com 64 = 26 vetores. Pelo teorema 5.28, o c´odigo de Reed-Muller R5 tem dimens˜ao 6 sobre Z2.
5.5
Decodifica¸
c˜
ao de C´
odigos de Reed-Muller
Defini¸c˜ao 5.29. Uma matriz Hn de ordem n ´e uma matriz n × n formada pelos valores
1 e −1, cujas linhas tomadas duas a duas s˜ao ortogonais.
Isto significa que o produto interno sobre os n´umeros reais de linhas distintas ´e 0. No caso de dimens˜ao ser potˆencias de dois, podemos obter recursivamente por H1 = [1] e H2n =
"
Hn Hn
Hn −Hn
#
40 5. C´odigos Lineares H1 = [1] H2 = " 1 1 1 -1 # H4 = 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1
Uma defini¸c˜ao equivalente ´e Hn´e uma matriz n × n com a entrada dos inteiros 1 e −1
tais que
HnHnT = nIn
Defini¸c˜ao 5.31. A ordena¸c˜ao adequada Pr de r-uplas ´e a ordena¸c˜ao definida
recursiva-mente pelas regras (1) P1 = [0, 1]
(2) Se Pi = [b1, b2, . . . , b2i] ent˜ao Pi+1= [b10, b20, . . . , b2i0, b11, b21, . . . , b2i1], para 1 ≤ i ≤
r − 1.
Se inverter a ordem dos digitos, a ordena¸c˜ao acima ´e a ordem crescente dos n´umeros bin´arios associados.
Exemplo 5.32. P1 = [0, 1]
P2 = [00, 10, 01, 11]
P3 = [000, 100, 010, 110, 001, 101, 011, 111]
Note que, se inverter a ordem dos d´ıgitos, o P3 corresponde a
[000, 001, 010, 011, 100, 101, 110, 111] que ´e ordem crescente dos n´umeros bin´arios associados.
Agora seja n = 2r, e sejam u
0, u1, . . . , un−1 os r-uplas bin´arias numa ordem correta.
Constru¸c˜ao da matriz geradora de c´odigo
Seja Hr, a matriz de verificacao de paridade de Hamming(que n˜ao pode ser confundida
com matriz de Hadamard). Considere [Hr0], onde 0 ´e uma matriz coluna nula. Br´e uma
matriz ordenada de [Hr0] segundo a ordena¸c˜ao da defini¸c˜ao 5.31. Ent˜ao a matriz geradora
de c´odigo de Reed-Muller R(1, r) ´e G = "
1 Br
#
Seja r o c´odigo recebido. Constru´ımos o vetor R tal que Ri = (−1)ri =
1, se ri = 0
−1, se ri = 1
Agora, obtemos o vetor ˆR = HR. Seja k, a coordenada do maior valor absoluto de ˆ
R e considere o vetor u da k-´esima coordenada de Br (ordenada). O c´odigo de canal ´e
Reordenando, temos B3 = 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 e consequentemente, a matriz
geradora do c´odigo ser´a B3 =
1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1
Suponha que foi recebido r = (01110110). A matriz de Hadamard de ordem 8 ´e
H8 = 1 1 1 1 1 1 1 1 1 −1 1 −1 1 −1 1 −1 1 1 −1 −1 1 1 −1 −1 1 −1 −1 1 1 −1 −1 1 1 1 1 1 −1 −1 −1 −1 1 −1 1 −1 −1 1 −1 1 1 1 −1 −1 −1 −1 1 1 1 −1 −1 1 −1 1 1 −1 Se r = (01110110) ent˜ao R = (1, −1, −1, −1, 1, −1, −1, 1), calculamos ˆR = HR. No nosso exemplo, ˆR = (−2, 2, 2, 6, −2, 2, 2, −2). Encontre a coordenada que tem o maior valor absoluto. No exemplo, ´e k = 4, pois
ˆ R4 = 6.
Considere o vetor u como a k-´esima coluna de Br. Nosso exemplo, ser´a a quarta coluna
que ´e u = 1 1 0
c = P uivi onde vi ´e a i-´esima linha de G.
Ent˜ao c = 1v1 + 1v2 + 0v3 = [01010101] + [00110011] = [01100110] = (01100110).
Temos que o c´odigo da fonte ´e u ∈ Z4
Referˆ
encias Bibliogr´
aficas
[1] GARCIA, A. e LEQUAIN, Y. Elementos de ´Algebra. IMPA, Rio de Janeiro, 2006. 326p.
[2] GONC¸ ALVES, A. Introdu¸c˜ao `a ´Algebra. IMPA, Rio de Janeiro, 1979. 194p.
[3] HEFEZ, A.; VILLELA, M.L.T. C´odigos Corretores de Erros. S´erie de Computa¸c˜ao e Matem´atica. Rio de janeiro: IMPA, 2002. 217p.
[4] LOURENC¸ O, M. L.; COELHO, F. U.Um curso de ´Algebra Linear. EDUSP, S˜ao Paulo, 2005. 261p.
[5] MILIES, C. M. A Matem´atica dos c´odigos de barras: detectando erros. RPM 65. p.38-42.
[6] POOLE, D. ´Algebra Linear. S˜ao Paulo: Pioneira Thomson Learning, 2004. 690p. [7] VANSTONE, S. A. e OORSCHOT, P. C.van. An Introduction to Error Correcting