Matematica Discreta III
Lezione del giorno 16 maggio 2008
Abbiamo dimostrato che, se C Z2n un codice lineare, allora: la decodifica (mediante il principio
della minima distanza) è corretta  il pattern di errore è una delle parole leaders.
Dal risultato precedente segue che la probabilità di corretta decodifica (nel caso di un codice lineare
C Z2n) si ottiene sommando le probabilità che il pattern di errore coincida con uno dei leaders (al
variare del leader). Supponiamo come sempre che il canale di trasmissione sia simmetrico con
probabilità di errore p (nel singolo bit): se z è un generico leader, e se t=(z) è il suo peso (cioè il
numero dei bits =1) la probabilità che il pattern di errore sia z coincide la probabilità che vi siano
esattamente s errori di trasmissione, ossia coincide con pt(1-p)n-t= p(w)(1-p)n-(w). Se sommiamo
queste quantità al variare del leader w otteniamo la probabilità di corretta decodifica; poiché il peso
di una parola di lunghezza n varia da 0 ad n, se nella somma raggruppiamo gli addendi con lo stesso
peso si ottiene alla fine:
Corollario. La probabilità di corretta decodifica nel caso di un codice lineare C Z2n è uguale a:
n
 A p (1  p)
t
t 0
t
n t
(*)
dove At indica il numero di leaders di peso t nella matrice di decodifica di C, per ogni t=0,….,n . In
particolare tale probabilità non dipende dalla parola trasmessa ma solo dal codice C (al contrario
di quanto avviene nei codici generici, come visto in precedenti esempi).
Esempio: in un esempio precedente si è costruita la matrice di decodifica 8x8 di un codice lineare
C di lunghezza 6 e dimensione 3, in cui vi sono 8 leaders dei quali: 1 di peso 0; 6 di peso 1;1 di
peso 1 (in questo caso A0=1, A1=6, A2=1, A3=A4=A5=A6=0).
Dunque se il canale di trasmissione è simmetrico con probabilità di errore p, utilizzando tale codice
la probabilità di corretta decodifica è:
(1-p)6+6p(1-p)5+p2(1-p)4=(1-p)4(1+4p-4p2)
Se per esempio p=0,01 (statisticamente 1 bit ogni 100 è errato) allora tale probabilità è circa
0,998635, quindi la probabilità di errata decodifica è circa 1-0,998635=0,001365. I bits di
informazione sono 3 (perché dimC=3), e 3 sono i bits di ridondanza che controllano gli errori: se
avessimo trasmesso una parola di lunghezza 3 attraverso lo stesso canale (pura informazione senza
controllo di errore), la probabilità che essa venisse ricevuta correttamente sarebbe (1-p)30,9703,
quindi la probabilità che essa venisse ricevuta in modo errato sarebbe circa 1-0,9703=0,0297 (più di
20 volte superiore alla probabilità 0,001365) : tale migliore prestazione è stata ottenuta mediante la
“spesa” dei 3 bits di ridondanza.
L’ultimo teorema dimostrato afferma in pratica che i patterns di errore che il codice lineare C riesce
a correggere sono esattamente i leaders della matrice di decodifica.
Se  è la distanza del codice lineare C, e se s=(-1)/2, sappiamo che C è in grado di correggere (al
più) un numero s di errori: il numero di errori coincide con il peso del pattern di errore, dunque
tutte le parole di Z2n di peso s saranno presenti come leaders nella matrice di decodifica.
Potranno però egualmente essere presenti come leaders anche parole di peso >s, rappresentanti
egualmente dei pattern di errore che il codice C riesce a correggere.
Esempio: il codice C dell’esempio precedente (in cui =3, s=1) è in grado di correggere (al più) 1
errore, ed infatti nella matrice di decodifica tutte le parole di peso 1 sono presenti come leaders. Vi
è però anche una parola leader 00101 di peso 2, ed essa rappresenta un pattern di errore che il
codice C riesce egualmente a correggere: in pratica se gli errori nella parola trasmessa sono 2 ma
esattamente nel 4° e 6° bit, allora C riesce a decodificare esattamente la parola trasmessa (mediante
il principio della minima distanza).
Nella formula (*), i coefficienti At sono in genere difficili da calcolare a priori, senza costruire
l’intera matrice di decodifica. Però l’osservazione precedente permette il calcolo esplicito di alcuni
di essi: poiché tutte le parole di peso ≤s=(-1)/2 sono presenti come leaders, e poiché per ogni
n
t=0,1,….,s il numero di parole di lunghezza n e peso t coincide con il coefficiente binomiale   ,
t
la probabilità di corretta decodifica per un codice lineare di lunghezza n diventa:
s
n
n t
n t


A t p t (1  p) n  t
+
(dove At indica il numero di leaders di peso t)
p
(1

p)


t
t s 1
t 0  
Mentre i coefficienti della prima sommatoria possono essere calcolati a priori, quelli della seconda
possono essere calcolati solo conoscendo la matrice di decodifica.
Nel caso però di un codice lineare perfetto (per es. un codice H(r) di Hamming) dimostriamo che
tutti i coefficienti At con t>s sono nulli, ossia che tutti i leaders hanno peso s: se infatti per assurdo
esistesse un leader z con peso t>s, per costruzione della matrice di decodifica la parola del codice a
distanza minima da z sarebbe quella nella stessa colonna, quindi nella prima colonna ossia la parola
nulla 0, da cui si avrebbe (z,0)=(w)=t>s, in contraddizione con la proprietà che in un codice
perfetto ogni parola si trova a distanza s da una e una sola parola del codice.
Dunque per un [n,k,]-codice lineare perfetto C la formula della probabilità di corretta decodifica
diventa:
s
n t
 p (1  p) n  t
dove s=(-1)/2=(-1)/2 (ricordando che  é dispari)

t 0  t 
e tale valore si può calcolare anche senza costruire la matrice di decodifica.
Esempio: il codice di Hamming H(r) é un [2r-1,2r-1-r,3]-codice lineare con s=1. La probabilità di
corretta decodifica é allora:
(1-p)n+np(1-p)n-1 = (1-p)n-1(1+p(n-1))
dove n=2r-1.
Se per esempio r=3, p=0,01, allora tale probabilità é 0,99796, dunque la probabilità di errata
decodifica é 1-0,99796=0,00204. I bits di informazione sono 4 e 3 i bits di ridondanza che
controllano gli errori: se avessimo trasmesso una parola di lunghezza 4 attraverso lo stesso canale
(pura informazione senza controllo di errore), la probabilità che essa venisse ricevuta correttamente
sarebbe (1-p)40,96059, quindi la probabilità che essa venisse ricevuta non correttamente sarebbe
1-0,96059=0,3941 (circa 19 volte più grande rispetto alla probabilità ottenuta con il controllo
dell’errore): tale prestazione migliore é ottenuta con la “spesa” di 3 bits di ridondanza e un rateo di
informazione di 4/757%.
Per r=4, p=0,01 si ottiene per la trasmissione senza controllo di errore una probabilità di errata
ricezione circa 10 volte più grande a quella ottenuta utilizzando il codice H(4), con una spesa di 4
bits di ridondanza ed un rateo di informazione di 11/1573%.