Codici a blocco - distanza minima, rivelazione e correzione
In questa pagina 11
In questa pagina 10
Questa nota apre il capitolo del controllo d'errore. Fino a qui, con la Codifica di sorgenteLa codifica di sorgente senza perdita assegna ai simboli (o a parole di $N$ simboli) parole di codice di lunghezza variabile, corte per i simboli probabili, con una mappa invertibile. Un codice a prefisso è sempre decodificabile; Kraft-McMillan: se il codice è decodificabile $\sum M^{-l_i}\le1$ e viceversa esiste un codice a prefisso con quelle lunghezze. Shannon: $L\ge\frac{H}{\log_2M}$ e esiste un codice con $L<\frac{H}{\log_2M}+1$ (lunghezze $\lceil\log_M\frac1p\rceil$). Shannon-Fano divide dall'alto, Huffman unisce dal basso i due meno probabili ed è ottimo; raggruppare simboli e la codifica aritmetica si avvicinano al limite.Codifica di sorgente →, si è tolta ridondanza alla sorgente per mandare meno dati; adesso si fa il contrario, ma con uno scopo preciso: aggiungere ridondanza scelta ad arte per proteggere la trasmissione dagli errori introdotti dal canale (il canale è stato "domato" nei capitoli sul livello fisico: Probabilità d'errore e funzione QPer due segnali di energie $E_1,E_2$ con coefficiente di correlazione $\rho=\frac{\langle s_1,s_2\rangle}{\sqrt{E_1E_2}}$ la distanza è $d_{12}=\sqrt{E_1+E_2-2\rho\sqrt{E_1E_2}}$ e, con rumore AWGN, simboli equiprobabili e criterio MD, $P[E]=Q\left(\frac{d_{12}}{2\sigma_I}\right)=Q\left(\sqrt{\frac{E_s(1-\rho)}{N_0}}\right)$ con $\sigma_I^2=\frac{N_0}2$ e $Q$ la coda della gaussiana. Il caso antipodale ($\rho=-1$) dà $Q\left(\sqrt{\frac{2E_s}{N_0}}\right)$, l'ortogonale ($\rho=0$) $Q\left(\sqrt{\frac{E_s}{N_0}}\right)$: 3 dB peggio. Con $M>2$ segnali si usano limiti: $\frac{N^*}M Q\left(\frac{d_{min}}{2\sigma_I}\right)\le P[E]\le(M-1)Q\left(\frac{d_{min}}{2\sigma_I}\right)$ (union bound); la probabilità dipende solo da $\frac{E_s}{N_0}$, cioè dall'SNR.Probabilità d'errore e funzione Q →, Link budgetIl sistema di trasmissione si modella con un canale che attenua ($a_{ch}$) e filtra il segnale, un rumore additivo bianco gaussiano (AWGN) che si somma dopo il canale, e un ricevitore con cifra di rumore $F_{rc}$. Il link budget è il bilancio che dà l'SNR in ricezione, $\text{SNR}=\frac{P_{tx}}{a_{ch},kT_0F_{rc},B}=\frac{M_{tx}}{a_{ch}N_0B}$, che deve superare una soglia; in dB (banda stretta) $\text{SNR}{dB}=(P{tx}){dBm}+114-(a{ch}){dB}-(F{rc}){dB}-10\log{10}B_{MHz}$. Lo si usa per ricavare la potenza minima, la banda massima o la distanza massima di un collegamento.Link budget →, Capacità di canaleLa capacità di un canale è il massimo, sulle statistiche di ingresso, della velocità di informazione $R=F,I_s(\mathbf c,\tilde{\mathbf c})$ (informazione mutua per simbolo per la velocità di simbolo). Teorema di Shannon: se la velocità informativa è $R<C$ esistono codici con probabilità d'errore residua piccola a piacere; se $R>C$ no. BSC senza memoria: $C_s=1+P\log_2P+(1-P)\log_2(1-P)$ bit/simbolo. Canale AWGN: $C=B\log_2(1+\mathrm{SNR})$ con $\mathrm{SNR}=P_{rx}/(N_0B)$; per $B\to\infty$ la capacità non cresce indefinitamente ma tende a $P_{rx}/(N_0\ln2)$. Limite per il rapporto $E_b/N_0$: $\ge\ln2=-1{,}59$ dB.Capacità di canale →). Il corso usa l'analogia del tubo: la sorgente è un fluido comprimibile, il canale un tubo con perdite; la ridondanza è come la pluriball con cui si imballa il fluido.
Perché la ridondanza aiuta
Una frase in italiano con qualche lettera sbagliata si capisce lo stesso: la lingua è ridondante (non tutte le sequenze di lettere sono parole). Qui la ridondanza naturale è già presente; nei sistemi reali invece la si aggiunge artificialmente, dopo aver tolto con la codifica di sorgente quella naturale. L'esempio suggerisce due modi di sfruttarla:
- rivelazione d'errore (error detection): ci si accorge che c'è un errore;
- correzione d'errore (error correction): si cerca di capire anche quale era il messaggio giusto.
Schema generale e codici a blocco
Definizione (codice a blocco binario ). Una sequenza di bit di informazione (parola di informazione, ), che sono possibili, viene trasformata dalla mappa di codifica in una parola di codice (codeword) di bit. Le parole di codice sono ancora ma stanno in uno spazio più grande, di elementi: l'insieme è il codice. Si chiama tasso di codifica (coding rate) il rapporto .
Esempio. Il codice a ripetizione con , ha parole di codice, , dentro uno spazio di sequenze: le altre sei () non sono parole di codice; sono quelle che si ricevono quando il canale sbaglia. Il tasso è .
Il percorso completo è: trasmetto ; ricevo (che può non essere una parola di codice); decido una stima ; ricavo . In pratica la decisione su e la decodifica in si fanno insieme. (Il corso scrive vettori e simboli senza freccia per non appesantire; li si distingue dall'indice: .)
Si assume che il canale (modulatore, canale fisico, demodulatore) si riassuma in un canale binario simmetrico senza memoria (BSC: ogni bit si inverte con probabilità , indipendentemente dagli altri). Allora, senza e con codifica: Esempio. Con : bit non codificati arrivano tutti giusti con probabilità ; la parola di bit di un codice arriva senza errori con . Più bit si mandano, più occasioni di sbagliare: la codifica funziona solo se il suo sistema di recupero compensa questa perdita (vedi il confronto in fondo).
Conversioni di velocità
La sorgente produce un bit ogni (velocità ); dopo il codificatore escono bit ogni (velocità ). Per ogni bit informativi ne escono codificati nello stesso tempo : Viceversa, la velocità informativa di un canale che trasporta bit codificati al secondo è : la velocità sul canale moltiplicata per il tasso di codifica. Nel tempo di simbolo della modulazione digitale prima si trasmettevano bit (Modulazioni PAM, PSK, QAM e FSKLe modulazioni pratiche usano un solo impulso base $h(t)$ (energia $E_h$) e coefficienti scelti in un insieme regolare. PAM: $s_n=\alpha_nh(t)$, $\alpha_n\in{-M+1,\dots,M-1}$, punti su una retta, $d_{min}=2\sqrt{E_h}$, $E_s=\frac{M^2-1}3E_h$, $P[E]=2\left(1-\frac1M\right)Q\left(\sqrt{\frac{6E_s}{(M^2-1)N_0}}\right)$. QAM: coefficienti complessi su due portanti in quadratura, base di dimensione 2, per $M=L^2$ $E_s=\frac{M-1}3E_h$ e $P[E]\approx4\left(1-\frac1{\sqrt M}\right)Q\left(\sqrt{\frac{3E_s}{(M-1)N_0}}\right)$. PSK: ampiezza costante, fasi $\theta_n=\frac{(2n-1)\pi}M$, punti su una circonferenza, $E_s=\frac{E_h}2$, $P[E]\approx2Q\left(\sqrt{\frac{2E_s}{N_0}}\sin\frac\pi M\right)$. FSK: due sinusoidi a frequenze diverse, $\rho\approx\operatorname{sinc}(4f_dT)$. Con la codifica di Gray $P_{bit}\approx\frac{P[E]}{\log_2M}$.Modulazioni PAM, PSK, QAM e FSK →), che ora diventano bit codificati (ne servono volte di più per la stessa informazione). Lo stesso vale per l'energia: l'energia per simbolo resta quella, ma
- se è l'energia per ogni bit trasmesso (codificato) allora : scende;
- se è l'energia per bit di informazione e resta costante, : sale.
Non esiste una formula universale: bisogna dire a quale bit ci si riferisce. (La scelta si usa nel confronto delle prestazioni: Probabilità d'errore e funzione QPer due segnali di energie $E_1,E_2$ con coefficiente di correlazione $\rho=\frac{\langle s_1,s_2\rangle}{\sqrt{E_1E_2}}$ la distanza è $d_{12}=\sqrt{E_1+E_2-2\rho\sqrt{E_1E_2}}$ e, con rumore AWGN, simboli equiprobabili e criterio MD, $P[E]=Q\left(\frac{d_{12}}{2\sigma_I}\right)=Q\left(\sqrt{\frac{E_s(1-\rho)}{N_0}}\right)$ con $\sigma_I^2=\frac{N_0}2$ e $Q$ la coda della gaussiana. Il caso antipodale ($\rho=-1$) dà $Q\left(\sqrt{\frac{2E_s}{N_0}}\right)$, l'ortogonale ($\rho=0$) $Q\left(\sqrt{\frac{E_s}{N_0}}\right)$: 3 dB peggio. Con $M>2$ segnali si usano limiti: $\frac{N^*}M Q\left(\frac{d_{min}}{2\sigma_I}\right)\le P[E]\le(M-1)Q\left(\frac{d_{min}}{2\sigma_I}\right)$ (union bound); la probabilità dipende solo da $\frac{E_s}{N_0}$, cioè dall'SNR.Probabilità d'errore e funzione Q →.)
Esempio. Mbit/s con codice : i bit informativi sono ogni trasmessi, quindi Mbit/s e s (contro s).
Che cosa può succedere alla ricezione
| Caso | Che cosa si riceve | Conseguenza |
|---|---|---|
| una parola di codice | si pone : se è un errore non rivelato | |
| una parola che non è di codice | l'errore è rivelato: si può solo avvisare (rivelazione) oppure cercare la parola di codice più plausibile (correzione) |
L'errore non rivelato non si può evitare: è il caso sfortunato in cui il canale trasforma una parola di codice in un'altra parola di codice. Si cerca solo che accada con probabilità molto piccola, e questo succede quando le parole di codice sono ben distanziate. Si distinguono due probabilità d'errore residue:
- : errore sulla parola di codice (o di informazione, );
- : errore residuo sui singoli bit di informazione, da non confondere con (la probabilità del canale prima della codifica).
A livello più alto queste due strade diventano due tecniche:
| Tecnica | Idea | Pro | Contro |
|---|---|---|---|
| ARQ (Automatic Repeat reQuest) | rivelazione d'errore + richiesta di ritrasmissione (scatta in automatico se ) | affidabilità arbitraria | più ritardo, meno velocità utile, serve un canale di ritorno |
| FEC (Forward Error Correction) | correzione a ricezione, ridondanza aggiunta in anticipo | non interrompe il flusso | non è garantita al 100%, può servire molta ridondanza |
I sistemi reali (anche il 5G) usano l'approccio ibrido Hybrid ARQ: pochi errori FEC, tanti ARQ. Le prestazioni dell'ARQ sono in Tecniche ARQ e loro prestazioniARQ (Automatic Repeat reQuest) rende affidabile un collegamento che sbaglia: il ricevitore risponde a ogni pacchetto con ACK (corretto) o NACK (errato), e il trasmettitore ritrasmette. Con probabilità di pacchetto errato $p$, $t_{RTT}=t_P+t_A+2\tau_P$ e coda sempre piena, il throughput massimo (frazione di tempo d'aria) è: Stop-and-Wait $S=\frac{t_P(1-p)}{t_{RTT}}$; Go-Back-N con $N=t_{RTT}/t_P$ $S=\frac{1-p}{(N-1)p+1}$; Selective Repeat $S=1-p$. Il ritardo medio è $m_{delay}=t_P+\tau_P+\frac p{1-p}t_{RTT}$ (a coda vuota). Sono solo valori massimi: la coda ARQ è stabile solo se $\lambda$ è minore della velocità di servizio, $\lambda<1/m_y$; altrimenti il throughput è $\min(\lambda,\mu)$. L'efficienza (payload) è $\eta=S,L_D/L$.Tecniche ARQ e loro prestazioni →.
Codici sistematici
Definizione (codice sistematico). Un codice è sistematico se la parola di informazione compare come prefisso della parola di codice: . Gli altri bit sono i bit di ridondanza (o di parità).
È utile per le applicazioni "a lettura lenta" (si ha subito l'informazione mentre si aspetta il controllo) e per un utente umano che guarda la parola; con i calcolatori di oggi è un dettaglio.
Distanza di Hamming e distanza minima
L'insieme è uno spazio discreto: sequenze di bit come o , e niente "di intermedio". Per visualizzarlo il corso usa lo stagno delle rane: le sequenze sono sassi, le parole di codice sono sassi colorati; ogni salto di rana inverte un bit (da a o viceversa), e due sassi adiacenti hanno distanza .
Definizione (distanza di Hamming). è il numero di posizioni in cui e differiscono, cioè il numero minimo di salti per passare dall'una all'altra. È una vera distanza (simmetrica, , nulla solo se uguali, vale la disuguaglianza triangolare). Esempio. ; (differiscono nei bit ).
Definizione (distanza minima di un codice). È il minimo numero di salti per andare da un sasso colorato a un altro sasso colorato.
Esempio. Ripetizione : . Codice (): .
Teorema (potere di rivelazione). Un codice a blocco con distanza minima usato per rivelare garantisce la rivelazione di ogni situazione con al più bit sbagliati, cioè con . Dimostrazione. Si parte da un sasso colorato (la parola trasmessa) e si fanno meno di salti (gli errori): non si può arrivare a un altro sasso colorato, perché ogni altro sasso colorato dista almeno . Quindi la parola ricevuta non è di codice: nessun errore non rivelato è possibile.
Esempio. Un codice con rivela ogni pattern di o errori; con errori potrebbe finire su un'altra parola di codice (a distanza ), e l'errore non verrebbe visto.
Probabilità di avere errori
Se si trasmette su un BSC senza memoria, la probabilità di ricevere una specifica parola a distanza è ( bit sbagliati, ciascuno con probabilità , e giusti: il prodotto va bene perché i bit sono indipendenti, e non conta l'ordine). La probabilità che ci siano esattamente errori in una posizione qualsiasi è la binomiale (Prove ripetute e modello binomialen prove indipendenti, ciascuna con probabilità di successo p: una sequenza con k successi ha probabilità p^k (1−p)^(n−k), e la probabilità di esattamente k successi è (n su k) p^k (1−p)^(n−k) (modello binomiale); il primo successo alla prova k ha probabilità (1−p)^(k−1) p.Prove ripetute e modello binomiale →, Fattoriale e coefficienti binomialiFattoriale, permutazioni, disposizioni, combinazioni e coefficiente binomiale n su k, con il triangolo di Tartaglia.Fattoriale e coefficienti binomiali →): Esempio. , : , , , : ogni errore in più costa circa un fattore .
Correzione d'errore: decisione ottima
Il problema è quello già visto nella Decisione ottima - criteri MAP e MLIl ricevitore osserva il vettore $\mathbf r$ e deve stimare il simbolo trasmesso $a_0$: lo spazio $\mathbb R^I$ si divide in $M$ regioni di decisione $\mathcal R_j$. La probabilità di decisione corretta è $P[C]=\sum_j\int_{\mathcal R_j}D_j(\boldsymbol\rho),d\boldsymbol\rho$ con $D_j=p_{\mathbf r|a_0}(\boldsymbol\rho|j),p_j$ e si massimizza assegnando ogni $\boldsymbol\rho$ alla regione con $D_j$ più alto: criterio MAP (massimo a posteriori, ottimo). Il criterio ML ($\arg\max_jp_{\mathbf r|a_0}(\boldsymbol\rho|j)$) ignora le probabilità a priori e coincide con MAP per simboli equiprobabili. Il criterio MD (minima distanza, $\arg\min\lVert\boldsymbol\rho-\mathbf s_j\rVert$) coincide con ML se il rumore è AWGN, quindi con simboli equiprobabili e AWGN è ottimo.Decisione ottima - criteri MAP e ML →: si è inviato , si è ricevuto , e bisogna decidere. Là si inviava , si riceveva e si cercava . L'idea è la stessa: si partiziona l'insieme in cui può cadere in regioni di decisione , una per ogni parola di informazione : (se si decide ). La bontà della decodifica dipende da come si disegnano queste regioni.
Ragionando in termini di errore sulla parola (, da non confondere con la probabilità sul singolo bit) si vuole minimizzare (probabilità totali: si somma sulle parole di informazione pesate con la loro probabilità , e dentro la regione si sommano le probabilità dei vettori ricevuti). Per minimizzare l'errore ogni vettore va assegnato alla regione per cui è massimo : è il criterio MAP (massima probabilità a posteriori), perché per Bayes (Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →) e il denominatore non dipende da . Per parole di informazione equiprobabili (sempre il nostro caso) il fattore è costante e si ottiene il criterio ML (massima verosimiglianza): si massimizza (la likelihood).
Come in modulazione si vorrebbe poi passare al criterio a distanza minima (MD, qui a minima distanza di Hamming). Là con il rumore AWGN ML e MD coincidevano; qui gli insiemi sono discreti, quindi serve una condizione.
Teorema (condizione sufficiente per ML = MD). Su un BSC senza memoria con , la decisione ML coincide con quella a distanza minima di Hamming. Dimostrazione. Sia con . Allora Il fattore è costante. Se allora , e una potenza di un numero minore di è tanto più grande quanto più piccolo è l'esponente . Massimizzare la likelihood equivale quindi a minimizzare .
Osservazioni sul BSC. La condizione è in realtà più larga. Con il canale sbaglia sempre, ma è soltanto un canale invertente: basta fare un NOT logico e lo si vede come privo di errori, quindi anche per è tutto equivalente (si inverte). Il caso davvero brutto è , il canale inutile: i bit in uscita sono indipendenti ed equiprobabili e non hanno niente a che fare con quelli trasmessi (capacità nulla: Capacità di canaleLa capacità di un canale è il massimo, sulle statistiche di ingresso, della velocità di informazione $R=F,I_s(\mathbf c,\tilde{\mathbf c})$ (informazione mutua per simbolo per la velocità di simbolo). Teorema di Shannon: se la velocità informativa è $R<C$ esistono codici con probabilità d'errore residua piccola a piacere; se $R>C$ no. BSC senza memoria: $C_s=1+P\log_2P+(1-P)\log_2(1-P)$ bit/simbolo. Canale AWGN: $C=B\log_2(1+\mathrm{SNR})$ con $\mathrm{SNR}=P_{rx}/(N_0B)$; per $B\to\infty$ la capacità non cresce indefinitamente ma tende a $P_{rx}/(N_0\ln2)$. Limite per il rapporto $E_b/N_0$: $\ge\ln2=-1{,}59$ dB.Capacità di canale →).
Teorema (potere di correzione). Un codice con distanza minima usato con decodifica a distanza minima garantisce di correggere ogni caso con meno di bit sbagliati: la correzione è buona se errori, cioè Dimostrazione (per assurdo). Si invia e si riceve con . Supponiamo che si decodifichi un'altra parola , . Poiché MD sceglie la parola più vicina, . Ma per la disuguaglianza triangolare contraddizione.
Rivelare o correggere: non insieme. Con distanza minima si rivelano fino a errori e se ne correggono fino a , ma non nello stesso momento: le regioni di decisione ( intorno ai sassi colorati) toccano più o meno a metà strada tra due parole; se si decide di correggere, un pattern di molti errori può finire dentro la regione di un'altra parola e produrre una correzione sbagliata che non si vede.
Esempio. : o si rivelano errori, o se ne corregge . : o si rivelano errori, o se ne corregge (la condizione dà ); in quest'ultimo caso si possono ancora rivelare, ma non correggere, i pattern con errori (a metà strada tra due parole di codice).
Esempi di codici
Codice a ripetizione. Blocco con : si ripete la parola di informazione volte, . È sistematico, (cambiando un solo bit di informazione cambiano bit). Con , : , rivela errore. Con : , , corregge errore; la decodifica a distanza minima è il voto a maggioranza (). Il prezzo è un tasso .
Codice a bit di parità. Blocco sistematico: si aggiunge un solo bit , che vale se ha un numero pari di uni e se dispari; dopo l'aggiunta il numero di uni è sempre pari. Si vede subito : due parole di informazione che differiscono in un bit hanno parità opposta, quindi le parole di codice differiscono in bit. Rivela sempre errore, non ne corregge nessuno, e con due errori la rivelazione fallisce sempre (lo stesso vale per qualunque numero pari di errori).
Esempio. ha tre uni: , . Se arriva (un bit sbagliato) il numero di uni è , dispari: errore rivelato. Se ne sbagliano due (): uni , pari: errore non rivelato.
Parità a righe e colonne. Controlli di parità parziali aumentano e permettono la correzione. Il corso presenta un codice : i bit sono disposti in un quadrato , si calcola un bit di parità per ogni riga (), uno per ogni colonna () e un'ultima parità di controllo (, la parità dei bit di riga): . Ha (verificato enumerando tutte le parole). Un errore singolo fa fallire una riga e una colonna: il loro incrocio individua il bit sbagliato e lo si corregge.
Codici nella vita reale. Numeri di carta di credito (l'ultima cifra è di controllo), ISBN-10 (ultima cifra modulo , – o X), codice fiscale (l'ultima lettera è un carattere di controllo), assegni, codici a barre. In tutti i casi le cifre di controllo sono ridondanza che permette di rivelare errori di trascrizione. Un caso svolto è nell'Esercizio - Codice di controllo per numeri di registro.
Il limite di Hamming
Si vorrebbe un tasso vicino a (poca ridondanza), ma la capacità di correzione lo limita.
Teorema (limite di Hamming). Se un codice a blocco garantisce di correggere fino a errori, allora Dimostrazione. Si ricorda che ha valori, ha valori scelti in un insieme di elementi. Garantire la correzione di errori significa che se allora con . Quindi contiene almeno tutte le -uple che differiscono da in al più posizioni, che sono (c'è parola con errori, con errore, con , …): (disuguaglianza e non uguaglianza: la regione può contenere altri elementi). La proprietà vale per ogni regione; sommando su tutte le parole di informazione , Ma le sono disgiunte e ricoprono tutto , quindi la somma vale . Allora e, prendendo , .
Esempio. Hamming con : , : uguaglianza, le regioni ricoprono lo spazio senza avanzi (codice perfetto, Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC →). Per un codice con e : (è l'Hamming ). Per , : , , quindi : il del corso, che corregge errore, ha tasso contro un massimo teorico . Per , il limite dà (il codice di Golay lo raggiunge).
Prestazioni di un codice: stima delle probabilità residue
Dire "corregge fino a errori" è troppo vago per calcolare una probabilità, quindi si fanno ipotesi esplicite, che sono approssimazioni:
- se ci sono errori la parola decodificata è sicuramente sbagliata (caso peggiore);
- si ignorano i casi con errori perché improbabili (ottimistico).
Allora, per un BSC con probabilità (prima della codifica) e bit per parola, Ma per i bit di informazione si vuole . Altre due ipotesi: 3) se la parola decodificata è sbagliata contiene esattamente bit errati (è finita su una parola di codice vicina); 4) i bit sbagliati si distribuiscono uniformemente sulla parola (tra informazione e ridondanza). Quindi una frazione di bit sbagliati:
Esempio. Hamming (, ) con : e . Il valore esatto (enumerando tutti i pattern d'errore) è e : la stima è buona al . La codifica ha ridotto l'errore sul bit da a circa , un fattore .
Il grafico confronta l'errore sul bit senza codice () e con Hamming (stima ): per piccolo il guadagno è enorme perché la curva scende come , mentre per grande le due si avvicinano (ipotesi 2 non più vera).
Grafico interattivo: Probabilità di bit errato senza codice (retta) e con Hamming (7,4) (stima 9P²(1-P)⁵, tratteggiata): per P piccolo la curva scende come P² e il guadagno è grande (il rapporto tra le due vale circa 0,09 a P=0,01); a P=0,3 il rapporto sale a 0,45.
Una nota importante sul confronto equo: l' per simbolo è fissato, quindi con la codifica il rapporto cambia secondo la convenzione scelta sopra, e (la probabilità di errore sul bit del canale) peggiora un po' (si trasmettono più bit nella stessa energia). Il guadagno finale di codifica va valutato con lo stesso per bit di informazione.
Errori comuni
- Dire che il codice "corregge errori" senza il segno stretto: la condizione è (con si corregge errore, non ).
- Pensare di poter usare insieme tutto il potere di rivelazione e tutto quello di correzione.
- Confondere del canale con la probabilità di errore sui bit dopo la decodifica, , e con quella sulla parola .
- Credere che l'errore non rivelato si possa eliminare: si può solo renderlo improbabile.
Collegamenti
Il caso dei codici lineari, con matrice generatrice e sindrome, è in 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 →; il codice di Hamming e il CRC in Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC →; i limiti teorici per la probabilità d'errore piccola a piacere in Capacità di canaleLa capacità di un canale è il massimo, sulle statistiche di ingresso, della velocità di informazione $R=F,I_s(\mathbf c,\tilde{\mathbf c})$ (informazione mutua per simbolo per la velocità di simbolo). Teorema di Shannon: se la velocità informativa è $R<C$ esistono codici con probabilità d'errore residua piccola a piacere; se $R>C$ no. BSC senza memoria: $C_s=1+P\log_2P+(1-P)\log_2(1-P)$ bit/simbolo. Canale AWGN: $C=B\log_2(1+\mathrm{SNR})$ con $\mathrm{SNR}=P_{rx}/(N_0B)$; per $B\to\infty$ la capacità non cresce indefinitamente ma tende a $P_{rx}/(N_0\ln2)$. Limite per il rapporto $E_b/N_0$: $\ge\ln2=-1{,}59$ dB.Capacità di canale →. Esercizi: Esercizio - Codici (4,2) lineari o no e probabilità di errore non rivelato, Esercizio - Test del DNA con 4, 5 e 7 provette.
Versione ripasso
La codifica di canale aggiunge ridondanza scelta ad arte: bit di informazione diventano una parola di codice di bit, scelta tra parole ammesse. Il codice si applica dopo la Codifica di sorgenteLa codifica di sorgente senza perdita assegna ai simboli (o a parole di $N$ simboli) parole di codice di lunghezza variabile, corte per i simboli probabili, con una mappa invertibile. Un codice a prefisso è sempre decodificabile; Kraft-McMillan: se il codice è decodificabile $\sum M^{-l_i}\le1$ e viceversa esiste un codice a prefisso con quelle lunghezze. Shannon: $L\ge\frac{H}{\log_2M}$ e esiste un codice con $L<\frac{H}{\log_2M}+1$ (lunghezze $\lceil\log_M\frac1p\rceil$). Shannon-Fano divide dall'alto, Huffman unisce dal basso i due meno probabili ed è ottimo; raggruppare simboli e la codifica aritmetica si avvicinano al limite.Codifica di sorgente →, che ha tolto la ridondanza naturale. Il canale è modellato come in Probabilità d'errore e funzione QPer due segnali di energie $E_1,E_2$ con coefficiente di correlazione $\rho=\frac{\langle s_1,s_2\rangle}{\sqrt{E_1E_2}}$ la distanza è $d_{12}=\sqrt{E_1+E_2-2\rho\sqrt{E_1E_2}}$ e, con rumore AWGN, simboli equiprobabili e criterio MD, $P[E]=Q\left(\frac{d_{12}}{2\sigma_I}\right)=Q\left(\sqrt{\frac{E_s(1-\rho)}{N_0}}\right)$ con $\sigma_I^2=\frac{N_0}2$ e $Q$ la coda della gaussiana. Il caso antipodale ($\rho=-1$) dà $Q\left(\sqrt{\frac{2E_s}{N_0}}\right)$, l'ortogonale ($\rho=0$) $Q\left(\sqrt{\frac{E_s}{N_0}}\right)$: 3 dB peggio. Con $M>2$ segnali si usano limiti: $\frac{N^*}M Q\left(\frac{d_{min}}{2\sigma_I}\right)\le P[E]\le(M-1)Q\left(\frac{d_{min}}{2\sigma_I}\right)$ (union bound); la probabilità dipende solo da $\frac{E_s}{N_0}$, cioè dall'SNR.Probabilità d'errore e funzione Q →.
Codice a blocco
- , : parola di informazione; la mappa la trasforma in . Il codice è , con parole in uno spazio di sequenze.
- Tasso di codifica .
- Esempio: ripetizione con , : , tasso ; le altre sei sequenze di non sono parole di codice.
- Percorso: trasmetto , ricevo , decido , ricavo .
- Canale: BSC senza memoria, ogni bit si inverte con probabilità . Senza codice ; con codice, nessun bit sbagliato, .
- Esempio: : senza codice, per un . La codifica conviene solo se la correzione compensa la maggiore probabilità di errore.
Conversioni di velocità
- , (perché ).
- Esempio: Mbit/s con : Mbit/s, s.
- Energia: se è per bit codificato; se è per bit di informazione. Va detto quale bit si intende.
Cosa può succedere alla ricezione
- : si pone . Se è un errore non rivelato.
- : l'errore è rivelato; si chiede la ritrasmissione (ARQ, Tecniche ARQ e loro prestazioniARQ (Automatic Repeat reQuest) rende affidabile un collegamento che sbaglia: il ricevitore risponde a ogni pacchetto con ACK (corretto) o NACK (errato), e il trasmettitore ritrasmette. Con probabilità di pacchetto errato $p$, $t_{RTT}=t_P+t_A+2\tau_P$ e coda sempre piena, il throughput massimo (frazione di tempo d'aria) è: Stop-and-Wait $S=\frac{t_P(1-p)}{t_{RTT}}$; Go-Back-N con $N=t_{RTT}/t_P$ $S=\frac{1-p}{(N-1)p+1}$; Selective Repeat $S=1-p$. Il ritardo medio è $m_{delay}=t_P+\tau_P+\frac p{1-p}t_{RTT}$ (a coda vuota). Sono solo valori massimi: la coda ARQ è stabile solo se $\lambda$ è minore della velocità di servizio, $\lambda<1/m_y$; altrimenti il throughput è $\min(\lambda,\mu)$. L'efficienza (payload) è $\eta=S,L_D/L$.Tecniche ARQ e loro prestazioni →) oppure si cerca la parola più plausibile (FEC, correzione).
- Hybrid ARQ: pochi errori si correggono (FEC), tanti si ritrasmettono (ARQ).
- L'errore non rivelato non si elimina, si rende improbabile con parole ben distanziate. Si misurano (sulla parola) e (sul singolo bit di informazione), da non confondere con del canale.
Codici sistematici
- Il codice è sistematico se : la parola di informazione è il prefisso; gli bit finali sono di ridondanza o parità.
Distanza di Hamming e distanza minima
- = numero di posizioni in cui differiscono. Esempi: ; .
- Esempi: ripetizione con : ; : .
- Rivelazione: con l'errore è sempre rivelato (da una parola di codice si fanno meno di salti, e nessun'altra parola di codice è così vicina).
- Probabilità di una specifica parola a distanza da : . Probabilità di esattamente errori: (Prove ripetute e modello binomialen prove indipendenti, ciascuna con probabilità di successo p: una sequenza con k successi ha probabilità p^k (1−p)^(n−k), e la probabilità di esattamente k successi è (n su k) p^k (1−p)^(n−k) (modello binomiale); il primo successo alla prova k ha probabilità (1−p)^(k−1) p.Prove ripetute e modello binomiale →, Fattoriale e coefficienti binomialiFattoriale, permutazioni, disposizioni, combinazioni e coefficiente binomiale n su k, con il triangolo di Tartaglia.Fattoriale e coefficienti binomiali →).
- Esempio: , : , , , .
Decisione ottima: MAP, ML, MD
- Si partiziona in regioni , una per ogni , disgiunte e con unione uguale a ; se si decide (come in Decisione ottima - criteri MAP e MLIl ricevitore osserva il vettore $\mathbf r$ e deve stimare il simbolo trasmesso $a_0$: lo spazio $\mathbb R^I$ si divide in $M$ regioni di decisione $\mathcal R_j$. La probabilità di decisione corretta è $P[C]=\sum_j\int_{\mathcal R_j}D_j(\boldsymbol\rho),d\boldsymbol\rho$ con $D_j=p_{\mathbf r|a_0}(\boldsymbol\rho|j),p_j$ e si massimizza assegnando ogni $\boldsymbol\rho$ alla regione con $D_j$ più alto: criterio MAP (massimo a posteriori, ottimo). Il criterio ML ($\arg\max_jp_{\mathbf r|a_0}(\boldsymbol\rho|j)$) ignora le probabilità a priori e coincide con MAP per simboli equiprobabili. Il criterio MD (minima distanza, $\arg\min\lVert\boldsymbol\rho-\mathbf s_j\rVert$) coincide con ML se il rumore è AWGN, quindi con simboli equiprobabili e AWGN è ottimo.Decisione ottima - criteri MAP e ML →).
- Il criterio MAP assegna ogni vettore alla con massimo, per Bayes (Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →). Con parole equiprobabili resta il criterio ML: massimizzare la verosimiglianza .
- Teorema ML = MD: sul BSC con la decisione ML è quella a distanza minima di Hamming. Dimostrazione: , con base minore di ; massimizzare significa minimizzare .
- Con il canale è invertente (basta un NOT). Con il canale è inutile (capacità nulla, Capacità di canaleLa capacità di un canale è il massimo, sulle statistiche di ingresso, della velocità di informazione $R=F,I_s(\mathbf c,\tilde{\mathbf c})$ (informazione mutua per simbolo per la velocità di simbolo). Teorema di Shannon: se la velocità informativa è $R<C$ esistono codici con probabilità d'errore residua piccola a piacere; se $R>C$ no. BSC senza memoria: $C_s=1+P\log_2P+(1-P)\log_2(1-P)$ bit/simbolo. Canale AWGN: $C=B\log_2(1+\mathrm{SNR})$ con $\mathrm{SNR}=P_{rx}/(N_0B)$; per $B\to\infty$ la capacità non cresce indefinitamente ma tende a $P_{rx}/(N_0\ln2)$. Limite per il rapporto $E_b/N_0$: $\ge\ln2=-1{,}59$ dB.Capacità di canale →).
Correzione:
- Teorema: con decodifica MD si corregge ogni caso con errori, cioè se è pari, se è dispari.
- Dimostrazione per assurdo: se e fosse scelta , allora ; ma per la disuguaglianza triangolare . Contraddizione.
- Rivelare o correggere, non insieme. Con si rivelano errori oppure se ne corregge . Con si rivelano errori oppure se ne corregge : con due errori il pattern è a metà strada tra due parole: si rivela, ma non si corregge.
Esempi di codici
- Ripetizione volte: ; decodifica a voto a maggioranza (). Con corregge errore, tasso .
- Parità : , ; rivela errore, non ne corregge nessuno, e fallisce con ogni numero pari di errori.
- Esempio: , , . Se arriva (tre uni, dispari) l'errore è rivelato; con (due uni) no.
- Parità a righe e colonne : dati in quadrato , parità di riga, di colonna, parità generale: , . Un errore singolo fa fallire una riga e una colonna, quindi si individua e si corregge.
- Vita reale: carta di credito, ISBN, codice fiscale: le cifre di controllo rivelano errori di trascrizione.
Limite di Hamming
- Teorema: se un codice corregge errori,
- Dimostrazione (conteggio): ogni regione contiene almeno elementi; le regioni sono disgiunte e coprono , quindi .
- Esempi: Hamming , : , uguaglianza (codice perfetto, Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC →). , : (Hamming ). , : ; il ha tasso contro un massimo .
Stima delle probabilità residue
- Ipotesi: con errori la parola decodificata è sbagliata; i casi con o più errori si ignorano. Quindi
- Per il singolo bit: la parola sbagliata ha bit errati, distribuiti uniformemente, quindi
- Esempio: Hamming , : e . Il valore esatto è (stima entro il ): il bit scende da a circa , un fattore .
- Il grafico confronta con la stima di Hamming : per piccolo il guadagno è grande, per grande le curve si avvicinano.
- Per un confronto equo va usato lo stesso per bit di informazione: con la codifica del canale peggiora.
Errori tipici:
- dire che si corregge fino a : la condizione è (con si corregge errore, non );
- usare insieme tutto il potere di rivelazione e di correzione;
- confondere del canale con e con ;
- credere che l'errore non rivelato si possa eliminare: si può solo renderlo improbabile.
Collegamenti
Codici lineari, matrice generatrice e sindrome: 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 →. Modulazioni e confronto di prestazioni: Modulazioni PAM, PSK, QAM e FSKLe modulazioni pratiche usano un solo impulso base $h(t)$ (energia $E_h$) e coefficienti scelti in un insieme regolare. PAM: $s_n=\alpha_nh(t)$, $\alpha_n\in{-M+1,\dots,M-1}$, punti su una retta, $d_{min}=2\sqrt{E_h}$, $E_s=\frac{M^2-1}3E_h$, $P[E]=2\left(1-\frac1M\right)Q\left(\sqrt{\frac{6E_s}{(M^2-1)N_0}}\right)$. QAM: coefficienti complessi su due portanti in quadratura, base di dimensione 2, per $M=L^2$ $E_s=\frac{M-1}3E_h$ e $P[E]\approx4\left(1-\frac1{\sqrt M}\right)Q\left(\sqrt{\frac{3E_s}{(M-1)N_0}}\right)$. PSK: ampiezza costante, fasi $\theta_n=\frac{(2n-1)\pi}M$, punti su una circonferenza, $E_s=\frac{E_h}2$, $P[E]\approx2Q\left(\sqrt{\frac{2E_s}{N_0}}\sin\frac\pi M\right)$. FSK: due sinusoidi a frequenze diverse, $\rho\approx\operatorname{sinc}(4f_dT)$. Con la codifica di Gray $P_{bit}\approx\frac{P[E]}{\log_2M}$.Modulazioni PAM, PSK, QAM e FSK →.
Esercizi su questo argomento
- Esercizio - 4-PAM su cavo e codice di Hamming (simulazione d'esame 2012)
- Esercizio - Codice di controllo per numeri di registro
- Esercizio - Codici (4,2) lineari o no e probabilità di errore non rivelato
- Esercizio - Collegamento BPSK su cavo con codifica di canale (simulazione d'esame 2013)
- Esercizio - Test del DNA con 4, 5 e 7 provette