You are on page 1of 9

CODIGOS DE PROTECCION La transmisin y recepcin de datos binarios, desde un dispositivo a otro, estn propensas a errores, campos magnticos, interferencias

y ruidos elctricos pueden ocasionar este problema. Las operaciones bsicas de procesamiento de seales en un sistema de comunicacin digital son codificacin de la fuente, codificacin del canal y modulacin digital en el lado transmisor, as como los procesos inversos en el lado receptor. Los cdigos para deteccin y correccin de errores corresponden a la codificacin de canal. Un canal de comunicacin est sujeto a una diversidad de perturbaciones que resultan en una distorsin del mensaje que se est transmitiendo. Cualquier alteracin se llama ruido, la forma en que aparezca, depende del canal.

Uno de los parmetros que miden el desempeo de un sistema de comunicacin digital es la tasa de error binaria (BER) para un cierto valor de la relacin de energa de bit a densidad espectral de ruido. Generalmente, debido al ruido del canal de transmisin, la nica manera de proporcionar un valor de BER aceptable es agregando cdigos para deteccin y correccin de los errores. Se han diseado estrategias para el tratamiento de los errores: Cdigos detectores de error.- Consiste en incluir en los datos transmitidos, una cantidad de bits redundantes de forma que permita al receptor detectar que se ha producido un error, pero no qu tipo de error ni dnde, de forma que tiene que solicitar retransmisin. Cdigos correctores de error.- Consiste en la misma filosofa que el anterior, incluir informacin redundante pero en este caso, la suficiente como para permitirle al receptor deducir cual fue el carcter que se transmiti, por lo tanto, el receptor tiene capacidad para corregir un nmero limitado de errores.

El sistema de chequeo de error por paridad es muy utilizado en las comunicaciones seriales de datos. El mtodo consiste en establecer un tipo de paridad (par o impar) en el sistema de comunicacin y generar en el transmisor, un bit adicional de modo que el peso del dato corresponda con la paridad (par o impar) establecida. Por lo general, este bit se agrega en la posicin ms significativa del dato. Se basan en aadir un bit a la secuencia a enviar de forma que el nmero de unos sea par o impar, dependiendo del tipo de paridad Si la paridad es par, el nmero final de unos (1) debe ser par. Si la paridad es impar, el nmero final de unos debe ser impar.

El cdigo Hamming es clasificado como un cdigo de bloque porque tiene como entrada un grupo (bloque) de m bits de datos, a los cuales se le agrega un grupo de k bits de paridad de acuerdo a reglas preestablecidas, dando como salida un grupo de n bits comnmente llamado palabra-cdigo. Asimismo, se dice que el lineal porque satisface la condicin de que cualquier par de palabras-cdigo al ser sumadas en mdulo 2 producen otra palabra-cdigo existente dentro del conjunto empleado para codificar los posibles mensajes. Adems, se dice que es sistemtico porque los bits de paridad se agregan sin alterar la posicin de los bits del mensaje. Para un cdigo lineal de bloque (n,k) se pueden ordenar los bits de paridad a la derecha y los de mensaje a la izquierda.

Los cdigos Hamming comnmente son empleados en aplicaciones donde ocurre un solo error por bloque. Los cdigos cclicos son una subclase de los cdigos de bloque lineales los cuales tienen esquemas de decodificacin eficientes, con algoritmos simples. Es cclico cuando cualquier desplazamiento en lazo cerrado de una palabra-cdigo da como resultado otra existente dentro del conjunto empleado para codificar los posibles mensajes. Existen varios cdigos cclicos como el Cdigo de Redundancia Cclica empleado en comunicaciones de datos y el Cdigo Golay que es un cdigo binario como el

Hamming, adems de los cdigos Q-arios como el Bose-Chaudhuri-Hocquenhem y el Reed Solomon. Los cdigos convolucionales son cdigos lineales al igual que los cdigos bloque (como los cdigos de Hamming) y, por tanto, se utilizan para proteger la informacin aadiendo redundancia a la misma, de manera que las palabras del cdigo tengan la distancia mnima necesaria. Sin embargo, a diferencia de los cdigos bloque, las palabras de un cdigo convolucional se generan no slo a partir de los dgitos de informacin actuales sino tambin con la informacin anterior en el tiempo.

2. Algoritmos principales ms usados

Conceptos previos Bsicamente la compresin consiste en tomar una trama de smbolos y transformarlos en cdigos/claves. Si la compresin es eficiente, las claves resultantes ocuparn menor espacio que los smbolos originales. La decisin de obtener una codificacin a partir de de ciertos smbolos (o conjunto de ellos) est basada en un modelo. El modelo es simplemente una coleccin de datos y reglas usados para procesar a la entrada smbolos y determinar su correspondiente codificacin a la salida. Por ejemplo un programa usa el modelo para definir aproximandamente las probabilidades para cada simbolo y el codificador para producir una codificacin apropiada basada en esas probabilidades. Los conceptos de modelo y codificacin son cosas diferentes. Usualmente la gente cae en el error de emplear el trmino de "codificacin" para referirse a todo el proceso de compresin de datos en vez de considerarlo como un simple componente de ese proceso. Por ejemplo, "codificacin Huffman" y "codificacin Run-Length" se suele caer en el error de ser descritas como tcnicas de compresin de datos, cuando de hecho solo son mtodos de codificacin usados en conjuncin con un modelo de compresin de datos. Dentro de las tecnicas de compresin de datos, y atendiendo a la reversibilidad de la informacin original, hay dos grandes familias: -Tecnicas de compresion "lowless" sin perdida (para datos en los que es imprescindible que no se pierda nada de informacin, como por ejemplo registros de bases de datos, ficheros ejecutables, hojas de clculo...etc).

-Tecnicas de compresion "lossy" con perdida (para datos en los que se permite cierta prdida de informacin "sin que se note demasiado", como por ejemplo en ficheros en MP3, imagenes en JPEG, PNG...etc. Aqu una pequea disminucin en la calidad final no se nota demasiado, pero influye muy positivamente en la reduccin del peso del fichero). Estos ltimos no entran dentro del presente trabajo. En este trabajo me he centrado solo en la compresin "lowless" sin prdida, es decir, tcnicas que nos garantizan que no habr ningn tipo de prdida de informacin al comprimirlos (factor fundamental para comprimir y recuperar programas, ficheros de bases de datos...etc). Tipos de compresin lowless: - 1. Algoritmos Estadsticos - 2. Algoritmos basados en diccionario ( sustitucionales).

Algoritmos ESTADSTICOS
Utilizan las propiedades estadsticas de la fuente para mejorar la codificacin (a cada mensaje de la fuente asigna una cadena de smbolos del alfabeto de salida). Se trata de aprovechar la redundancia de informacin de la fuente para conseguir esa compresin.

1.1 - Algoritmo Huffman Se basa en crear un rbol binario completo, que representa la codificacin de los mensajes de la fuente, en el que cada nodo intermedio es menor que sus hijos (y la raiz el menor de todos). Los nodos-hoja contienen cada uno de los mensajes emitidos por la fuente. El cdigo para cada mensaje se construye siguiendo el camino desde el nodo raz hasta la hoja que representa el mensaje. Adems, si el decodificador implementa el mismo rbol usado para comprimir, la decodificacin no ser ms que leer bits e ir siguiendo el camino desde la raiz del arbol hasta las hojas en funcion del valor de esos bits. Al llegar a la hoja habremos llegado al mensaje. La codificacin es inversamente proporcional a la probabilidad de aparicin del mensaje. Al mensaje ms redundante, que se repita ms, se le dar una codificacin ms corta asignndole menos smbolos del alfabeto de salida y ahorrando as espacio.

En cada paso se recogen los dos nodos con menor probabilidad del rbol y se crea un nodo padre para ambos que contendr la probabilidad sumada de los dos. Los nodos con menor probabilidad irn quedando al fondo. Generalmente los descompresores de este tipo no tiene posibilidad de conocer previamente las probabilidades de los mensajes, pues slo recibe los cdigos asignados a los mensajes; en consecuencia el rbol ya procesado ha de ser pasado al descompresor, junto con los datos. Esto representa una carga adicional al fichero comprimido que resta en parte la eficiencia de esta tcnica. Por ello una de las soluciones es hacer que estos algoritmos sean "adaptativos": se construye el rbol dinamicamente tanto por el compresor como por el descompresor, y as no estaremos obligados a pasarle al descompresor el rbol. Dependiendo del compresor, se suelen utilizar diferentes implementaciones "adaptativas" para los compresores.

1.2 - Algoritmo Shannon-Fano Construye un arbol como Huffman, pero en vez de partir desde las hojas a la raiz, este algoritmo parte desde la raiz hacia las hojas. Inicialmente considera a todos los mensajes en un solo conjunto. En cada etapa, se intenta dividir el conjunto en dos conjuntos con la probabilidad ms parecida posible entre ambos (para conseguir que, a mayor probabilidad, obtener conjuntos con menos elementos). Se asigna un bit con valor 0 1 a cada uno de estos dos nuevos conjuntos y se va repitiendo el proceso de manera recursiva para cada nuevo conjunto creado hasta llegar a conjuntos con un solo elemento que representarn un mensaje. 1.3 - Algoritmos Aritmticos Se basan tambin en las probabilidades de repeticin de los mensajes a la entrada, aunque su metodologa es my distinta. Lo que hacen es representar un valor del intervalo [0,1] con mayor numero de decimales -mayor precisioncuanto mayor sea la informacin de los datos a comprimir. Basicamente va dividiendo el intervalo [0,1] sucesivamente hasta obtener un numero -dentro de ese intervalo- que utilice menos bits para representar toda la entrada. As el decompresor podr reconstruir la entrada con ese nmero ms la informacin del numero de elementos codificados y sus probabilidades correspondientes. Es un proceso bastante eficiente, aunque como se acaba de decir las probabilidades deben ser incluidas en el fichero comprimido. Por ello se suelen utilizar tambin modelos adaptativos, que cambian dinmicamente con la entrada.

1.4 - Algoritmos Predictivos Intentan predecir el siguiente mensaje de la entrada en base a lo que se sabe de la entrada procesada en ese momento. Si el mensaje de la entrada coincide con el predicho la codificacin se podr hacer con menos bits. En caso contrario se har con ms bits (que permitan la sincronizacin con el decompresor a la hora de mantener las mismas tablas internas; as ya no necesitamos incluirlas en el fichero comprimido). Son adaptativos. En consecuencia suelen ser ms rpidos que las tcnicas anteriores, tanto para compresin como decompresin, y ademas no son difciles de programar (s su mejora). Son muy malos cuando hay mucha redundancia, as que en la prctica se suelen usar en conjuncin con otras tcnicas de compresin para tratar los casos en que hay excesiva redundancia (por ejemplo el Run-Length).

2. Algoritmos BASADOS EN DICCIONARIO


Son las tcnicas ms utilizadas, generalmente se las implementa en conjuncin con compresores estadsticos. 2.1 - Algoritmo Run-Length tambien denominado RLE (Run Length Encoding). Es el mas simple y a la vez el ms ineficiente. Lo incluyo aqu porque se podra considerar que utiliza un diccionario deslizante para predecir el siguiente carcter de la entrada. Realmente se le considera ya algo "primitivo". Adems hay diferentes formas de implementarlo, todas ellas patentadas. Busca repeticiones consecutivas de un mismo smbolo y lo que hace es almacenar en un byte el nmero de esas repeticiones consecutivas y en el segundo byte el escribe el smbolo. Como ejemplo:
17 48 (el byte 48 se repite 17 veces)

Demuestra gran eficiencia cuando hay un alto nmero de repeticiones consecutivas de un determinado byte. La unidad bsica seran dos bytes, el primero indica el numero de veces que se repite el segundo. Bsicamente se utiliza para crear archivos tipo BMP o PCX sin gradaciones de color. Era utilizado por el ARC, entre otros.

2.2 - Algoritmo LZW Pertenece a la familia de los LZ78 (Liv & Zempel). Es un algoritmo Greedy Adaptativo. Es el que implementan la mayora de los programas de compresin. Fue publicado por primera vez en 1984 en IEEE Computer por Terry Welch. Actualmente esta tcnica est patentada por Unisys. En la codificacin, al principio el compresor parte de un diccionario en el que se han introducido todas las cadenas de longitud 1, es decir, 256 cadenas que constan de un solo carcter (los caracteres ASCII). Aadir una cadena al diccionario significa asignarle un identificador secuencial consecutivo a partir de la anterior cadena. Como al principio las primeras 256 posiciones estn ocupadas el siguiente nmero a asignar es el 257. Este nmero ya no cabe en 8 bits, por lo que las salidas (los identificadores de las cadenas ya reconocidas) del algoritmo son al principio de 9 bits e irn aumentando conforme se vaya quedando pequeo el diccionario. Durante el proceso, se van aadiendo nuevas cadenas de longitud mayor. Al identificarse cadenas ms largas con un nmero de varios bits, la compresin resulta bastante efectiva. El proceso de compresin es:

La descompresin es ms sencilla, aunque tiene que construir el mismo rbol. El descompresor recibe inicialmente cdigos de 9 bits que usar como ndices en el diccionario. Mantendr el diccionario actualizado a partir de esa informacin. El proceso de decompresin es el siguiente:

Se ha visto que el diccionario iba creciendo a medida que se iban insertando nuevas cadenas en l. Sin embargo hemos de ser conscientes de que la memoria es finita y hay que poner tope a esa insercin. Adems, a medida que el diccionario vaya creciendo, se utilizarn ms bits para identificar a cada cadena, con lo que para las cadenas cortas (que son tambin las ms probables) se conseguir una codificacin pobre e ineficiente, puesto que ahorrar pocos bits. Una vez puesto un tope (digamos de 12 a 14 bits, es decir, entre 4096 y 16384 cadenas), est claro que el diccionario se llenar y habr que eliminar las cadenas que guarda. Algunos modelos desechan todas las cadenas del diccionario y lo "vacan completamente", otros aprovechan las cadenas que ms se han usado y la dejan en el diccionario; no hay una condicin nica que nos asegure que una otra opcin ser mejor.

2.3 Algoritmo LZ77 Es ms utilizado que el LZ78 (posiblemente por tener menos problemas de propiedad). Es una tcnica presente en multitud de modelos de compresin pues tiene tantas decisiones de diseo que cada uno es implementado de manera distinta a los dems. Esto hace que no se puedan patentar o que se puedan saltar de una forma u otra las patentes actuales. Como ejemplo de compresores que lo usan sera: ARJ, PKZIP, RAR, etc). El LZ77 mantiene tambin un registro de los ltimos caracteres procesados de la entrada, pero en este caso no construye un diccionario explcito. En cada momento, el algoritmo se encuentra procesando en un punto de la entrada los "n"

caracteres anteriores que forman la "historia" del algoritmo "ventana" (lo que equivale al diccionario). Los caracteres posteriores al punto actual forman el llamado "buffer de adelantamiento". En cada paso, la cadena que comienza en el punto actual de la entrada se busca hacia atrs en la "historia". Si se encuentra una coincidencia que sea lo suficientemente larga como para tenerla en cuenta, a la salida se sustituye la cadena coincidente por un par que indica el "desplazamiento hacia atrs" y la "longitud" de la coincidencia con la cadena hacia atrs. Como los pares "desplazamiento, longitud" ocupan menos que la cadena que coincidi, se obtiene compresin. Si no se encuentra una coincidencia, la salida es una copia literal de la entrada. Posteriormente se avanza la ventana (es decir, se avanza en la entrada) bien de longitud si hubo coincidencia, bien un carcter si no la hubo. El hecho de ir desplazando la ventana sobre la entrada hace que a estos algoritmos se les llame tambin de "ventana deslizante". Cuanto ms grande sea la ventana, mayor ser la compresin (ms grande es la historia sobre la que se buscan posibles coincidencias y mayor la probabilidad de encontrar una coincidencia ms larga), aunque para una ventana grande necesitaremos ms bits para codificar los valores del desplazamiento. Por ello el tamao de ventana ms apropiado debera ser uno que haga que el campo de desplazamiento quepa en pocos bits. El descompresor es muy sencillo, ya que su "ventana" est formada por los datos que ha decomprimido anteriormente, y, cuando recibe un par (desplazamiento, longitud), slo tiene que copiar a la salida la longitud de bytes que estn en el desplazamiento de los bytes antes. En el caso de recibir un literal, este es copiado tal cual a la salida.

You might also like