Che cos’è la codifica a blocchi?

Parte della teoria del codice, la codifica a blocchi è una forma di correzione degli errori in avanti (FEC), nota anche come codice di canale, che converte i messaggi in codici specifici e invia le informazioni come un blocco di dati con una lunghezza predeterminata. Blocchi di dati più grandi rendono più facile per il computer ricevente decodificare le informazioni e correggere gli errori che si verificano durante il trasferimento. I codici a blocchi e i codici convoluzionali sono due tipi di codice comunemente usati in FEC. Questi tipi di codice consentono di inviare un messaggio su una connessione inaffidabile e di essere comunque decifrabile quando arriva.

L’uso della codifica a blocchi è necessario a causa del rumore che si verifica quando viene inviato un messaggio. Quando i dati devono percorrere una lunga distanza o su una connessione inaffidabile, il peso e la distanza di Hamming vengono utilizzati per determinare la probabilità di errori. Il peso di hamming è il numero di cifre necessarie per esprimere tutte le possibili combinazioni di codici e la distanza di hamming è il numero di errori che dovrebbero verificarsi prima che un bit rappresenti un’informazione legittima, ma sbagliata.

Ad esempio, se un mittente che utilizza la codifica a blocchi volesse inviare un messaggio che potrebbe utilizzare solo tre possibili codici di tre cifre ciascuno, il peso di Hamming sarebbe tre. I codici potrebbero essere 000, 010 e 011. Se un errore ha comportato la modifica di una cifra, ad esempio la modifica di 000 in 010, il codice verrebbe letto come un codice legittimo (010) ma non il codice previsto dal mittente (000) . Quindi la distanza di Hamming per questo codice è una perché solo una cifra deve cambiare per causare un errore che il computer non può correggere.

Per ridurre la distanza di Hamming e ridurre gli errori, i dati vengono inviati come un blocco di codice codificato in parole di codice specifiche di una certa lunghezza. I bit di dati del messaggio originale sono indicati come k bit. I k bit vengono tradotti nei corrispondenti n bit, che sono codici che sono stati selezionati per essere utilizzati come codici più lunghi per ogni k bit. Gli uno o gli zeri vengono aggiunti per rendere i bit di lunghezza uniforme e ridurre la distanza di Hamming. Quindi questi blocchi di n bit vengono trasmessi al computer ricevente.

Pensare al codice a blocchi è più semplice quando lo si confronta con due persone che hanno una conversazione. Quando si parla in una stanza rumorosa o si urla a lunga distanza, c’è più spazio per errori in ciò che sente la persona che riceve. Se la frase è lunga, la persona può correggere più errori considerando l’intera frase nel contesto, ma le frasi brevi hanno un tasso di errore più elevato perché è più difficile decifrare ciò che la persona sta dicendo.

Ad esempio, se una persona grida “Gatto rosso” e l’altra sente “Gatto nutrito”, interrompe la frase in modo errato. Se, tuttavia, la prima persona ha detto “Ho un gatto di colore rosso” e la seconda ha sentito “Ho un gatto di colore da mangiare”, il contesto della frase rende facile determinare la persona che ha effettivamente detto “rosso” e non “nutrito”. Questo è il principio alla base della codifica a blocchi e dell’uso di codici più lunghi e uniformi per aiutare i computer a tradurre accuratamente un blocco di informazioni.