Cap´ ıtulo 9 C´digos c´ o ıclicos

9.1. C´digos c´ o ıclicos

Los c´digos c´ o ıclicos son los c´digos lineales de mayor inter´s. En general, o e se pueden implementar de un modo m´s f´cil, de ah´ su importancia desde el a a ı punto de vista pr´ctico. No obstante, tambi´n tienen un gran inter´s te´rico. a e e o Si el alfabeto A es un cuerpo, sabemos que An es un espacio vectorial de dimensi´n n. Un subespacio S de An se dir´ que es c´ o a ıclico si tiene la propiedad siguiente (a0 , a1 , ...., an−1 ) ∈ S ⇒ (an−1 , a0 , a1 , ..., an−2 ) ∈ S. Es decir, toda permutaci´n c´ o ıclica de una cadena que pertenece a S tambi´n e pertenece a S. Definici´n 9.1.1. Un c´digo c´clico sobre el alfabeto A es cualquier subeso o ı n pacio c´ ıclico de A . Ejemplos 9.1.2. 1) Si A es el alfabeto binario y n = 7, el c´digo lineal o C = {(0000000), (1011100), (0101110), (0010111), (1110010), (0111001), 141

142

´ CAP´ ITULO 9. CODIGOS C´ ICLICOS (1001011), (1100101)}

es c´ ıclico. 2) C = {000, 210, 021, 102, 201, 120, 012, 222, 111} es un c´digo c´ o ıclico sobre el alfabeto A = Z3 = {0, 1, 2}. Su dimensi´n es 2, pues est´ generado por o a las cadenas independientes 111 y 210. En relaci´n con los c´digos c´ o o ıclicos se plantean las siguientes cuestiones: a) ¿C´mo se determinan los subespacios c´ o ıclicos de An ? b) Para un valor de k < n dado, ¿existe alg´n subespacio c´ u ıclico de An que tenga por dimensi´n k? o c) ¿Cu´ntos subespacios c´ a ıclicos contiene An ? d) ¿Qu´ tiene que ocurrir para que un vector junto con sus permutaciones e c´ ıclicas generen un subespacio c´ ıclico? Ejemplo 9.1.3. Si A es el alfabeto binario y n = 6, consideremos el subespacio S generado por los vectores v1 = (111000), v2 = (011100), v3 = (001110), v4 = (000111). La base est´ formada por el vector v1 junto con tres de sus permutaciones a c´ ıclicas. Sin embargo, el vector v = (101010) = v1 + v2 + v3 pertenece a S y s´lo tiene una permutaci´n c´ o o ıclica (010101) con la que determina un subespacio de dimensi´n 2. o Terminamos esta secci´n indicando, sin demostraci´n, que todo c´digo o o o binario de Hamming es equivalente a uno c´ ıclico. Si el alfabeto A tiene q elementos, un c´digo de Hamming de redundancia r sobre dicho alfabeto es o equivalente a un c´digo c´ o ıclico si y s´lo si mcd(r, q − 1) = 1 o

9.2.

Subespacios c´ ıclicos y polinomios

A cada cadena v = (v0 , v1 , .., vn−1 ) de An le asociamos el polinomio v(x) = v0 +v1 x+· · ·+vn−1 xn−1 . Si realizamos el producto xv(x) resulta el polinomio

consideramos las clases de restos m´dulo f (x) = xn − 1. . N´tese que la clase o o del producto xv(x) tiene un representante que es importante en esta historia: es el polinomio que le corresponder´ a la cadena (vn−1 . Si un polinomio P (x) tiene grado menor que n. le asociamos la clase formada por todos los polinomios que son congruentes. con o n−1 v(x) = v0 + v1 x + · · · + vn−1 x .. podemos operar con las clases como lo har´ ıamos con polinomios de grado menor que n y s´lo cuando. Veremos que S es un subespacio c´ ıclico de An si y s´lo si I(S) o es un ideal del anillo cociente. vn−1 ) ∈ An → [v(x)] ∈ A[x]/(xn − 1). siempre podemos tomar como representante de una clase un polinomio de grado menor que n. vn−1 ) de An . Si en lugar de considerar el anillo A[x] de todos los polinomios en la indeterminada x. se dividir´ por a n x − 1 y el resto de la divisi´n o P (x) = (xn − 1)C(x) + R(x) (que tiene grado menor que n) es un polinomio congruente con P (x) que puede tomarse como representante de la clase. Por ello. ya que xn ≡ 1 (m´dulo xn −1). v1 .... que ıa es una permutaci´n c´ o ıclica de v.. ´l mismo puede tomarse como e representante de su clase. obtengamos como resultado un polinomio de grado mayor o igual que n. Hay.9. la clase del polinomio producto xv(x) es la de v0 x + o v1 x2 +· · ·+vn−2 xn−1 +vn−1 . al realizar alguna de las operaciones o (suma o producto). consideramos la aplicaci´n I o definida por v = (v0 . . v0 . Esta es la raz´n de realizar la asociaci´n o o siguiente: dada una cadena v = (v0 . De esta forma. Si su grado es mayor o igual que n. .. A[x]/(xn − 1) es el anillo cociente formado por las clases de resto m´dulo o n x − 1. v1 . dividiremos por xn − 1 para obtener el representante de grado menor que n de la clase.2. SUBESPACIOS C´ ICLICOS Y POLINOMIOS 143 v0 x+v1 x2 +· · ·+vn−2 xn−1 +vn−1 xn . v1 . Es decir. . m´dulo xn − 1. Vamos a aprovechar este hecho para descubrir c´mo son los subespacios o c´ ıclicos de An . Hay tantas clases como polinomios de grado menor o igual que n − 1. una correspondencia biun´ ıvoca entre An y A[x]/(xn − 1)... por tanto. vn−2 ).

. el producto [x][v(x)] es la clase [xv(x)] y. se trata de la clase que corresponde al u polinomio vn−1 + v0 x + v1 x2 + · · · + vn−2 xn−1 . Esto se sigue f´cilmente de la igualdad a p p [ 0 ak xk ][v(x)] = 0 ak [xk ][v(x)]. Es decir.1. v1 . Este razonamiento puede k repetirse para probar que [x ][v(x)] ∈ I(S). Para terminar. que recibe el nombre de ideal generado por b.144 ´ CAP´ ITULO 9. Precisamente. En general. CODIGOS C´ ICLICOS Recordemos que un subconjunto no vac´ I de un anillo A se dice que es ıo un ideal si tiene las propiedades siguientes: (I1) I es un grupo abeliano para la suma (I2) Cualesquiera que sean a ∈ A e y ∈ I.. recorriendo v el conjunto S. no es cierto que todo ideal de un anillo cualquiera se pueda obtener de este modo.. Si v ∈ S. para cada k ∈ N.. b = 0 y se define I = {a · b : a ∈ A}. Es inmediato comprobar que I es un ideal. si I(S) es un ideal. que pertenece a I(S) pues (vn−1 . Teorema 9. Un subconjunto no vac´ S de An es un subespacio c´ ıo ıclico si y s´lo si I(S) es un ideal en A[x]/(xn − 1). o ´ DEMOSTRACION: Supongamos que S es un subespacio c´ ıclico de An . debemos hacer el producto por una clase arbitraria p [ 0 ak xk ] y comprobar que el resultado permanece en I(S). entonces S es un subespacio c´ ıclico. el anillo se denomina anillo principal. v0 . se verifica que a · y ∈ A. . I(S) = {[v(x)] : v ∈ S}. ya que ´ste es c´ e ıclico. cuando un anillo tiene la propiedad de que todos sus ideales son de esta forma. Una forma simple de determinar un ideal en cualquier anillo es la siguiente: se escoge b ∈ A. vn−2 ) ∈ S. Vemos que al multiplicar un elemento de I(S) por las clases [xk ] el resultado permanece en I(S). De un modo similar se prueba que. seg´n hemos visto antes.2. I(S) es el conjunto formado por las clases [v(x)].

todos los ideales de A[x]/(x − 1) son de la forma I = {[a(x) · g(x)] : a(x) ∈ A[x]}. resulta 0 = [g(x)] · [C(x)] + [R(x)]. o Terminamos esta secci´n probando que la dimensi´n del ideal I (considerando o o su estructura de espacio vectorial) generado por un divisor (m´nico) g(x) de o n x − 1 es igual a k. por tanto. ya que habr´ en el ıa ideal una clase con un representante cuyo grado es menor que el de g(x). Tomando clases en e la igualdad anterior. El Teorema siguiente muestra que el polinomio (m´nico) generador de un ideal debe ser o divisor de xn − 1. se sigue que [R(x)] ∈ I. Es decir. Como I es un ideal. Teorema 9. SUBESPACIOS C´ ICLICOS Y POLINOMIOS 145 La importancia del resultado anterior radica en el hecho de que se sabe que el anillo cociente es principal y. todos sus ideales est´n generados a n por una clase. lo que es imposible salvo que sea R(x) ≡ 0. si n − k es el grado de g(x).2. entonces g(x) divide a xn − 1. se tiene [R(x)] = [−C(x)] · [g(x)]. . pero de igual forma se demuestra que todo divisor m´nico de xn − 1 es el polinomio generador de un ideal de A[x]/(xn − 1).2.2. Entonces podemos hacer la divisi´n entera de xn − 1 por g(x): o xn − 1 = g(x) · C(x) + R(x). o ´ DEMOSTRACION: El grado de g(x) es menor que n (recu´rdese que en e cada clase hay un polinomio de grado menor o igual que n − 1 y g(x) es el polinomio de menor grado que podemos encontrar en alguna clase del ideal). El polinomio g(x) recibe el nombre de polinomio generador del ideal.9. Se sabe que g(x) es el polinomio m´nico de o menor grado que puede haber en las clases que pertenecen a I. con R(x) id´nticamente nulo o con grado menor que n. Si I es el ideal de A[x]/(xn − 1) generado por el polinomio m´nico g(x). Es decir. Omitimos la prueba.

Por tanto. en primer lugar. CODIGOS C´ ICLICOS Sea I = {[a(x) · g(x)] : a(x) ∈ A[x]}.. Como g(x) e n es divisor de x − 1. es nulo el coeficiente l´ ıder que es igual a λk−1 . b) Sistema generador. siendo el grado de R(x) menor que n o R(x) id´nticamente nulo. k − 1.. Veamos c´mo se prueba que λk−1 = o 0. Esto prueba que la clase [R(x)] es la misma que la dada [a(x)·g(x)]. En particular.. por tanto. Consideremos. para cada i = 0. .146 ´ CAP´ ITULO 9.. una clase con representante de la forma a(x) · g(x). el unico o u ´ polinomio con grado menor que n que contiene dicha clase es el polinomio k−1 nulo. luego k−1 k−1 [a(x) · g(x)] = [ i=0 ai x g(x)] = i=0 i ai [xi g(x)]. siendo a(x) un polinomio de grado menor k−1 que k. pero R(x) tiene la ventaja de que puede expresarse en la forma R(x) = b(x) · g(x) . por tanto. se sigue que debe ser id´nticamente nulo el polinomio e i=0 λi xi g(x). se sigue de la igualdad anterior que g(x) divide al resto R(x). k−1 a) Independencia lineal. Supongamos que [ i=0 λi xi g(x)] = 0 y probemos que λi = 0. Como el grado de la suma i=0 λi xi g(x) es menor o igual que k − 1 + n − k−1 k = n−1. en este caso. Entonces a(x) = i=0 ai xi . . podemos hacer la divisi´n entera de a(x) · g(x) entre xn − 1: o a(x) · g(x) = (xn − 1) · C(x) + R(x). queda probado que B es un sistema generador. considerado como espacio vectorial sobre el cuerpo A. Razonando de esta forma se puede ir probando que son nulos uno a uno los λi . La clase nula s´lo contiene los m´ltiplos de xn − 1. vamos a comprobar que B = {[g(x)]. [xg(x)]. [xk−1 g(x)]} es una base de I. Consideremos 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. 1..

c1 0 1 1 ... c1 . 0 c2 c1 c0 ...... I(S) est´ generado por un polinomio m´nico g(x) que es divisor de a o n x − 1.... el propio S mirado como un subconjunto de A[x]/(xn − 1)... por tanto.... k)-c´digo c´ o o ıclico sobre el alfabeto A.... Si el grado de g(x) es n − k. ....3. Como estos polinomios tienen grado menor o igual que i + (n − k) ≤ k − 1 + n − k = n − 1. 1.. 0) y k − 1 de sus o permutaciones c´ ıclicas . hemos probado que I(S).. es un ideal.... 0 ... SUBESPACIOS C´ ICLICOS 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 o B. cn−k−1 0 0 0 ..... .. . tambi´n es la dimensi´n e o de S (I es un isomorfismo).. si g(x) = x o + 0 ci x ... el polinomio generador g(x) tiene o .. 0. 1 N´tese que se trata del vector (c0 ... Codificaci´n con un c´digo c´ o o ıclico Suponemos en toda la secci´n que C es un (n. . [xg(x)]. ... c0 1 cn−k−1 cn−k−1 ...... 0 cn−k−1 cn−k−2 . es decir. .. c1 . Para obtener una base de S... c2 0.. . . 0 0 ..4. una base de S est´ a dada por c0 0 0 . Entonces. Por tanto. Subespacios c´ ıclicos de An Si S es un subespacio c´ ıclico de An ...... [x g(x)].. 0.. entonces k es la dimensi´n de I(S) como o subespacio vectorial del anillo cociente y... Como su dimensi´n es k. 9.. cn−k−1 . k − 1) en orden creciente de las potencias de x... 9. .. Hemos visto que una base de I(S) est´ dada a k−1 por las clases [g(x)].. .. . basta escribir los coeficientes de los polinomios xi g(x) (i = 0. no hay que hacer la reducci´n o n−k−1 n n−k i m´dulo x − 1...9.3... 0 c1 c0 0 .

Vamos a ver c´mo se codifica ”polin´micamente” con un c´digo o o o c´ ıclico. ak−1 )... sn−k−1 son los d´ ıgitos de control que en forma polin´mica se o k−1 corresponden con la suma − 0 ai Ri (x). Vemos que los d´ o ıgitos del mensaje original aparecen tal cual al final del mensaje codificado. Tenemos e entonces xn−k+i − Ri (x) = g(x) · C(x) ∈ C... sn−k−1 . xk−1 g(x). o o Ahora vamos a ver una forma de obtener una matriz generadora de la forma G = [R Ik ]. . El mensaje codificado de a(x) es a(x)g(x).. k − 1: o xn−k+i = g(x) · C(x) + Ri (x).. donde Ri (x) es id´nticamente nulo o tiene grado menor que n − k. Consideremos el c´digo binario c´ o ıclico C(7.1.. ak−1 ). N´tese que. 1. CODIGOS C´ ICLICOS grado n − k. . una matriz generadora es la formada por u los polinomios g(x).148 ´ CAP´ ITULO 9. Si consideramos la matriz G cuyas filas son los coeficientes en orden creciente de los polinomios xn−k+i − Ri (x). a1 . resulta la palabrac´digo c = (s0 . x2 g(x). es decir.. a0 . Ejemplo 9. .. la cadena formada por los coeficientes del polinomio producto a(x) · g(x). por tanto. esta matriz tiene la forma indicada (la matriz R tiene por filas los coeficientes de −Ri (x))... no hay que hacer la reducci´n m´dulo o o k−1 k−1 x − 1. 4) generado por 3 g(x) = 1 + x + x .. xg(x). Como el grado de a(x) · g(x) es menor o igual que k − 1 + n − k = n − 1. donde Ik denota la matriz unidad de orden k.. Los d´ ıgitos iniciales s0 . para i = 0. a(x) · g(x) es o a una palabra-c´digo (la codificaci´n del mensaje a(x)).. a1 . . .. Seg´n acabamos de ver. dispuestos en orden creciente de las potencias de x. si a(x) = o 0 n ai x . entonces a(x)g(x) = 0 i ai xi · g(x) es una combinaci´n lineal de los polinomios b´sicos y. .. Con esta matriz generadora. Hacemos la divisi´n entera de xn−k+i por g(x). s1 . al codificar un mensaje m = (a0 . Los mensajes a codificar los denotaremos por a(x) y no son otra cosa que los polinomios de grado menor o igual que k − 1. ..4.

Decodificaci´n de un c´digo c´ o o ıclico Iniciamos esta secci´n probando que los errores a r´fagas de longitud o a t ≤ n − k son detectados. ´ DEMOSTRACION: Seg´n acabamos de ver.5. 9. Aplicando a esta otras dos permutaciones c´ ıclicas la convertimos en la original. DECODIFICACION DE UN CODIGO C´ ICLICO 149 Si queremos codificar el mensaje m = (1001). Teorema 9. Con 8 permutaciones c´ ıclicas sucesivas se convierte en la cadena 0000010001.5. nuestra cadena inicial se puede expresar como y(x) = x7 (1 + x4 ). detecta cualquier error que sea una r´faga a c´ ıclica de longitud menor o igual que n − k. toda r´faga c´ a ıclica de longitud t se convierte en una cadena que tiene n − t ceros al principio. Sea C un c´digo c´ o ıclico generado por el polinomio g(x) de grado n − k. por tanto. Ejemplo 9. Consideremos la cadena y = 0100000100. De esta idea se sigue f´cilmente que a toda r´faga c´ a ıclica de longitud t se puede expresar en la forma xi p(x).2.5. realizando un n´mero adecuado de o u permutaciones c´ ıclicas. consideramos el polinomio m(x) = 1 + x3 y hacemos el producto m(x)g(x) = 1 + x + x4 + x6 . Entonces tampoco puede pertenecer xi p(x). Desde luego p(x) no puede pertenecer al c´digo o por tener menos grado que el polinomio generador. ya que realizando n − i permutaciones c´ ıclicas obtenemos p(x). siendo n la longitud.´ ´ 9. con p(x) un polinomio de grado menor que t. que puede expresarse en la forma polin´mica o 5 4 siguiente x (1+ x ).1.5. Se trata de una r´faga c´ a ıclica de longitud 5. Por tanto. N´tese que. Para terminar. que no pertenece. El mensaje codificado es c = (1100101). vamos a probar que se detectan todos . C no puede contener una r´faga c´ a ıclica de longitud t ≤ n − k y. siendo p(x) un polio nomio de grado menor que t. una r´faga c´ u a ıclica de longitud t puede expresarse en forma polin´mica como xi p(x).

y no puede pertenecer al c´digo.para i ≤ n − k − 1. N´tese que o la representaci´n polin´mica de la columna i de H. mientras que se trata del polinomio Ri−n+k (x) para i ≥ n − k.150 ´ CAP´ ITULO 9. Se trata de una columna de n − k componentes. A partir de esta matriz. ´ DEMOSTRACION: Sea y(x) = a0 + a1 x + a2 x2 + · · · + an−1 xn−1 .5. Si y(x) y s(x) son las representaciones polin´micas de y y o s. Para o e n cada cadena y ∈ A . k) sobre el alfabeto A y con polinomio generador g(x) de grado n − k. ya que entonces tambi´n o e pertenecer´ e = y − c. respectivamente. Si se emite una palabra-c´digo c y se produce uno de tales errores e. Entonces. entonces s(x) es el resto de dividir y(x) por g(x). CODIGOS C´ ICLICOS los errores que sean r´fagas c´ a ıclicas de longitud menor o igual que n − k. . entonces o recibimos y = c+e.3. Sabemos encontrar una matriz generadora de la forma G = [−R Ik ]. El teorema siguiente nos da una interpretaci´n polinomial del s´ o ındrome.1) = i=0 ai xi − an−k (xn−k + C0 (x)g(x)) + · · · − an−1 (xn−1 + Ck−1 (x)g(x)) = = y(x) − (an−k C0 (x) + · · · + an−1 Ck−1 (x))g(x). Hemos obtenido la identidad s(x) = y(x) − g(x)(an−k C0 (x) + · · · + an−1 Ck−1 (x))g(x). ıa Consideremos un c´digo c´ o ıclico C(n. podemos determinar una matriz de control para el c´digo de la forma H = [In−k Rt ] (recu´rdese que HGt = 0). Teorema 9. donde R es una matriz cuyas filas son los coeficientes de los restos Ri (x) obtenidos al hacer la divisi´n entera de xn−k+i o por g(x). se tiene n−1 n−k−1 n−1 s(x) = H · y = i=0 n−k−1 t ai ci = i=0 ai x + i=n−k i ai Ri−n+k (x) = (9. es el o o i polinomio x . el s´ ındrome de y viene dado por s = Hy t .

o En efecto. s . donde s(x) = ˆ ˆ i=0 n−k−1 si xi y g(x) = g (x) + xn−k . Calculamos xs(x): xs(x) = xˆ(x) + sn−k−1 xn−k . Si multiplicamos la igualdad anterior por x.5. resulta xy(x) = g(x)C(x)x + xs(x).1) todos los polinomios Ri (x) tienen grado menor o igual que n − k − 1 por ser los restos de divisiones por g(x). partimos de la divisi´n entera de y(x) por g(x): o o y(x) = g(x)C(x) + s(x). procederemos como sigue. o Si este es el caso.3) Sabemos. Expresamos s(x) en la forma n−k−2 s(x) = s(x) + sn−k−1 xn−k−1 . DECODIFICACION DE UN CODIGO C´ ICLICO de donde se sigue y(x) = g(x)(−an−k C0 (x) − · · · − an−1 Ck−1 (x))g(x) + s(x). vamos a probar que el s´ ındrome de xy(x). (9. por ser el resto de la divisi´n de xy(x) por g(x). ˆ donde g (x) = ˆ i=0 gi xi . que denotaremos por s1 (x). (9. Concretamente. est´ relacionado con s(x) por la f´rmula a o s1 (x) = xs(x) si grad(s(x)) < n − k − 1 xs(x) − sn−k−1 g(x) si grad(s(x)) = n − k − 1.2) Para probar esta relaci´n. 151 Ahora basta notar que el grado de s(x) es menor o igual que n − k − 1 para convencernos que la igualdad anterior es la divisi´n entera de y(x) entre g(x). Nuestro objetivo ahora consiste en determinar los s´ ındromes de las permutaciones c´ ıclicas de y. entonces el teorema precedente nos garantiza que xs(x) es el s´ ındrome de xy(x). en la igualdad (9. Pero el grado de xs(x) puede ser igual a n − k − 1. (9. por el Teorema anterior. que s(x) es el s´ ındrome de y(x).´ ´ 9.4) Si xs(x) tiene grado menor o igual que n − k − 1.

Como el grado de s1 (x) es menor o igual s ˆ que n − k − 1. en caso contrario. Por ello. se sigue que la igualdad xy(x) = g(x) xC(x) + sn−k−1 + s1 (x) es la divisi´n entera de xy(x) por g(x). ´ste no aparece en la tabla reducida pues. el proceso de decodificaci´n con un c´digo c´ o o ıclico sigue el esquema s´ ındrome-l´ ıder v´lido para cualquier c´digo lineal. Esto permite afirmar. con lo que queda probada la relaci´n (??) o 9. No obstante.152 ´ CAP´ ITULO 9. Hemos visto que a o su mayor inconveniente radica en el enorme tama˜o de la tabla necesaria n para desarrollar el m´todo. Se construye una tabla reducida de s´ ındromes y l´ ıderes que contenga unicamente a los l´ ´ ıderes cuya coordenada ultima es no nula. s ˆ s ˆ Sustituyendo la expresi´n obtenida de xs(x) en (9. se procede como sigue. Decodificaci´n c´ o ıclica En principio. resulta o xy(x) = g(x)C(x)x + sn−k−1 g(x) + xˆ(x) − sn−k−1 g (x) = s ˆ = g(x) xC(x) + sn−k−1 + s1 (x). sustituyendo en la igualdad anterior. CODIGOS C´ ICLICOS Como xn−k = g(x) − g (x). . Una vez elaborada la tabla reducida.4). que s1 (x) es el s´ ındrome de xy(x). en virtud del o teorema precedente.6. El n m´todo que vamos a desarrollar a continuaci´n se denomina decodificaci´n e o o c´ ıclica. obtenemos ˆ xs(x) = xˆ(x) + sn−k−1 (g(x) − g (x)) = sn−k−1 g(x) + (xˆ(x) − sn−k−1 g (x)). en el caso de los c´digos c´ e o ıclicos hay la posibilidad de reducir de forma importante el tama˜o de la tabla. donde s1 (x) = xˆ(x) − sn−k−1 g (x). cuando ´ se calcula el s´ ındrome de una cadena recibida cuya ultima componente es ´ correcta. al coe rregir la cadena con el l´ ıder correspondiente alteramos la ultima componente ´ y hemos supuesto que era correcta.

yn−1 (con un n´mero de u errores t menor o igual que la capacidad correctora del c´digo). que e denotamos por π h (y) = π h (c) + π h (e). lo que permite corrigir ı a h π (y) con el l´ ıder correspondiente. pues. π h (c)) ≤ d(d. . Vemos. π h (y)) ≤ t. se tiene e d(d. . o Para determinar c. conocemos una permutaci´n c´ o ıclica de la palabra-c´digo buscada. Como d(π (c). es obvio que o h h h ω(e) = ω(π (e)) ≤ t. y2 .. π h (y)) + d(π h (y). Por tanto. o 1) Se van calculando los s´ ındromes de las permutaciones c´ ıclicas de la palabra recibida y = c + e hasta encontrar el primero que aparece en la tabla reducida: s(π h (y)). salvo que d = π h (c). π h (c)) ≤ 2t ≤ 2 d−1 = d − 1 < d. se sigue que tambi´n d(d. El razonamiento anterior tiene el inconveniente de que no conocemos la posici´n que ocupa el error que est´ situado m´s a la derecha.. y1 .6. obteniendo una palabra-c´digo d. Como o el c´digo es c´ o ıclico.´ 9. DECODIFICACION C´ ICLICA 153 Recibida una cadena y = c + e = y0 . ´sta se convierte en otra. Por otra parte. supongamos o que la componente err´nea que est´ situada m´s a la derecha es yk . hasta que encontramos el primer s´ ındrome que pertenece a la tabla reducida. que hemos sido capaces de determinar correctamente π h (c). π h (c) es una palabra-c´digo. es decir. basta aplicar k + 1 permutaciones c´ ıclicas sucesivas a h π (c). Si se quiere realizar estas operaciones de un modo autom´tico. Aplicando o a a n − k − 1 permutaciones c´ ıclicas a la cadena y. pero este o a a inconveniente puede subsanarse en la pr´ctica procediendo como se indica a a continuaci´n. π (y)) = ω(π h (e)) ≤ t. 2 lo que es imposible. deberemos a introducir un contador que recoja el n´mero de permutaciones c´ u ıclicas que aplicamos a y. 3) Se hacen n − h permutaciones c´ ıclicas a π h (c) y encontramos c. 2) Corregimos π h (y) con el l´ ıder correspondiente de la tabla y obtenemos h π (c). con la ultima componente err´nea. El ´ o h s´ ındrome s(π ((y)) s´ aparecer´ en la tabla reducida.

k = 4 es la dimensi´n del o k c´digo. Consideremos control tiene la forma  1  H= 0 0 ´ CAP´ ITULO 9.154 Ejemplo 9.6. Entonces el n´mero de clases adjuntas es 128/16 = 8. CODIGOS C´ ICLICOS el c´digo de Hamming H3 cuya matriz de o  0 0 1 0 1 1  1 0 1 1 1 0  0 1 0 1 1 1 En este caso n = 7 y n − k = 3. El n´mero de palabras-c´digo es M = 2 = 16 y el n´mero de cadenas o u o u posibles es 27 = 128.1. Procedemos a calcular los s´ ındromes de las sucesivas permutaciones c´ ıclicas de y hasta que se obtenga uno que pertenece a la tabla reducida π h (y) 1001111 1100111 1110011 S´ ındrome 011 111 101 . u La tabla completa de s´ ındromes y l´ ıderes es la siguiente S´ ındrome 000 100 010 001 110 011 111 101 L´ ıder 0000000 1000000 0100000 0010000 0001000 0000100 0000010 0000001 Mientras que la tabla reducida tiene la forma simple siguiente S´ ındrome L´ ıder 101 0000001 Supongamos que se transmite por el canal la palabra-c´digo c = 1001011 o y se recibe y = 1001111. por tanto.

1. resultando π 2 (c) = π 2 (c) + 0000001 = 1110010. es decir. Diremos que una cadena c = c1 c2 · · · cn contiene una serie o c´ ıclica de k ceros si en la cadena existen k ceros consecutivos (en sentido amplio. Sea C un c´digo lineal con distancia m´ o ınima d. ω(y) ≤ t = [ d−1 ]. Si pertenecen a la misma clase adjunta. 2 lo que es imposible por ser el peso m´ ınimo del c´digo d. El m´todo de captura del error e Definici´n 9.3. o . entonces x − y ∈ C.7. 1. 9. obtenemos c = 1001011.7. los ceros pueden estar al final de la cadena y enlazar con ceros del principio).7. Haciendo 5 permutaciones c´ ıclicas sucesivas de esta cadena.2. N´tese que toda r´faga c´ o a ıclica de longitud t contiene una serie c´ ıclica de n − t ceros. c = 01000101 es una cadena con una serie c´ ıclica de tres ceros.7. c = 00110100 es una cadena con una serie c´ ıclica de 4 ceros. EL METODO DE CAPTURA DEL ERROR 155 Vemos que el s´ ındrome de π 2 (y) est´ en la tabla reducida y podemos corregirla a con el correspondiente l´ ıder 0000001. En una clase adjunta no puede haber dos cadenas con peso menor o igual que [ d−1 ]. se tiene ω(x − y) ≤ ω(x) + ω(y) ≤ 2t ≤ 2( d−1 ) = d − 1. Por 2 otra parte. Lema 9.´ 9.7. 2 ´ DEMOSTRACION: Sean x e y dos cadenas diferentes tales que ω(x). 2. Ejemplos 9.

que es el peso de xi e(x) = ω(e) ≤ t. Supongamos que el error tiene peso menor o igual que t y calculemos su s´ ındrome s = Hy t = H(c + e)t = Het . k) con distancia m´ o ınima d = 2t + 1 y con una matriz de control de la forma H = [In−k A]. Sea e un error que posee una serie c´ ıclica de k ceros y con peso ω(e) ≤ t. el n´mero de componentes no nulas de si (x) es igual al n´mero de u u elementos no nulos que hay en b. 0).156 ´ CAP´ ITULO 9. 0). vamos a tratar ˆ de sacarle partido a este hecho en relaci´n con los c´digos c´ o o ıclicos. O). Si se transmite por el canal una palabra-c´digo c y se produce un error e. donde O es una matriz columna de k ceros. entonces se tiene ˆ H et = [In−k A] ˆ s 0 = In−k s + A · 0 = s. se recibe una cadena o y = c+e. xe(x) es. Haciendo un n´mero i conveniente de permutaciones c´ u ıclicas a e. Por tanto. Vemos que los s´ ındromes de e y e coinciden. La forma matricial de xe(x) ser´ (b. en forma ´ polin´mica el resultado de aplicar a e(x) las i permutaciones c´ o ıclicas. Si e = (st . CODIGOS C´ ICLICOS Consideremos un c´digo lineal C(n. se sigue del Lema anterior que deben ser iguales: e = e. Como e y e pertenecen a la misma clase adjunta (por e ˆ tener el mismo s´ ındrome) y ambos tienen peso menor o igual que t. Seguidamente. i . lo convertimos en una cadena con k ceros en los ultimos lugares. ˆ entonces ω(ˆ) ≤ t. Ahora podemos aplicar a la cadena xi e(x) (que tiene un s´ ındrome si co peso menor o igual que t) el resultado precedente para deducir que xi e(x) = (st . Si suponemos que ω(s) ≤ t. a Si denotamos por si el s´ ındrome de xi e(x). veamos que su peso es menor o igual que t: si = [In−k A] b 0 = In−k b = b.

Si se transmite la palabra-c´digo c y se recibe y = c + e. Para ello.´ 9. (los si (x) se determinan mediante la relaci´n de recurrencia que hemos estudiado con anterioridad). . Nosotros no conocemos el error e y. Si ω(e) ≤ t = [ 2 ].7. si i es el n´mero de permutaciones c´ u ıclicas que permite convertir e en una cadena con k ceros al final. hay que estar seguros de que el error poese una serie c´ ıclica de k ceros (esto no es un grave condicionamiento ya que e es una cadena con muchos ceros). i Es decir. xy(x). 4) generado por el polinomio generador g(x) = 1 + x + x3 . o se tiene e(x) = xn e(x) = xn−i (xi e(x)) = xn−i (st ..7. o d−1 el error cometido es e. k) con polinomio generador g(x) de grado n − k y distancia m´ ınima d = 2t + 1. La idea b´sica a i es la siguiente: como sabemos que e(x) tiene una serie c´ ıclica de k ceros. lo que nos permit´ encontrar el ıa valor de e(x).. debe haber un valor de i tal que al aplicar i permutaciones c´ ıclicas a e(x) lo convierte en una cadena con k ceros al final y. seg´n hemos visto. Como xn es congruente con 1 m´dulo xn − 1.4... Pero ahora vamos a decodificar por el procedimiento anterior.. Usar el m´todo captura del error e para decodificar: a) y = 1101001. Consideremos el c´digo binario c´ o ıclico C(7. Ejemplo 9. vamos calculando los sucesivos s´ ındromes hasta hallar el primero cuyo peso es menor o igual que t. el s´ u ındrome si (x) debe tener peso menor o igual que t. Con esto asegurado. tampoco sabemos el valor de i. x2 y(x). b) y = 0001111. Por ello. 0). procedemos a calcular los s´ ındromes s0 (x). 0) y se decodifica poniendo c(x) = y(x) − e(x). entonces sabemos que el error puede corregirse. Consideremos un c´digo c´ o a o ıclico C(n. o Cuando encontremos el primer si (x) con peso menor o igual que t. ponemos e(x) = xn−i (st . i Veamos c´mo se procede en la pr´ctica. s1 (x). por tanto. .. EL METODO DE CAPTURA DEL ERROR 157 De esta forma. de y(x). . 0). entonces se obtiene e(x) haciendo n − i permutaciones c´ ıclicas a (st . hemos encontrado una expresi´n para xi e(x) que nos va a o permitir encontrar el propio e.

. e a) y = 1101001. para i = 0. Como 6 ≥ k = 4. Por tanto. x6 = g(x) · (x3 − x − 1) + (x2 + 1).158 ´ CAP´ ITULO 9. 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. debemos hacer las divisiones enteras de xn−k+i por g(x). luego es o 1-corrector y su distancia m´ ınima es d = 3. en orden creciente de las potencias de x. . 1. x5 = g(x) · (x2 − 1) + (−x2 + x + 1). Para ello. k − 1. puede aplicarse el m´todo para determinar el error e.. x4 = g(x) · x + (−x2 − x). 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. Podemos aplicar el m´todo de e captura del error con t = 1. Recordemos que la matriz G tiene por filas los coeficientes. 4). e es una cadena de 7 ceros y unos con un s´lo 1 en un lugar desconocido. Entonces es obvio que o e es una cadena con una serie c´ ıclica de 6 ceros. Sabemos que tiene la forma H = [In−k At ]. En nuestro caso n − k = 3 y encontramos los resultados siguientes: x3 = g(x) · 1 + (−x − 1). CODIGOS C´ ICLICOS Primero buscamos una matriz generadora de la forma G = [A Ik ]. siendo Ri (x) los restos de las divisiones anteriores. Usamos la notaci´n polin´mica y(x) = 1 + x + x3 + x6 y o o determinamos su s´ ındrome haciendo la divisi´n entera por g(x): o y(x) = g(x) · (x3 + x) + (1 + x2 ). Si el error tiene peso 1. de los polinomios xn−k+i −Ri (x)..

Es decir. Vemos que ıder el peso es uno. luego e(x) = x7−1 s1 (x) = x6 . Ahora y(x) = x3 + x4 + x5 + x6 . s1 (x) = xs(x)−1·g(x) = 1. Como el coeficiente l´ de s0 (x) es 1. g(x). Para determinar los sucesivos s´ ındromes. Es decir. hasta encontrar el primero que tiene peso menor o igual que 1. se procede como sigue . Hacemos la divisi´n por o g(x) para obtener el s´ ındrome s0 (x): y(x) = g(x) · (x3 + x2 + 1) + (1 + x + x2 ). en pantalla aparece una fila con los coeficientes en orden creciente de las potencias de x. g(x) = 1+x2 +x3 +x4 . hemos terminado. Entonces se decodifica poniendo c = y − e = 0001111 − 0000010 = 0001101. CODIGOS C´ ICLICOS CON MATLAB 159 Por tanto. La relaci´n de recuo 2 rrencia nos permite obtener s1 (x) = xs0 (x) − 1g(x) = 1 + x . 9. que denotamos por si (x). Buscamos el siguiente s´ ındrome: s2 (x) = xs1 (x) − 1g(x) = 1. Tenemos que seguir calculando los s´ ındromes de xi y(x). Como s0 (x) = 1 + x + x2 tiene peso 3 debemos seguir. el s´ ındrome es s0 (x) = 1 + x2 . el error viene dado por e = 00000001 y se decodifica y por c = y −e = 1101001−0000001 = 1101000. El error viene dado por e(x) = x7−2 s2 (x) = x5 . cuyo peso es 2. Para obtener las matrices generadoras y de control. de un c´digo c´ o ıclico C(7. C´digos c´ o ıclicos con MATLAB La funci´n cyclpoly produce el polinomio generador del c´digo c´ o o ıclico. usamos la relaci´n de recurrencia (??): o s1 (x) = xs(x) si grad(s(x)) < n − k − 1 xs(x) − sn−k−1 g(x) si grad(s(x)) = n − k − 1.8. >> g=cyclpoly(7. Como el peso de s2 (x) es 1.8.3) ans 1 0 1 1 1 que son los coeficientes del polinomio generador. 3).´ 9. b) y = 0001111. Concretamente.

2} = Z3 . CODIGOS C´ ICLICOS >>[parmat. . [parmat.3. Para decodificar un mensaje recibido se usa la funci´n decode: o >> x=decode(codmsg.7.g).160 ´ CAP´ ITULO 9.g) ans codmsg = [1 1 0 0 1 0 1]. codmsg=encode(msg.genmat]=cyclgen(7.’cyclic’. Para o a codificar un mensaje con un c´digo c´ o ıclico. g=cyclpoly(7. 2.k=3. 1.g) 9. Comprobar que g(x) = 1 + x2 + x3 + x4 es un divisor de f (x) = x7 − 1 y determinar el ideal generado por g(x).9. Determinar el n´mero de subespacios c´ u ıclicos de cada uno de los siguientes espacios vectoriales: a) A8 .’cyclic’. MATLAB dispone de la funci´n o encode: >> n=7.k. msg=[1 0 1]. Ejercicios 1.g) ans parmat =  1 0 0 0  0 1 0 0    0 0 1 0 0 0 0 1 genmat =  1 0 1 1 1 1 1 0 0 1 1 1       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 ].3).genmat]=cyclgen(7. siendo A = {0. siendo A el alfabeto binario. b) A4 .n.

El polinomio g(x) = 1 + x3 + x6 genera un c´digo binario c´ o ıclico C(9. 3). 7. Determinar el polinomio generador y la dimensi´n del menor c´digo c´ o o ıclico binario que contiene: a) c = 1010011. o 8. b) Determina una matriz de control H y encuentra los s´ ındromes de dos formas diferentes.9. Denotamos por CP el conjunto formado por las palabras-c´digo de peso par. EJERCICIOS 161 3. ¿Es o CP un c´digo c´ o ıclico? Si la respuesta es afirmativa. Sea g(x) el polinomio generador de un c´digo c´ o ıclico binario C. Decodificar cada uno de las cadenas recibidas usando el m´todo e de captura del error”: a) y = 1101011. a) Escribe una matriz generadora de la forma G = [R I3 ] para C. 10. obtener un polinomio generador para CP . 4. Probar que C es un c´digo c´ o o ıclico.9. Codificar los siguientes mensajes polin´micos: a) 1 + x2 + x5 + x8 . b) y = 0101111. 9. 6. 5. Elaborar un programa para decodificar un mensaje codificado con un c´digo c´ o ıclico por el procedimiento de decodificaci´n c´ o ıclica. 9). El polinomio g(x) = 1 + x + x2 + x3 + x6 genera un c´digo c´ o ıclico binario C(15. Consideremos el c´digo del ejercicio anterior. 4) est´ generado por el polinomio g(x) = a 3 1+ x+x . o 2 b) 1 + x + x . Encontrar una matriz geneo radora de la forma G = [R Ik ] y codificar los mensajes polin´micos. Un c´digo c´ o ıclico binario C(7. Sea G una matriz generadora de un c´digo lineal C con la propiedad de o que cualquier permutaci´n c´ o ıclica de una fila de G es tambi´n una palabrae c´digo. . b) c = 0011010.

Sign up to vote on this title
UsefulNot useful