Esercizio - codice non lineare a quattro parole, distanza 2 e bound di Singleton (esame del 21 giugno 2023, es. 159)
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
- Calcolare una sequenza da aggiungere come nuova parola di codice che sia a distanza da tutte le altre parole. Sia il nuovo codice così ottenuto.
- 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 .
- Dire se il codice è lineare, giustificando la risposta.
- Dire se può esistere un codice binario lineare con solo parole della stessa lunghezza di quelle di , che corregge errori.
- Dire se l'ultimo bit delle parole di codice in è 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 , quindi la nuova parola deve avere bit. Le tre parole di sono tra loro a distanza ( nelle posizioni ; nelle posizioni ; nelle posizioni ), e hanno tutte l'ultimo bit uguale a e un solo nei primi tre bit (, , ).
Caso . L'ultimo bit coincide con quello di tutte le parole: la distanza è quella dei primi tre bit. Servono a distanza da , e . Il vettore è a distanza da tutti: no. Il vettore è a distanza da tutti ( contro differisce in posizioni): sì. Quindi .
Caso . L'ultimo bit differisce da quello delle parole: contribuisce alla distanza, e i primi tre bit devono essere a distanza da : il vettore lo è (un solo da cambiare). Quindi .
Le sequenze possibili sono dunque e (Python: nessun'altra tra le ). Si sceglie , e .
2. Errori rivelati e corretti
In tutte le coppie di parole sono a distanza : (i pesi sono ) e le tre distanze tra le parole originali. Quindi .
- a) Trasmettendo la parola nuova la parola più vicina tra le altre è a distanza : un errore singolo si rileva (la sequenza ricevuta, a distanza da , non è una parola); non si corregge, perché la sequenza ottenuta è a distanza da altre parole: per esempio è a distanza da , , e , tutte e quattro. Rivelati , corretti .
- b) Per una parola qualsiasi di la distanza minima dalle altre è : stessi numeri, rivelati , corretti .
3. è lineare?
No. Un codice lineare è chiuso rispetto alla somma modulo (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 (Contiene sì la parola nulla, ma questo da solo non basta: serve la chiusura per tutte le somme.) Anche non è lineare (non contiene e ha parole: non è una potenza di ).
4. Un codice lineare con parole che corregge errori?
Un codice lineare con parole ha ; la lunghezza è . Per correggere errori serve . Il bound di Singleton dà No, non può esistere (servirebbero almeno bit di parità, cioè ).
5. L'ultimo bit è utile?
Tutte le parole di hanno l'ultimo bit uguale a : 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, o ). 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 che si ottiene ha le stesse distanze ( tra tutte le coppie).
Controllo numerico (Python, parole equiprobabili, ML): per con e senza l'ultimo bit, per 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, invece di ).
Errori comuni
- Cercare la nuova parola solo guardando una coppia: serve la distanza da tutte le parole.
- Dire che è lineare perché ora contiene : la somma 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. su BSC. Richiesti: una parola a distanza da tutte e ; errori rivelati e corretti; linearità di ; esiste un codice lineare di parole e che corregge errori; l'ultimo bit riduce l'errore?
- : a distanza da , quindi . : distanza dai tre , quindi . Scelta: .
Punto 2: (anche per la parola nuova): rivela , corregge (per esempio è a distanza da tutte e quattro le parole).
Punto 3: non lineare: .
- , , : serve ma : no.
Punto 5
- Bit uguale in tutte le parole: stesso fattore di verosimiglianza per tutte, si semplifica. a con e senza il bit: no, non è utile.
Errori tipici
- Verificare la distanza solo da una parola.
- Credere lineare perché contiene .
- Pensare che un bit costante aumenti la distanza.