Códigos de Correção de Erros

Em um sistema que utilize códigos de correção ou detecção de erros, um codificador gera uma palavra de código contendo a informação recebida e o código de correção (ou detecção) de erros para essa informação. As palavras de código fazem parte de um subconjunto em S de um universo em U de vetores. Uma falha pode fazer com que uma palavra de código produza uma outra palavra de código contendo erro. Se essa palavra de código fizer parte de em S, esse erro não será detectado, e se fizer parte de em U - S, então o erro será detectado .

Dependendo do código de correção de erros utilizado ( bloco ou árvore) , a palavra de código poderá ser algumas vezes maior que a informação original recebida pelo codificador. No momento de sua utilizaçào, a palavra de código e decodificada, e no caso de conter erro, este será corrigido com o uso do código de correção recebido junto com a informação, e a informação fornecida volta a ser a mesma recebida pelo codificador.

Os códigos estão divididos em cíclicos e não-cíclicos. Os códigos cíclicos são aqueles em que uma rotação realizada na palavra de código gera uma nova palavra de código, o mesmo conceito não se aplica para códigos não-cíclicos.

O código de Hamming é descrito por uma matriz de verificação de paridade H, contendo m linhas e 2 m - 1 colunas. Quando uma palavra de codigo X e transmitida, a palavra recebida será X + E, onde E representa o vetor erro. Se não ocorrer erros, o vetor erro sera igual a zero. Se ocorrer um erro, o vetor E conterá apenas um bit 1, e os demais estarão em 0. O vetor recebido e verificado multiplicando pela matriz H. Assim, a verificação é função apenas do vetor erro E, e da matriz de paridade H. S e ocorreu um erro em um unico bit, este estara representado por 1 no vetor E, e multiplicando-se esse vetor pela matriz H, obtém-se a linha da matriz e a palavra correta.

Um dos maiores problemas de se usar códigos de correção de erros, e que quanto maior a habilidade de corrigir erros, maior será o tamanho do código. Outro problema é quanto a complexidade matemática para implementação dos codificadores e decodificadores.