Professional Documents
Culture Documents
Códigos cı́clicos
141
142 CAPÍTULO 9. CÓDIGOS CÍCLICOS
(1001011), (1100101)}
es cı́clico.
2) C = {000, 210, 021, 102, 201, 120, 012, 222, 111} es un código cı́clico so-
bre el alfabeto A = Z3 = {0, 1, 2}. Su dimensión es 2, pues está generado por
las cadenas independientes 111 y 210.
En relación con los códigos cı́clicos se plantean las siguientes cuestiones:
a) ¿Cómo se determinan los subespacios cı́clicos de An ?
b) Para un valor de k < n dado, ¿existe algún subespacio cı́clico de An
que tenga por dimensión k?
c) ¿Cuántos subespacios cı́clicos contiene An ?
d) ¿Qué tiene que ocurrir para que un vector junto con sus permutaciones
cı́clicas generen un subespacio cı́clico?
con R(x) idénticamente nulo o con grado menor que n. Tomando clases en
la igualdad anterior, resulta
k−1
X k−1
X
i
[a(x) · g(x)] = [ ai x g(x)] = ai [xi g(x)].
i=0 i=0
Por tanto, en este caso, queda probado que B es un sistema generador. Con-
sideremos ahora una clase [a(x) · g(x)] con a(x) un polinomio de grado mayor
o igual que k. Ahora el grado de a(x) · g(x) es mayor o igual que k + n − k = n
y, por tanto, podemos hacer la división entera de a(x) · g(x) entre xn − 1:
siendo el grado de R(x) menor que n o R(x) idénticamente nulo. Como g(x)
es divisor de xn − 1, se sigue de la igualdad anterior que g(x) divide al resto
R(x). Esto prueba que la clase [R(x)] es la misma que la dada [a(x)·g(x)], pero
R(x) tiene la ventaja de que puede expresarse en la forma R(x) = b(x) · g(x)
9.3. SUBESPACIOS CÍCLICOS DE AN 147
con el grado de b(x) menor que k y puede aplicarse el caso anterior para
probar que [a(x) · g(x)] = [R(x)] es combinación lineal de los elementos de
B.
los errores que sean ráfagas cı́clicas de longitud menor o igual que n − k. Si
se emite una palabra-código c y se produce uno de tales errores e, entonces
recibimos y = c+e. y no puede pertenecer al código, ya que entonces también
pertenecerı́a e = y − c. ¤
n−1
X n−k−1
X n−1
X
t i
s(x) = H · y = ai ci = ai x + ai Ri−n+k (x) = (9.1)
i=0 i=0 i=n−k
n−k−1
X
= ai xi − an−k (xn−k + C0 (x)g(x)) + · · · − an−1 (xn−1 + Ck−1 (x)g(x)) =
i=0
de donde se sigue
Para probar esta relación, partimos de la división entera de y(x) por g(x):
xs(x) = xŝ(x) + sn−k−1 (g(x) − ĝ(x)) = sn−k−1 g(x) + (xŝ(x) − sn−k−1 ĝ(x)).
es la división entera de xy(x) por g(x). Esto permite afirmar, en virtud del
teorema precedente, que s1 (x) es el sı́ndrome de xy(x), con lo que queda
probada la relación (??)
Sı́ndrome Lı́der
101 0000001
π h (y) Sı́ndrome
1001111 011
1100111 111
1110011 101
9.7. EL MÉTODO DE CAPTURA DEL ERROR 155
Ejemplos 9.7.2. 1. c = 01000101 es una cadena con una serie cı́clica de tres
ceros.
2. c = 00110100 es una cadena con una serie cı́clica de 4 ceros.
Nótese que toda ráfaga cı́clica de longitud t contiene una serie cı́clica de
n − t ceros.
Lema 9.7.3. Sea C un código lineal con distancia mı́nima d. En una clase
adjunta no puede haber dos cadenas con peso menor o igual que [ d−1
2
].
d−1
ω(x − y) ≤ ω(x) + ω(y) ≤ 2t ≤ 2( ) = d − 1,
2
lo que es imposible por ser el peso mı́nimo del código d. ¤
156 CAPÍTULO 9. CÓDIGOS CÍCLICOS
De esta forma, hemos encontrado una expresión para xi e(x) que nos va a
permitir encontrar el propio e. Como xn es congruente con 1 módulo xn − 1,
se tiene
Recordemos que la matriz G tiene por filas los coeficientes, en orden creciente
de las potencias de x, de los polinomios xn−k+i −Ri (x), siendo Ri (x) los restos
de las divisiones anteriores. Por tanto, la matriz generadora buscada es
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G=
1 1 1 0 0 1 0
1 0 1 0 0 0 1
Ahora debemos encontrar una matriz de control. Sabemos que tiene la forma
H = [In−k At ], luego se trata de la matriz
1 0 0 1 0 1 1
H= 0 1 0 1 1 1 0
0 0 1 0 1 1 1
Se trata de la matriz de control de un código de Hamming H(7, 4), luego es
1-corrector y su distancia mı́nima es d = 3. Podemos aplicar el método de
captura del error con t = 1. Si el error tiene peso 1, e es una cadena de 7
ceros y unos con un sólo 1 en un lugar desconocido. Entonces es obvio que
e es una cadena con una serie cı́clica de 6 ceros. Como 6 ≥ k = 4, puede
aplicarse el método para determinar el error e.
a) y = 1101001. Usamos la notación polinómica y(x) = 1 + x + x3 + x6 y
determinamos su sı́ndrome haciendo la división entera por g(x):
(
xs(x) si grad(s(x)) < n − k − 1
s1 (x) =
xs(x) − sn−k−1 g(x) si grad(s(x)) = n − k − 1.
>>[parmat,genmat]=cyclgen(7,g)
ans
parmat =
1 0 0 0 1 1 0
0 1 0 0 0 1 1
0 0 1 0 1 1 1
0 0 0 1 1 0 1
genmat =
1 0 1 1 1 0 0
1 1 1 0 0 1 0
0 1 1 1 0 0 1
Nótese que la matriz generadora tiene la forma estándar G = [BI3 ]. Para
codificar un mensaje con un código cı́clico, MATLAB dispone de la función
encode:
>> n=7;k=3;
g=cyclpoly(7,3);
[parmat,genmat]=cyclgen(7,g);
msg=[1 0 1];
codmsg=encode(msg,n,k,’cyclic’,g)
ans
codmsg = [1 1 0 0 1 0 1].
Para decodificar un mensaje recibido se usa la función decode:
>> x=decode(codmsg,7,3,’cyclic’,g)
9.9. Ejercicios
1. Comprobar que g(x) = 1 + x2 + x3 + x4 es un divisor de f (x) = x7 − 1 y
determinar el ideal generado por g(x).