C´
odigos c´ıclicos - Parte 1
Luis Henrique Assump¸
c˜
ao Lolis
Conte´
udo
1
Introdu¸
c˜
ao
2
Polinˆ
omio gerador e verificador de paridade
3
Matrizes geradoras e de verifica¸
c˜
ao de paridade
Sum´
ario
1
Introdu¸
c˜
ao
2
Polinˆ
omio gerador e verificador de paridade
3
Matrizes geradoras e de verifica¸
c˜
ao de paridade
Introdu¸c˜
ao
´
E uma subclasse de c´
odigos de bloco lineares
Satisfaz as seguintes rela¸
c˜
oes:
1 Propriedade da linearidade: a soma de duas palavras-c´odigo
quaisquer tamb´em uma palavra c´odigo.
2 Propriedade c´ıclica: qualquer deslocamento c´ıclico de uma
palavra c´odigo tamb´em ´e uma palavra c´odigo. c(1)= (c
n−1, c0, . . . , cn−2)
c(i)= (c
n−i, cn−i+1, . . . , cn−1, c0, c1, . . . , cn−i−1)
Para desenvolver as propriedades alg´
ebricas do c´
odigo c´ıclico,
consideramos cada componente de uma palavra c´
odigo
c(X) = c
0+ c
1X + c
2X
2+ . . . + c
n−1X
n−1A correspondˆ
encia entre a palavra chave e o polinˆ
omio ´
e de
um pra um.
Agora analisando o polinˆ
omio de X deslocado de i, c
(i)(X):
c
(i)(X) = c
n−i+ c
n−i+1X + . . . + c
n−1X
i−1+ c
0X
i+
c
1X
i+1+ . . . + c
n−i−1X
n−1Multiplicando c(X) por X
i, temos:
X
ic(X) =
c
0X
i+ c
1X
i+1+ . . . + c
n−i−1X
n−1+ c
n−i+ . . . + c
n−iX
n+i−1Agora encontramos c
(i)(X) dentro de X
ic(X)
cn−1X(n+i−1) = cn−1X(i−1)(Xn+ 1 + 1):
cn−1X(n+i−1) = cn−1X(i−1)(Xn+ 1) + cn−1X(i−1)
cn−iXn= cn−i(Xn+ 1 + 1) = cn−i(Xn+ 1) + cn−i
Separando dessa maneira todos os coeficientes de X
ic(X):
X
ic(X) = c
n−i+ c
n−i+1X + . . . + c
n−1X
i−1+ c
0X
i+
X
ic(X) = q(X)(X
n+ 1) + c
(i)(X),
q(X) = c
n−i+ c
n−i+1X + . . . + c
n−1X
i−1g(X) = 1 + X + X3
Mensagem Palavra c´odigo Polinˆomio do c´odigo (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 + X3= 1 · g(X) (0 1 0 0) 0 1 1 0 1 0 0 X + X2+ X4= X · g(X) (1 1 0 0) 1 0 1 1 1 0 0 1 + X2+ X3+ X4= (1 + X) · g(X) (0 0 1 0) 0 0 1 1 0 1 0 X2+ X3+ X5= X2· g(X) (1 0 1 0) 1 1 1 0 0 1 0 1 + X + X2+ X5= (1 + X2) · g(X) (0 1 1 0) 0 1 0 1 1 1 0 X + X3+ X4+ X5= (X + X2) · g(X) (1 1 1 0) 1 0 0 0 1 1 0 1 + X4+ X5= (1 + X + X2) · g(X) (0 0 0 1) 0 0 0 1 1 0 1 X3+ X4+ X6= X3· g(X) (1 0 0 1) 1 1 0 0 1 0 1 1 + X + X4+ X6= (1 + X3) · g(X) (0 1 0 1) 0 1 1 1 0 0 1 X + X2+ X3+ X6= (X + X3) · g(X) (1 1 0 1) 1 0 1 0 0 0 1 1 + X2+ X6= (1 + X + X3) · g(X) (0 0 1 1) 0 0 1 0 1 1 1 X2+ X4+ X5+ X6= (X2+ X3) · g(X) (1 0 1 1) 1 1 1 1 1 1 1 1 + X + X2+ X3+ X4+ X5+ X6 = (1 + X2+ X3) · g(X) (0 1 1 1) 0 1 0 0 0 1 1 X + X5+ X6 = (X + X2+ X3) · g(X) 3 5 6 2 3
Sum´
ario
1 Introdu¸c˜ao
2 Polinˆomio gerador e verificador de paridade
3 Matrizes geradoras e de verifica¸c˜ao de paridade
Polinˆ
omio gerador
g(X) ´e um polinˆomio de grau n − k e fator de Xn+ 1: g(X) = 1 + n−k−1 X i=1 giXi+ Xn−k giigual a 0 ou 1.
O c´odigo ´e calculado da seguinte maneira: c(X) = a(X)g(X) a(X) ´e um polinˆomio em X de grau k − 1
Para o c´odigo (7,4) podemos ter os seguintes polinˆomios geradores:
Fatorando Xn+ 1.
X7+ 1 = (1 + X)(1 + X + X3)(1 + X2+ X3)
Tanto (1 + X + X3) quanto (1 + X2+ X3) s˜ao polinˆomios
Colocando o c´
odigo c´ıclico na forma sistem´
atica
Agora definimos que a mensagem vai ser codificado num c´odigo sistem´atico c´ıclico.
(b0, b1, . . . , bn−k−1 | {z } n−k bits de paridade , m0, m1, . . . , mk−1 | {z } k bits da mensagem ) m(X) = m0+ m1+ . . . + mk−1Xk−1 b(X) = b0+ b1+ . . . + bn−k−1Xn−k−1 c(X) = b(X) + Xn−km(X) a(X)g(X) = b(X) + Xn−km(X) Xn−km(X) g(X) = a(X) + b(X) g(X)
Procedimento de codifica¸c˜
ao
1 Multiplicar m(X) por Xn−k
2 Dividir Xn−km(X) pelo polinˆomio gerador g(X), obter o resto b(X)
Polinˆ
omio verifica¸c˜
ao de paridade
1 O polinˆomio h(X) de tamanho k ´e definido da seguinte forma: h(X) = 1 +
k−1
X
i=1
hiXi+ Xk
2 E equivalente a matriz H de verifica¸´ c˜ao de paridade, de tal maneira que:
g(X)h(X)mod(Xn+ 1) = 0 g(X)h(X) = (Xn+ 1)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k= X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k= X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k = X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k = X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k = X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k = X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Exerc´ıcio
Calcular a palavra c´odigo para o c´odigo c´ıclico (7, 4), com g(X) = 1 + X + X3 e a mensagem a ser codificada m = (1001).
1 O polinˆomio da mensagem ´e m(X) = 1 + X3
2 Multiplicar m(X) por Xn−k = X3 ⇒ X3m(X) = X3+ X6. 3 Dividir X3m(X) por g(X): X3 +X (quociente) X3+ X + 1| X6 X3 X6 +X4 +X3 X4 X4 +X2 +X X2 +X (resto) 4 b(X) = X + X2 5 c(X) = b(X) + Xn−km(X) = X + X2+ X3+ X6. Portanto c = (0111001)
Sum´
ario
1 Introdu¸c˜ao
2 Polinˆomio gerador e verificador de paridade
3 Matrizes geradoras e de verifica¸c˜ao de paridade
Matrizes geradoras
Para se construir a matriz geradora G, pega-se g(X) e se desloca nas diferentes linhas at´e formar uma matriz k × n:
G = g0 g1 g2 · · · gn−k 0 0 0 · · 0 0 g0 g1 g2 · · · gn−k 0 0 · · 0 0 0 g0 g1 g2 · · · gn−k 0 · · 0 · · · · · · 0 0 · · · 0 g0 g1 g2 · · · gn−k
Para g(X) = 1 + X + X3: 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´em g(X) n˜ao est´a na forma sistem´atica:
Fazendo combina¸c˜oes lineares para obter a matriz identidade k × k `a 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. G0= 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
Para g(X) = 1 + X + X3: 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´em g(X) n˜ao est´a na forma sistem´atica:
Fazendo combina¸c˜oes lineares para obter a matriz identidade k × k `a 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. G0= 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0
Matriz verificadora de paridade
Pode-se obter H a partir de G da maneira cl´assica. Mas tamb´em pode se obter H a partir de g(X). g(X)h(X) = (Xn+ 1). Logo h(X) = (Xn+ 1)/g(X) h(X) = h0+ h1X + . . . + hkXk: h0= hk= 1 Multiplicando c(X) por h(X): c(X)h(X) = a(X)g(X)h(X) = a(X)(Xn+ 1) = a(X)Xn+ a(X)
O polinˆomio h(X) ´e de ordem k − 1, as potˆencias Xk, Xk+1, ..., Xn−1 n˜ao aparecem no polinˆomio na equa¸c˜ao acima:
j+k
X
i=j
A matriz H se constr´oi a partir dos coeficientes do polinˆomio rec´ıproco de h(X): Xkh(X−1) , hk+ hk−1X + hk−2X2+ . . . + h0Xk H = hk hk−1 hk−2 · · · h0 0 0 0 · · 0 0 hk hk−1 hk−2 · · · h0 0 0 · · 0 0 0 hk hk−1 hk−2 · · · h0 0 · · 0 · · · · · · 0 0 · · · 0 hk hk−1 hk−2 · · · h0
Sum´
ario
1 Introdu¸c˜ao
2 Polinˆomio gerador e verificador de paridade
3 Matrizes geradoras e de verifica¸c˜ao de paridade
Codificador para c´
odigos c´ıclicos
1 Multiplicar m(X) por Xn−k
2 Dividir Xn−km(X) pelo polinˆomio gerador g(X), obter o resto
b(X)
Codificador para c´
odigos 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´e que se abre a porta.
2 Abre-se a porta, abrindo a realimenta¸c˜ao. A chave de sa´ıda se
direciona para propagar os bits de paridade na sa´ıda.
3 Nos ciclos seguintes o conte´udo do registrador de deslocamento ´e
Codificador para c´
odigos 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´e que se abre a porta.
2 Abre-se a porta, abrindo a realimenta¸c˜ao. A chave de sa´ıda se
direciona para propagar os bits de paridade na sa´ıda.
3 Nos ciclos seguintes o conte´udo do registrador de deslocamento ´e
Codificador para c´
odigos 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´e que se abre a porta.
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100
Exerc´ıcio
Desenhe o circuito do codificador para g(X) = 1 + X + X3.
Codificando a sequˆencia m = (1011) Identifique o conte´udo dos registros em cada etapa e o valor codificado no final.
Agora calcule a palavra c´odigo usando o m´etodo da divis˜ao polinomial. Entrada Valor 000 1 110 1 101 0 100 1 100