Salta al contenuto
Note per Studenti Esercizio 31 · codice a blocco non lineare, distanza minima e decodifica su un canale binario simmetrico (tema d'esame giugno 2017)

Esercizio 31codice a blocco non lineare, distanza minima e decodifica su un canale binario simmetrico (tema d'esame giugno 2017)

Esame
In questa pagina 5

Testo (tema d'esame del 26 giugno 2017 di un corso UniPD equivalente). Si consideri il codice a protezione d'errore con mappatura 00→000000\to0000, 01→011101\to0111, 10→101110\to1011, 11→111011\to1110.

  1. (3p) Si dica se il codice è a) a blocco, b) lineare e c) in forma sistematica.
  2. (3p) Trovare il massimo numero di errori che può essere rivelato da una qualsiasi parola ricevuta.
  3. (2p) Trovare l'efficienza della sorgente, assumendo che i simboli di informazione siano l'uscita di una sorgente senza memoria con densità discreta di probabilità pb(0)=14p_b(0)=\frac14, pb(1)=34p_b(1)=\frac34.
  4. (3p) Calcolare la probabilità di errore di decodifica sulla parola, condizionata alla parola trasmessa b=[00]\mathbf b=[00], per un canale binario simmetrico senza memoria con probabilità di errore Pbit=0,1P_{bit}=0{,}1 e decodifica a minima distanza.

Teoria usata: Codifica di canale - codici a blocco, distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza ai bit per rivelare o correggere gli errori del canale. Un codice a blocco $(n,k)$ trasforma $k$ bit in $n$ bit (rendimento $R_c=\frac kn$). Con la distanza di Hamming minima $d_{min}$ il codice rivela fino a $d_{min}-1$ errori e ne corregge $t=\left\lfloor\frac{d_{min}-1}2\right\rfloor$ (decodifica a minima distanza). Vale il limite di Singleton $d_{min}\le n-k+1$. Su un canale binario simmetrico con errore $p$, la probabilità di parola sbagliata è $P_w\le\sum_{i>t}\binom nip^i(1-p)^{n-i}$ e, con $p$ piccola, $P_{bit}\approx\frac{d_{min}}n\binom n{t+1}p^{t+1}$.Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione →, Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di HammingUn codice a blocco è lineare se la somma (bit a bit, modulo 2) di due parole di codice è una parola di codice. Si descrive con la matrice generatrice $G$ ($k\times n$, $\mathbf c=\mathbf mG$) e con la matrice di controllo di parità $H$ ($(n-k)\times n$, $G H^T=0$); in forma sistematica $G=[I_k\mid P]$ e $H=[P^T\mid I_{n-k}]$. La distanza minima è il peso minimo delle parole non nulle. La sindrome $\mathbf s=\mathbf rH^T$ dipende solo dall'errore: se è nulla la parola è valida, altrimenti identifica l'errore (un solo errore ha per sindrome la colonna di $H$ corrispondente). I codici di Hamming $(2^m-1,,2^m-1-m)$ hanno $d_{min}=3$.Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming →, Informazione ed entropiaL'informazione di un evento di probabilità $p$ è $\log_2\frac1p$ bit; l'entropia $H(x)=\sum p\log_2\frac1p$ è l'informazione media e misura l'incertezza della sorgente: $0\le H\le\log_2M$, con il massimo quando i simboli sono equiprobabili. Per più simboli: $H(x,y)\le H(x)+H(y)$ (uguaglianza se indipendenti), $H(x|y)=H(x,y)-H(y)$. Per una sorgente con $F_s$ simboli al secondo il rate di informazione è $F_sH_s$, il rate nominale $F_s\log_2M$ e l'efficienza $\eta=\frac{H_s}{\log_2M}$.Informazione ed entropia →.

(1) Blocco, lineare, sistematico

  • a) A blocco: sì. A ogni blocco di k=2k=2 bit di informazione si associa una parola di n=4n=4 bit: codice (4,2)(4,2), rendimento Rc=12R_c=\frac12.
  • b) Lineare: no. Un codice è lineare se la somma di due parole è una parola. 01⊕10=1101\oplus10=11, che dovrebbe corrispondere alla somma delle parole 0111⊕1011=11000111\oplus1011=1100, ma la parola associata a 1111 è 1110≠11001110\ne1100. La somma di due parole valide non è una parola valida: non è lineare. (Per questo la minima distanza non si ottiene dal peso minimo, ma da tutte le coppie.)
  • c) Sistematico: sì. I primi 22 bit della parola di codice coincidono con i bit di informazione (00→000000\to\mathbf{00}00, 01→011101\to\mathbf{01}11, 10→101110\to\mathbf{10}11, 11→111011\to\mathbf{11}10); gli ultimi 22 sono le parità. (Un codice può essere sistematico senza essere lineare.)

(2) Errori rivelabili

Distanze di Hamming tra le 44 parole (dH=wH(c⊕c′)d_H=w_H(\mathbf c\oplus\mathbf c')):

00000000 01110111 10111011 11101110
00000000 33 33 33
01110111 33 22 22
10111011 33 22 22
11101110 33 22 22

dmin=2d_{min}=2. Il codice rivela con certezza dmin−1=1d_{min}-1=\mathbf1 errore (e ne corregge ⌊2−12⌋=0\lfloor\frac{2-1}2\rfloor=0): con un solo bit sbagliato la parola ricevuta è a distanza 11 dalla trasmessa, quindi non è una parola di codice (tutte le parole distano almeno 22).

(3) Efficienza della sorgente

La sorgente binaria ha entropia H(b)=14log⁡24+34log⁡243=0,5+0,311=0,811H(b)=\frac14\log_24+\frac34\log_2\frac43=0{,}5+0{,}311=0{,}811 bit/simbolo, contro il massimo log⁡22=1\log_22=1 bit (Informazione ed entropiaL'informazione di un evento di probabilità $p$ è $\log_2\frac1p$ bit; l'entropia $H(x)=\sum p\log_2\frac1p$ è l'informazione media e misura l'incertezza della sorgente: $0\le H\le\log_2M$, con il massimo quando i simboli sono equiprobabili. Per più simboli: $H(x,y)\le H(x)+H(y)$ (uguaglianza se indipendenti), $H(x|y)=H(x,y)-H(y)$. Per una sorgente con $F_s$ simboli al secondo il rate di informazione è $F_sH_s$, il rate nominale $F_s\log_2M$ e l'efficienza $\eta=\frac{H_s}{\log_2M}$.Informazione ed entropia →): η=H(b)log⁡2M=0,811.\eta=\frac{H(b)}{\log_2M}=0{,}811. (Si noti che questa è l'efficienza della sorgente prima della codifica di canale; il codice (4,2)(4,2) ha rendimento 12\frac12 e aggiunge ridondanza, riducendo il rate di informazione per bit trasmesso.)

(4) Probabilità d'errore di decodifica per b=[00]\mathbf b=[00]

Si trasmette la parola 00000000. Il canale inverte ciascun bit con probabilità 0,10{,}1 in modo indipendente: la ricevuta r\mathbf r ha probabilità 0,1w 0,94−w0{,}1^{w}\,0{,}9^{4-w}, con ww il peso di r\mathbf r. Decodifica a minima distanza: si sceglie la parola di codice più vicina a r\mathbf r. Si analizzano le 1616 possibili r\mathbf r:

  • w=0w=0 (00000000): distanza 00 da 00000000: corretta; probabilità 0,94=0,65610{,}9^4=0{,}6561.
  • w=1w=1 (0001,0010,0100,10000001,0010,0100,1000): distanza 11 da 00000000 e almeno 22 da tutte le altre: corretta; probabilità 4⋅0,1⋅0,93=0,29164\cdot0{,}1\cdot0{,}9^3=0{,}2916.
  • w=2w=2 (0011,0101,0110,1001,1010,11000011,0101,0110,1001,1010,1100): ognuna è a distanza 11 da una delle altre parole (00110011 da 01110111, 01010101 da 01110111, 01100110 da 01110111, 10011001, 10101010 da 10111011, 11001100 da 11101110) e a distanza 22 da 00000000: si decide un'altra parola, errore; probabilità 6⋅0,12⋅0,92=0,04866\cdot0{,}1^2\cdot0{,}9^2=0{,}0486.
  • w=3,4w=3,4 (0111,1011,1101,1110,11110111,1011,1101,1110,1111): 0111,1011,11100111,1011,1110 sono parole di codice diverse da 00000000; 11011101 e 11111111 sono a distanza ≥2\ge2 da 00000000 e più vicine ad altre: errore; probabilità 4⋅0,13⋅0,9+0,14=0,00374\cdot0{,}1^3\cdot0{,}9+0{,}1^4=0{,}0037.

P[corretta∣b=00]=0,6561+0,2916=0,9477,P[errore di parola∣b=00]=1−0,9477=0,0523.P[\text{corretta}\mid\mathbf b=00]=0{,}6561+0{,}2916=0{,}9477,\qquad P[\text{errore di parola}\mid\mathbf b=00]=1-0{,}9477=0{,}0523. (Nessuna ricevuta è a pari distanza da 00000000 e da un'altra parola, quindi il risultato non dipende dalla regola sui pareggi.) Con la parola 00000000 trasmessa gli errori singoli vengono corretti, perché 00000000 dista 33 da tutte le altre parole; per le altre parole (a distanza 22 tra loro) un errore singolo può cadere a metà strada tra due parole e la decisione è ambigua. Il valore calcolato è dunque condizionato a b=[00]\mathbf b=[00]: mediando sulle quattro parole (con scelta casuale nei pareggi) l'errore di parola vale 0,1410{,}141: 0,0520{,}052 per 00000000 e 0,1710{,}171 per ciascuna delle altre tre. Senza codifica, per confronto, la probabilità di sbagliare almeno uno dei 22 bit è 1−0,92=0,191-0{,}9^2=0{,}19.

(Verificato con Python: enumerazione delle 1616 ricevute, P[corretta]=0,9477P[\text{corretta}]=0{,}9477, η=0,8113\eta=0{,}8113.)

Errori comuni

  • Dire che il codice è lineare perché contiene la parola nulla: serve la chiusura per la somma.
  • Dire che è sistematico ⇒\Rightarrow lineare (non è vero).
  • Rispondere 22 errori rivelati (dmind_{min} al posto di dmin−1d_{min}-1).
  • Calcolare la probabilità di errore con la formula di un codice correttore (t=1t=1): qui dmin=2d_{min}=2 non garantisce la correzione.

Versione ripasso

Testo. 00→000000\to0000, 01→011101\to0111, 10→101110\to1011, 11→111011\to1110: a blocco, lineare, sistematico?; errori rivelabili; efficienza con pb=(14,34)p_b=(\frac14,\frac34); P[errore di parola∣00]P[\text{errore di parola}\mid00] su BSC con Pbit=0,1P_{bit}=0{,}1 (giugno 2017).

Teoria collegata