Salta al contenuto
Note per Studenti Esercizio - codice non lineare a quattro parole, distanza 2 e bound di Singleton (esame del 21 giugno 2023, es. 159)

Esercizio - codice non lineare a quattro parole, distanza 2 e bound di Singleton (esame del 21 giugno 2023, es. 159)

Esame
In questa pagina 6

Testo (tema d'esame del 21 giugno 2023, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Si consideri il codice di correzione d'errore binario a blocco utilizzato su canale binario simmetrico senza memoria C={0011, 0101, 1001}.\mathcal C=\{0011,\ 0101,\ 1001\}.

  1. Calcolare una sequenza da aggiungere come nuova parola di codice che sia a distanza 22 da tutte le altre parole. Sia C′\mathcal C' il nuovo codice così ottenuto.
  2. Calcolare il numero di errori che possono essere rilevati e corretti a) quando si trasmette la nuova parola di codice, oppure b) quando si trasmette una qualsiasi parola del codice C′\mathcal C'.
  3. Dire se il codice C′\mathcal C' è lineare, giustificando la risposta.
  4. Dire se può esistere un codice binario lineare con solo 44 parole della stessa lunghezza di quelle di C\mathcal C, che corregge 22 errori.
  5. Dire se l'ultimo bit delle parole di codice in C\mathcal C è utile per ridurre la probabilità di errore di decodifica, giustificando la risposta.

Teoria usata: Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetricoPer proteggere i bit dagli errori si può chiedere la ritrasmissione (ARQ, serve il canale di ritorno), aggiungere ridondanza per correggere (FEC) o unire le due cose (HARQ). Un codice a blocco $(n,k)$ trasforma $k$ bit in una parola di $n>k$ bit scelta tra $2^k$ parole su $2^n$ sequenze; modulatore, canale e demodulatore equivalgono a un canale binario simmetrico senza memoria con probabilità d'errore sul bit $P_{bit}$. Per $P_{bit}<\frac12$ il decodificatore ML sceglie la parola a minima distanza di Hamming; con distanza minima $d_{min}$ si correggono sempre $t=\lfloor\frac{d_{min}-1}{2}\rfloor$ errori e se ne rivelano sempre $d_{min}-1$. Il tasso è $R=\frac kn$ e la probabilità d'errore di parola è limitata da $P(\text{più di }t\text{ errori})$. L'ARQ ha efficienza $S_{SW}$, $S_{GBN}$, $S_{SR}$ in funzione di $t_P$, $t_A$, $\tau_P$ e $p$.Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetrico →, Codici a blocco lineari - matrice generatrice, forma sistematica e bound di SingletonUn codice a blocco è lineare se le sue $2^k$ parole formano un sottospazio dello spazio delle sequenze binarie di $n$ bit, con la somma modulo 2 (XOR) senza riporto: contiene la parola nulla ed è chiuso rispetto alla somma. Si descrive con la matrice generatrice $G$ ($n\times k$, rango $k$, $\mathbf c=G\mathbf b$, le colonne sono parole di codice); le operazioni sulle colonne non cambiano il codice, le permutazioni delle righe permutano i bit e non cambiano le prestazioni sul canale senza memoria. In forma sistematica $G=\begin{bmatrix}I_k\A\end{bmatrix}$ e $\mathbf c=[\mathbf b;A\mathbf b]$. Per i codici lineari la distanza minima è il peso di Hamming minimo delle parole non nulle e vale il bound di Singleton $d_{min}\le n-k+1$.Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton →.

1. Una parola a distanza 2 da tutte

Le parole hanno lunghezza 44, quindi la nuova parola w=[w1,w2,w3,w4]\mathbf w=[w_1,w_2,w_3,w_4] deve avere 44 bit. Le tre parole di C\mathcal C sono tra loro a distanza 22 (dH(0011,0101)=2d_H(0011,0101)=2 nelle posizioni 2,32,3; dH(0011,1001)=2d_H(0011,1001)=2 nelle posizioni 1,31,3; dH(0101,1001)=2d_H(0101,1001)=2 nelle posizioni 1,21,2), e hanno tutte l'ultimo bit uguale a 11 e un solo 11 nei primi tre bit (001001, 010010, 100100).

Caso w4=1w_4=1. L'ultimo bit coincide con quello di tutte le parole: la distanza è quella dei primi tre bit. Servono w1w2w3w_1w_2w_3 a distanza 22 da 001001, 010010 e 100100. Il vettore 000000 è a distanza 11 da tutti: no. Il vettore 111111 è a distanza 22 da tutti (111111 contro 001001 differisce in 22 posizioni): sì. Quindi w=1111\mathbf w=1111.

Caso w4=0w_4=0. L'ultimo bit differisce da quello delle parole: contribuisce 11 alla distanza, e i primi tre bit devono essere a distanza 11 da 001,010,100001,010,100: il vettore 000000 lo è (un solo 11 da cambiare). Quindi w=0000\mathbf w=0000.

Le sequenze possibili sono dunque 00000000 e 11111111 (Python: nessun'altra tra le 1616). Si sceglie w=0000\mathbf w=0000, e C′={0011,0101,1001,0000}\mathcal C'=\{0011,0101,1001,0000\}.

2. Errori rivelati e corretti

In C′\mathcal C' tutte le coppie di parole sono a distanza 22: dH(0000,0011)=dH(0000,0101)=dH(0000,1001)=2d_H(0000,0011)=d_H(0000,0101)=d_H(0000,1001)=2 (i pesi sono 22) e le tre distanze tra le parole originali. Quindi dmin=2d_{min}=2.

  • a) Trasmettendo la parola nuova 00000000 la parola più vicina tra le altre è a distanza 22: un errore singolo si rileva (la sequenza ricevuta, a distanza 11 da 00000000, non è una parola); non si corregge, perché la sequenza ottenuta è a distanza 11 da altre parole: per esempio 00010001 è a distanza 11 da 00000000, 00110011, 01010101 e 10011001, tutte e quattro. Rivelati 11, corretti 00.
  • b) Per una parola qualsiasi di C′\mathcal C' la distanza minima dalle altre è 22: stessi numeri, rivelati dmin−1=1d_{min}-1=1, corretti ⌊2−12⌋=0\lfloor\frac{2-1}2\rfloor=0.

3. C′\mathcal C' è lineare?

No. Un codice lineare è chiuso rispetto alla somma modulo 22 (Codici a blocco lineari - matrice generatrice, forma sistematica e bound di SingletonUn codice a blocco è lineare se le sue $2^k$ parole formano un sottospazio dello spazio delle sequenze binarie di $n$ bit, con la somma modulo 2 (XOR) senza riporto: contiene la parola nulla ed è chiuso rispetto alla somma. Si descrive con la matrice generatrice $G$ ($n\times k$, rango $k$, $\mathbf c=G\mathbf b$, le colonne sono parole di codice); le operazioni sulle colonne non cambiano il codice, le permutazioni delle righe permutano i bit e non cambiano le prestazioni sul canale senza memoria. In forma sistematica $G=\begin{bmatrix}I_k\A\end{bmatrix}$ e $\mathbf c=[\mathbf b;A\mathbf b]$. Per i codici lineari la distanza minima è il peso di Hamming minimo delle parole non nulle e vale il bound di Singleton $d_{min}\le n-k+1$.Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton →), ma 0011+0101=0110∉C′.0011+0101=0110\notin\mathcal C'. (Contiene sì la parola nulla, ma questo da solo non basta: serve la chiusura per tutte le somme.) Anche C\mathcal C non è lineare (non contiene 0\mathbf 0 e ha 33 parole: non è una potenza di 22).

4. Un codice lineare con 44 parole che corregge 22 errori?

Un codice lineare con 4=2k4=2^k parole ha k=2k=2; la lunghezza è n=4n=4. Per correggere 22 errori serve dmin≥2t+1=5d_{min}\ge2t+1=5. Il bound di Singleton dà dmin≤n−k+1=4−2+1=3<5.d_{min}\le n-k+1=4-2+1=3<5. No, non può esistere (servirebbero almeno n−k≥2t=4n-k\ge2t=4 bit di parità, cioè n≥6n\ge6).

5. L'ultimo bit è utile?

Tutte le parole di C\mathcal C hanno l'ultimo bit uguale a 11: quel bit non distingue una parola dall'altra e non porta informazione. Sul BSC senza memoria gli errori sui bit sono indipendenti: la verosimiglianza di una sequenza ricevuta data una parola è il prodotto dei fattori dei singoli bit, e il fattore dell'ultimo bit è lo stesso per tutte le parole (dipende solo dal valore ricevuto, 1−Pbit1-P_{bit} o PbitP_{bit}). Nel confronto tra le parole quel fattore si semplifica: la decisione e la probabilità di errore non cambiano se si toglie il bit. Il codice {001,010,100}\{001,010,100\} che si ottiene ha le stesse distanze (22 tra tutte le coppie).

Controllo numerico (Python, parole equiprobabili, ML): P(decisione corretta)=0,84P(\text{decisione corretta})=0{,}84 per Pbit=0,1P_{bit}=0{,}1 con e senza l'ultimo bit, 0,98340{,}9834 per Pbit=0,01P_{bit}=0{,}01 in entrambi i casi. L'ultimo bit riconosce solo l'errore su se stesso, e non serve a ridurre la probabilità d'errore sulla decisione: no, non è utile (peggiora solo il rate, R=log⁡234R=\frac{\log_23}{4} invece di log⁡233\frac{\log_23}3).

Errori comuni

  • Cercare la nuova parola solo guardando una coppia: serve la distanza 22 da tutte le parole.
  • Dire che C′\mathcal C' è lineare perché ora contiene 0\mathbf 0: la somma 0011+01010011+0101 non è nel codice.
  • Applicare Singleton a un codice non lineare: vale per i lineari (nel punto 4 il codice è lineare per ipotesi).
  • Dire che l'ultimo bit "aumenta la distanza": la distanza tra due parole non cambia se si toglie un bit uguale in tutte.

Versione ripasso

Testo. C={0011,0101,1001}\mathcal C=\{0011,0101,1001\} su BSC. Richiesti: una parola a distanza 22 da tutte e C′\mathcal C'; errori rivelati e corretti; linearità di C′\mathcal C'; esiste un codice lineare di 44 parole e n=4n=4 che corregge 22 errori; l'ultimo bit riduce l'errore?

Punto 1 (Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetricoPer proteggere i bit dagli errori si può chiedere la ritrasmissione (ARQ, serve il canale di ritorno), aggiungere ridondanza per correggere (FEC) o unire le due cose (HARQ). Un codice a blocco $(n,k)$ trasforma $k$ bit in una parola di $n>k$ bit scelta tra $2^k$ parole su $2^n$ sequenze; modulatore, canale e demodulatore equivalgono a un canale binario simmetrico senza memoria con probabilità d'errore sul bit $P_{bit}$. Per $P_{bit}<\frac12$ il decodificatore ML sceglie la parola a minima distanza di Hamming; con distanza minima $d_{min}$ si correggono sempre $t=\lfloor\frac{d_{min}-1}{2}\rfloor$ errori e se ne rivelano sempre $d_{min}-1$. Il tasso è $R=\frac kn$ e la probabilità d'errore di parola è limitata da $P(\text{più di }t\text{ errori})$. L'ARQ ha efficienza $S_{SW}$, $S_{GBN}$, $S_{SR}$ in funzione di $t_P$, $t_A$, $\tau_P$ e $p$.Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetrico →)

  • w4=1w_4=1: w1w2w3w_1w_2w_3 a distanza 22 da 001,010,100⇒111001,010,100\Rightarrow111, quindi 11111111. w4=0w_4=0: distanza 11 dai tre ⇒000\Rightarrow000, quindi 00000000. Scelta: C′={0011,0101,1001,0000}\mathcal C'=\{0011,0101,1001,0000\}.

Punto 2: dmin=2d_{min}=2 (anche per la parola nuova): rivela 11, corregge 00 (per esempio 00010001 è a distanza 11 da tutte e quattro le parole).

Punto 3: non lineare: 0011+0101=0110∉C′0011+0101=0110\notin\mathcal C'.

Punto 4 (Codici a blocco lineari - matrice generatrice, forma sistematica e bound di SingletonUn codice a blocco è lineare se le sue $2^k$ parole formano un sottospazio dello spazio delle sequenze binarie di $n$ bit, con la somma modulo 2 (XOR) senza riporto: contiene la parola nulla ed è chiuso rispetto alla somma. Si descrive con la matrice generatrice $G$ ($n\times k$, rango $k$, $\mathbf c=G\mathbf b$, le colonne sono parole di codice); le operazioni sulle colonne non cambiano il codice, le permutazioni delle righe permutano i bit e non cambiano le prestazioni sul canale senza memoria. In forma sistematica $G=\begin{bmatrix}I_k\A\end{bmatrix}$ e $\mathbf c=[\mathbf b;A\mathbf b]$. Per i codici lineari la distanza minima è il peso di Hamming minimo delle parole non nulle e vale il bound di Singleton $d_{min}\le n-k+1$.Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton →)

  • k=2k=2, n=4n=4, t=2t=2: serve dmin≥5d_{min}\ge5 ma dmin≤n−k+1=3d_{min}\le n-k+1=3: no.

Punto 5

  • Bit uguale in tutte le parole: stesso fattore di verosimiglianza per tutte, si semplifica. P(C)=0,84P(C)=0{,}84 a Pbit=0,1P_{bit}=0{,}1 con e senza il bit: no, non è utile.

Errori tipici

  • Verificare la distanza solo da una parola.
  • Credere C′\mathcal C' lineare perché contiene 0\mathbf 0.
  • Pensare che un bit costante aumenti la distanza.

Teoria collegata