E N D
Los códigos de bloque lineales son una clase de códigos de chequeo de paridad que se pueden caracterizar mediante la notación (n,k). El codificador transforma un bloques de k dígitos de mensaje en un bloque de n dígitos codificados, los cuales se construyen a partir de un alfabeto. Los mensajes de k bits, forman 2k secuencias de mensaje diferentes a las que se denomina k-tuplas (secuencias de k bits). Los bloques de n bits pueden formar hasta 2n secuencias distintas, llamadas n-tuplas (secuencias de n bits). Bloque de k dígitos de mensaje Codificador Bloque de n dígitos codificados
El proceso de codificación le asigna a cada k-tupla (2k mensajes) una de las n-tuplas (2n posibles). Un bloque de código representa una asignación uno a uno, en donde los 2k mensajes se “mapean” en un nuevo conjunto de 2k palabras codificadas. Esta asignación se puede realizar mediante una tabla. Espacios Vectoriales Al conjunto de todas las n-tuplas binarias, Vn, se le llama un espacio vectorial sobre el campo de dos elementos (0 y 1). El campo binario tiene dos operaciones; suma y multiplicación, y el resultado de esas operaciones se encuentra en el mismo conjunto de dos elementos
La suma de n-tuplas binarias siempre se hace en módulo 2 Subespacios Vectoriales A un subconjunto S de un espacio vectorial Vn, se le llama subespacio vectorial si cumple con dos condiciones: • El vector todos ceros está en S • La suma de dos vectores en S también está en S
Suponga dos palabras (vectores) de código Vi y Vj de un código de bloque binario (n,k). Este código es lineal si ViVj es también un vector de código. Un código de bloque lineal es aquel en el cual no se pueden crear vectores por fuera del subespacio mediante la suma de miembros del subespacio. Por ejemplo, el espacio vectorial V4 está conformado por las siguientes 24 = 16 4-tuplas:
Un ejemplo de un subconjunto de V4, el cual forma un subespacio es: Un conjunto de 2ktuplas es llamado un código de bloque lineal si y solo si, este es un subespacio del espacio vectorial V4 de todas las n-tuplas
Tenemos un espacio vectorial Vn , con 2n n-tuplas. Tenemos además un subconjunto de 2k n-tuplas que forman un subespacio. Debido al ruido en el canal se recibe una versión perturbada del vector. Si el vector recibido no es muy diferente (poco distante) del correcto, el decodificador puede decodificar el mensaje original.
Los objetivos básicos en la escogencia de un código particular son similares a la escogencia de un conjunto de formas de onda de modulación: • Se busca codificación eficiente, empaquetando tantas palabras (vectores) codificadas como sea posible. Esto para tener la menor redundancia posible (BW). • Las palabras de código deben estar lo mas separadas posible para que la corrupción de la transmisión no impida una decodificación correcta.
Tomemos el ejemplo de un código (6,3); 2k = 23 = 8 vectores de mensaje 8 palabras de código Hay 2n = 26 = 64 6-tuplas en el espacio vectorial V6. La tabla muestra un subespacio vectorial de V6.
Como se escogen las asignaciones para las palabras de mensaje para este código (6,3)? No hay asignaciones únicas para un código (n,k) en particular, pero tampoco hay una completa libertad para la escogencia.
MATRIZ GENERADORA Si k es grande, no se puede implementar el codificador mediante una tabla. Para un código (127,92) hay 292 ó 5x1027 vectores codificados. Es posible reducir la complejidad generando las palabras codificadas en lugar de tenerlas almacenadas. Para un conjunto de palabras codificadas que forme un código de bloque lineal, y que sea un subespacio vectorial (de dimensión k) del espacio vectorial binario de dimensión n, siempre será posible encontrar un conjunto de n-tuplas, menor que 2k que pueda generar todas las 2k palabras codificadas del subespacio.
Al conjunto más pequeño linealmente independiente se le llama una base del subespacio. El número de vectores en este subespacio es la dimensión del subespacio. Cualquier conjunto base de k n-tuplas linealmente independientes V1, V2, …, Vk se puede usar para generar los vectores de código del bloque lineal requerido Cada una de las 2k palabras codificadas {U} se puede escribir como; U = m1V1 + m2V2 + … + mkVk Donde mi = 0 ó 1 son los dígitos del mensaje, e i = , … , k
En general se puede definir una matriz generadora mediante el siguiente arreglo de k x n; Por convención, estos vectores de código se denominan filas. El mensaje m, una secuencia de k bits de mensaje se presenta como un vector fila; m = m1, m2, … , mk
La generación ó creación de la palabra codificada U, se escribe en notación matricial como el producto de m y G; U = mG Para el ejemplo anterior podemos crear una matriz generadora; Donde V1, V2 y V3 son tres vectores linealmente independientes (un subconjunto de los 8 vectores codificados)
Generemos la palabra codificada U4 para el cuarto vector de mensaje; 1 1 0 en el ejemplo anterior Palabra codificada para el vector de mensaje 1 1 0 El vector codificado, correspondiente a un vector de mensaje, es una combinación lineal de las filas de G, la matriz generadora.
Con esto el código queda totalmente definido por G, en consecuencia solo es necesario almacenar las k filas de la matriz generadora para obtener los 2k vectores del código. El arreglo generador de 3x6 ha reemplazado al arreglo original de 8x6, lo cual representa una reducción en la complejidad del sistema
Códigos de Bloque Lineales Sistemáticos (Metódico) Un código de bloque lineal sistemático (n,k) es una equivalencia de un vector de mensaje de dimensión k hacia una palabra codificada de dimensión n, de tal forma que parte de la secuencia generada coincide con los k dígitos del mensaje. Los dígitos restantes (n-k) son dígitos de paridad. Un código de bloque lineal sistemático puede tener una matriz generadora de la forma;
Donde P es la porción del arreglo de paridad de la matriz generadora, e Ik es la matriz identidad k x k. Con el generador sistemático se reduce aún más la complejidad del codificador, ya que no es necesario almacenar la parte de la matriz identidad del arreglo. Como resultado tenemos que para cada palabra codificada; Donde;
Dado el mensaje k-tupla; Y el vector de código general n-tupla; El vector de código sistemático se puede expresar como; Donde;
En ocasiones las palabras de código sistemáticas se escriben de forma que los bits de mensaje ocupan la porción izquierda de la palabra codificada y los bits de paridad ocupan la parte derecha. Este cambio de orden no tiene ningún efecto en la detección de errores o en las propiedades de corrección de errores. Para el ejemplo tratado las palabras de código se describen mediante;