Rilevazione e correzione d'errore
# Rilevazione e correzione d'errore

La rilevazione e correzione dell'errore, in matematica, informatica, telecomunicazioni, e teoria dell'informazione, ha grande importanza pratica nel mantenimento dell'integrità dell'informazione nei sistemi con un canale rumoroso, o nei dispositivi per l'immagazzinamento dei dati caratterizzati da una scarsa affidabilità.

## Definizioni generali

* La rilevazione d'errore consiste nella capacità di scoprire la presenza di errori causati dal rumore o da altri fenomeni deterioranti durante una trasmissione di dati (ad es. tramite il bit di parità).
* La correzione d'errore consiste invece nell'ulteriore abilità di ricostruire i dati originali, eliminando gli errori occorsi durante la trasmissione.

Vi sono due differenti schemi di base per la progettazione della codifica di canale e del protocollo per un sistema che corregge gli errori:

* Automatic repeat-request (ARQ): Il mittente invia i dati ed anche un codice a rilevazione d'errore, che sarà utilizzato in ricezione per individuare gli eventuali errori, ed in tal caso chiedere la ritrasmissione dei dati corrotti. In molti casi la richiesta è implicita; il destinatario invia un acknowledgement (ACK) di corretta ricezione dei dati, ed il mittente re-invia solo quei dati per i quali non ha ricevuto, entro un prefissato tempo limite (timeout), il corrispondente ACK.
* Forward Error Correction (FEC): Il mittente codifica i dati con un codice a correzione d'errore (error correction code, ECC) ed invia il messaggio codificato. Il destinatario non invia mai alcun messaggio verso il mittente; esso decodifica ciò che riceve nella maniera più simile possibile a quella di un certo insieme prefissato di parole accettabili. Tali codici sono realizzati in modo tale che dovrebbe occorrere una quantità "irragionevole" di errori nei dati, affinché il destinatario decodifichi erroneamente, ottenendo finalmente dei dati diversi da quelli effettivamente inviatigli.

Entrambi gli schemi implicano l'introduzione di ridondanza (overhead) nel flusso di dati tra mittente e destinatario diminuendo così la portata utile (throughtput) informativa ovvero diminuendo l'efficienza di trasmissione e aumentando così la banda necessaria. Essi possono essere anche combinati tra loro, in modo tale che gli errori più lievi siano corretti senza necessità di ritrasmissione, e quelli più pesanti siano invece solamente individuati per poi richiedere la ritrasmissione.

