P. 1
Codigos Ciclicos

Codigos Ciclicos

|Views: 733|Likes:
Publicado porel_buda01

More info:

Published by: el_buda01 on Nov 23, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/27/2013

pdf

text

original

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

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

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

2. 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).9. ya que habr´ en el ıa ideal una clase con un representante cuyo grado es menor que el de g(x). todos los ideales de A[x]/(x − 1) son de la forma I = {[a(x) · g(x)] : a(x) ∈ A[x]}. 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. El polinomio g(x) recibe el nombre de polinomio generador del ideal. lo que es imposible salvo que sea R(x) ≡ 0.2. .2. 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). Entonces podemos hacer la divisi´n entera de xn − 1 por g(x): o xn − 1 = g(x) · C(x) + R(x). Teorema 9. resulta 0 = [g(x)] · [C(x)] + [R(x)]. Tomando clases en e la igualdad anterior. todos sus ideales est´n generados a n por una clase. entonces g(x) divide a xn − 1. Es decir. El Teorema siguiente muestra que el polinomio (m´nico) generador de un ideal debe ser o divisor de xn − 1. se tiene [R(x)] = [−C(x)] · [g(x)]. Es decir. con R(x) id´nticamente nulo o con grado menor que n. Como I es un ideal. si n − k es el grado de g(x). por tanto. 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. Se sabe que g(x) es el polinomio m´nico de o menor grado que puede haber en las clases que pertenecen a I. Si I es el ideal de A[x]/(xn − 1) generado por el polinomio m´nico g(x). Omitimos la prueba. se sigue que [R(x)] ∈ I.

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

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

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

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

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

Pero el grado de xs(x) puede ser igual a n − k − 1.´ ´ 9. 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). procederemos como sigue. 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. Concretamente. 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 . por ser el resto de la divisi´n de xy(x) por g(x). entonces el teorema precedente nos garantiza que xs(x) es el s´ ındrome de xy(x).3) Sabemos. que s(x) es el s´ ındrome de y(x). por el Teorema anterior. resulta xy(x) = g(x)C(x)x + xs(x).5.2) Para probar esta relaci´n. Nuestro objetivo ahora consiste en determinar los s´ ındromes de las permutaciones c´ ıclicas de y. Expresamos s(x) en la forma n−k−2 s(x) = s(x) + sn−k−1 xn−k−1 . ˆ donde g (x) = ˆ i=0 gi xi . partimos de la divisi´n entera de y(x) por g(x): o o y(x) = g(x)C(x) + s(x). en la igualdad (9.4) Si xs(x) tiene grado menor o igual que n − k − 1. o Si este es el caso. vamos a probar que el s´ ındrome de xy(x). (9. Si multiplicamos la igualdad anterior por x. (9. que denotaremos por s1 (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). (9. o En efecto. 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).

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

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

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. 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. 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. k = 4 es la dimensi´n del o k c´digo. por tanto. Entonces el n´mero de clases adjuntas es 128/16 = 8.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 .6. Consideremos control tiene la forma  1  H= 0 0 ´ CAP´ ITULO 9.154 Ejemplo 9.

3. N´tese que toda r´faga c´ o a ıclica de longitud t contiene una serie c´ ıclica de n − t ceros. los ceros pueden estar al final de la cadena y enlazar con ceros del principio).7.7. ω(y) ≤ t = [ d−1 ]. 2 lo que es imposible por ser el peso m´ ınimo del c´digo d.´ 9. c = 01000101 es una cadena con una serie c´ ıclica de tres ceros. obtenemos c = 1001011. 2 ´ DEMOSTRACION: Sean x e y dos cadenas diferentes tales que ω(x).7. Lema 9.7. En una clase adjunta no puede haber dos cadenas con peso menor o igual que [ d−1 ]. 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. Si pertenecen a la misma clase adjunta.2. Ejemplos 9. entonces x − y ∈ C. c = 00110100 es una cadena con una serie c´ ıclica de 4 ceros. El m´todo de captura del error e Definici´n 9. 2.7. 9. resultando π 2 (c) = π 2 (c) + 0000001 = 1110010. Haciendo 5 permutaciones c´ ıclicas sucesivas de esta cadena. se tiene ω(x − y) ≤ ω(x) + ω(y) ≤ 2t ≤ 2( d−1 ) = d − 1. Sea C un c´digo lineal con distancia m´ o ınima d.1. 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. es decir. Por 2 otra parte. 1. o .

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

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

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

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

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

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->