Siguiente: Códigos lineales
Arriba: Códigos binarios
Anterior: Distancia de Hamming
Definición 4.6
Un código
se dice ser lineal si posee al origen y es cerrado bajo la suma de
.
En el caso de un código lineal, el peso de cualquier palabra
es
, y el peso mínimo del código es
Observación 4.3
Para cualquier código lineal
se tiene
- reconoce errores si
- corrige errores si
Puede verse que es un código lineal, pues contiene al origen y es cerrado bajo la suma. Si un elemento
toma el valor , entonces debe aparecer un en otra posición en la misma columna y un también en otra posición en el mismo renglón, y debe haber un en la esquina opuesta a . En consecuencia, el peso mínimo de es y por tanto es capaz de detectar hasta 3 errores.
Se tiene que un vector
estará en el código si y sólo si se satisfacen las ecuaciones
Todo código lineal es un subespacio lineal de
y por tanto ha de poseer una base. Cualquier palabra podrá ser escrita como una combinación lineal de los elementos en la base y por tanto las palabras en el código han de satisfacer un conjunto de ecuaciones lineales tal como en el caso de los códigos rectangulares.
En efecto, si un código lineal es de dimensión en
, sea
una base de . La matriz
que posee como columnas a los vectores básicos, llamada generatriz de , es de orden y determina un isomorfismo
,
. Existe entonces una matriz
tal que
. Así se ha de tener la equivalencia:
. La matriz se dice ser una revisora de paridad del código .
Proposición 4.1
Un código corrige errores de un bit si y sólo si cualquier matriz revisora de paridad suya posee columnas no-nulas y distintas a pares.
Sea
el -ésimo vector de la base canónica,
. Denotemos también por
al vector que coincide con salvo que en sus dos entradas y posee el valor 1,
.
La proposición se sigue de que las siguientes aseveraciones son equivalentes a pares:
- corrige errores de un bit.
- El peso mínimo de es al menos 3.
- Ninguno de los vectores ,
puede estar en .
- Para cada revisora de paridad, los productos
,
no pueden ser nulos.
- Para cada revisora de paridad, las columnas de son no-nulas y distintas a pares.
Definición 4.7
Para cada , sea
la matriz cuyas columnas son los vectores no-nulos en
. Todo código que posea a como matriz revisora de paridad se dice ser de Hamming1.
Así todo código de Hamming posee
bits de información y bits de revisión, y su razón de información es
.
La matriz queda determinada de manera única salvo el orden en el que se enumere a los elementos de
. Sea
la permutación que ordena a los índices de acuerdo con el peso de Hamming y en orden lexicográfico cuando haya coincidencia de pesos. Por ejemplo:
- .
-
- .
-
Si a los índices se les ordena de acuerdo con , entonces se podrá escribir
donde es la matriz identidad de orden y es una matriz de orden
. Así pues, se tendrá que una palabra
está en el código de Hamming si y sólo si
, donde
, lo cual equivale a que
|
(7) |
El conjunto de índices
corresponde a los bits de revisión y el conjunto
a los de información.
Sea
. Entonces,
y por tanto las columnas de forman una base del código de Hamming. La dimensión del código es el número de bits de información, a saber, .
Para codificar una palabra
se construye
haciendo
para
y, para
, los valores
quedan determinados por la ec. (7).
Para decodificar un
, se revisa si éste está en el código. El vector
se dice ser el síndrome de
. Si el síndrome fuese nulo no se hace ninguna corrección y se recupera
mediante los bits de información:
, para
. En otro caso, deben existir
en el código de Hamming y un índice
tales que
. Por tanto, ha de tenerse
y
y la -ésima columna de no es otra que la representación en base 2 del índice . Así pues, el síndrome indica cuál es el índice que ha de conmutarse para corregir el error.
En efecto, si la matriz revisora de paridad se escribe como las representaciones en base 2 de los números en
, entonces las tres primeras columnas, correspondientes a 1, 2 y 3 forman una submatriz con un bloque inicial de ceros y los dos últimos renglones son
. De aquí se ve que la palabra
está en el código. Por tanto
. Por otro lado, como el código corrige un bit, por la observación 4.1, se tiene que
.
Observación 4.5
Los códigos de Hamming son perfectos en el sentido de que cualquier palabra en el espacio que contiene a las palabras de código, es bien una palabra de código o bien dista en de una palabra de código.
Definición 4.8
Supongamos que
es un código lineal con palabras de código de longitud , y que un canal binario simétrico, con probabilidad de alterar el valor de cada bit, transmite una palabra de código
. Si
es la palabra recibida tras la transmisión, el error es
. El error quedará indetectado siempre que
.
Para cada
, sea el número de palabras con peso de Hamming en el código . Entonces, la probabilidad de que un error quede indetectado será
donde es el peso mínimo de (si entonces ).
Definición 4.9
El polinomio
, donde es el número de palabras con peso en , se dice ser el enumerador de pesos del código .
De acuerdo con lo anterior, se tiene
Por ejemplo, para los primeros códigos de Hamming se tiene:
- .
- La dimensión del código es
, por tanto el código posee palabras, que clasificadas según sus pesos de Hamming producen las siguientes cuentas:
El enumerador de pesos es pues
- .
- La dimensión del código es
, por tanto el código posee palabras, que clasificadas según sus pesos de Hamming producen las siguientes cuentas:
El enumerador de pesos es pues
- .
- La dimensión del código es
, por tanto el código posee
palabras, que clasificadas según sus pesos de Hamming producen las siguientes cuentas:
Si se conoce el polinomio enumerador de pesos en un código- se puede calcular procedimentalmente el polinomio enumerador de pesos de su dual .
Denotemos por al enumerador de pesos de , según la definición 4.9. Definamos al polinomio de dos variables
Teorema 4.1 (MacWilliams)
Para el código dual de se tiene
o equivalentemente
|
(8) |
Observamos primero
|
(9) |
En efecto, por un lado
. Por otro, si
entonces
. En otro caso, existe
tal que
, es decir,
. Se puede ver que
y
forman una partición de y ambas tienen una misma cardinalidad. De aquí se sigue (9).
Observamos luego que, para cualquier código, se tiene
Pues bien, por un lado se tiene
Por otro lado,
Por tanto se cumple (8).
Siguiente: Códigos lineales
Arriba: Códigos binarios
Anterior: Distancia de Hamming
Guillermo M. Luna
2010-05-09