Universidade Estadual do Oeste do Paraná Centro de Engenharias

Propaganda
Universidade Estadual do Oeste do Paraná
Centro de Engenharias e Ciências Exatas
Especialização em Educação Matemática
Códigos Lineares
Alex de Oliveira Ornold
Foz do Iguaçu-PR
2008
Códigos Lineares
Alex de Oliveira Ornold
Monografia apresentada como requisito parcial à obtenção do grau de especialista em Educação Matemática, Programa de Especialização em Educação Matemática, Centro de
Engenharias e Ciências Exatas, Universidade
Estadual do Oeste do Paraná.
FOZ DO IGUAÇU-PR
2008
Agradecimentos
Agradeço a Deus, pela vida que este me proporciona.
Aos meus pais por tudo que eles sempre fizeram para que eu pudesse ter
chegado a este momento.
i
Resumo
No presente trabalho vamos apresentar uma introdução à teoria dos Códigos, que é uma parte da matemática utilizada na área de transmissão de
informações. Falaremos especificamente de uma classe de códigos, os códigos
lineares e seus conceitos. Estaremos trabalhando com o espaço vetorial Fnq
das n-uplas sobre o corpo finito Fq . Faremos uma abordagem inicial sobre os
corpos finitos Fq . Os códigos binários de Hamming também serão abordados.
Palavras-chave: Códigos lineares, corpos finitos, código binário de Hamming.
ii
Sumário
Resumo
ii
Introdução
v
1 Álgebra Linear sobre Corpos Finitos
1
1.1 Números Inteiros . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1.1
Divisores . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.1.2
Máximo Divisor Comum (MDC) . . . . . . . . . . . . .
3
1.1.3
Números Primos . . . . . . . . . . . . . . . . . . . . .
4
1.1.4
Congruência . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2 Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.1
Subgrupos . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.3 Anéis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Espaços Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Corpo Finito
20
3 Códigos Lineares
24
3.1 Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Matriz geradora e de paridade . . . . . . . . . . . . . . . . . . 31
iii
SUMÁRIO
iv
3.3 Código de Hamming . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Código de Reed-Solomon . . . . . . . . . . . . . . . . . . . . . 39
3.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . 40
Referências Bibliográficas
41
Introdução
O estudo inicial sobre a teoria dos códigos se dá no final dos anos 40 do século
XX, especificamente em 1948 com o matemático e engenheiro estadunidense
Claude Elwood Shannon (1916 - 2001), com seu trabalho “A Mathematical
Theory of Communication” (Uma Teoria Matemática da Comunicação), a
partir deste trabalho a matemática ganha uma nova área a Teoria da Informação.
Claude Elwood Shannon procurou em seu trabalho em detectar e corrigir
erros durante o armazenamento e transmissão das mensagens.
Entre os mais variados tipos de códigos, a classe mais utilizada e mais
fáceis de descrever, codificar e decotificar são os códigos lineares, que são
definidos como um subespaço vetorial de Fn. A partir da década de 50,
novos códigos começaram a surgir, como exemplo temos o código binário de
Hamming, que foi inserido à Teoria dos Códigos pelo matemático Richard
Wesley Hamming (1915 - 1998).
Atualmente notamos que a Teoria dos Códigos esta cada vez mais presente
no dia-a-dia da sociedade. Vemos que ela está se popularizando ao meio
a uma velocidade incrível, através de códigos que estão sendo usados na
transmissão de informações, imagens, no audio-visual, etc.
Como exemplo tivemos em 1972 a transmissão de imagens de Marte com
v
SUMÁRIO
vi
64 tonalidades de cinza pela espaçonave Mariner, através do código ReedMuller, e em 1979 a espaçonave Voyager enviou imagens com 4096 tonalidades
de cores de Júpiter e Saturno utilizando o código de Golay [3].
O presente trabalho será descrito em 03 capítulos, sendo que no primeiro
capítulo abordaremos conceitos de algebra, definições e conceitos que nos
servirão como alicerce para a leitura do trabalho.
No segundo capítulo, faremos uma introdução a teoria dos corpos finitos,
mostrando suas definições, para que fique mais claro o estudo posterior de
códigos lineares que será visto no terceiro capítulo.
Capítulo 1
Álgebra Linear sobre Corpos
Finitos
A álgebra linear é fundamental para o estudo da teoria dos códigos, pois a
mesma nos dá ferramentas essencias para entedermos os processos de codificação e decodificação, responsáveis pela confiabilidade da transmissão de
informações de grande parte dos novos sistemas de comunicação. Portanto,
vamos relembrar conceitos elementares sobre o conjunto dos números inteiros,
anéis, corpos e espaços vetoriais.
1.1
Números Inteiros
Seja
N = {1, 2, 3, . . .}
o conjunto dos números naturais e
Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . .}
1
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
2
o conjunto dos números inteiros. Considerando em Z1 as operações usuais
de adição “+” e multiplicação “·”, destacamos em relação a estas operações,
as seguintes propriedades elementares (bem conhecidas).
Para todo a, b, c ∈ Z, valem:
(A1) Associativa: a + (b + c) = (a + b) + c;
(A2) Comutativa: a + b = b + a;
(A3) Elemento neutro: a + 0 = a;
(A4) Simétrica: a + (−a) = 0;
Também valem:
(M 1) Associativa: a · (b · c) = (a · b) · c;
(M 2) Comutativa: a · b = b · a;
(M 3) Distribuitiva: a · (b + c) = a · b + a · c;
(M 4) Elemento Neutro: a · 1 = a.
Todo conjunto A não vazio equipado com duas operações, denotadas
usualmente por + e ·, que satisfazem as propriedades (A1)-(A4) e (M1)(M 4) é chamado de anel. Neste sentido (Z, +, ·) é um anel.
Se em um anel (K, +, ·) vale a propriedade de que para todo 0 = x ∈ K
existe y ∈ K tal que x · y = 1, então diremos que (K, +, ·) é um corpo. O
elemento y é denotado por x−1 e chamado de elemento simétrico de x.
1
A letra Z que representa o conjunto dos números inteiros, provém da palavra alemã
“Zahlen” que significa número ou algarismo.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
Example 1
3
(a) (Z, +, ·), (Q, +, ·), (R, +, ·), (C, +, ·) são anéis;
(b) Qualquer corpo é um anel comutativo.
1.1.1
Divisores
Sejam a, b, c ∈ Z. Se c = a · b, então diremos que a divide c (ou c é múltiplo
de a) e denotaremos por a | c.
Considerando a divisão exata entre dois números inteiros quaisquer, segue
as seguintes propriedades, ∀ a, b, c ∈ Z:
(a) Se a = 0, a | a;
(b) Se a, b ≥ 0, a | b e b | a então a = b;
(c) Se a | b e b | c então a | c;
(d) Se a | b e a | c então a | (xb + yc), para todo x, y ∈ Z.
1.1.2
Máximo Divisor Comum (MDC)
O maior divisor comum positivo de dois ou mais números inteiros quaisquer
é chamado de máximo divisor comum desses números e é indicado por mdc
(a, b).
Definição 1.1 Sejam a, b ∈ Z. Então d ∈ Z é o máximo divisor comum de
a e b se:
(a) d ≥ 0;
(b) d | a e d | b;
(c) Se d′ ∈ Z tal que d′ |a e d′ |b, então d′ |d.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
4
Proposição 1.1 Dois inteiros a e b são primos entre si se, e somente se,
existem inteiros x0 e y0 tais que ax0 + by0 = 1.
Demonstração A implicação é imediata da identidade de Bezout (sejam
quais forem os inteiros a, b ∈ Z e sendo d o máximo divisor desses inteiros
é possível garantir a existência de inteiros x0 e y0 tais que d = ax0 + by0 ).
Vejamos a recíproca.
Suponha que existam inteiros x0 e y0 de forma que ax0 + by0 = 1. Como
mdc (a, b)|a e mdc(a, b)|b, então mdc(a, b)|(ax0 + by0 ). Portanto mdc(a, b)|1,
donde segue que mdc(a, b) = 1.
1.1.3
Números Primos
Definição 1.2 Um número p ∈ Z é considerado primo se:
(a) p = 0;
(b) p = ±1;
(c) os únicos divisores de p são ±1, ±p, e estes são chamados divisores
triviais de p.
Por exemplo, o número 7 é primo pois seus divisores inteiros são ±1 e
±7. Se um inteiro é diferente de 1 e não é primo, diz-se que ele é um número
composto.
Uma metodologia utilizada para se encontrar números primos2 é através
do Crivo de Eratóstenes [5]. Método este que permite obter uma tabela de
2
Atualmente o maior primo encontrado é o número 232.582.657 −1 descoberto pela equipe
de colaboradores formado pelos doutores Curtis Cooper e Steven Boone, número este que
fora descoberto em 4 de setembro de 2006, contendo 9.808.358 dígitos. É o 44o número
primo de Mersenne (dado um número M p, este é primo de Mersenne, se M p for primo,
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
5
números primos. Escreve-se a sucessão natural dos números inteiros até ao
número desejado. Suprime-se o número 1. O número 2 é o menor número
primo. A partir do que lhe segue o 3, cortam-se todos os múltiplos de 2.
O número 3, o primeiro que não foi cortado, é primo. A partir dos que lhe
seguem cortamos todos os múltiplos de três. O primeiro não riscado é 5, que
será número primo, e a partir de 6 cortamos todos os múltiplos de cinco e
assim sucessivamente.
1.1.4
Congruência
As congruências estão presentes em nosso cotidiano nos mais variados momentos de nossas vidas, com as mais variadas atividades. Como exemplo
fácil de se observar temos, os relógios, que trabalham com módulos 12 ou 24
para as horas e módulo 60 para os minutos e segundos.
A linguagem da congruência foi desenvolvida pelo matemático, astrônomo
e físico alemão Carl Friedrich Gauss (1777 - 1855) no início do século XIX.
Gauss era conhecido como o príncipe dos matemáticos.
Definição 1.3 Seja m > 1 um número inteiro. Dados a, b ∈ Z, dizemos que
a é congruente a b módulo m, e escrevemos a ≡ b (mod m), se m|(a − b).
Vejamos algumas propriedades da relação de congruência, sejam a, b, c, d ∈
Z, temos:
sendo que M p = 2p − 1, para um primo positivo p).
Aos interessados em conhecerem os demais 43 números primos de Mersenne, in-
dicamos o sitio: http://www.profcardy.com/artigos/mersenne.php. E para os mais curiosos e entendiados ressaltamos que a fundação The Electronic Frontier Foundation
(http://www.eff.org/), oferece um prêmio de U$$ 100 mil a primeira pessoa ou grupo
que encontrar um primo com 10 milhões de casas decimais, boa sorte e não esqueça de
nós.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
Definição 1.4
6
(a) Reflexiva: a ≡ a (mod m);
(b) Simétrica: a ≡ b (mod m), então b ≡ a (mod m);
(c) Transitiva: a ≡ b (mod m) e b ≡ c (mod m), então a ≡ c (mod m);
(d) a ≡ b (mod m) e c ≡ d (mod m), então a + c ≡ b + d (mod m);
(e) a ≡ b (mod m), então ac ≡ bc (mod m);
(f ) a ≡ b (mod m), então ar ≡ br (mod m).
Exemplo 1.1
4;
(a) 10 ≡ 2 (mod 4), porque 10 − 2 = 8, e 8 é divisível por
(b) −1 ≡ 9 (mod 5), porque −1 − 9 = −10, e −10 é divisível por 5;
(c) 12 ≡ 2 (mod 5), porque 12 − 2 = 10 que é divisível por 5;
(d) 72 ≡ 52 (mod 12), por que 49 − 25 = 24 que é divisível por 12.
1.2
Grupos
Grupos estão por trás de muitas estruturas algébricas, como corpos e espaços
vetoriais, sendo que sua estrutura é parte essencial para a teoria de códigos,
ou seja, papel fundamental na geração, codificação, decodificação e análise
de desempenho de códigos.
A origem histórica do conceito de grupo vem da Teoria de Galois, que
deve-se ao matemático francês Evariste Galois (1811 - 1832).
O objetivo da teoria de Galois é estudar as soluccões da equação polinomial
f(t) = tn + an−1 tn−1 + ... + a1 t + a0 = 0
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
7
e a idéia principal de Galois é olhar os polinomios simétricos de f (t), os quais
formam um grupo [6], mais conhecido como grupo de Galois, assim dando
início a Teoria dos Grupos.
Podemos descrever um grupo como sendo um conjunto com uma operação binária que satisfaz certos axiomas. Uma operação binária ∗ sobre um
conjunto W é uma regra que associa algum elemento de W a cada par ordenado (a, b) de elementos de W (a ∗ b denotará o elemento associado a (a, b)
através de ∗).
Definição 1.5 Um grupo (G, ∗) é um par ordenado, sendo G um conjunto
não vazio, junto com uma operação binária ∗ sobre G, tal que as seguintes
sentenças são satisfeitas:
(i) ∀ a, b, c ∈ G, (a ∗ b) ∗ c = a ∗ (b ∗ c), (Associativa);
(ii) ∃ e ∈ G, ∀ a ∈ G, e ∗ a = a ∗ e = a, (Elemento Neutro);
(iii) ∀ a ∈ G, ∃ a′ ∈ G, a ∗ a′ = a′ ∗ a = e, (Elemento Simétrico).
Exemplo 1.2
(a) O conjunto dos números inteiros é um grupo com re-
lação à operação de adição;
(b) A operação de adição usual é uma operação binária sobre o conjunto
dos números reais. Por outro lado ela não é uma operação binária
sobre R∗ = R\{0} já que, por exemplo, 5 + (−5) não pertence a R∗ .
Definição 1.6 Um grupo G é abeliano3 se a sua operação binária for comutativa, ou seja, a ∗ b = b ∗ a para todo a e b em G.
3
Os grupos abelianos são assim chamados devido ao brilhante matemático norueguês
Niels Henrik Abel (1802 - 1829), que aos dezesseis anos começou, por conta própria, a
degustar integralmente os maiores trabalhos de seus predecessores, como dos renomados
matemáticos: Isaac Newton, Leonhard Euler e Lagrange.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
8
Proposição 1.2 Dado um grupo (G, ∗), então:
(a) O elemento neutro é único;
(b) Para cada a ∈ G, o simétrico de a é único e (a′)′ = a;
(c) ∀ a, b ∈ G; (a ∗ b)′ = b′ ∗ a′;
(d) Todo elemento de G é regular: a ∗ x = a ∗ y se, e somente se, x = y.
Demonstração (⇒)Provaremos apenas o item (d), os demais itens ficam a
cargo do leitor. Suponha que x ∗ a = y ∗ a, com x, y ∈ G. Então:
(x ∗ a) ∗ a′
=
(y ∗ a) ∗ a′
=⇒ x ∗ (a ∗ a′) = y ∗ (a ∗ a′)
=⇒ x ∗ e = y ∗ e
=⇒ x = y.
Exemplo 1.3
(a) (R, +), (Z, +), (Q, +) e (C, +) são grupos abelianos;
(b) (R∗ , ·), (Q∗ , ·) e (C∗ , ·) são grupos abelianos;
(c) Mm × n (R) = {(aij )/aij ∈ R} é um grupo aditivo abeliano;
(d) O grupo das rotações em torno de um eixo formam um grupo abeliano.
Teorema 1.1 O conjunto Zn é um grupo sob a operação adição módulo n.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
9
Teorema 1.2 Se m for um número primo, então o conjunto Zm = {1, 2, ..., m−
∗
1} é um grupo sob a operação multiplicação módulo m.
Demonstração (⇒): (Zm , ·) é um grupo e m não é primo então
∗
∃ r·s
>
1 tal que r · s = m
=⇒ r · s = r · s = m = 0
∗
/ (Zm , ·).
Absurdo pois 0 ∈
∗
(⇐): i) assotividade (obvia); ii) 1 ∈ Zm e é o elemento neutro; iii) como
∗
∗
m é primo então todo a ∈ Zm tem simétrico. Agora provamos que (Zm , ·) é
∗
fechado em relação a operação “ · ”. Sejam r, s ∈ Zm tal que r · s = 0 então
r·s
≡
0 (mod m)
=⇒ r · s − 0 = m · q
=⇒ r · s = m · q
=⇒ m | rs,
como m é primo então m | r ou m | s então r = 0 ou s = 0. Absurdo, pois
∗
r e s ∈ Zm .
1.2.1
Subgrupos
Definição 1.7 Se um subconjunto H não vazio de um grupo G é fechado
sob a operação binária de G e se H forma um grupo, então diz-se que H é
um subgrupo de G e denota-se isto por H ≤ G.
Exemplo 1.4
de C;
(a) (C, +) é um grupo abeliano e Z, Q e R são subgrupos
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
10
(b) (C∗ , ·) é um grupo abeliano e Q∗ e R∗ são subgrupos de C∗ ;
(c) Consideremos o grupo multiplicativo (R∗ , ·). Mostremos que H = {x ∈
R, x > 0} é um subgrupo de (R∗ , ·):
Sejam a, b ∈ H então a > 0 e b > 0 então a > 0 e 1/b > 0 =⇒
a ∗ b′ =⇒ a.1/b > 0 =⇒ a/b > 0,
logo a/b ∈ H então é um grupo.
Definição 1.8 Seja G um grupo finito. A ordem de G, denotada por | G |,
é o número de elementos de G.
Definição 1.9 Dado um elemento a em um grupo G, se acontecer que G =
{an | n ∈ Z} então dizemos que G é um grupo cíclico gerado por a.Neste
caso escrevemos G = a.
Definição 1.10 A ordem n de um elemento a em um grupo G {(multiplicativo) ou (com identidade e)} é o menor inteiro positivo tal que an = e.
Definição 1.11 Em um grupo G, um subconjunto S de elementos com a
propriedade de que todo elemento de G pode ser escrito como um produto de
elementos de S é denominado um conjunto de geradores de G. Denota-se
isto por G = S e diz-se que G é gerado por S.
Exemplo 1.5
(a) (Zm , +) é cíclico, ∀ m > 1.
Zm = {0, 1, . . . , (m − 1)}. Tomando como exemplo Z2 temos que
Z2 = {0, 1}, que é gerado por 1. Vejamos: 0 · 1 = 0 e 1 · 1 = 1. E Z3 ,
Z4 , . . ., Zm , também são gerado por 1, logo temos que para m ∈ Zm
e a ∈ {0, 1, . . . , (m − 1)}, temos Zm = {a · 1 tal que a ∈ Zm }. Assim
como 1 gera o grupo (Zm , +), logo (Zm , +) é cíclico.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
11
(b) Se G = a é um grupo cíclico de ordem 6. Sendo H = a2 , construa
a tábua do grupo G/H:
·
H
H
aH
H
aH
aH aH H
Sendo G = {e, a, a2 , a3 , a4 , a5 } e H = {e, a2 , a4 }. Então G/H = {e, a2 , a4 } =
H, G/H = {a, a3 , a5 } = a.H, G/H = {a2 , a4 , a6 } = {a2 , a4 , e} = H,
como G é abeliano então xH = Hx, ∀ x ∈ G.
(c) Considere o conjunto dos números inteiros Z sob a operação de adição
usual. Claramente o conjunto 4Z forma um subgrupo de Z. As classes
laterais de 4Z em Z são dadas por:
0 = 0 + 4Z = {. . . , −12, −8, −4, 0, 4, 8, 12, . . .},
1 = 1 + 4Z = {. . . , −11, −7, −3, 1, 5, 9, 13, . . .},
2 = 2 + 4Z = {. . . , −10, −6, −2, 2, 6, 10, 14, . . .},
3 = 3 + 4Z = {. . . , −9, −5, −1, 3, 7, 11, 15, . . .},
4 = 4 + 4Z = 0.
O conjunto dessas classes laterais Z/4Z = {0, 1, 2, 3} forma então um
grupo quociente cuja tabela de Cayley é ilustrada abaixo:
∗ 0 1 2 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
1.3
12
Anéis
O estudo de anéis tem seu ponto de partida a partir da teoria de anéis de
polinômios e da teoria de inteiros algébricos, sendo que o conceito de anel
surge com o matemático alemão Julius Wilhelm Richard Dedekind (1831 1916).
O termo anel (Zahlring) foi estabelecido no artigo Die Theorie der algebraischen Zahlkörper, Jahresbericht der Deutschen Mathematiker Vereiningung, Vol. 4, 1897, do matemático alemão David Hilbert (1862 − 1943),
mas somente em 1914 surge a primeira definição axiomática de anéis que
foi dada pelo matemático israelense Adolf Abraham Halevi Fraenkel (1891 −
1965).
Definição 1.12 Um anel (A, +, ·) é um conjunto A não vazio, junto com
duas operações binárias, adição “+” e multiplicação “·”, tal que as seguintes
condições são satisfeitas: ∀ a, b, c ∈ R:
(a) (A, +) é um grupo abeliano (A tem um elemento neutro, denotado por
0, e todo x ∈ A tem um inverso aditivo, denotado por −x);
(b) a · (b · c) = (a · b) · c;
(c) a · (b + c) = a · b + a · c e (b + c) · a = b · a + c · a.
Definição 1.13 Um anel no qual a multiplicação é comutativa, a·b = b·a, ∀
a, b ∈ A, é um anel comutativo. Um anel A com uma identidade multiplica-
tiva 1, (∃ 1 ∈ A, ∀ a ∈ A, a · 1 = a = 1 · a) é um anel com unidade. Uma
identidade multiplicativa em um anel é uma unidade.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
Exemplo 1.6
13
(a) (Z, +, ·), (Q, +, ·), (R, +, ·), (C, +, ·) e (Zm , ⊕, ⊙), m >
1, são anéis comutativos com unidades;
(b) R[x] = {
unidade;
n
i=1
ai xi tal que ai ∈ R, n ∈ N}, é um anel comutativo com
(c) Mn (R) = {(aij ) tal que aij ∈ R}, é um anel não comutativo com
unidade In;
(d) Qualquer corpo é um anel comutativo.
Definição 1.14 Seja (A, +, ·) um anel e B ⊆ A, B = ∅. Dizemos que B é
um subanel de A se, e somente se,
(a) B é fechado para as operações de A, isto é, a+ b e a · b ∈ B;
(b) (B, +, ·) também é um anel.
Proposição 1.3 Sejam A um anel e, B ⊆ A, B = ∅. Então B é um subanel
de A se e somente se,∀ a, b ∈ B, temos que:
a − b ∈ B e a · b ∈ B.
Demonstração (⇒): Se B é um subanel então B é um subgrupo de A, então
∀ a, b ∈ B, temos que a − b ∈ B. Ainda como L é subanel então B é fechado
em relação à segunda operação, ou seja, a · b ∈ B.
(⇐): ∀ a, b ∈ B, temos que a − b ∈ B então L é um grupo de A. Logo
a + b ∈ B e a · b ∈ B. Para terminarmos esta prova resta mostrar que B
é um anel além de ser grupo, como já mostramos. Mas ∀ a, b, c ∈ B ⊂ A
temos a · (b · c) = (a · b) · c e a · (b + c) = a · b + a · c, pois A é um anel.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
Exemplo 1.7
14
(a) Z[i] = {a + bi : a, b ∈ Z} é um subanel de C, chamado
de anel dos inteiros de Gauss.
Definição 1.15 Seja (A, +, ·) um anel, então:
(a) Dizemos que um elemento x = 0, x ∈ A, é um divisor de zero se existe
um elemento y = 0 em A, tal que x · y = 0 ou y · x = 0;
(b) Em um anel comutativo (A, +, ·), com unidade, não contendo divisor
de zero diferente de zero é chamado anel de integridade ou domínio de
integridade ou simplesmente domínio, se A satisfaz a seguinte condição:
a · b = 0 então a = 0 ou b = 0;
(c) Considere que A seja um anel com unidade. Um elemento a de A
é denominado inversível em A se existir a−1 em A tal que a · a−1 =
a−1 · a = 1. Se todo elemento não nulo é inversível o anel é chamado
de anel de divisão.
Exemplo 1.8
(a) O anel Z dos números inteiros não tem divisores de
zero;
(b) Seja n um número natural maior do que 1 e seja Zn = {0, 1, . . . , n −1}
com a adição e o produto assim definidos: se a, b ∈ Zn , então a + b é
o resto da divisão por n da soma dos números inteiros a e b e a · b é
o resto da divisão por n do produto dos números inteiros a e b. Então
Zn tem divisores de zero quando e só quando n for primo. Se n não
for primo e se a e b forem números naturais tais que a · b = n então,
em Zn , a · b = 0;
(c) (Z, +, ·), (Q, +, ·), (R, +, ·) e (C, +, ·) são anéis de integridade;
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
15
(d) Todo corpo é um domínio;
(e) Zm é um domínio, se e somente se, m é um número primo;
(f ) Se A é um domínio então A[x] = {
n
i =1
ai xi | ai ∈ A; n ∈ N} é um
domínio. (Anel dos Polinômios com coeficientes em A na variável x).
1.4
Espaços Vetoriais
A noção comum de vetores como objetos com tamanho, direção e sentido,
juntamente com as operações de adição e multiplicação por números reais
forma o conceito básico de um espaço vetorial. Deste ponto de partida então, para definirmos um espaço vetorial, precisamos de uma uma estrutura
(V, +, ·) formada por um conjunto V de elementos, assim temos apenas que
especificar o conjunto, o corpo F, e definir as operações sobre os elementos
deste conjunto, adição em V e multiplicação por escalar em V .
Definição 1.16 Seja F um corpo. Um espaço vetorial sobre F consiste de
um grupo abeliano V sob as operações binárias, adição e multiplicação por
escalar, de cada elemento de V por cada elemento de F à esquerda, satisfazendo as seguintes propriedades, ∀ u, v, w ∈ V e a, b ∈ F:
(a) Associatividade: (u + v) + w = u + (v + w);
(b) Comutatividade: u + v = v + u;
(c) Elemento neutro: ∃ 0 ∈ V ; u + 0 = 0 + u = u;
(d) Elemento inverso: ∃ − u ∈ V ; u + (−u) = (−u) + u = 0;
(e) Se 1 é a unidade de F: 1.u = u.1 = u;
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
16
(f ) a · (b · u) = (a · b) · u;
(g) (a + b) · u = au + bu;
(h) a(u + v) = au + av.
Exemplo 1.9
(a) Todo corpo K é um espaço vetorial sobre o próprio corpo
K com as operações usuais de adição e multiplicação de K;
(b) O corpo R dos números reais é um espaço vetorial sobre o corpo Q dos
números racionais com as operações de adição e multiplicação de R;
(c) O corpo C dos números complexos é um espaço vetorial sobre o corpo
R dos números reais com as operações de adição e multiplicação de C;
(d) O conjunto P [K] de todas as funções polinomiais da forma:
p(x) = a0 + a1 x + a2 x2 + ... + an xn
onde ai ∈ K ( i = 0, 1, 2, ..., n) é um espaço vetorial sobre o corpo K;
n
(e) O conjunto F, dado por Fq = {(a1 , a2 , ..., an ); ai ∈ Fq ; 1 ≤ i ≤ n},
formado por n-uplas de elementos em Fq com as operações:
(a1 , a2 , ..., an ) + (b1 , b2 , ..., bn ) =
(a1 + b1 , a2 + b2 , ..., an + bn )
e
a · (a1 , a2 , ..., an ) = (a · a1 , a · a2 , ..., a · an )
determina um espaço vetorial sobre o corpo Fq , onde q é uma potência
de primo.
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
17
Como veremos futuramente, um código linear de comprimento n sobre Fq
nada mais é do que um subespaço vetorial do espaço de todas as n-uplas Fnq .
Definição 1.17 Seja (V, +, ·) um espaço vetorial. Um subconjunto W ⊆ V
, não vazio, será um subespaço vetorial de V , se as seguintes propriedades
são satisfeitas:
(a) Se o vetor nulo (0) ∈ W ;
(b) Se u, v ∈ W =⇒ u + v ∈ W ;
(c) ∀ a ∈ R; ∀ u ∈ W =⇒ a · u ∈ W .
Observação 1.1 Obviamente {0} e V são subespaços vetoriais do espaço
vetorial V , e são chamados de subespaços vetoriais triviais.
Exemplo 1.10
(a) Seja Pn∗ ⊂ Pn , dado por Pn∗ = {p(x) ∈ Pn ; p(0) = 0}.
Verifiquemos que Pn∗ é, de fato, um subespaço vetorial de Pn .
(i) O polinomio nulo se anula em x = 0, logo, pertence a Pn∗ ;
(ii) Se p(x), q(x) ∈ Pn∗ =⇒ p(0) + q(0) = 0 e, portanto, p(x) + q(x) ∈
Pn∗ ;
(iii) Se p(x) ∈ Pn∗ =⇒ λp(0) = 0, para qualquer λ ∈ R. Assim,
λp(x) ∈ Pn∗ .
(b) Verifiquemos que S = {(x, y, z) ∈ R3 ; x + y + z = 0} é um subespaço
vetorial de R3 .
(i) É claro que (0, 0, 0) satisfaz 0 + 0 + 0 = 0;
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
18
(ii) Se (x, y, z), (u, v, w) ∈ S então
(x + u) + (y + v) + (z + w) =
(x + y + z) + (u + v + w) = 0,
portanto, (x, y, z) + (u, v, w) ∈ S;
(iii) Se (x, y, z) → S então λx + λy + λz = λ(x + y + z) = 0, para
qualquer λ ∈ R. Assim λ(x, y, z) ∈ S.
(c) Considere o seguinte conjunto S = {y ∈ C2 (R; R); y” − y = 0} onde
y” representa a derivada de segunda ordem de y. Verifiquemos que S
é um subespaço vetorial de C2 (R; R).
(i) Claramente a função nula satisfaz 0” − 0 = 0;
(ii) Se y1 , y2 ∈ S entao (y1 +y2 )”−(y1 −y2 ) = (y”1 −y1 )−(y”2 −y2 ) = 0.
Logo, y1 + y2 ∈ S;
(iii) Se y ∈ S e λ ∈ R entao (λy)” − λy = λ(y” − y) = 0. Portanto, λ
y ∈ S.
Definição 1.18 Seja V = {0} um espaço vetorial. Uma base de V é uma
sequência de vetores linearmente independentes (LI) (α1 v1 +...+αn vn = 0 ⇒
α1 = ... = αn = 0) de V que também gera V .
Exemplo 1.11
(a) Os vetores de B = {(1, 0, 0), (0, 1, 0), (0, 0, 1)} formam
uma base de R3 . Vê-se facilmente que os vetores de B são LI, e que
todo (x, y, z) ∈ R3 se escreve como
(x, y, z) = x(1, 0, 0) + y(0, 1, 0) + z(0, 0, 1);
CAPÍTULO 1. ÁLGEBRA LINEAR SOBRE CORPOS FINITOS
19
(b) Os vetores e1 , ..., en ∈ Rn onde e1 = (1, 0, . . . , 0), e2 = (0, 1, 0, . . . , 0),
. . . , en = (0, . . . , 0, 1) formam uma base de Rn .
Proposição 1.4 Sejam v1 , v2 , ..., vn vetores não nulos que geram um espaço
vetorial V . Então dentre estes vetores sempre podemos extrair uma base para
V .
Demonstração Se v1 , v2 , . . . , vn são LI, então por definição eles formam
uma base. Se v1 , v2 , . . . , vn são LD, então deve existir uma combinação linear
desses vetores com algum coeficiente diferente de zero, satisfazendo x1 v1 +
... + xn vn = 0. Suponha xn = 0. Da equação acima,
vn = −
x1
xn−1
v1 − . . . −
vn−1
xn
xn
onde, vn é combinação linear de v1 , v2 , . . . , vn−1 e portanto v1 , v2 , . . . , vn−1
geram V . Se {v1 , v2 , . . . , vn−1 } for LD, então existe uma combinação linear
não nula desses vetores resultando no vetor nulo. Portanto, podemos extrair
aquele vetor que corresponde a este coeficiente. Seguindo dessa forma, após
uma quantidade finita de passos, chegamos a um subconjunto de {v1 , v2 , . . . , vr }
formado por r(r ≤ n) vetores LI, que ainda geram V , ou seja, formamos uma
base.
Definição 1.19 Seja V um espaço vetorial finitamente gerado. Se V =
{0} definimos a dimensão de V como sendo 0. Se V = {0} definimos a
dimensão de V como sendo o número de elementos de uma base qualquer de
V . Indicaremos por dimV para designar a dimensao de V .
Definição 1.20 Um espaço vetorial V sobre um corpo F tem dimensão finita,
se existe um subconjunto finito de V cujos vetores geram V .
Capítulo 2
Corpo Finito
Entre os mais variados tipos de corpos estaremos nos detendo aos que mais
nos interessam neste trabalho, o corpos finitos.
Definição 2.1 Seja (K, +, ·) um anel comutativo, com unidade, tal que todo
elemento não nulo é inversível, dizemos que K é um corpo, se
∀ a = 0 ∈ K, ∃ b = a−1 ∈ K,
tal que a · a−1 = 1.
Definição 2.2 Seja K um corpo e L = ∅ ⊆ K. Então, L é um subcorpo de
K se, e somente se, (L, +, ·) é um corpo,
∀ a, b ∈ L; a − b e a · b ∈ L e ∀ a ∈ L\{0}; a−1 ∈ L.
Exemplo 2.1
(a) Os anéis (Q, +, ·), (R, +, ·) e (C, +, ·) são corpos;
(b) Q[i] = {a + bi tal que a, b ∈ Q} é um subcorpo de C;
√
√
(c) Q[ p] = {a + b p tal que a, b ∈ Q} é um subcorpo de R se p > 0 e é
um subcorpo de C se p < 0.
20
CAPÍTULO 2. CORPO FINITO
21
Equivalentemente, podemos definir:
Definição 2.3 Seja K um conjunto não vazio sobre o qual podem ser definidas
as operações binárias ⊕ e ⊗, a estrutura (K, ⊕, ⊗) é um corpo se:
(a) (K, ⊕) é um grupo abeliano;
(b) (K− {0}, ⊗) é um grupo abeliano;
(c) ⊗ é distribuitiva em relação à operação ⊕.
Exemplo 2.2
(a) O conjunto K = {0, 1, 2, 3} munido com as operações
de adição ⊕ e multiplicação ⊗, definidas pelas tabelas:
⊕ 0 1 2 3
⊗ 0 1 2 3
0
0 1 2 3
0
0 0 0 0
1
1 2 3 0 e 1
0 1 2 3
2
2 3 0 1
2
0 2 0 1
3
3 0 1 2
3
0 3 2 1
representa um estrutura de corpo com uma quantidade finita de elementos.
Os corpos são ferramentas de suma importância para o estudo da teoria
dos códigos, a seguir estaremos trazendo uma abordagem mais aprofundada
sobre corpos finitos, sobre os quais os códigos estão definidos, mais especificamente os corpos Zp , que será a base para o entendimento do proxímo
capítulo.
Um corpo finito é um corpo em que o conjunto dos elementos é finito,
sendo que a sua estrutura se aplica em muitas áreas, entre elas a teoria
dos códigos (podemos nos deter aqui ao corpo binário), geometria projetiva,
CAPÍTULO 2. CORPO FINITO
22
combinatória, criptografia (estudo dos Sistemas Criptográficos Baseados em
Curvas Elípticas).
Um exemplo bem familiar é o corpo finito Fp = (Zp ) dos inteiros módulo
p (p primo).
Existem corpos finitos com cardinalidade não prima (por exemplo, existe
corpo com 4 elementos). De forma geral, para todo primo p e para todo inteiro positivo m, existe um corpo finito com pm elementos (este é o conhecido
teorema de Galois da teoria dos corpos finitos). Mais ainda, se K é um corpo
finito, então a cardinalidade de K é uma potência de primo (se K é um corpo
finito então sua característica é um número primo p; consequêntemente existe
um subcorpo K ′ ⊆ K isomorfo a Zp ; desta forma temos que K é um espaço
vetorial sobre o corpo Zp ; como dimZp (K) é finita, digamos m, concluímos
que |K| = pm ).
Exemplo 2.3 Seja f = z 4 + z + 1. Afirmamos que o anel quociente
Z2 [x]
f é um corpo finito com 24 elementos:
0
z2
z3
z3 + z2
1
z2 + 1
z3 + 1
z3 + z2 + 1
z
z2 + z
z3 + z
z3 + z2 + z
z + 1 z2 + z + 1 z3 + z + 1 z3 + z2 + z + 1
Multiplicação: (z 3 + z 2 + 1).(z 2 + z + 1) = z 2 + 1, já que (z 3 + z 2 + 1).(z 2 +
z + 1) = z 5 + z + 1, e (z 5 + z + 1) mod (z 4 + z + 1) = z 2 + 1, a tabela da
multiplicação fica como exercício ao leitor; Inversão: (z 3 + z 2 + 1)
já que (z 3 + z 2 + 1) · z 2 mod(z 4 + z + 1) = 1.
−1
= z2,
CAPÍTULO 2. CORPO FINITO
23
Após esta analise dos corpos finitos, onde já exemplificamos os de ordem
prima e binária, devemos ressaltar que existem outros corpos finitos muito
comuns no estudo de códigos lineares, que são os corpos: ternário com 3
elementos (q = 3) e o quaternário, de 4 elementos (q = 4), que serão exemplificados a seguir:
Exemplo 2.4
(a) O corpo ternário F3 com os elementos {0, 1, 2} tem as
seguintes tabelas de adição e multiplicação no módulo 3:
+ 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
(b) O corpo quaternário F4 com os elementos {0, 1, a, b}, admite as seguintes
tabelas de adição e multiplicação (F4 não é o anel dos inteiros módulo
4):
+ 0 1 a b
.
0 1 a b
0
0 1 a b
0 0 0 0 0
1
1 0 b a e 1 0 1 a b
a
a b 0 1
a 0 a b 1
b
b a 1 0
b 0 b 1 a
Devemos evidenciar que não existe nenhum corpo finito em que a ordem
não seja uma potência de número primo, como exemplo, evidenciamos que
não existe um corpo de ordem 6. No entanto, temos uma infinita sequência
de corpos Zm finitos, dado por:
Z2 , Z3 , Z5 , Z7 , Z11 , ... (m ∈ Z, m é primo).
Capítulo 3
Códigos Lineares
No ano de 1948, com a publicação do artigo “A Mathematical Theory of
Communication”, do engenheiro e matemático estadunidense Claude Elwood
Shannon (considerado fundador da teoria da informação), surge a teoria dos
códigos, que trabalha com sistemas de comunicação, transmissão de dados,
codificação, correção de erros, etc.
A teoria dos códigos através da sua estrutura trata da codificação, decodificação, detecção e correção de erros, durante a transmissão e recepção de
dados (informações).
Hoje em nosso meio, a quase todo momento de nosso cotidiano, estamos
utilizando algum tipo de código, dos mais variados que existem, podemos nos
referir quando usamos algum meio digital, como exemplos podemos citar:
quando estamos utilizando a internet, enquanto ouvimos música de um CD
ou de uma rádio, quando assistimos a um programa de televisão, falamos ao
celular, entre muitos outros. Mas em determinados momentos podem surgir
alguns tipos de erros, como chuvisco, ruídos, turbulência, etc, podendo assim
nos dar uma informação não desejada. Diante disso a teoria dos códigos vem
24
CAPÍTULO 3. CÓDIGOS LINEARES
25
para detectar e corrigir estes erros para que possamos receber a mensagem
correta.
Um significado em termos gerais para um determinado código, para uma
melhor visualização do leitor, é a idéia de substituição simples de palavras ou
frases por algum tipo de alfabeto, por exemplo, podemos substituir a frase
“Atacar imediatamente” por “Sou Brasileiro”.
Para o envio de uma mensagem, necessitamos de um sistema de comunicaão,
que segue a seguinte ordem na transmissão de dados: a mensagem será enviada de uma determinada fonte, que é processada pelo codificador da f onte,
que codifica os dados em determinados símbolos (palavra código da fonte),
logo os dados passam ao codif icador de canal, transformando a palavra
código da fonte em palavra código do canal, em seguida o modulador converte cada símbolo da palavra código do canal, que é transmitida pelo canal
de comunicaccão ao demodulador, que converte cada símbolo da palavra
código do canal, cometendo as vezes alguns erros, após demoluda, a palavra
recebida passa ao decodificador do canal, que corrige os erros, após feita
a correção, o decodif icador da fonte (operação inversa do codificador da
fonte), transmiti a mensagem para o determinado destino.
Neste capítulo estaremos abordando a classe dos códigos lineares, que são
os mais utilizados entre as famílias de códigos, utilizando-se aqui o conteúdo
estudado nos capítulos anteriores.
Um corpo finito será designado por Fq . O espaço vetorial sobre Fq de
dimensão n ∈ N será denotado por Fnq .
CAPÍTULO 3. CÓDIGOS LINEARES
3.1
26
Preliminares
Podemos representar nossa mensagem por uma sequência de dados, chamado
de Alf abeto do código e denotado por A. O alfabeto mais usado em teoria
dos códigos é o dos corpos binários. Esta sequência pode ser escrita por
uma informação binária, sendo que podemos definir as operações de soma e
produtdo deste alfabeto binário através dos anéis dos inteiros módulo m.
A critério de exemplo temos A = {0, 1}, e para que esta informação con-
tenha o mínimo de erros, partimos para o acrescímo de símbolos ao alfabeto,
como podemos ver no código de repetição, que acrescenta o mesmo símbolo
n vezes a informação, por sua vez nosso alfabeto A poderia ser escrito por:
0 → 0000
1 → 1111
logo nosso código seria C = {0000, 1111}.
n
Definição 3.1 Um código C ⊂ Fq será chamado de código linear se for um
n
subespaço vetorial de Fq .
Um código, cujo seu tamanho seja T , é designado pelo seu comprimento
n, e por sua dimensão K, denotado por [n, k] − código, na maioria das vezes
T = 2k (k ∈ Z), e tem q k palavras códigos, sendo que a soma de duas palavras-
código quaisquer é uma palavra-código e o produto de qualquer palavracódigo por elemento de Fq é uma palavra-código, de um determinado código.
Dado um código de dimensão K e {u1 , u2 , ..., uk } a base de C, temos:
C = {λ1 u1 , λ2 u2 , ..., λk uk ; λ1 , ..., λ1 ∈ Fq}.
Exemplo 3.1 Seja C o [n, k] - código
C = {00000, 01011, 10110, 11101},
CAPÍTULO 3. CÓDIGOS LINEARES
27
assim temos que n = 5, k = 2 e T = 4.
n
Definição 3.2 Dados dois vetores u, v ∈ Fq , a distância entre u e v é denominada distância de Hamming, definida como:
d (u, v) = |{i : ui = vi }|
onde u = (u1 , ..., un ) e v = (v1 , ..., vn ).
A distância de Hamming entre duas palavras-código, u e v, é o número de
coordendas distintas entre estes vetores, sendo que distância mínima (menor
distância de Hamming entre quaisquer duas palavras-código) de um código
C, determina o número de erros para serem corrigidos, ou seja, um código
pode detectar até d − 1 erros e corrigir até t erros, onde t = [ d −2 1 ]. Um
[n, k] − código com distância mínima d é denotado por [n, k, d] − código.
Exemplo 3.2
(a) Calculando a distância de Hamming das palavras-código
durante uma certa transmissão de dados, sendo u = (11101) enviada e
v = (10110) recebida, então temos:
d(11101, 10110) = 3;
(b) Dado o código linear C = {(00000), (01011), (11101)} , devemos encon-
trar a distância mínima entre as palavras-códigos e o número de erros
a serem corrigidos:
d(00000, 01011) = 3;
d(00000, 11101) = 4;
d(01011, 11101) = 3;
d(c) = min{d(x, y)} = 3;
d − 1
3 −1
t=[
]=
= 1.
2
2
CAPÍTULO 3. CÓDIGOS LINEARES
28
n
Definição 3.3 Dados um elemento a ∈ Fq e um número natural t > 0 ,
definimos o disco e a esfera de centro a e raio t como sendo, respectivamente,
os conjuntos:
n
(a) D(a, t) = {u ∈ Fq : d(u, a) ≤ t};
n
(b) S(a, t) = {u ∈ Fq : d(u, a) = t}
Exemplo 3.3
(a) Considere
F42 = {(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 1, 0, 0), (1, 0, 0, 0),
(1, 0, 0, 1), (1, 0, 1, 0), (1, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0),
(0, 0, 1, 1), (1, 1, 1, 0), (0, 1, 1, 1), (1, 0, 1, 1), (1, 1, 0, 1),
(1, 1, 1, 1)},
Assim, para a = (0, 0, 0, 0) e t = 1, temos que :
D(a, 1) = {(0, 0, 0, 0), (0, 0, 0, 1),
(0, 0, 1, 0), (0, 1, 0, 0), (1, 0, 0, 0)}
e
S(a, 1) = {(0, 0, 0, 1), (0, 0, 1, 0),
(0, 1, 0, 0), (1, 0, 0, 0)}
Note que Fnq = D(a, 4).
(b) Considere
F32 = {(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1),
(1, 0, 1), (1, 1, 0), (0, 1, 1), (1, 1, 1)}
CAPÍTULO 3. CÓDIGOS LINEARES
29
Assim, para a = (0, 0, 0) temos que :
D(a, 2) = {(0, 0, 0), (0, 0, 1), (1, 0, 0), (0, 1, 0),
(1, 0, 1), (1, 1, 0), (0, 1, 1)}
e
S(a, 2) = {(1, 0, 1), (0, 1, 1), (1, 1, 0)}.
Definição 3.4 Seja C ⊂ Fnq um código com distância mínima d e seja t =
[ d −2 1 ]. O código C será dito perfeito se: ∪c ∈ C Dt (c, t) = Fnq .
Exemplo 3.4 O código C = {(000), (111)} ⊂ F32 que possui raio de empa-
cotamento t = 1 é perfeito. Como c e c′ são palavras distintas de C, então
Dt(c) ∩ Dt(c′) = :
D1 (000) ∩ D1 (111) = {(000), (100), (010), (001)} ∩
{(111), (110), (011), (101)}
=
e
D1 (000) ∪ D1 (111) = F32 .
Logo C é perfeito.
Definição 3.5 Seja α ∈ Fnq , define-se o peso de Hamming de α como sua
distância à palavra nula, dado pelo número inteiro:
w(α) = |{i : αi = 0}| , ou seja, w(α) = d(α, 0).
Definição 3.6 O peso mínimo de um código C é o inteiro:
w(C) = min{w(v) : v ∈ C − {0}}.
CAPÍTULO 3. CÓDIGOS LINEARES
30
Proposição 3.1 Seja um código linear C ⊂ Fnq , com distância mínima d,
temos que:
(a) Para quaisquer u, v ∈ Fnq , d(u, v) = w(u − v);
(b) d(C) = w(C).
Demonstração O item a provém das definições de métrica e peso de Hamming, e o item b além da métrica de Hamming, decorre do peso do código C,
de fato temos:
(a) d(u, v) = |{i : ui = vi }| = |{i : ui − vi = 0}|
(b) ∀ u, v ∈ C, com u = v , temos que u − v = z ∈ C então d(u, v) = w(z).
Logo, o conjunto {w(z) : z ∈ C − {0}} = {d(u, v) : u, v ∈ C e u = v}
então d = min{d(u, v) : u, v ∈ C e u = v} = min{w(z) : z ∈ C −
{0}} = w(C).
Antes de entrarmos no proxímo sub item deste capítulo, vamos verificar
a maneira de como podemos representar um código linear.
Com vimos anteriormente, já sabemos por definição que um código linear
C é um subespaço vetorial do espaço vetorial Fnq , então pela álgebra linear, temos duas maneiras de descrevê-lo, sendo como imagem (Im) ou como
núcleo (Ker) de uma transformação linear. Para descrever o código linear
C como a imagem, tomamos uma base v1 , v2 , . . . , vk ∈ C e consideramos a
transformação linear T :
CAPÍTULO 3. CÓDIGOS LINEARES
T : Fkq
31
→ Fnq
(x1 , . . . , xk ) → (x1 v1 + . . . + xk vk )
Como o núcleo de T é nulo, temos que T é injetora. No entanto para
n
construirmos C ⊂ Fq basta mostrarmos uma transformação linear injetora
T : Fkq → Fnq , definindo o código linear C = Im(T ).
Considerando a transformação linear:
T : F22
→ F42
(a1 , a2 ) → (a1 , a2 , a2 , a1 ),
Temos que T (a1 , a2 ) = (0, 0, 0, 0), se (a1 , a2 , a2 , a1 ) = 0, ou seja, a1 =
a2 = 0. Logo Ker(T ) = {(0, 0)} e Im(T ) = C. Portanto T é injetora. Como
a1 , a2 ∈ F2 , temos que |C| = 22 = 4 e:
C = {(0, 0, 0, 0); (1, 0, 0, 1); (0, 1, 1, 0); (1, 1, 1, 1)}
Como d(C) = w(C) = 2 então C corrige t = 0 erros, ou seja, é um código
ineficiente.
3.2
Matriz geradora e de paridade
Como um código linear é um subespaço vetorial, logo o que o gera é um
conjunto de vetores que forma uma base para este subespaço. Se C é um
[n, k, d] − código em Fnq , podemos tomar uma base ordenada {vi , ..., vk } =
B ⊂ C onde vi = (vi1 , vi2 , ..., vin ), com 1 ≤ i ≤ k. Logo definimos a matriz
de ordem k × n, cujas linhas são os vetores da base, da seguinte forma:
CAPÍTULO 3. CÓDIGOS LINEARES

 
vi
 .  
.  
G=
 . =
vk
32
v11 v12
..
..
.
.
···
..
.
vk1 vk2
···

v1n
.. 
. 
,
vkn
A matriz G é denominada de matriz geradora de C.
Ressaltamos que a matriz geradora não é única, ela varia de acordo com
a base escolhida.
Podemos obter uma nova matriz G′ para gerar o mesmo código, através
de sequências de operações elementares de escalonamento: permutação de
duas linhas, multiplicação de uma linha por um elemento não nulo de Fq ,
substituição de uma linha por ela mesma somada a um múltiplo escalar de
outra linha.
Consideremos a transformação linear definida por:
k
n
T : Fq → Fq
a
→ a · G
k
Temos então que C = {a · G : a ∈ Fq }.
Definição 3.7 Uma matriz geradora G de um [n, k]−código C está na forma
padrão se G = (Idk |A), sendo que Idk é a matriz indentidade k × k e A uma
matriz k × (n − k).
Exemplo 3.5 Seja a matriz geradora G na forma padrão:

1 0 0 0 1 1



,
G=
0
1
0
1
0
1


0 0 1 1 1 0
CAPÍTULO 3. CÓDIGOS LINEARES
33
então temos k = 3 e n = 6, ou seja, [n, k] = [6, 3] − código. Dado um vetor
u = (101), temos que
C = u·G=
u1 · v11 + u2 · v21 + u3 · v31 , ...,
u1 · v16 + u2 · v26 + u3 · v36
= (101101).
Para definição a seguir, denotaremos o produto interno entre dois vetores
por a, b, ou seja, ∀ u, v, w ∈ Fnq e λ ∈ Fq , temos:
u, v = u1 v1 + u2 v2 + ... + un vn = u · v =
n
ui vi ,
i=1
desta operação temos algumas propriedades usuais:
(a) u, v = v, u;
(b) u + w, v = u, v + w, v;
(c) λu, v = λ u, v.
Definição 3.8 Dado o código linear C ⊂ Fnq , define-se o código dual da
seguinte forma:
C ⊥ = {v ∈ Fnq : v, u = 0, ∀ u ∈ C}.
Através da dimensão de um código dual, que é dada por n−k, podemos escrever uma base {h1 , h2 , . . . , hn−k } para C ⊥ , sendo onde hi = (hi1 , hi2 , ..., hin ),
CAPÍTULO 3. CÓDIGOS LINEARES
34
com 1 ≤ i ≤ n − k, assim podemos escrever a matriz geradora de C ⊥ , de
ordem (n − k) × n:

 
h1
h11
h12
 .
  .
..
 =  ..
.
H=
.
 .
 
hn−k
h(n−k)1 h(n−k)2
···
..
.
h1n
···
h(n−k)n
···




Esta matriz H recebe o nome de matriz verificação de paridade do código
C, a partir dela podemos concluir que se uma n-upla é uma palavra-código
do código C. Logo uma n-upla será uma palavra-código se e só se, H · xt = 0
(vetor nulo), onde xt denota a transposta de x.
Teorema 3.1 Seja C ⊂ Fnq um código de dimensão k gerado pela matriz
G = (Idk |A). Então H = (−AT |Idn−k ) matriz verificação de paridade de C
é a matriz geradora de C ⊥ .
Demonstração De fato por Idn−k as linhas de H são LI, logo geram um
subespaço vetorial W de dimensão n − k. As linhas de H são ortogonais as
linhas de G, pois H.GT = 0. Portanto os vetores formados pelas linhas de H
estão contidos em C ⊥ , logo W ⊂ C ⊥ . Como a dimW = n−k = dim(C ⊥ ) en
tão estes subespaços coicidem e concluímos que H = −AT |Idn−k gera C ⊥ .
Não podemos nos esquecer que como existem inúmeras maneiras de se
escolher uma base para um mesmo código, então um número igual de matrizes
geradoras G também é possível, logo podemos concluir que existe mais de
uma matriz de paridade H.
CAPÍTULO 3. CÓDIGOS LINEARES
Exemplo 3.6
35
(a) Considere a matriz G na forma padrão, dada por:

1 0 0 1 0


1 0 1 1 0



,
G=
0
1
0
0
1


0 0 1 1 1
então temos que
H=
0 1 1 0 1
.
(b) Suponha o código C sobre F2 com matriz geradora G abaixo. Vamos
determinar se o vetor v = (1010101) ∈ F72 pertence a C.

1 0 0 0 1 0 1

 0 1

G = 
 0 0

0 0

1 1

= 
 0 1
1 1


0 0 1 1 1 

 = (Id4 |A) =⇒ −At
1 0 0 1 1 

0 1 1 1 0

0 1

1 1 
,
1 0
logo podemos escrever H,

1 0 0 1 1 0 1



 = (Id3 | − AT ),
H=
0
1
0
0
1
1
1


0 0 1 1 1 1 0
Agora basta verificar se H · v t = 0, então:
CAPÍTULO 3. CÓDIGOS LINEARES
36

H · vt




 

1 0 0 1 1 0 1


 


=  0 1 0 0 1 1 1 ·



0 0 1 1 1 1 0





1+1+1

= 
 1+1
1+1


1

1



0 

1 


0 


1 


0 

1
  
 =  0  = (000),
  
0
logo não obtivemos o vetor nulo, portanto v não é uma palavra código
de C.
(c) Seja um [5, 2] − código ∈ F2 , onde temos a seguir a matriz de paridade
H. Verificaremos se z = (10110) pertence ao código.

1 0 1 0 0



,
H=
1
1
0
1
0


0 1 0 0 1
basta então verificar se H · z t = 0:
H · zt

1

  
 0 
 

  
  
= 
 1 1 0 1 0 · 1 
 
 1 
0 1 0 0 1
 
0

1 0 1 0 0
CAPÍTULO 3. CÓDIGOS LINEARES

1+0+1+0+0
37


0


  
 =  0  = (000),
= 
1
+
0
+
0
+
1
+
0

  
0+0+0+0+0
0
ou seja, z ∈ C.
Proposição 3.2 (Limitante de Singleton): A distância mínima (peso mínimo) de um [n, k, d] − código linear C ⊂ Fnq satisfaz:
d ≤n−k+1
Demonstração Considere um subespaço linear W ⊆ Fnq dado por W =
{(a1 , . . . , an ) ∈ Fnq | ai = 0; ∀i ≥ d} e d o menor peso de uma palavra-
código não nula. Logo para um a ∈ W temos que w(a) ≤ d − 1, portanto
W ∩ C = {0}. Como dimW = d − 1 temos,
dimC + dimW = dim(C + W ) + dim(C ∩ W )
= dim(C + W ) ≤ n
Logo k + d − 1 ≤ n =⇒ k + d ≤ n + 1 =⇒ d ≤ n − k + 1.
Satisfazendo a igualdade do Limitante de Singleton (d = n − k + 1),
temos excelentes códigos os denominados MDS (maximum distance separable), como exemplo o código de Reed-Solomon.
3.3
Código de Hamming
Vamos nos deter aqui ao código binário de Hamming, que é definido sobre
o corpo Z2 , que serve para a detecção de erros em transmissões de dados
CAPÍTULO 3. CÓDIGOS LINEARES
38
binários, mas não apenas para detectar o erro de um bit, mas também para
a localização do bit errado . Este código foi implementado por Richard
Hamming em 1950.
Proposição 3.3 Seja C um código binário e seja H uma matriz de teste
para C. Se todas as colunas de H são não-nulas e distintas, então a distância
mínima de C é pelo menos três.
Um código binário de Hamming, é um exemplo de código cuja a distância
mínima é pelo menos 3, sendo que a sua matriz verificação de paridade é a
matriz Hr de ordem r × n, onde:
r −1
Hr = {x ∈ F22
: Hr · xt = 0}
O comprimento das palavras deste código é n = 2r − 1, pois o número
de colunas da matriz Hr é 2r − 1, a dimensão é k = n − r = 2r − r − 1, e
como a distância é pelo menos 3, temos então que os parâmetros de Hr são
[2r − 1, 2r − r − 1, 3], para qualquer r > 1.
Exemplo 3.7
(a) Seja r = 2, então:

Hr = 
1 0 1
0 1 1


é a matriz verificação de paridade do código H2 = {(000), (111)}. Ob-
serve que quaisquer duas colunas de Hr são LI e que h3 = h1 + h2 .
Portanto d(H2 ) = 3 e os parâmetros de H2 são [3, 1, 3].;
CAPÍTULO 3. CÓDIGOS LINEARES
39
(b) Dado o código [7, 4], a matriz verificação de paridade que gera o código
H3 é:

1 0 0 0 1 1 1



.
H3 = 
0
1
0
1
0
1
1


0 0 1 1 1 0 1
Teorema 3.2 (Limitante de Hamming) Seja um [n, k, d] − código C ⊂ Fn2 e
seja t = [ d 2- 1 ] então:
q
n−k
n
n
n
≥
+
+ ... +
.
0
1
t
Logo o código que obter a igualdade na expressão acima, será dito que é
um código perfeito, assim podemos concluir que o código de Hamming Hr é
perfeito.
3.4
Código de Reed-Solomon
O código de Reed-Salomon é um código corretor de erros, que foi desenvolvido
para efetuar a correção de erros múltiplos em diversos sistemas. Este código
é uma importante subclasse dos códigos de blocos não-binários BCH (BoseChaudhuri-Hocquenghem).
O código de Reed-Salomon é uma forma de FEC (Forward Correction
Error: procura inferir e imediatamente corrigir erros pela característica do
sinal recebido) e é utilizado em diversas aplicações em comunicação digital e
armazenamento, como é o caso do ADSL e comunicação via celular.
Um código de Reed-Solomon é denotado como RS, com símbolos de bbits, onde n é o número total de bits por palavra do código e k é o número
de bits de informação por palavra de código.
CAPÍTULO 3. CÓDIGOS LINEARES
40
Por exemplo, se forem utilizados grupos de 6 bits, pode-se gerar códigos
de Reed-Solomon. Um código RS − [64, 40] consisti em palavras código de
64 × 6 = 384 bits, cada uma contendo 240 bits de informação, tratados como
40 símbolos de 6 bits. Um decodificador Reed-Solomon pode corrigir até
t símbolos incorretos, onde t =
exemplo t =
64 − 40
2
Exemplo 3.8
n−k
,
2
ou seja, pode-se corrigir então neste
= 12 símbolos.
(a) Dado um RS − [255, 223], então teremos, 223 bits de
informação, 32 bits de correcção de erros e corrige até 16 bits errados.
Teorema 3.3 Seja Am (m um natural menor do que q) um conjunto de
polinômios, que tem grau no maxímo m,
Am = {a0 + a1 x + ... + am xm : ai ∈ Fq },
então da aplicação
ϕ : Am → Fqq
p
→ (p (0) , p (α1 ) , . . . , p (αq−1 ))
que é linear e injetora, temos que a imagem de ϕ é o código Reed-Solomon
[q, m + 1, q − m].
3.5
Considerações Finais
A teoria dos códigos cresce gradativamente, junto a evolução dos meios de
comunicação (telefone, celular, internet, televisão) e a cada dia se tornando
mais acessível a toda sociedade. Por causa deste acesso, logo nossos professores de matemática do ensino secundário poderão instigar seus alunos a
uma pesquisa sobre códigos lineares.
CAPÍTULO 3. CÓDIGOS LINEARES
41
Nosso trabalho visa em relembrar conceitos de algebra e mostrar as definições
de códigos lineares, para que o leitor ganhe interesse pelo assunto, para que
o mesmo possa posteriormente degustar de uma leitura mais profunda.
Como a teoria dos códigos é um assunto muito novo esperamos que este
assunto seja tema de muitas monografias a serem escritas, pois existe muito
a se descobrir.
Referências Bibliográficas
[1] BERLEKAMP, E. R. Key papers in the development of coding theory.
IEEE Press, 1974.
[2] BOLDRINI, J. L. et al. Álgebra linear. Editora Harbra Ltda, 1980.
[3] CRISSAFF, Lhaylla.Uma construção algébrica de códigos geométricos. Dissertação (Mestrado). Orientador: Nicolau Corção Saldanha; coorientador: Miriam Del Milagro Abdón. Rio de Janeiro : PUC-Rio, Departamento de Matemática, 2005.
[4] DOMINGUES, H. H.; IEZZI, G. Álgebra moderna. Atual Editora, 1982.
[5] GUNDLACH, B. H. História dos números e numerais. Trad. Hygino H.
Domingues. São Paulo, Atual, 1992.
[6] MELO, F. D. A Teoria de Galois e os Números Algébricos. Artigo (Pós-Graduação). Orientador: Trajano Pires da Nóbrega Neto.
IBILCE/UNESP - Sao José do Rio Preto - SP, Brasil.
[7] PLESS, V. S.; HUFFMAN, W. C. Handbook of coding theory. Elsevier,
1998.
[8] SHANNON, C. E. A mathematical theory of communication. Bell System
Tech. J. 27 (1948), 379-423.
42
REFERÊNCIAS BIBLIOGRÁFICAS
43
[9] VERA, Paula Fernanda. Código Binário de Golay Estendido em Espaços Poset. Monografia (Graduação). Orientador: Luciano Panek. Foz
do Iguaçu: UNIOESTE-PR, Centro de Engenharias e Ciências Exatas,
2007.
Download