Esercizio - Codice di controllo per numeri di registro
Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.
In questa pagina 6
Testo (scheda "Channel coding"). Un addetto vuole assegnare un numero di registro decimale univoco a tutti i pacchi gestiti, in modo da identificare fino a 100 miliardi di pacchi, e in modo che, se una sola cifra di un numero è trascritta male nel registro, l'errore venga sempre rivelato. Quante cifre servono nel numero di registro? Scrivere un possibile algoritmo per crearlo.
Teoria usata: Codici a blocco - distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza in modo mirato: $k$ bit di informazione diventano una parola di codice di $n>k$ bit scelta tra $2^k$ parole ammesse. Se la parola ricevuta non è una parola di codice l'errore è rivelato (e si può chiedere la ritrasmissione, ARQ) oppure corretto (FEC). La qualità dipende dalla distanza minima di Hamming $d_{min}$: si rivelano fino a $d_{min}-1$ errori e se ne correggono $t<d_{min}/2$, ma non contemporaneamente. Per un BSC con $P_{bit}<1/2$ la decisione ottima ML coincide con quella a distanza minima. Limite di Hamming: $k/n\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$.Codici a blocco - distanza minima, rivelazione e correzione → (rivelazione con , codice a bit di parità), Codici a blocco lineari e sindromeUn codice a blocco è lineare se la somma (XOR) di due parole di codice è una parola di codice: allora le parole formano un sottospazio di $\mathbb Z_2^n$. Si descrive con la matrice generatrice $G$ ($n\times k$, $\mathbf c=G\mathbf b$; in forma sistematica $G=\binom{I_k}{A}$) e con la matrice di controllo $H$ ($(n-k)\times n$, $H\mathbf c=\mathbf 0$ se e solo se $\mathbf c\in\mathcal C$; per $G$ sistematica $H=[A\mid I_{n-k}]$). La distanza minima è il peso minimo delle parole non nulle e vale $d_{min}\le n-k+1$ (Singleton). La sindrome $\boldsymbol\sigma=H\tilde{\mathbf c}$ dipende solo dall'errore; la decodifica a distanza minima è $\hat{\mathbf c}=\tilde{\mathbf c}-\varepsilon(\boldsymbol\sigma)$, dove $\varepsilon(\boldsymbol\sigma)$ è il coset leader (vettore di peso minimo con quella sindrome).Codici a blocco lineari e sindrome → (limite di Singleton).
1. Cambiare alfabeto
Il corso ha sempre lavorato con bit, ma il testo parla di cifre decimali: l'alfabeto è invece di . La distanza di Hamming resta la stessa idea: numero di cifre diverse. Tutti i ragionamenti sulla distanza minima valgono ancora (non serve la linearità).
2. Quante cifre di informazione
Servono identificatori diversi ( miliardi). Con cifre decimali se ne hanno : cifre danno esattamente numeri (). Quindi per identificare, ma non basta per rivelare errori: con cifre ogni sequenza è un numero valido, e se si sbaglia una cifra si ottiene un altro numero valido (distanza tra parole valide: , nessun errore rivelabile).
3. Quante cifre in tutto
Per rivelare ogni errore su una sola cifra serve (un codice con rivela errori): due numeri validi devono differire in almeno cifre. Il limite di Singleton dà , cioè : servono almeno cifre (le di informazione più una cifra di controllo). E bastano, con l'idea del bit di parità portata in . Il codice è un blocco sistematico.
4. L'algoritmo
Si prende il numero di cifre e si copia: per . La cifra di controllo è scelta in modo che la somma di tutte le cifre, compresa lei, sia congruente a modulo : Esempio. : somma delle cifre , , quindi e il numero di registro è (somma , verificato al calcolatore).
Controllo alla trascrizione. Si ricalcola la somma delle cifre modulo : se non è , c'è un errore.
5. Perché rivela ogni errore su una cifra
Se la cifra in posizione passa da a , la somma cambia di , che è un numero tra e diverso da e quindi non multiplo di : la somma modulo non è più . Quindi due numeri validi differiscono in almeno cifre: . Controllo numerico: tutti i errori su una cifra di danno somma (nessuno sfugge).
6. Limiti e miglioramenti
Come il bit di parità, questo codice rivela ma non corregge (non si sa quale cifra è sbagliata) e non rivela due errori che si compensano (per esempio su una cifra e su un'altra) né lo scambio di due cifre adiacenti: diventa ed è ancora valido. Per questo i codici reali (ISBN, carte di credito, codice fiscale) usano pesi diversi per le cifre (ISBN-10: somma pesata modulo ; carte di credito: algoritmo di Luhn, che raddoppia una cifra su due): aumentano la capacità di rivelare gli errori più frequenti nelle trascrizioni.