Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton
In questa pagina 10
La tabella di un codice a blocco (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 →) occupa bit: già per è impensabile. Se il codice ha una struttura algebrica basta una matrice di bit, e anche la decodifica (Matrice di controllo di parità, sindrome e cosetLa matrice di controllo di parità $H$ ($\ell\times n$) soddisfa $H\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C$; per un codice con generatrice $G$ ($n\times k$) vale $HG=0$ con $\operatorname{rango}(H)=n-k$, e se $G=\begin{bmatrix}I_k\A\end{bmatrix}$ allora $H=[A\mid I_{n-k}]$. La distanza minima è il minimo numero di colonne di $H$ linearmente dipendenti. La sindrome $\boldsymbol\sigma=H\boldsymbol\gamma$ della sequenza ricevuta $\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon$ vale $H\boldsymbol\varepsilon$: dipende solo dall'errore. Le sequenze con la stessa sindrome formano un coset ($2^{n-k}$ coset di $2^k$ sequenze) e il decodificatore a minima distanza sceglie il coset leader, l'errore di peso minimo del coset: $\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}$. La probabilità di decodifica corretta sul BSC è la somma delle probabilità dei coset leader.Matrice di controllo di parità, sindrome e coset →) diventa un calcolo. I codici con questa struttura sono i codici lineari.
Versione per Ing. Elettronica (stessa teoria con i vettori scritti per riga, , di dimensioni ): 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 →. Le due convenzioni sono legate dalla trasposta: la di questa nota è la trasposta della di quella nota. Per Ing. delle Telecomunicazioni: 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 →.
1. Lo spazio delle sequenze binarie
Le sequenze con formano uno spazio vettoriale sul campo binario (CampiUn campo è un insieme di numeri con somma e prodotto che rispettano le regole usuali (associativa, commutativa, neutri, opposti, inversi, distributiva): è ciò che serve per risolvere le equazioni di primo grado. Esempi: Q, R, C e i campi finiti.Campi →, Spazi vettorialiUno spazio vettoriale su un campo K è un insieme con una somma di vettori e un prodotto per scalari che rispettano 7 proprietà. Esempi fondamentali: K^n (somma componente per componente), le funzioni da R in R, i polinomi.Spazi vettoriali →), con le operazioni modulo 2:
- somma (senza riporto): con (XOR: , , );
- prodotto per uno scalare : (moltiplicare per dà la sequenza nulla, per lascia invariata).
Conseguenza della regola : ogni sequenza è l'opposto di se stessa, (si somma con se stessa e si ottiene la sequenza nulla; per esempio ). Quindi la differenza coincide con la somma: È il motivo per cui nei conti modulo 2 i segni meno non servono mai.
Definizione. La norma (peso) di Hamming è il numero di presenti nella sequenza. Valgono , , e la disuguaglianza triangolare .
La distanza di Hamming è la norma della differenza: (la somma ha un proprio dove i due bit differiscono).
2. Codice lineare
Definizione. Un codice a blocco è lineare se è un sottospazio lineare dello spazio delle sequenze di lunghezza (Sottospazi vettorialiUn sottospazio vettoriale è un sottoinsieme che è spazio vettoriale con le stesse operazioni: basta che sia chiuso per somma e per prodotto per scalari. Deve contenere il vettore nullo. In R^2 i sottospazi sono {0}, le rette per l'origine e tutto R^2.Sottospazi vettoriali →): contiene la parola nulla e la somma di due parole qualunque è ancora una parola.
Quindi con dimensione del sottospazio. Per negare la linearità basta un controesempio: la parola nulla assente, oppure due parole la cui somma non è una parola.
Esempio. : , . Non è lineare perché , e anche perché . Invece è lineare: la somma di due parole diverse e non nulle è la terza ().
Quando il codice è dato da equazioni si guarda se ogni è una somma modulo 2 di bit di informazione:
- un termine costante, per esempio , rende il codice non lineare (con la parola non è nulla);
- un prodotto di bit, per esempio , lo rende non lineare;
- un quadrato vale (, ), quindi non rompe la linearità; lo stesso per ;
- il peso di Hamming modulo 2, , è modulo 2: è un bit di parità, quindi lineare.
Esempio (da un tema d'esame). : è un codice con parole tutte diverse (quindi decodificabile) ma non lineare, per il nel terzo bit. Non esiste una matrice che lo rappresenti come .
Un codice non lineare può comunque essere un buon codice; ma serve la tabella intera e perde le scorciatoie di calcolo di questa nota.
3. Matrice generatrice
Definizione. Una matrice di dimensioni è la matrice generatrice di un codice lineare se ha rango e Il bit -esimo della parola è il prodotto della riga di per : (somma modulo 2).
Il rango (colonne linearmente indipendenti, Combinazioni lineari e dipendenza lineareUna combinazione lineare è una somma di vettori moltiplicati per scalari. I vettori sono linearmente indipendenti se l'unica combinazione che dà il vettore nullo è quella con tutti i coefficienti nulli; altrimenti sono dipendenti, e allora uno di essi è combinazione lineare degli altri.Combinazioni lineari e dipendenza lineare →) garantisce che a diversi corrispondano parole diverse, quindi parole.
Se è la sequenza con un solo in posizione , è la colonna di : ogni colonna di è una parola di codice, e il codice è l'insieme di tutte le somme di colonne (il sottospazio generato, Generatori e basiDei vettori generano V se ogni vettore di V è loro combinazione lineare; una base è un insieme di generatori linearmente indipendenti, e allora ogni vettore si scrive in modo unico come combinazione dei vettori di base. Lemma dello scambio: i vettori indipendenti non sono mai più dei generatori.Generatori e basi →).
Esempio. , , . Le equazioni sono , , e le parole sono (per ). È il codice a parità pari: il terzo bit rende pari il numero di .
La non è unica. Il codice (, ) si genera con una qualunque coppia di colonne scelte tra le tre parole non nulle: (le tre matrici sono state controllate enumerando le parole). La probabilità d'errore di parola su un canale qualunque dipende solo dall'insieme delle parole e non da quale corrisponde a quale : cambiare senza cambiare è irrilevante per le prestazioni.
Trasformazioni di .
- Operazioni sulle colonne (scambiare due colonne, sommare una colonna a un'altra): sostituiscono una base del sottospazio con un'altra base dello stesso sottospazio. Il codice non cambia, cambia solo la corrispondenza .
- Permutazioni delle righe: scambiare le righe e scambia i bit e di tutte le parole. Si ottiene un codice diverso (altre parole), ma con la stessa distanza minima e, se il canale è senza memoria, la stessa probabilità d'errore: i bit sono tutti equivalenti.
Esempio. Da (parole ) scambiando le righe e si ottengono le parole : insieme diverso, in entrambi i casi.
4. Forma sistematica
Definizione. è in forma sistematica se I primi bit della parola sono i bit di informazione, gli altri sono i bit di parità .
Il vantaggio è che la decodifica, una volta trovata la parola, restituisce leggendo i primi bit. Una qualunque si porta sempre in forma sistematica con combinazioni delle colonne e permutazioni delle righe. Quando basta toccare le colonne il codice non cambia.
Esempio (tema d'esame del 9 gennaio 2026). Il codice , , , , ha Le prime tre righe non sono l'identità (la seconda riga è ). Sommando la seconda colonna alla prima (operazione sulle colonne: il codice è lo stesso) la prima colonna diventa e Con Python si controlla che e producono le stesse parole.
Se la parte alta di non è l'identità e per qualche posizione manca una riga del tipo , le sole permutazioni delle righe non bastano: servono combinazioni delle colonne (vedi l'esercizio Esercizio - codice (8,4) non sistematico, sistematica equivalente e cascata di due codici (esame del 23 gennaio 2024, es. 172)).
5. Peso di Hamming e distanza minima
Definizione. Il peso di Hamming del codice è , il minimo numero di tra le parole non nulle.
Teorema. In un codice lineare la distanza minima è uguale al peso minimo: .
Dimostrazione. . Il codice è lineare, quindi è una parola di codice, non nulla perché ; viceversa ogni parola non nulla si ottiene come con . Quindi il minimo sulle coppie è il minimo sulle parole non nulle: .
In pratica si elencano le parole non nulle (invece delle coppie) e si prende il peso minore. Ogni colonna di è una parola, quindi Il bound può non essere raggiunto, perché una somma di colonne può pesare meno di ogni colonna: (, ) ha tutte le colonne di peso , ma la somma della seconda e della terza colonna è di peso : (le parole hanno pesi , controllato con Python).
Esempio (codice sistematico). Con , , , : le parole non nulle hanno tutte peso (, ). Quindi : il codice rivela errori e ne corregge (controllato con Python).
6. Bound di Singleton
Teorema (bound di Singleton). Per un codice lineare
Dimostrazione. Si sceglie una in forma sistematica (si può sempre: cambia al più l'ordine dei bit, non ). La colonna è , con il vettore con un solo in posizione e lunga . Il suo peso è al più . Essendo una parola di codice, .
Si usa in due modi.
- Per scartare un codice. Per correggere errori serve , quindi , cioè : servono almeno bit di parità. Per esempio un codice lineare con e non può correggere errori: servirebbe ma .
- Per sapere cosa si può ottenere. Con , si ha ; vediamo cosa si ottiene davvero.
Esempio (lezione). Si trovino che massimizzano gli errori corretti per (, ).
Le tre parole non nulle sono le due colonne e la loro somma: , e . Si vuole che ciascuna abbia peso .
- ha peso : per avere servono .
- Con la somma vale e pesa : per avere servono e .
- Con , : pesa .
Quindi (il massimo, con , ; Singleton ammetterebbe ma non è raggiungibile: lo si verifica provando tutte le scelte con Python, solo questa dà , negli altri casi ). Il codice corregge errore. Scambiando le prime due colonne si ha la forma sistematica con parole e pesi .
Casi in cui il bound è raggiunto (codici a distanza massima, MDS):
- codice a ripetizione : , (corregge errori, ma );
- codice a parità singola (sezione 7): .
7. Codice a parità singola
Con il bound dà , quindi il meglio che si può fare è : rivelare sempre errore e non correggerne nessuno. Lo ottiene il codice che aggiunge un bit di parità Il numero di di ogni parola è pari (parità pari), quindi un numero dispari di errori (di cui ) si rivela sempre e un numero pari no. Tutte le parole non nulle hanno peso pari, il minimo è (per esempio dà peso ). Per le parole non nulle hanno pesi .
Con più bit di parità la scelta migliore dipende da quanti errori si vogliono rivelare o correggere: Singleton dice che cresce al massimo di per ogni bit di parità aggiunto.
Errori comuni
- Credere che un codice sia lineare perché contiene la parola nulla o perché la somma di una coppia è una parola: serve la chiusura per tutte le somme.
- Considerare lineare un codice con un termine costante () o con prodotti di bit; non considerare lineare un codice con (che vale ).
- Scambiare righe e colonne di : le operazioni sulle colonne non cambiano il codice, le permutazioni delle righe cambiano le parole ma non le prestazioni.
- Calcolare prendendo il minimo peso delle colonne di invece del minimo su tutte le parole non nulle (somme di colonne comprese).
- Dimenticare che è in questo corso (), non .
Domande d'esame
- È lineare il codice , , , , , ? Quali sono e il rate? Sì: i quadrati valgono i bit stessi, quindi ogni è una somma di bit. Rate . ha righe (Esercizio - codice (6,3) da equazioni con quadrati e matrice di controllo di parità (secondo compitino del 14 gennaio 2025, es. 185)).
- Dimostrare che per un codice lineare è il peso minimo. Le differenze di parole sono parole; la distanza tra e è il peso di .
- Può un codice lineare binario con e correggere errori? No: servirebbe , ma Singleton dà .
Esercizi svolti
- Esercizio - codice (5,3) non sistematico, matrice di parità e sindrome su BSC (secondo compitino del 9 gennaio 2026, es. 195): equazioni con peso di Hamming modulo 2, forma sistematica con operazioni sulle colonne.
- Esercizio - codice (6,3) da equazioni con quadrati e matrice di controllo di parità (secondo compitino del 14 gennaio 2025, es. 185): equazioni con quadrati, linearità, forma sistematica e decodifica.
- Esercizio - codice (8,4) non sistematico, sistematica equivalente e cascata di due codici (esame del 23 gennaio 2024, es. 172): matrice generatrice non sistematica, sistematica equivalente e cascata di due codici.
- Esercizio - codice non lineare a quattro parole, distanza 2 e bound di Singleton (esame del 21 giugno 2023, es. 159): codice non lineare e impossibilità di correggere due errori con quattro parole.
Versione ripasso
Spazio delle sequenze (CampiUn campo è un insieme di numeri con somma e prodotto che rispettano le regole usuali (associativa, commutativa, neutri, opposti, inversi, distributiva): è ciò che serve per risolvere le equazioni di primo grado. Esempi: Q, R, C e i campi finiti.Campi →, Spazi vettorialiUno spazio vettoriale su un campo K è un insieme con una somma di vettori e un prodotto per scalari che rispettano 7 proprietà. Esempi fondamentali: K^n (somma componente per componente), le funzioni da R in R, i polinomi.Spazi vettoriali →)
- Somma XOR senza riporto (), scalari . Ogni sequenza è opposta di se stessa: (esempio ).
- Peso = numero di ; ; vale la disuguaglianza triangolare.
- Sottospazio dello spazio delle sequenze: contiene ed è chiuso rispetto alla somma; parole, = dimensione.
- Non lineare: ( e ). Lineare: .
- Da equazioni : lineare se ogni è somma di bit. Non lineare con una costante () o con un prodotto (). Lineare con , con e con .
Matrice generatrice (, rango )
- ; = riga per ; ogni colonna è una parola ( dà la colonna ); il codice è lo spazio generato dalle colonne.
- . Memoria: bit contro bit della tabella.
- non è unica: si genera con tre coppie di colonne diverse. dipende solo dall'insieme , non dalla mappa .
- Operazioni sulle colonne (scambio, somma di colonne): stesso codice. Permutazioni delle righe: bit permutati, parole diverse, stesso e stessa su canale senza memoria (da scambiando le righe e : ).
- Versione per Ing. Elettronica: 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 → ( trasposta, ).
Forma sistematica , , parità
- Si ottiene con somme di colonne e permutazioni di righe. Esempio: , colonna colonna colonna dà , , stesse parole.
- Se manca una riga del tipo le sole permutazioni di righe non bastano.
Distanza minima
- Teorema: in un codice lineare , perché le differenze di parole sono parole. Si elencano parole invece di tutte le coppie.
- peso minimo delle colonne di , ma può essere minore: ( tutti ) ha colonne di peso e (somma delle colonne e : ). Codice con , , , : parole non nulle tutte di peso , .
Bound di Singleton: .
- Dimostrazione: in forma sistematica la colonna è , di peso al più .
- Correggere errori richiede , quindi . Un codice lineare con , non corregge errori ().
- Esempio lezione , : colonne , e somma ; peso richiede , poi , . Risultato (le altre scelte danno al più ), ; sistematica , parole .
- Raggiunto da: ripetizione con ; parità singola con (, rivela i numeri dispari di errori).
Errori tipici
- Chiusura verificata solo su una coppia, o solo .
- Ritenere lineare un codice con o con prodotti; ritenere non lineare uno con .
- Scambiare operazioni su righe e su colonne di .
- Prendere dal peso delle sole colonne di .
- Dimenticare che in questo corso è ().
Esercizi su questo argomento
- Esercizio - 4-QAM con impulso triangolare, lunghezza del cavo, canale di simbolo, capacità e codice non lineare (compito del 23 gennaio 2026, es. 199)
- Esercizio - capacità di un canale 4-PSK, entropia di un codice a blocco, distanza minima e decodifica (compito dell'11 febbraio 2025, es. 192)
- Esercizio - codice (5,3) lineare dalle parole di codice, sindrome e periodo di simbolo massimo (esame dell'8 febbraio 2024, es. 175)
- Esercizio - codice (5,3) non sistematico, matrice di parità e sindrome su BSC (secondo compitino del 9 gennaio 2026, es. 195)
- Esercizio - codice (6,2) con 4-QAM, matrice di parità, decodifica e capacità del canale (esame del 30 agosto 2024, es. 181)
- Esercizio - codice (6,2) da matrice di parità non sistematica, decodifica e capacità con 4-QAM (secondo compitino del 12 gennaio 2024, es. 169)
- Esercizio - codice (6,3) accorciato di Hamming, sindrome e peso minimo (esame del 6 settembre 2022, es. 146)
- Esercizio - codice (6,3) con G sistematica, numero di coset e bucatura (esame del 29 agosto 2021, es. 128)
- Esercizio - codice (6,3) da equazioni con quadrati e matrice di controllo di parità (secondo compitino del 14 gennaio 2025, es. 185)
- Esercizio - codice (6,4) con colonne uguali in H, coset leader multipli e bit di parità aggiunto (esame del 25 gennaio 2023, es. 154)
- Esercizio - codice (8,4) non sistematico, sistematica equivalente e cascata di due codici (esame del 23 gennaio 2024, es. 172)
- Esercizio - codice non lineare a quattro parole, distanza 2 e bound di Singleton (esame del 21 giugno 2023, es. 159)
- Esercizio - matrice di parità a 4 righe, forma sistematica e permutazione delle colonne (esame del 24 gennaio 2025, es. 188)
- Esercizio - porta parallela a 8 pin, Hamming (7,4), coset e canale con pin guasto (esame del 15 febbraio 2023, es. 157)
- Esercizio - rate di informazione, codice di Hamming (7,4) e capacità del canale binario simmetrico (compito del 6 luglio 2026, es. 204)