• Nenhum resultado encontrado

Códigos Corretores de Erros

N/A
N/A
Protected

Academic year: 2021

Share "Códigos Corretores de Erros"

Copied!
61
0
0

Texto

(1)

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

(2)
(3)

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¸

ao: Universidade Federal de S˜

ao Carlos

Centro de Ciˆ

encias Exatas e de Tecnologia

Departamento de Matem´

atica

ao Carlos, 6 de agosto de 2012.

(4)
(5)

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.

(6)
(7)

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.

(8)
(9)
(10)
(11)

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.

(12)
(13)

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

(14)

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.

(15)

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

(16)
(17)

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

(18)
(19)

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.

(20)

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

(21)

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

(22)

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

(23)

(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

(24)
(25)

Cap´ıtulo 2

odigos

2.1

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

(26)

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.

(27)

Cap´ıtulo 3

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

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

(28)

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

(29)

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¸

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

(30)

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:

(31)

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.

(32)

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.

(33)

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.

(34)
(35)

Cap´ıtulo 4

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.

(36)

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

(37)

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

(38)

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   

(39)

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.

(40)
(41)

4.2

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.

(42)

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.

(43)

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

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

(44)

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¸

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

(45)

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

(46)

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

(47)

Cap´ıtulo 5

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)

(48)

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

(49)

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.

(50)

32 5. C´odigos Lineares

Teorema 5.9. Seja F : An → An uma isometria, ent˜ao existem uma permuta¸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 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

(51)

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        

(52)

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

!

(53)

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

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¸ao σ de {1, . . . , n},

(54)

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.

(55)

Um c´odigo ser´a chamado de MDS (Maximum Distance Separable) se valer a igualdade d = n − κ + 1.

5.4

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

(56)

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

#

(57)

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¸

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

#

(58)

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

(59)

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

(60)
(61)

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

Referências

Documentos relacionados

A teoria dos c´odigos ´e capaz de misturar conceitos e t´ecnicas importantes da ´ Algebra abstrata com aplica¸c˜oes imediatas da vida real, o que mostra como a

Formada pelos empregadores com alto escore (renda+educação), com exceção das ocupações tradicionalmente definidas como de profissionais liberais, e mais os outros

O mapa temático apresentado aos educandos na sala despertou a atenção dos alunos, principalmente pelo espaço representado (parte da cidade de Viçosa-MG) fazer parte

“Muito do que sou como pessoa e profissional, agradeço à minha vivência de 37 anos na PUC Minas, onde tive a oportunidade de conviver com pessoas como Escípio

Graça (2004) mostra que as técnicas de subtração de imagens, razão entre bandas e componentes principais são as mais utilizadas para a detecção de mudança,

Diante do que foi exposto podemos concluir que, as perspectivas de aprendizagem da língua inglesa nas redes sociais como novas formas de interação, comunicação como

apresentaram um perfil similar de perda de massa, indicando pouco efeito da incorporação do extrato à sua estabilidade térmica. A incorpo- ração do extrato vegetal promoveu

b) conforme a disponibilidade de vaga por orientador segundo a linha e área de pesquisa definida. OBS.: Eventualmente, pode ocorrer que, em virtude da falta de candidatos