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