Está en la página 1de 13

lOMoARcPSD|10037180

Ejercicios y Soluciones tema 5

Alxebra (Universidade da Coruña)

StuDocu is not sponsored or endorsed by any college or university


Downloaded by Estebansc (suarezcalvoesteban@gmail.com)
lOMoARcPSD|10037180

Tema 5. Códigos lineales 115

5.8 Soluciones a los ejercicios propuestos

Ejercicio 5.1. Considera el código binario de triple repetición C: (Z 2)3 → (Z 2)9, definido por
C(a1, a2, a3) = (a1, a2, a3, a1, a2, a3, a1, a2, a3).
Calcula su longitud, dimensión, su matriz generadora y el subespacio código.
Solución. La longitud de C es 9 (la dimensión del espacio vectorial de llegada), la dimensión
de C es 3 (la dimensión del espacio vectorial de salida y del subespacio código). La matriz
generadora es G,

1 0 0 1 0 0 1 0 0
Gt = 0 1 0 0 1 0 0 1 0
0 0 1 0 0 1 0 0 1

El subespacio código es {000000000, 100100100, 010010010, 001001001, 110110110,


101101101, 011011011, 111111111}.

Ejercicio 5.2. Considera el código binario C: (Z 2)4 → (Z 2)9, definido por


C(a1, a2, a3, a4) = (a1, a2, a3, a4, a1 + a2, a3 + a4, a1 + a3, a2 + a4, a1 + a2 + a3 + a4).
Comprueba que es un código lineal, calcula su longitud, su dimensión y su matriz generadora.
Justifica si C un código sistemático o separable.
Solución. La aplicación C es lineal e inyectiva. La longitud es 9, la dimensión es 4. La matriz
generadora del código es G.

1 0 0 0 1 0 1 0 1
Gt = 0 1 0 0 1 0 0 1 1
0 0 1 0 0 1 1 0 1
.
0 0 0 1 0 1 0 1 1

El código C es un código sistemático pues las cuatro primeras filas de la matriz G forman la
matriz identidad de orden 4. Al ser sistemático es separable, entre las filas de G están las filas
de la matriz identidad de orden 4.

Ejercicio 5.3. Justifica si la siguiente matriz G es una matriz generadora para un código lineal
binario. En caso afirmativo, indica cuál es su longitud y su dimensión.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

116 Tema 5. Códigos lineales

0 1 0 0 1 1 1 0 1
Gt = 1 0 0 1 0 1 1 0 1 .
1 0 1 1 0 0 1 1 0
1 0 1 1 0 1 1 0 1

Solución. G es una matriz de orden 9 por 4, calculando una matriz escalonada equivalente a G
se sabe que su rango es 4 (máximo). La longitud del código es 9 y la dimensión es 4.

Ejercicio 5.4. Calcula una matriz control de paridad para los códigos de los ejercicios 5.1, 5.2
y 5.3.
Solución. i) El código del ejercicio 5.1 es sistemático. Una matriz control de paridad es H

1 0 0 1 0 0 0 0 0
0 1 0 0 1 0 0 0 0
1 0 0 1 0 0 1 0 0
H = I3 I6 = 0 0 1 0 0 1 0 0 0
rg 0 1 0 0 1 0 0 1 0 = 4, I3 1 0 0 0 0 0 1 0 0
0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0
x1 x2 x3 x4 x5 x6 x7 x8 x9 0 0 1 0 0 0 0 0 1

ii) El código del ejercicio 5.2 es nuevamente sistemático. Una matriz control de paridad es H

1 0 0 0 1 0 1 0 1
0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0
rg 0 0 1 0 0 1 1 0 1 = 4, 0 0 1 1 0 1 0 0 0
H= 1 0 1 0 0 0 1 0 0
0 0 0 1 0 1 0 1 1
x1 x2 x3 x4 x5 x6 x7 x8 x9 0 1 0 1 0 0 0 1 0
1 1 1 1 0 0 0 0 1

iii) El código del ejercicio 3 no es un código separable. Una matriz equivalente por filas a G
es G3
1 0 0 1 0 0 1 1 0 0 1 1 1
G3 = 0 1 0 0 1 0 1 1 0 = 1 0 1 1 Gt
0 0 1 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 1 0 1 1 0 0 1 1
Si se utiliza la matriz G3, los cálculos son

1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 0
G 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 0
rango 3 = rango 0 0 1 0 0 0 0 0 0 = rango 0 0 1 0 0 0 0 0 0 =4
x
0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1
x1 x2 x3 x4 x5 x6 x7 x8 x9 x1 x2 x3 x6 x4 x5 x7 x8 x9

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

Tema 5. Códigos lineales 117

la operación es F5 + x1 F1 + x2 F2 + x3 F3 + x6 F4 y se obtienen las siguientes ecuaciones, x1


+ x4 = 0, x2 + x5 = 0, x1 + x2 + x7 = 0, x1 + x2 + x6 + x8 = 0, x6 + x9 = 0. Por lo tanto,

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

Ejercicio 5.5. Calcula una matriz control de paridad para el código lineal ternario con matriz
generadora G,
⎛1 2021 0⎞
⎜ ⎟
G t = ⎜ 0 2 1 1 1 1 ⎟.
⎜021002⎟
⎝ ⎠
Solución. Una matriz escalonada equivalente a G es

1 1 1 1 0 2 0 2 0
0 0 2 Gt = 0 1 2 0 0 1 ,
0 1 2 0 0 0 1 1 2

una matriz control de paridad para el código es

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

Solución alternativa. Si realizamos a la matriz G t las operaciones elementales F3 – F2 y F2 –


⎛1 2021 0⎞ ⎛1 110 0 0⎞
⎜ ⎟ ⎜ ⎟
F3, queda la matriz ⎜ 0 2 1 2 2 0 ⎟ . Una matriz control de paridad es H = ⎜ 1 0 1 1 0 1 ⎟.
⎜000221⎟ ⎜2 010 1 1⎟
⎝ ⎠ ⎝ ⎠

Ejercicio 5.6. Calcula una matriz control de paridad para el código lineal sobre Z 5 con matriz
generadora G,

1 2 4 0 3
Gt = 0 2 1 4 1 .
2 0 3 1 4

Solución. Aplicando el método de Gauss, se realizan las siguientes operaciones F3 + 3F1, F2


↔ F3, F3 + 3F2, F1 + (3F2 + F3) para obtener la matriz

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

118 Tema 5. Códigos lineales

1 0 0 0 2
G1 = 0 1 0 1 3
0 0 1 2 0

que proporciona la matriz control de paridad

H= 0 4 3 1 0
3 2 0 0 1

Ejercicio 5.7. Calcula el peso de Hamming de cada uno de los siguientes vectores:
i) En (Z 2)5, v1 = 10101, v2 = 11000, v3 = 01110.
ii) En (Z 3)4, w1 = 2121, w2 = 1201, w3 = 0201.
Solución. Aplicar la definición de peso Hamming de un vector.
i) w(10101) = 3, w(11000) = 2, w(01110) = 3.
ii) w(2121) = 4, w(1201) = 3, w(0201) = 2.

Ejercicio 5.8. a) Calcula el peso mínimo del código lineal binario de triple repetición del
ejercicio 5.1.
b) Calcula el peso mínimo del código lineal ternario C con matriz generadora G.

Gt = 1 0 1 1 .
0 1 1 2

Solución. a) El peso mínimo w(C) es 3 porque


w(100100100) = w(010010010) = w(001001001) = 3,
w(110110110) = w(101101101) = w(011011011) = 6 y w(111111111) = 9.
b) El subespacio código tiene 9 vectores código,
C = {0000, 1011, 2022, 0112, 0221, 1120, 2210, 1202, 2101}.
El peso mínimo es el menor peso de un vector código no nulo, w(1011) = 3, w(2022) = 3,
w(0112) = 3, w(0221) = 3, w(1120) = 3, w(2210) = 3, w(1202) = 3, w(2101) = 3; en este caso
todos tiene peso 3. Por lo tanto, w(C) = 3.

Ejercicio 5.9. a) Calcula una tabla de síndromes para el código binario con matriz control de
paridad H1 y utilízala para descodificar los siguientes vectores: 0000011, 1111111, 1100110,
1010111.
b) Calcula una tabla de síndromes para el código ternario con matriz control de paridad H2 y
utilízala para descodificar los siguientes vectores: 2121, 2222, 1002 y 0021.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

Tema 5. Códigos lineales 119

⎛1 1 1 0 1 0 0 ⎞
⎜ ⎟ ⎛1 2 0 1⎞
H1 = ⎜ 1 1 0 1 0 1 0 ⎟          H 2 = ⎜ ⎟
⎜1 0 1 1 0 0 1 ⎟ ⎝0 2 1 2⎠
⎝ ⎠

Solución. a) La tabla de síndromes correspondiente a la matriz H1 es

Representante Síndrome
0000000 000
1000000 111
0100000 110
0010000 101
0001000 011
0000100 100
0000010 010
0000001 001

S(0000011) = 011, e = 0001000, c = 0001011.


S(1111111) = 000, e = 0000000, c = 1111111.
S(1100110) = 111, e = 1000000, c = 0100110.
S(1010111) = 101, e = 0010000, c = 1000111.

b) ) La tabla de síndromes correspondiente a la matriz H2 es


Representante Síndrome
0000 00
1000 10
2000 20
0100 22
0200 11
0010 01
0020 02
0001 12
0002 21

S(2121) = 20, e = 2000, c = 0121.


S(2222) = 21, e = 0002, c = 2220.
S(1002) = 01, e = 0010, c = 1022.
S(0021) = 11, e = 0200, c = 0121.

Ejercicio 5.10. Construye una tabla de síndromes para el código lineal binario C con matriz
generadora G y matriz control de paridad H. Descodifica los vectores 11111 y 01011.
1 0 1 0 0
Gt = 1 0 1 1 0 , H= 1 1 0 1 0 .
0 1 0 1 1
0 1 0 0 1

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

120 Tema 5. Códigos lineales

Da un ejemplo de:
i) producirse un error doble y ser corregido;
ii) producirse un error doble y no ser corregido.

Solución. La tabla de síndromes correspondiente a la matriz H es


Representante Síndrome
00000 000
10000 110
01000 011
00100 100
00010 010
00001 001
11000 101
10001 111

S(11111) = 010, el error es 00010 y se descodifica como el vector 11101, S(01011) = 000,
no se ha producido ningún error.
Supongamos que se transmite el vector c = 11101 y se recibe r = 00101, su síndrome es 101,
el error es e = 11000 y se descodifica correctamente como c. Por otra parte, si se recibe r’ =
11110, su síndrome es 011, el error (supuestamente) es 01000 y se descodifica (incorrecta-
mente) como c’ = 10110.

Ejercicio 5.11. Sea C un código lineal binario con matriz control de paridad H. Justifica cuál
es la longitud y la dimensión de C. Calcula una tabla de síndromes para el código y
descodifica el vector r = 01111.

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

Solución. Como el orden de la matriz H es 3 × 5, la longitud del código es 5 y la dimensión es


5 – 3 = 2. La tabla de síndromes tiene ocho filas, un posible cálculo de la tabla es

Representante Síndrome
00000 000
10000 100
01000 010
00100 001
00010 010
00001 001

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

Tema 5. Códigos lineales 121

No quedan vectores de peso uno, continuamos con los vectores de peso dos

11000 110
10100 101
10010 110
10001 000
01100 011
01010 000
01001 110
00110 011
00101 101
00011 110

No quedan vectores de peso dos, continuamos con los vectores de peso tres
11100 111

Por tanto una tabla de síndromes sería

Representante Síndrome
00000 000
10000 100
01000 010
00100 001
11000 110
10100 101
01100 011
11100 111

El síndrome de 01111 es 101, corresponde al error 10100, el vector código correspondiente es


11011.

Ejercicio 5.12. Utilizando la descodificación por peso mínimo:


i) ¿Qué capacidad correctora tiene un código lineal cuya peso mínimo es cinco?
ii) ¿Qué peso mínimo debe tener un código para corregir seis errores?
iii) ¿Qué peso mínimo debe tener un código lineal para detectar cuatro errores?

Solución. i) Si el peso mínimo del código es cinco entonces corrige los errores de peso menos
o igual que 2 porque 5 = 2 · 2 + 1.
ii) Para corregir seis errores el código debe un peso mínimo mayor que 12 = 2 · 6.
iii) Para detectar cuatro errores el código debe un peso mínimo mayor que 4.

Ejercicio 5.13. Justifica si son verdaderas o falsas las siguientes afirmaciones:

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

122 Tema 5. Códigos lineales

i) En un código lineal de peso mínimo 3, si dos vectores tienen el mismo síndrome entonces al
menos tres de sus coordenadas deben ser diferentes.
ii) Si H, una matriz control de paridad de un código lineal tiene dos columnas iguales
entonces el peso mínimo del código es a lo sumo dos.
iii) Un código lineal en el que dos de sus vectores código se diferencian solo en tres
coordenadas, no corrige errores dobles.
iv) Si cada par de vectores de un código lineal se diferencian en al menos tres coordenadas, el
código detecta errores dobles.

Solución. i) Verdadera, si S(v1) = S(v2) entonces v1 – v2 es un vector código y su peso será


mayor o iual que tres. Como d(v1, v2) = w(v1 – v2) ≥ 3, los dos vectores se diferencian por lo
menos en tres coordenadas.
ii) Verdadera, el vector v con todas las componentes nulas salvo las que corresponden a las
dos columnas iguales de H que tienen valor 1 y – 1, tiene peso 2 y es un vector código porque
su síndrome es cero. El peso mínimo del código es menor o igual a dos.
iii) Verdadera, si dos vectores código se diferencian solo en tres coordenadas, la diferencia
entra ambos vectores es un vector código de peso tres. El peso mínimo del código es a lo
sumo tres y para corregir errores dobles debe ser mayor estrictamente que cuatro.
iv) El peso de un vector v coincide con la distancia Hamming entre v y el vector cero,
entonces el peso de un vector código no nulo c es igual a d(c, 0) ≥ 3 por hipótesis ya que
ambos son vectores codigo. Como consecuencia, el peso mínimo del código es mayor que 2 y
detecta errores dobles.

Ejercicio 5.14. Codifica utilizando los códigos de Hamming H(3, 2) y HA(3, 2) los siguientes
vectores:
m1 = 1011, m2 = 0111, m3 = 1010, m4 = 1110.
Solución. Las matrices generadoras de los códigos H(3, 2) y HA(3, 2) son respectivamente:

1 1 1 0 0 0 0 1 1 1 0 0 0 0 1
G1t = 1 0 0 1 1 0 0 y G2 t = 1 0 0 1 1 0 0 1
0 1 0 1 0 1 0 0 1 0 1 0 1 0 1
1 1 0 1 0 0 1 1 1 0 1 0 0 1 0

Los vectores código para H(3, 2) son C(1011) = 0110011, C(0111) = 0001111, C(0011) =
1000011, C(1110) = 0010110.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

Tema 5. Códigos lineales 123

Para el código HA(3, 2) son 01100110, 00011110, 10000111, 00101101.

Ejercicio 5.15. Descodifica los siguientes vectores recibidos y calcula el mensaje teniendo en
cuenta que se ha utilizado el código de Hamming H(3, 2).
r1 = 1101011, r2 = 1111111, r3 = 0011010, r4 = 0101011, r5 = 0100011, r6 = 0001011.
Solución.
S(1101011) = 110, e = 0000010, c = 1101001, m = 0001.
S(1111111) = 000, e = 0000000, c = 1111111, m = 1111.
S(0011010) = 001, e = 1000000, c = 1011010, m = 1010.
S(0101011) = 111, e = 0000001, c = 0101010, m = 0010.
S(0100011) = 011, e = 0010000, c = 0110011, m = 1011.
S(0001011) = 101, e = 0000100, c = 0001111, m = 0111.

Ejercicio 5.16. Descodifica los siguientes vectores recibidos y calcula el mensaje teniendo en
cuenta que se ha utilizado el código de Hamming HA(3, 2).
r1 = 10101110, r2 = 01101111, r3 = 10000101,
r4 = 00101100, r5 = 10010110, r6 = 11111000.
Solución. S(10101110) = 1101, e = 00000100, c = 10101010, m = 1101.
S(01101111) = 1010, error no corregible.
S(10000101) = 1111, e = 00000010, c = 10000111, m = 0011.
S(00101100) = 0001, e = 00000001, c = 00101101, m = 1110.
S(10010110) = 1000, error no corregible.
S(11111000) = 0011, e = 10000000, c = 01111000, m = 1100.

Ejercicio 5.17. Descodifica los siguientes vectores recibidos y calcula el mensaje teniendo en
cuenta que se ha utilizado el código de Hamming H(4, 2).
01010 01010 01000 11110 00101 10110.
Cada cinco bits se ha añadido un espacio para facilitar la lectura.
Solución. S(01010 01010 01000) = 0100, e = 00010 00000 00000, c = 01000 01010 01000, m
= 00011 00100 0.
S(11110 00101 10110) = 1110, e = 00000 00000 00010, c = 11110 00101 10100, m =
10000 11010 0.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

124 Tema 5. Códigos lineales

5.9 Ejercicios suplementarios.


⎛ 1 0 ⎞
⎜ ⎟
⎜ 0 1 ⎟
1.- Considera la matriz G, G = ⎜ 1 1 ⎟ ∈ M5 2(Z 2). Demuestra que G es matriz generadora de
×

⎜ 1 0 ⎟
⎜ ⎟
⎜ 0 1 ⎟
⎝ ⎠
un código lineal binario C, ¿cuál es la dimensión y la longitud del código? Encuentra las
palabras código, ¿cuál es el peso mínimo y la capacidad correctora de C?
⎛1 1 1 0 0⎞
⎜ ⎟
Demuestra que H  = ⎜ 1 0 0 1 0 ⎟ es una matriz control de paridad para G. Construye una
⎜0 1 0 0 1⎟
⎝ ⎠
tabla de síndromes y descodifica la palabra recibida r = 00101.

2.- Sea C: (Z 2)4 → (Z 2)7, un código lineal con matriz generadora G, donde
⎛ 1 0 1 0 ⎞
⎜ ⎟
⎜ 0 1 0 0 ⎟
⎜ 0 0 0 1 ⎟
G = ⎜ 0 0 1 0 ⎟
⎜ ⎟
⎜ 1 1 0 0 ⎟
⎜ 0 1 1 0 ⎟
⎜ 0 0 1 1 ⎟
⎝ ⎠
Calcula una matriz control de paridad H. Justifica si la palabra r = 0000111 es una palabra
código.

3.- Para el código lineal C: (Z 3)3 → (Z 3)5 definido por C(a, b, c) = (a, a + b + c, b, a + c, c)
Calcula el número de vectores que se pueden codificar. Obtén una aplicación síndrome dando
H, una matriz control de paridad del código. Calculando el peso mínimo de este código
determina qué tipo de errores detecta (simples, dobles…) y qué errores corrige (simples,
dobles…).

4.- Dado el código lineal C: (Z 3)3 → (Z 3)5 definido por


C(a, b, c) = (a + b, a + b + c, 2b, b + c, c)
se pide
i) Obtener una matriz control de paridad del código.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

Tema 5. Códigos lineales 125

ii) Calcular cuántos vectores código hay.


iii) Determinar qué tipo de errores detecta y cuáles corrige.

5.- Para un código lineal binario C, consideramos H una matriz control de paridad y la
siguiente tabla incompleta de síndromes
Representante Síndrome
0000000 000
⎛0 0 0 110 1⎞
⎜ ⎟ 0110000 001
H  = ⎜ 0 1 1 0 1 1 1 ⎟
⎜1 0 1 110 0⎟ 0001100 010
⎝ ⎠
1100000 011
0000011 100
0000110 101
0011000 110

Utiliza la tabla anterior para descodificar la palabra r = 0011111. ¿Se puede asignar al
síndrome 111 un representante de peso 2? Justifica la respuesta.

6.- Para un código lineal binario C, consideramos H una matriz control de paridad y la
siguiente tabla incompleta de síndromes
Representante Síndrome
00000 000
⎛ 1 0 1 0 1⎞
⎜ ⎟ 10000 101
H  = ⎜ 0 1 1 1 1 ⎟
⎜ 1 0 0 1 1⎟ 01000 010
⎝ ⎠
00100 110
00010 011
00001 111

Utiliza la tabla anterior para descodificar, cuando sea posible, las palabras r1 = 01101, y r2 =
10101. Cuando no sea posible debes indicar por qué.

7.- a) Calcula la distancia Hamming entre las palabras ternarias 10211 y 21201. Haz lo mismo
con las palabras 01102 y 01212.
b) Calcula el peso Hamming de las palabras 011102 y 21201.

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)


lOMoARcPSD|10037180

126 Tema 5. Códigos lineales

c) Sea C un código binario de parámetros (8, 5). Indica el orden y el rango de la matriz
generadora y la matriz control de paridad de C. ¿Qué relación se debe verificar entre ambas
matrices?

8.- Sea C: (Z 2)2 → (Z 2)6, un código lineal definido por C(a, b) = (a, b, b, a, a, a + b).
i) Justifica cuál es la longitud, la dimensión y el peso mínimo del código.
ii) Codifica la palabra 10.
iii) Descodifica la palabra r = 110010 utilizando el criterio del peso mínimo.

9.- Sea C: (Z 2)3 → (Z 2)7, una aplicación lineal definida por


C(a, b, c) = (a + b, a, a + b + c, c, b, a, a + c).
Justifica que C define un código lineal y calcula su matriz generadora. Da el número de
palabras código y la longitud de C.

10.- Sea H la matriz control de paridad de un código lineal binario. Calcula la tabla de
síndromes y utilízala para descodificar las siguientes palabras: r1 = 0001101, r2 = 0111111, r3
= 1111001,
⎛0 0 0 1 111⎞
⎜ ⎟
H  = ⎜ 0 1 0 0 0 1 1 ⎟ .
⎜1 0 1 0 110⎟
⎝ ⎠

Downloaded by Estebansc (suarezcalvoesteban@gmail.com)

También podría gustarte