La codificación de canales es una técnica que se utiliza en las comunicaciones digitales para garantizar que una transmisión se reciba con errores mínimos o nulos. Los diversos métodos de codificación que se pueden emplear se logran entrelazando dígitos binarios adicionales en la transmisión. Cuando se decodifica en el extremo receptor, se puede verificar la transmisión en busca de errores que puedan haber ocurrido y, en muchos casos, se puede reparar. Otras veces, el destinatario simplemente vuelve a solicitar la transmisión.
La idea detrás de la codificación de canales se desarrolló debido a la inevitable existencia de errores en cualquier tipo de canal de comunicación. Las ondas de radio, las señales eléctricas e incluso las ondas de luz a través de los canales de fibra óptica tendrán cierta cantidad de ruido en el medio, así como la degradación de la señal que se produce a cierta distancia. Siendo un problema tan común en las comunicaciones, numerosas teorías sobre cómo abordarlo se han desarrollado bajo ramas de las matemáticas aplicadas como la teoría de la información y la teoría de la codificación.
Un método comúnmente utilizado se llama solicitud de repetición automática (ARQ), que simplemente implica que el destinatario verifique la transmisión en busca de errores y solicite la retransmisión en caso de que ocurra. Esto a veces se denomina corrección de errores hacia atrás. La codificación de canales, por otro lado, es una técnica de corrección de errores en avance (FEC). El remitente prepara los bits para la transmisión utilizando un algoritmo especial conocido como código de corrección de errores, que luego se decodifica en el extremo receptor. Ambos métodos también se utilizan a menudo de manera híbrida, lo que permite reparar pequeños errores en la transmisión con un código de canal, y los errores importantes requieren una retransmisión completa.
La primera técnica de codificación de canales fue creada por un matemático llamado Richard Hamming, quien desarrolló lo que se conoce como el código Hamming. Este fue el primer código de corrección de errores hacia adelante, que implica la inclusión de dígitos binarios adicionales en la transmisión que se denominan bits de paridad. Un cálculo inteligente de los bits de paridad en el extremo receptor de la transmisión revelará si se han producido errores en la transmisión, dónde se encuentran en la cadena de bits y cómo repararlos para recuperar la transmisión original.
El código Hamming pertenece a la familia de métodos de codificación de canales denominados códigos de bloque, muchos de los cuales se han desarrollado a lo largo de los años. Los códigos de bloque generalmente implican que los bits se recopilen en bloques de longitudes fijas, que luego se denominan palabras de código. A cada palabra de código se le asignan los bits de verificación apropiados para que el destinatario la decodifique. Los métodos de código de bloque tienden a aumentar el tamaño de la transmisión debido a los bits agregados en la palabra de código, lo que puede tener un efecto en el ancho de banda del canal.
Otro método de codificación de canales se conoce como código convolucional. Estos métodos son mucho más rápidos y pueden codificar un flujo de bits de cualquier longitud. Un código de este tipo de uso común se llama código Viterbi, creado por el matemático italiano Andrew Viterbi. El inconveniente de este método es que a medida que aumenta la longitud del código convolucional, también aumenta su complejidad al decodificar. En muchos casos, los códigos convolucionales se utilizan en combinación con códigos de bloque en lo que se conoce como códigos de corrección de errores concatenados.