Вы находитесь на странице: 1из 17

124

Captulo 8
Algunos c
odigos notables
8.1.

C
odigos de Hamming

La decodificacion mediante sndromes todava presenta problemas de espacio. Por ejemplo, un codigo binario lineal C(64, 30) tiene 234 sndromes
posibles, ya que hay 264 cadenas en An y el codigo cuenta con 230 palabras.
64
Por tanto, 2230 = 234 es el n
umero de clases adjuntas y para cada una de ellas
hay un sndrome. Ahora en cada uno de las 234 clases adjuntas hay que
buscar el elemento de peso mnimo.
Los codigos de Hamming fueron introducidos por Golay en 1949 y permiten reducir el tiempo y el espacio de decodificacion. Estos codigos son
lineales, 1-correctores, de tipo C(n, k) sobre An , siendo A un cuerpo de q
elementos.
Al tratarse de codigos lineales 1-correctores, se sigue que la matriz de
control no puede tener menos de 3 columnas linealmente dependientes. En

efecto, c = 1 = d1
d1
1 d 3, y recordemos que el n
umero
2
2
mnimo de columna linealmente dependientes en la matriz de control coincide
con el valor de d. Sea r = n k = el n
umero de filas de la matriz de control.
De todos los codigos 1correctores que tienen el mismo parametro r (r es
la redundancia del codigo), el mejor sera aquel para el cual la longitud n
sea la mas grande posible. En efecto, la tasa de transmision viene dada por
125

126

CAPITULO 8. ALGUNOS CODIGOS


NOTABLES

R = nk = nr
= 1 nr .
n
Por tanto, al aumentar n aumenta la tasa de transmision.
No es difcil construir este tipo de codigos. Su matriz de control solo
puede contener conjuntos de 3 o mas columnas linealmente dependientes. En
consecuencia, debe cumplir:
(a) Todas la columnas deben ser diferentes.
(b) Ninguna columna es nula.
(c) Ninguna columna puede ser un m
ultiplo de otra.
(d) Las columnas son de r (= n k) coordenadas de A.
(e) La matriz de control debe tener el mayor n
umero posible de columnas,
para que la tasa de transmision sea lo mas proxima a 1 que sea posible.
q r 1 es el n
umero de columnas no nulas diferentes con r coordenadas. Si
m es el n
umero total de columnas que verifican las condiciones anteriores,
cada una de ellas al multiplicarlas por uno de los q 1 escalares no nulos da
r 1
otras q 1 columnas diferentes. Por tanto, m(q 1) = q r 1 m = qq1
es el n
umero maximo de columnas que podramos poner en la matriz H. Por
tanto, el valor de los parametros de un codigo de Hamming (n, k) viene dado
por:

n = qr 1 ,
q1
k =nr =

q r 1
q1

r.

Se deduce que no existen codigos de Hamming para cualesquiera (n, k) ya


que la construccion depende de r = n k.

8.2.

Decodificaci
on de un c
odigo de Hamming

Vamos a ver que no se necesita mantener en memoria la tabla de sndromes, sino solo la matriz de control. Supongamos que se transmite la palabra-codigo x y se recibe y, donde y = x + e, siendo e el error que se ha

DE UN CODIGO

8.2. DECODIFICACION
DE HAMMING

127

producido. Si e es una palabra de peso 1 (porque el codigo de Hamming es


1corrector), se tiene
Hy t = H(xt + et ) = |{z}
Hxt +Het .
=0

Si el error e = 0, obviamente Het = 0 Hy t = 0 y decodificaremos


aceptando Y como correcta. Pero si, como hemos dicho antes, e es de peso
1, entonces e = ei ( 6= 0), donde ei denota la cadena con todas sus
componentes nulas salvo la que ocupa e el lugar iesimo que es igual a ,
entonces Het = hi , donde hi es la columna iesima de H.
Esta observacion permite idear un metodo simple de decodificar.
Al recibir y se calcula Hy t .
Si Hy t = 0, se acepta y como el mensaje enviado.
Si Hy t = st 6= 0 se compara st con las columnas de H. Si existe i, tal
que st = hi , entonces e es la n-upla con en la posicion i-esima y
cero en las otras. Se ha producido un error y corregimos y como y e.
Si Hy t = st no es un m
ultiplo de alguna columna de H es que ha habido
mas de un error.
En el caso de codigos binarios de Hamming, a
un podemos mejorar este
metodo.
Las columnas de H son vectores de r = n k componentes pertenecientes

a 0, 1 = Z. Las ordenamos de modo que la columna i sea la representacion
binaria del entero i : 0 20 + 1 21 + 2 22 + + t 2t1 .
Ejemplos 8.2.1. 1. Consideremos la matriz

1 0 1 0 1 0 1

H = 0 1 1 0 0 1 1 .
0 0 0 1 1 1 1


CAPITULO 8. ALGUNOS CODIGOS
NOTABLES

128

7 = 1 20 + 1 21 + 1 22 .
Si, como antes, obtenemos Hy t = st , no necesitamos comparar st con
todas las columnas de H. Basta examinar st y ver de que entero i es la
representacion binaria, y se tratara entonces de la columna i.
2. En el ejemplo anterior, si transmitimos x = 0111100 y recibimos y =
0111110, calculamos Hy t = (0 1 1)t que es la sexta columna. El error es un
vector de peso 1 (en el sexto lugar). Se decodifica y como y (0 0 0 0 0 1 0).

8.3.

C
odigos de Hamming con MATLAB

Si se desea determinar las matrices de control y generadora para un codigo


de Hamming de redundancia r, se teclea en la ventana de comandos
>> [parmat,genmat]=hammgen(r)
y aparecen en pantalla ambas matrices. Por ejemplo, si se toma r = 3; resulta:
>> [parmat,genmat]=hammgen(3)
parmat =

1 0 0 1 0 1 1

0 1 0 1 1 1 0
0 0 1 0 1 1 1
genmat =

1
0
1
1

1
1
1
0

0
1
1
1

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

Notese que ambas matrices estan en la forma estandar. Para codificar un


mensaje cualquiera, podemos usar el programa siguiente
>> r=input(dame la redundancia);
n = 2r 1;d=n-r;
[parmat,genmat]=hammgen(r); G=genmat;
m=input(dame el mensaje);
p=length(m)/d; i=0; j=0; I=0; J=0;


8.3. CODIGOS
DE HAMMING CON MATLAB

129

cn=p*n; cm=ones(1,cn)
for k=1:p
i=d*(k-1)+1
j=i+d-1
I=n*(k-1)+1
J=I+n-1
cm(I:J)=m(i:j)*G
end
for h=1:cn
if rem(cm(h),2)==0
cm(h)=0
elseif rem(cm(h),2)==1
cm(h)=1
end
end
Para decodificar una cadena recibida, y, se procede como sigue:
>> parmat=hammgen(3); (produce la matriz de control)
>> trt=syndtable(parmat); (produce una matriz fila con los vectores
errores ordenados de forma que pasando el sndrome a la base 10 y sumando
1, se obtiene el n
umero de la fila de trt que contiene el error)
>> y = [1001111]; (se introduce la cadena recibida)
>> syndrome=rem(y*parmat,2); (se calcula el sdrome)
>> syndrome-de=bi2de(syndrome,left-msb); (se pasa el sndrome a la
base 10)
>> e=trt(1+syndrome-de,:); (se obtiene el error)
>> x=rem(y+e,2); (se corrige la cadena recibida).


CAPITULO 8. ALGUNOS CODIGOS
NOTABLES

130

8.4.

El c
odigo de Reed-Muller de primer orden

Los codigos de Reed-Muller fueron introducidos en 1054 por D. E. Muller


en 1954 y posteriormente fueron estudiados con mayor detalle por I. S. Reed
quien, entre otras cosas, descubrio un algoritmo de decodificacion que se
conoce con el nombre de algoritmo de Reed. Estos codigos fueron usados
para transmitir fotografas desde Mariner 9 en 1972.
Partimos de un codigo binario de Hamming de orden t : H(2| t {z
1}, |2t {z1 }t).
n

Sea Ht la matriz de control. Consiste de todas las columnas no nulas posibles


de tama
no t. Hay 2t 1 posibles. Denotemos por Bt la matriz Ht con una
columna u
ltima de ceros: Bt = (Ht |).
Sean V1 , , Vt las filas de Bt y 1 el vector fila que tiene longitud 2t , con
todas las coordenadas igual a 1.

Definici
on 8.4.1. Se denota por R(1, t) al subespacio generado por los vectores 1, V1 , , Vt . Por tanto, R(1, t) es un codigo binario cuya matriz generadora es

1
1
G=
.
=
Bt
Ht |
Se llama c
odigo de RedMuller de primer orden.

Teorema 8.4.2. R(1, t) es un (2t , t + 1, 2t1 )c


odigo.

DEMOSTRACION:
Denotemos, como es usual, los parametros del codigo por (n, k, d). Como
la matriz generadora G tiene 2t 1+1 = 2t columnas, se sigue que n = 2t . En
cuanto a las filas de G, notese que seran 1+ n
umero de f ilas de la matriz Ht
del codigo de Hamming (= n k = t).
Por tanto, G posee t+1 filas. Veamos que son linealmente independientes.
Las t filas de Bt lo son porque It puede encontrarse en Ht como una submetriz.


8.4. EL CODIGO
DE REED-MULLER DE PRIMER ORDEN

131

Si se orla esta submatriz con la fila de los 1 y la columna


h de
i los ceros se obtiene
otra submatriz de G de orden t + 1 y rango 1: Det It1 =, |It | = 1 6= 0.
En consecuencia, es un codigo lineal binario de dimension t + 1.
Solo nos queda probar que d = 2t1 . Probaremos que w(c) = 2t1 para
toda c 6= 0 excepto para c = 1.
Cualquier palabracodigo nu nula tiene la forma c = ri1 + + ris , siendo
rij la ijesima fila de G(1 s t + 1). Distinguiremos dos casos:

ri1
.
(a) rij 6= 1 j. Sea A la matriz A = .. .
ris
La componente h de c sera 1 cuando la columna h de A contenga un
n
umero impar de unos y sera 0 si dicha columna contiene un n
umero
par de unos. Cada supla de 0 y 1 aparece en las columnas de A. De
hecho, cada una aparece repetida un n
umero de veces igual a 2ts que es
el n
umero de formas de completar de modo diferente una columna de A
hasta una columna de Ht . El n
umero de suplas pares es igual al n
umero
de suplas impares. En consecuencia, el n
umero de componentes no
nulas de c es igual al n
umero de componentes nulas de c. Esto obliga a
t1
que w(c) = 2 .
(b) Si alg
un rij = 1, consideramos c 1. El anterior argumento prueba que
w(c 1) = 2t1 si c 6= 1. Por tanto, hemos probado que w(c) = 2t1 .
En efecto, c 1 = c + 1. Luego el n
umero de unos de c debe ser 2t1 .

Ejemplo 8.4.3. El codigo R(1, 3).


Se parte de

1 0 0 1 0 1 1

H3 = 0 1 0 1 1 0 1 .
0 0 1 0 1 1 1


CAPITULO 8. ALGUNOS CODIGOS
NOTABLES

132

H3 debe poseer todas las columnas no nulas posibles de 3 elementos. Esta


es la matriz de control de un codigo de Hamming de orden t = 3.

1 0 0 1 0 1 1 0

B3 = 0 1 0 1 1 0 1 0 .
0 0 1 0 1 1 1 0
y, finalmente, la matriz generadora del codigo R(1, 3)

1 1

1 0
G=
0 1

0 0

1
0
0
1

1
1
1
0

1
0
1
1

1
1
0
1

1
1
1
1

1
0
0
0

Se trata de un codigo lineal (23 , 3 + 1, 231 ) = (8, 4, 4).

8.5.

C
odigos autoduales

Definici
on 8.5.1. Un codigo lineal C se llama auto-ortogonal si C C ;
es decir, las palabras-c
odigo son mutuamente ortogonales.
Puede ocurrir que la contencion C C sea estricta, pero si las dimensiones de C y C coinciden , entonces ambos codigos son iguales.

Lema 8.5.2. Si G es una matriz generadora de un codigo lineal C, entonces


C es auto-ortogonal si y solo si G Gt = 0.

DEMOSTRACION:
1) Supongamos que C C Como C = C = (C ) ,
se sigue que G es una matriz generadora para C y, por tanto, es una matriz
de control para C . Entonces G xt = 0, para cada x C . En particular,
G xt = 0, para x C. Luego G Gt = 0.
2) Sea G Gt = 0. Si F1 , .., Fk son las filas de G, sabemos que forman una
base de C. La igualdad G Gt = 0 implica que los productos Fi Fj son todos


8.5. CODIGOS
AUTODUALES

133

nulos. Si c1 y c2 son dos palabras-codigo cualesquiera, es obvio que c1 c2 = 0


(basta tener presente que c1 y c2 se pueden expresar como combinacion lineal
de las Fi ).

Definici
on 8.5.3. Un codigo lineal C se llama autodual si C = C .

Lema 8.5.4. Sea B una matriz cuadrada de orden k. Si G = (Ik B) es una


matriz generadora de un codigo C(n, k), entonces el codigo es autodual si y
solo si B B t = Ik .

DEMOSTRACION:
En este caso, C y C tienen dimension k y, por otra
parte, notese que la igualdad G Gt = 0 es equivalente a B B t = Ik , ya
que G Gt = Ik + B B t .

Para el estudio de los codigos de Golay, necesitamos el siguiente resultado.

Teorema 8.5.5. Sean B una matriz simetrica de orden k y G = (Ik B)


una matriz generadora de un codigo autodual C. Si a, b Ak son tales que
(a, b) C, entonces (b, a) C.

DEMOSTRACION:
Sabemos que H = (B t Ik ) = (B Ik ) es una matriz
de control para el codigo C, por tanto, por ser el codigo autodual, H tambien
es una matriz generadora para C. Luego, si (a, b) C, entonces (a, b) debe
ser combinacion lineal de filas de G. A partir de dicha combinacion lineal de
filas de G, es facil expresar la cadena (b, a) como combinacion lineal de las
mismas filas de H, lo que prueba el teorema.


CAPITULO 8. ALGUNOS CODIGOS
NOTABLES

134

8.6.

C
odigos de Golay

Estos codigos se usaron para transmitir, desde los Voyager 1 y 2, fotografas en color de J
upiter (1979) y de Saturno (1980). Para simplificar,
vamos a considerar solo codigos binarios.

Proposici
on 8.6.1. Si C es un codigo autodual binario, todas las palabrascodigo tienen peso par.

DEMOSTRACION:
Si c es una palabra-codigo, por ser C autodual, se sigue
que c c = 0. Pero el producto anterior es la suma de tantos unos como
componentes no nulas tenga c. Como dicha suma es nula, debe ser par el
n
umero de componentes no nulas de c.

Sea G24 = (I12 B12 ), donde B es la

0 1 1 1 1

1 1 1 0 1

1 1 0 1 1

1 0 1 1 1

1 1 1 1 0

1 1 1 0 0

B12 =
1 1 0 0 0

1 0 0 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 1 1
1 0 1 1 0

matriz
1
1
1
0
0
0
1
0
1
1
0
1

1
1
0
0
0
1
0
1
1
0
1
1

1
0
0
0
1
0
1
1
0
1
1
1

1
0
0
1
0
1
1
0
1
1
1
0

1
0
1
0
1
1
0
1
1
1
0
0

1
1
0
1
1
0
1
1
1
0
0
0

1
0
1
1
0
1
1
1
0
0
0
1

Denotamos por B11 la matriz obtenida a partir de B12 eliminando la primera


fila y la primera columna. Notese que cada fila de esta matriz se obtiene a
partir de la anterior desplazando sus elementos un lugar hacia la izquierda.


8.6. CODIGOS
DE GOLAY

135

Estas matrices siempre son simetricas y reciben el nombre de matrices circulantes. Entonces tambien la matriz B12 es simetrica, pues su primera fila es
igual que la primera columna.
Definici
on 8.6.2. Se llama codigo de Golay binario G24 al codigo que tiene
a G24 por matriz generadora.
t
No es difcil comprobar que la matriz B12 verifica B12 B12
= I12 , por tanto,
G12 es un codigo (24, 12) autodual. Como hemos dicho con anterioridad, el
peso de las palabras de todo codigo binario autodual es par. A continuacion,
vamos a ver que el codigo de Golay tiene la propiedad de que el peso de
todas las palabras-codigo es m
ultiplo de 4. Para facilitar la comprension,
vamos a considerar una nueva operacion entre cadenas. Si x = (x1 , ..., xn )
e y = (y1 , .., yn ) son dos cadenas de An , se define el producto componente
a componente siguiente: x y = (x1 y1 , .., xn yn ). Se verifica la siguiente
igualdad
(x + y) = (x) + (y) 2(x y).
(8.1)

La igualdad anterior se deduce facilmente, teniendo en cuenta que el codigo de Golay es binario, a partir de la relacion (x + y) = card(sop(x)) +
card(sop(y)) 2card(sop(x) sop(y)), ya que sop(x) sop(y) = sop(x y).
Teorema 8.6.3. Todas las palabras de G24 tienen peso m
ultiplo de 4.

DEMOSTRACION:
A simple vista vemos que las filas de G24 tienen peso
m
ultiplo de 4. Por tanto, basta comprobar que la suma de dos filas cualesquiera, x e y, tambien tiene peso m
ultiplo de 4. Ahora bien, de (8.1) se
sigue que basta probar que (x y) es par, pero esto es obvio por ser el
codigo autodual, ya que entonces debe ser sop(x) sop(y) un conjunto con
un n
umero par de elementos (x y es exactamente la suma de tantos unos
como elementos hay en la interseccion de ambos soportes).

136

CAPITULO 8. ALGUNOS CODIGOS


NOTABLES

Como las filas de la matriz generadora tienen peso igual a 8, se deduce


del resultado anterior que la distancia mnima del codigo de Golay solo puede
ser 4 u 8. El siguiente teorema nos dice que la distancia mnima es igual a 8.

Teorema 8.6.4. La distancia mnima de G24 es igual a 8.

DEMOSTRACION:
En virtud de lo que acabamos de decir, basta probar que
el codigo de Golay no contiene palabras de peso 4. Por reduccion al absurdo,
supongamos que c = (a, b) es una palabra-codigo de peso 4, siendo a, b A12 .
Por el Teorema-8.5.5, no hay perdida de generalidad en suponer que se tienen
las relaciones (a) (b) y (a) 2. Sabemos que c debe ser combinacion
lineal de filas de G24 , pero la forma de esta matriz obliga a que c sea suma
de, a lo mas, (a) filas de G24 (notese que G24 = (I12 B12 ) determina que
cualquier combinacion lineal de p filas tenga peso como mnimo igual a p).
Como ninguna fila de G24 tiene peso 4, podemos suponer que (a) 6= 1, luego
(a) = 2. Es decir, c = (a, b) es la suma de dos filas de la matriz generadora.
Sean Fi y Fj dichas filas. De (8.1) se sigue que
(Fi + Fj ) = (c) = 4 = (Fi ) + (Fj ) 2(Fi Fj ).

(8.2)

Para terminar, comprobaremos, considerando los diferentes casos posibles,


que la igualdad anterior es imposible, con lo que habramos encontrado una
contradiccion y el teorema quedara demostrado.
Caso 1. Tanto i como j son diferentes de 1. Una comprobacion directa
permite concluir que (Fi Fj ) = 4 y (Fi ) = (Fj ) = 8. Entonces (8.2)
conduce a la contradiccion 4 = 8.
Caso 2. i = 1 y j 6= 1. Por inspeccion directa, concluimos que (F1 Fj ) =
6, (F1 ) = 12 y (Fj ) = 8. Entonces de (8.2) se sigue que 4 = 12.

DEL CODIGO

8.7. DECODIFICACION
DE GOLAY

8.7.

137

Decodificaci
on del c
odigo de Golay

Vamos a ver como, aprovechando el caracter autodual del codigo de Golay,


se obtiene un metodo de decodificacion mediante sndromes mas simple que
en el caso general. Por otra parte, conviene recordar que, como la distancia
mnima es igual a 8, el codigo de Golay corrige hasta 3 errores en cada palabra
de longitud 24.
Como habitualmente hemos venido haciendo, supongamos que se enva
por el canal la palabra-codigo c G24 y se recibe y = c + e, con (e) 3.
El error producido lo escribimos en la forma e = (e1 , e2 ), donde e1 y e2
pertenecen a A12 . Para simplificar la escritura, vamos a denotar las matrices
G24 , I12 y B12 por G, I y B, respectivamente. Ya hemos dicho con anterioridad
que la matriz G tambien es una matriz de control para el codigo de Golay. Una
segunda matriz de control es la matriz H = (B12 I12 ). Por tanto, podemos
considerar el sndrome de y respecto de H y respecto de G. Denotando estos
sndromes por sH y sG , podemos obtener las relaciones
sH (y) = sH = yH t = eH t = e1 B + e2 ,

(8.3)

sG (y) = sG = yGt = eGt = e1 + e2 B.

(8.4)

Las relaciones anteriores nos indican que el sndrome, respecto de G, de


una cadena de la forma y = x + (e1 , 0) (x C es igual a e1 , mientras que el
sndrome, respecto de H, de y = x + (0, e2 ) es igual a e2 . En el momento de
la decodificacion, estos hechos seran de gran utilidad.

Teorema 8.7.1. Sea y = x + e, siendo x C. Si e = (e1 , e2 ) tiene peso


menor o igual que 3, se verifica
(
(
3 si e2 = 0
3 si e1 = 0
; (sH ) =
(sG ) =
5 si e2 6= 0
5 si e1 6= 0.

138

CAPITULO 8. ALGUNOS CODIGOS


NOTABLES

DEMOSTRACION:
Demostraremos solamente la segunda igualdad, pues la
prueba de ambas es similar. Partimos de la igualdad sH = e1 B +e2 . Si e1 = 0,
se sigue que sH = e2 , lo que implica que (sH ) = (e2 ) (e) 3.
Consideramos ahora el caso e1 6= 0. En este caso, podemos escribir
(sH ) = (e1 B + e2 ) = (e1 B) + (e2 ) 2(e1 B e2 ).

(8.5)

Para obtener una cota inferior de (sH ), vamos a usar la desigualdad obvia
(a b) min{(a), (b)} (b),
para cualesquiera cadenas a y b. De la relacion anterior y (8.5) se deduce
(sH ) (e1 B) + (e2 ) 2(e2 ) = (e1 B) (e2 ).

(8.6)

Para terminar, necesitamos estimar (e1 B). En primer lugar, vamos a ver
que la cadena no nula (e1 , e1 B) es una palabra-codigo. En efecto, notese que
e1 G = (e1 , e1 B). Entonces, como la distancia mnima del codigo de Golay es
8, se sigue que
(e1 ) + (e1 B) = ((e1 , e1 B)) 8.
Esta u
ltima desigualdad y (8.6) permiten obtener
(sH ) (e1 B) (e2 ) 8 (e1 ) (e2 ) = 8 (e) 8 3 = 5.

El resultado anterior nos permite abordar ya el problema de la decodificacion.


Recibida la palabra y, calculamos los sndromes sG y sH . Como muestra el
teorema precedente, pueden ocurrir dos casos mutuamente excluyentes:
(A) Uno de los dos pesos, (sG ) u (sH ), es menor o igual que 3. Supongamos que (sH ) 3, entonces el teorema anterior nos garantiza que debe
ser e1 = 0 y se sigue de (8.3) que e2 = sH . Esto nos permite concluir que el
error viene dado por e = (0, sH ). De igual forma se prueba que, si (sG ) 3,
entonces el error es igual a (sG , 0).

DEL CODIGO

8.7. DECODIFICACION
DE GOLAY

139

(B) (sG ) y (sH ) son mayores o iguales que 5. En este caso son no nulos
e1 y e2 . Como (e) 3, se sigue que (e1 ) = 1 u (e2 ) = 1. Vamos a
considerar el caso (e1 ) = 1.
Denotamos por ui la cadena de A12 con todas sus componentes nulas
exceptuando la que ocupa el lugar i-esimo que es igual a 1. Obviamente,
existe un u
nico i tal que e1 = ui . Entonces e1 + ui = 0 y se deduce que la
cadena y + (ui , 0) = x + (0, e2 ) tiene la propiedad de que sus primeras doce
componentes son correctas. Para determinar el valor de i, podemos calcular
los sndromes de las 12 cadenas de la forma y + (uj , 0) y estudiar sus pesos.
Por el teorema precedente
(
(sH (y + (uj , 0))) =

3 si e1 = uj
5 si e1 6= uj .

Por tanto, entre los doce pesos encontrados solo puede haber uno que sea
menor o igual que 3. Si se trata del peso del sndrome sH (y + (ui , 0)), deducimos que e1 = ui . Por otra parte, como la cadena y + (ui , 0) tiene correctas
las primeras doce componentes, podemos aplicar el paso (A) y concluir que
e2 = sH (y + (ui , 0)). Es decir, e = (ui , sH (y + (ui , 0)).
Como, a priori, no sabemos si (e1 ) = 1 o no, puede ocurrir que al calcular
los pesos de los sndromes sH (y + (uj , 0)) no encontremos ninguno que sea
menor o igual que 3. Si esto ocurre, sera porque (e1 ) 6= 1, en cuyo caso
podemos estar seguros de que (sH (e2 )) = 1 y procederamos a determinar
los sndromes (respecto de G) de las doce cadenas de la forma y + (0, uj ).
Si alguno de ellos, digamos sG (y + (0, uj )), tiene peso menor o igual que 3,
entonces e = (sG (y +(0, ui )), ui ). Finalmente, si nuevamente ninguno de estos
12 sndromes tiene peso menor o igual que 3, sera porque el error tena peso
superior a 3.
Vemos, pues, que para decodificar una cadena tendremos que calcular a
lo sumo 2 + 12 + 12 sndromes.

140

8.8.

CAPITULO 8. ALGUNOS CODIGOS


NOTABLES

Ejercicios

1. Consideremos la matriz

1 0 0
0 1 0

H=
0 0 1
0 0 0

0
0
0
1

1
1
0
0

0
0
1
1

0
1
1
0

1
0
0
1

0
1
0
1

1
0
1
0

1
1
1
0

0
1
1
1

1
0
1
1

1
1
0
1

1
1
1
1

Se trata de la matriz de control de un codigo binario de Hamming. a)


Encontrar la dimension y la distancia mnima. b) Decodificar el mensaje
recibido : i) y = 000000000000111, ii) y = 000000000111111, iii) y =
1000000000011111.
2. Consideremos la matriz

1 0 0 1 0 1 0 1 1 2 1 2 0

H= 0 1 0 1 1 0 1 1 2 1 1 1 2
0 0 1 0 1 1 2 1 1 1 2 0 1
Se trata de la matriz de control de un codigo de Hamming sobre el alfabeto
A = Z3 = {0, 1, 2}. a) Determinar la dimension k y la distancia mnima.
b) Codificar el mensaje 1112200010, c) Decodificar las cadenas recibidas:
i) y = 1000001211, ii) y = 0000021210.
3. Elaborar un programa para decodificar un mensaje codificado con un codigo de Hamming, sobre un alfabeto ternario, con redundancia y longitud
dadas.
4. Elaborar un programa para decodificar un mensaje codificado con un codigo binario de Hamming con redundancia y longitud dadas.
5. Elaborar un programa para decodificar un mensaje codificado con el codigo de Golay.

Вам также может понравиться