Códigos cíclicos - Parte 1 Luis Henrique Assumpção Lolis 20 de novembro de 2013 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 1
Conteúdo 1 Introdução 2 Polinômio gerador e verificador de paridade 3 Matrizes geradoras e de verificação de paridade 4 Codificação de Códigos Cíclicos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 2
Sumário 1 Introdução 2 Polinômio gerador e verificador de paridade 3 Matrizes geradoras e de verificação de paridade 4 Codificação de Códigos Cíclicos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 3
Introdução É uma subclasse de códigos de bloco lineares Satisfaz as seguintes relações: 1 Propriedade da linearidade: a soma de duas palavras-código quaisquer também uma palavra código. 2 Propriedade cíclica: qualquer deslocamento cíclico de uma palavra código também é uma palavra código. c (1) = (c n 1, c 0,..., c n 2 ) c (i) = (c n i, c n i+1,..., c n 1, c 0, c 1,..., c n i 1 ) Para desenvolver as propriedades algébricas do código cíclico, consideramos cada componente de uma palavra código c(x) = c 0 + c 1 X + c 2 X 2 +... + c n 1 X n 1 Cada palavra código corresponde a um polinômio de grau n 1 ou menos. Depende do coeficiente de maior grau ser 1. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 4
A correspondência entre a palavra chave e o polinômio é de um pra um. Agora analisando o polinômio de X deslocado de i, c (i) (X): c (i) (X) = c n i + c n i+1 X +... + c n 1 X i 1 + c 0 X i + c 1 X i+1 +... + c n i 1 X n 1 Multiplicando c(x) por X i, temos: X i c(x) = c 0 X i + c 1 X i+1 +... + c n i 1 X n 1 + c n i +... + c n i X n+i 1 Agora encontramos c (i) (X) dentro de X i c(x) c n 1 X (n+i 1) = c n 1 X (i 1) (X n + 1 + 1): c n 1 X (n+i 1) = c n 1 X (i 1) (X n + 1) + c n 1 X (i 1) c n i X n = c n i (X n + 1 + 1) = c n i (X n + 1) + c n i Separando dessa maneira todos os coeficientes de X i c(x): X i c(x) = c n i + c n i+1 X +... + c n 1 X i 1 + c 0 X i + c 1 X i+1 +... + c n i 1 X n 1 + c n i (X n + 1) + c n i+1 X(X n + 1) +... + c n 1 X i 1 (X n + 1) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 5
X i c(x) = q(x)(x n + 1) + c (i) (X), q(x) = c n i + c n i+1 X +... + c n 1 X i 1 c i (X) = X i c(x)mod(x n + 1) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 6
g(x) = 1 + X + X 3 Mensagem Palavra código Polinômio do código (0 0 0 0) 0 0 0 0 0 0 0 0 = 0 g(x) (1 0 0 0) 1 1 0 1 0 0 0 1 + X + X 3 = 1 g(x) (0 1 0 0) 0 1 1 0 1 0 0 X + X 2 + X 4 = X g(x) (1 1 0 0) 1 0 1 1 1 0 0 1 + X 2 + X 3 + X 4 = (1 + X) g(x) (0 0 1 0) 0 0 1 1 0 1 0 X 2 + X 3 + X 5 = X 2 g(x) (1 0 1 0) 1 1 1 0 0 1 0 1 + X + X 2 + X 5 = (1 + X 2 ) g(x) (0 1 1 0) 0 1 0 1 1 1 0 X + X 3 + X 4 + X 5 = (X + X 2 ) g(x) (1 1 1 0) 1 0 0 0 1 1 0 1 + X 4 + X 5 = (1 + X + X 2 ) g(x) (0 0 0 1) 0 0 0 1 1 0 1 X 3 + X 4 + X 6 = X 3 g(x) (1 0 0 1) 1 1 0 0 1 0 1 1 + X + X 4 + X 6 = (1 + X 3 ) g(x) (0 1 0 1) 0 1 1 1 0 0 1 X + X 2 + X 3 + X 6 = (X + X 3 ) g(x) (1 1 0 1) 1 0 1 0 0 0 1 1 + X 2 + X 6 = (1 + X + X 3 ) g(x) (0 0 1 1) 0 0 1 0 1 1 1 X 2 + X 4 + X 5 + X 6 = (X 2 + X 3 ) g(x) (1 0 1 1) 1 1 1 1 1 1 1 1 + X + X 2 + X 3 + X 4 + X 5 + X 6 = (1 + X 2 + X 3 ) g(x) (0 1 1 1) 0 1 0 0 0 1 1 X + X 5 + X 6 = (X + X 2 + X 3 ) g(x) (1 1 1 1) 1 0 0 1 0 1 1 1 + X 3 + X 5 + X 6 = (1 + X + X 2 + X 3 ) g(x) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 7
Sumário 1 Introdução 2 Polinômio gerador e verificador de paridade 3 Matrizes geradoras e de verificação de paridade 4 Codificação de Códigos Cíclicos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 8
Polinômio gerador g(x) é um polinômio de grau n k e fator de X n + 1: g i igual a 0 ou 1. n k 1 g(x) = 1 + g ix i + X n k i=1 O código é calculado da seguinte maneira: c(x) = a(x)g(x) a(x) é um polinômio em X de grau k 1 Para o código (7,4) podemos ter os seguintes polinômios geradores: Fatorando X n + 1. X 7 + 1 = (1 + X)(1 + X + X 3 )(1 + X 2 + X 3 ) Tanto (1 + X + X 3 ) quanto (1 + X 2 + X 3 ) são polinômios geradores respeitando as condições acima. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 9
Colocando o código cíclico na forma sistemática Agora definimos que a mensagem vai ser codificado num código sistemático cíclico. c(x) = b(x) + X n k m(x) (b 0, b 1,..., b n k 1, m 0, m 1,..., m k 1 ) }{{}}{{} n k bits de paridade k bits da mensagem m(x) = m 0 + m 1 +... + m k 1 X k 1 b(x) = b 0 + b 1 +... + b n k 1 X n k 1 a(x)g(x) = b(x) + X n k m(x) X n k m(x) g(x) = a(x) + b(x) g(x) b(x) é o resto da divisão de X n k m(x) por g(x). Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 10
Procedimento de codificação 1 Multiplicar m(x) por X n k 2 Dividir X n k m(x) pelo polinômio gerador g(x), obter o resto b(x) 3 Adicionar b(x) a X n k m(x), obtendo o polinômio c(x) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 11
Polinômio verificação de paridade 1 O polinômio h(x) de tamanho k é definido da seguinte forma: k 1 h(x) = 1 + h ix i + X k 2 É equivalente a matriz H de verificação de paridade, de tal maneira que: i=1 g(x)h(x)mod(x n + 1) = 0 g(x)h(x) = (X n + 1) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 12
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 2 Multiplicar m(x) por X n k = X 3 X 3 m(x) = X 3 + X 6. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 2 Multiplicar m(x) por X n k = X 3 X 3 m(x) = X 3 + X 6. 3 Dividir X 3 m(x) por g(x): Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 2 Multiplicar m(x) por X n k = X 3 X 3 m(x) = X 3 + X 6. 3 Dividir X 3 m(x) por g(x): X 3 +X (quociente) X 3 + X + 1 X 6 X 3 X 6 +X 4 +X 3 X 4 X 4 +X 2 +X X 2 +X (resto) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 2 Multiplicar m(x) por X n k = X 3 X 3 m(x) = X 3 + X 6. 3 Dividir X 3 m(x) por g(x): X 3 +X (quociente) X 3 + X + 1 X 6 X 3 4 b(x) = X + X 2 X 6 +X 4 +X 3 X 4 X 4 +X 2 +X X 2 +X (resto) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Exercício Calcular a palavra código para o código cíclico (7, 4), com g(x) = 1 + X + X 3 e a mensagem a ser codificada m = (1001). 1 O polinômio da mensagem é m(x) = 1 + X 3 2 Multiplicar m(x) por X n k = X 3 X 3 m(x) = X 3 + X 6. 3 Dividir X 3 m(x) por g(x): X 3 +X (quociente) X 3 + X + 1 X 6 X 3 4 b(x) = X + X 2 X 6 +X 4 +X 3 X 4 X 4 +X 2 +X X 2 +X (resto) 5 c(x) = b(x) + X n k m(x) = X + X 2 + X 3 + X 6. Portanto c = (0111001) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 13
Sumário 1 Introdução 2 Polinômio gerador e verificador de paridade 3 Matrizes geradoras e de verificação de paridade 4 Codificação de Códigos Cíclicos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 14
Matrizes geradoras Para se construir a matriz geradora G, pega-se g(x) e se desloca nas diferentes linhas até formar uma matriz k n: G = g 0 g 1 g 2 g n k 0 0 0 0 0 g 0 g 1 g 2 g n k 0 0 0 0 0 g 0 g 1 g 2 g n k 0 0 0 0 0 g 0 g 1 g 2 g n k Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 15
Para g(x) = 1 + X + X 3 : G = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 Porém g(x) não está na forma sistemática: Fazendo combinações lineares para obter a matriz identidade k k à direita de G: Para retirar o 1 da terceira linha, quarta coluna: a soma da primeira linha com a terceira linha se torna a terceira linha. Para os 1 s da quarta linha, quarta e quinta colunas: se soma da primeira, com a segunda e quarta colunas se torna a quarta coluna. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 16
Para g(x) = 1 + X + X 3 : G = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 Porém g(x) não está na forma sistemática: Fazendo combinações lineares para obter a matriz identidade k k à direita de G: Para retirar o 1 da terceira linha, quarta coluna: a soma da primeira linha com a terceira linha se torna a terceira linha. Para os 1 s da quarta linha, quarta e quinta colunas: se soma da primeira, com a segunda e quarta colunas se torna a quarta coluna. G = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 16
Matriz verificadora de paridade Pode-se obter H a partir de G da maneira clássica. Mas também pode se obter H a partir de g(x). g(x)h(x) = (X n + 1). Logo h(x) = (X n + 1)/g(X) h(x) = h 0 + h 1X +... + h k X k : h 0 = h k = 1 Multiplicando c(x) por h(x): c(x)h(x) = a(x)g(x)h(x) = a(x)(x n + 1) = a(x)x n + a(x) O polinômio h(x) é de ordem k 1, as potências X k, X k+1,..., X n 1 não aparecem no polinômio na equação acima: j+k c ik k+j i = 0 para 0 j n k 1 i=j Enquanto índice i é crescente para c i é decrescente para h, h k+j i, os coeficientes de h estão invertidos em relação a equação de matrizes ch t = mgh T = 0 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 17
A matriz H se constrói a partir dos coeficientes do polinômio recíproco de h(x): X k h(x 1 ) h k + h k 1 X + h k 2 X 2 +... + h 0 X k H = h k h k 1 h k 2 h 0 0 0 0 0 0 h k h k 1 h k 2 h 0 0 0 0 0 0 h k h k 1 h k 2 h 0 0 0 0 0 0 h k h k 1 h k 2 h 0 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 18
Sumário 1 Introdução 2 Polinômio gerador e verificador de paridade 3 Matrizes geradoras e de verificação de paridade 4 Codificação de Códigos Cíclicos Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 19
Codificador para códigos cíclicos 1 Multiplicar m(x) por X n k 2 Dividir X n k m(x) pelo polinômio gerador g(x), obter o resto b(x) 3 Adicionar b(x) a X n k m(x), obtendo o polinômio c(x) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 20
Codificador para códigos cíclicos 1 A porta encontra-se fechada e a chave de saída direciona os bits da mensagem para o canal. Ao mesmo tempo os bits da mensagem se combinam com a saída dos registradores, passam pela porta e entram nos registradores. O sinal se propaga nos registradores, até que se abre a porta. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 21
Codificador para códigos cíclicos 1 A porta encontra-se fechada e a chave de saída direciona os bits da mensagem para o canal. Ao mesmo tempo os bits da mensagem se combinam com a saída dos registradores, passam pela porta e entram nos registradores. O sinal se propaga nos registradores, até que se abre a porta. 2 Abre-se a porta, abrindo a realimentação. A chave de saída se direciona para propagar os bits de paridade na saída. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 21
Codificador para códigos cíclicos 1 A porta encontra-se fechada e a chave de saída direciona os bits da mensagem para o canal. Ao mesmo tempo os bits da mensagem se combinam com a saída dos registradores, passam pela porta e entram nos registradores. O sinal se propaga nos registradores, até que se abre a porta. 2 Abre-se a porta, abrindo a realimentação. A chave de saída se direciona para propagar os bits de paridade na saída. 3 Nos ciclos seguintes o conteúdo do registrador de deslocamento é gravado no canal. Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 21
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 22
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Entrada Valor 000 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 22
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Entrada 1 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 Valor 000 110 22
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Entrada 1 1 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 Valor 000 110 101 22
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Entrada 1 1 0 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 Valor 000 110 101 100 22
Exercı cio Desenhe o circuito do codificador para g(x) = 1 + X + X 3. Codificando a seque ncia m = (1011) Identifique o conteu do dos registros em cada etapa e o valor codificado no final. Agora calcule a palavra co digo usando o me todo da divisa o polinomial. Entrada 1 1 0 1 Luis Henrique Assumpc a o Lolis Co digos cı clicos - Parte 1 Valor 000 110 101 100 100 22
Agora fazendo a divisão de polinômio X 3 +1X 2 +X +1 X 3 +X +1 X 6 +X 5 +X 3 X 6 +X 4 +X 3 X 5 +X 4 X 5 +X 3 +X 2 +X 4 +X 3 +X 2 +X 4 +X 2 +1 +X 3 +x +X 3 +X +1 1 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 23
Circuito codificador a partir de h(x) Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 24
ex: h(x) = 1 + X + X 2 + X 4 Luis Henrique Assumpção Lolis Códigos cíclicos - Parte 1 25