Appunti di Teoria dell`Informazione e Codici

DIPARTIMENTO
DI
ENERGIA,
INGEGNERIA DELL’INFORMAZIONE
E
MODELLI MATEMATICI
(DEIM)
Appunti di Teoria
dell'Informazione e
Codici
Giovanni Garbo, Stefano Mangione
06/09/2013
ii
Appunti di Teoria dell’Informazione e Codici
Sommario
Capitolo - 1
7
Le Sorgenti d’Informazione
7
1.1 - Premessa ............................................................................................................ 7
1.2 - Misura dell’Informazione .......................................................................................... 9
1.3 - Sorgenti d’Informazione ......................................................................................... 11
Esempio I.1.1....................................................................................................................15
1.4 - Informazione Associata a un Messaggio ........................................................................ 15
Capitolo - 2
17
Sorgenti con Alfabeto Continuo
18
2.1 - Entropia di una Sorgente con Alfabeto Continuo............................................................... 18
2.2 - Sorgenti Gaussiane ............................................................................................... 19
Capitolo - 3
23
La Codifica di Sorgente
23
3.1 - Premessa .......................................................................................................... 23
3.2 - La Regola del Prefisso ........................................................................................... 23
3.3 - Lunghezza Media di un Codice.
................................................................................ 24
3.4 - La Disuguaglianza di Kraft. ..................................................................................... 25
Esempio 3.1 .....................................................................................................................26
3.5 - Limite Inferiore per la Lunghezza di un Codice. ............................................................... 27
Esempio 3.2 .....................................................................................................................28
3.6 - La Proprietà di Equipartizione.
................................................................................. 30
3.7 - Teorema sulla Codifica di una Sorgente DMS. ................................................................. 32
Teorema 3.1 .....................................................................................................................34
Esempio 3.3 .....................................................................................................................34
3.8 - Codifica di Sorgenti con Memoria. .............................................................................. 36
Esempio 3.4 .....................................................................................................................37
Esempio 3.5 .....................................................................................................................37
Capitolo - 4
39
Canali Privi di Memoria
39
4.1 - L’Informazione Mutua. .......................................................................................... 39
4.2 - Concetto di Canale. .............................................................................................. 40
4.3 - L’equivocazione. ................................................................................................. 43
4.4 - La capacità di canale ............................................................................................. 44
ii
Appunti di Teoria dell’Informazione e Codici
4.5 - Il Canale Simmetrico Binario.
.................................................................................. 45
4.6 - Capacità del Canale AWGN a Banda Limitata. ................................................................
47
-messaggi. ..........................................................................
50
4.8 - Canali in Cascata.................................................................................................
51
4.9 - L’Inverso del Teorema della Codifica di Canale ...............................................................
53
4.7 - Informazione Mutua tra
Teorema 4.1 .....................................................................................................................58
4.10 - Il piano di Shannon .............................................................................................
59
Capitolo - 5
61
Cenni di Trasmissione Numerica
61
5.1 - Scenario di Riferimento. .........................................................................................
61
5.2 - Struttura del modulatore e del codificatore di sorgente ........................................................
61
5.3 - Struttura del Ricevitore. .........................................................................................
62
5.4 - La Regola di Decisione Ottima. ................................................................................
63
5.5 - Il Criterio della Massima Verosimiglianza. .....................................................................
64
5.6 - Funzioni di Verosimiglianza. ...................................................................................
65
5.7 - Le Regioni di Decisione. ........................................................................................
66
5.8 - L’Union Bound.
................................................................................................. 68
5.9 - Bound di Bhattacharrya. ........................................................................................
70
5.10 - Bound di Gallager...............................................................................................
75
Capitolo - 6
79
Il Teorema di Shannon sulla Codifica di Canale
79
6.1 - Premessa.
........................................................................................................ 79
6.2 - La Disuguaglianza di Jensen....................................................................................
80
Definizione 6.1 ..................................................................................................................80
Definizione 6.2 ..................................................................................................................81
6.3 - Il Teorema di Shannon sulla Codifica di Canale. ..............................................................
83
Teorema 6.1: Teorema di Shannon sulla codifica di canale ..................................................................92
Capitolo - 7
95
Strutture Algebriche
95
7.1 - Gruppo ...........................................................................................................
7.2 - Anello
95
............................................................................................................ 95
7.3 - Campo............................................................................................................
95
7.4 - Spazio vettoriale .................................................................................................
96
iii
Indice
Capitolo - 8
97
Distanza di Hamming
97
8.1 - Lo Spazio
..................................................................................................... 97
8.2 - Generalizzazione della distanza di Hamming .................................................................. 98
Capitolo - 9
101
Codici Binari a Blocchi
101
9.1 - Codificatore, Codice, Decodificatore .......................................................................... 101
Definizione 9.1 - codificatore a blocchi .....................................................................................101
Definizione 9.2 - codice binario a blocchi...................................................................................101
Definizione 9.3 - decodificatore .............................................................................................102
9.2 - Utilità della codifica di canale ................................................................................. 103
9.3 - La decodifica a massima verosimiglianza
.................................................................... 105
Regola di decisione a Massima Verosimiglianza ............................................................................106
9.4 - Definizioni e teoremi sui codici rivelatori e correttori ........................................................ 106
Definizione 9.4 ................................................................................................................107
Definizione 9.5 ................................................................................................................107
Teorema 9.1 ...................................................................................................................107
Definizione 9.6 ................................................................................................................108
Teorema 9.2 ...................................................................................................................108
Teorema 9.3 ...................................................................................................................109
Capitolo - 10
111
Codici Lineari a Blocchi
111
10.1 - Premessa ....................................................................................................... 111
10.2 - Morfismi ....................................................................................................... 111
Definizione 10.1 - omomorfismo ............................................................................................112
Definizione 10.2 - monomorfismo ..........................................................................................112
Definizione 10.3 - isomorfismo ..............................................................................................112
10.3 - Schema di principio di un codice lineare a blocco
10.4 - Matrice generatrice del codice
.......................................................... 112
............................................................................... 113
10.5 - Distribuzione dei pesi di un codice lineare a blocco ........................................................ 115
Definizione 10.4 –Distribuzione dei pesi di un codice lineare .............................................................115
10.6 - Capacità di rivelazione di un codice lineare a blocco
....................................................... 116
Teorema 10.1 ..................................................................................................................116
10.7 - Probabilità di non rivelazione d’errore di un codice lineare
................................................ 116
10.8 - Laterali di un sottogruppo .................................................................................... 117
10.9 - Decodifica tramite i rappresentanti di laterale ............................................................... 119
Teorema 10.2 ..................................................................................................................120
10.10 - Probabilità d’errore di un codice lineare a blocchi ......................................................... 120
iv
Appunti di Teoria dell’Informazione e Codici
10.11 - Codici perfetti, bound di Hamming ........................................................................
121
Capitolo - 11
123
Codici Sistematici
123
11.1 - Codici Sistematici .............................................................................................
123
11.2 - Matrice di controllo di parità .................................................................................
125
11.3 - Codici duali ...................................................................................................
125
11.4 - Decodifica basata sulla sindrome ............................................................................
126
Capitolo - 12
129
Codici di Hamming e loro duali
129
12.1 - Codici di Hamming
.......................................................................................... 129
Esempio 12.1 ..................................................................................................................130
12.2 - Duali dei codici di Hamming ................................................................................
131
12.3 - Codici ortogonali e transortogonali ..........................................................................
132
Capitolo - 13
135
Codici Convoluzionali
135
13.1 - Premessa ......................................................................................................
135
13.2 - Struttura del codificatore .....................................................................................
135
13.3 - Matrice generatrice e generatori.
............................................................................ 136
13.4 - Diagramma di stato del codificatore. ........................................................................
13.5 - Codici catastrofici
138
............................................................................................ 140
13.6 - Trellis degli stati ..............................................................................................
141
Esempio 13.1 ..................................................................................................................143
Capitolo - 14
145
L’Algoritmo di Viterbi
145
14.1 - Decodifica hard e soft di un codice convoluzionale. ........................................................
145
14.2 - L’algoritmo di Viterbi ........................................................................................
148
14.3 - Efficienza dell’algoritmo di Viterbi ..........................................................................
150
Capitolo - 15
153
Prestazioni dei Codici Convoluzionali
153
15.1 - Distanza libera di un codifie convoluzionale. ...............................................................
15.2 - Funzione di trasferimento di un codificatore convoluzionale.
15.3 - Bound sulla probabilità di primo evento d’errore.
153
............................................. 154
.......................................................... 157
Indice
v
Esempio 15.1 ..................................................................................................................160
15.4 - Bound sulla probabilità d’errore sul bit informativo. ........................................................ 164
Capitolo - 16
169
Anelli di Polinomi
169
16.1 - Premessa ....................................................................................................... 169
16.2 - L’anello polinomi a coefficienti in
......................................................................... 169
16.3 - Spazi di polinomi.............................................................................................. 171
Capitolo - 17
173
Codici polinomiali
173
Capitolo - 18
175
Ideali di un anello di polinomi
175
18.1 - Premessa ....................................................................................................... 175
18.2 - Ideali di un anello con identità.
.............................................................................. 176
Teorema 18.1 ..................................................................................................................176
Teorema 18.2 ..................................................................................................................177
Capitolo - 19
179
Codici Ciclici
179
19.1 - Rappresentazione polinomiale di un codice ciclico.
........................................................ 179
Definizione 19.1 ...............................................................................................................179
19.2 - Teorema sui codici ciclici
.................................................................................... 180
Teorema 19.1 ..................................................................................................................180
19.3 - Polinomio generatore di un codice ciclico ................................................................... 181
19.4 - Polinomio di parità di un codice ciclico
..................................................................... 182
Esempio 19.1 ..................................................................................................................183
19.5 - Matrice generatrice di un codice ciclico ..................................................................... 184
19.6 - Codici ciclici Sistematici ...................................................................................... 185
Esempio 19.2 ..................................................................................................................186
19.7 - Duale di un codice ciclico .................................................................................... 187
Capitolo - 20
189
Campi finiti
189
20.1 - Polinomi irriducibili e campi a essi associati ................................................................ 189
Definizione 20.1 ...............................................................................................................189
Teorema 20.1 ..................................................................................................................189
20.2 - Ordine degli elementi di un gruppo
......................................................................... 190
20.3 - Ordine degli elementi di un campo finito
................................................................... 191
vi
Appunti di Teoria dell’Informazione e Codici
20.4 - Ordine di un campo finito ...................................................................................
Teorema 20.2 - Ordine di un campo finito
20.5 - Elementi primitivi di un campo .............................................................................
20.6 - Campi di polinomi
192
.................................................................................192
193
........................................................................................... 194
Esempio 20.1 ..................................................................................................................194
20.7 - Polinomi irriducibili primitivi................................................................................
195
Definizione 20.2 ...............................................................................................................195
Teorema 20.3 ..................................................................................................................195
20.8 - Alcune proprietà dei campi finiti ............................................................................
195
Esempio 20.2 ..................................................................................................................196
20.9 - Il logaritmo di Zech ..........................................................................................
198
20.10 - Elementi algebrici di un campo su un sottocampo ........................................................
199
Definizione 20.3 ...............................................................................................................200
Capitolo - 21
201
Codici BCH
201
21.1 - Codici BCH ...................................................................................................
201
Esempio 21.1 - Progetto di un codice BCH ................................................................................203
Capitolo - 22
207
La Trasformata di Fourier Discreta
207
22.1 - La Trasformata di Fourier Discreta..........................................................................
22.2 - DFT e codici ciclici
207
.......................................................................................... 210
Definizione 22.1 ...............................................................................................................210
Capitolo - 1
LE SORGENTI D’INFORMAZIONE
1.1 - Premessa
Uno dei maggiori problemi che s’incontrano nella stesura di
un testo che tratti la teoria dell’informazione è quello della
notazione da adottare, non è affatto semplice trovare il giusto
compromesso tra sinteticità e chiarezza della stessa.
Nel seguito avremo spesso a che fare con variabili aleatorie (V.A.)
che indicheremo con lettere maiuscole. Come è noto ad ogni V.A.
si può associare una distribuzione di probabilità (DDP) ed una densità
di probabilità (ddp) che altro non è se non la derivata della DDP,
intesa eventualmente in senso generalizzato.
Nel caso delle variabili aleatorie discrete che possono cioè
assumere un numero finito di valori è più comodo fare riferimento alla distribuzione di massa di probabilità (dmp) cioè ad una
funzione ( ) che associa ad ogni valore che la V.A. può
assumere la probabilità dell’evento: “ assume il valore ”.
Quando si riterrà che non vi siano possibilità d’equivoci si
ometterà il pedice che individua la V.A. affidando all’argomento
( ).
della funzione anche questo compito, cioè ( )
Si noti che la notazione che qui si adotta è purtroppo
analoga a quella normalmente utilizzata per indicare la ddp di una
variabile aleatoria, un minimo di attenzione al contesto dovrebbe,
si spera, essere sufficiente ad evitare confusioni. Le ddp verranno
di regola indicate con lettere greche con a pedice la V.A. cui si
riferiscono ad esempio ( ).
Come è noto per le variabili aleatorie discrete è particolarmente
semplice desumere da una qualunque delle tre funzioni di probabilità appena citate le altre. In particolare se è nota la dmp di una
variabile aleatoria discreta che assume valori appartenenti all’in-
0 - Appunti di Teoria dell’Informazione e Codici
8
sieme
la corrispondente DDP ( ) sarà una funzione definita su tutto costante a tratti con discontinuità d’ampiezza ( ) in corrispondenza dei valori che la V.A. può assumere. La ddp
( ) sarà espressa da
( )
∑
(
) (
).
Nel calcolo delle sommatorie che s’incontreranno ad ogni
piè sospinto si indicherà il più sinteticamente possibile l’indice su
cui le suddette operano. Ad esempio avendo a che fare con una
V.A. discreta che assuma valori in un insieme
, la
condizione di normalizzazione della sua dmp sarà indicata come
segue:
∑
( )
(1.1.1)
anziché:
∑
(
)
(1.1.2)
Analogamente quando si avrà a che fare con variabili aleatorie multidimensionali, come ad esempio nel caso di una -upla
di simboli emessi consecutivamente, si utilizzeranno distribuzioni
di massa congiunte che saranno caratterizzate scrivendo, ove possibile, pedice e argomento in grassetto. Ad esempio nel caso di
una coppia di variabili aleatorie
che assumono entrambe
valori sull’insieme , la condizione di normalizzazione verrà
sinteticamente scritta:
∑
( )
(1.1.3)
anziché
∑∑
(
)
(1.1.4)
Sorgenti con Alfabeto Continuo
9
Nel caso delle ddm condizionate con
(
)
(1.1.5)
si indicherà sinteticamente la seguente probabilità condizionata:
(
)
(1.1.6)
anche in questo caso, quando si riterrà che non vi siano possibilità
d’equivoci si ometterà il pedice affidando agli argomenti l’identificazione delle variabili aleatorie cui si fa riferimento.
1.2 - Misura dell’Informazione
Il concetto d’informazione a livello intuitivo è chiaro. Si
acquisisce un’informazione nel momento in cui si viene a conoscenza di qualcosa che prima ci era ignoto. Quantificare l’informazione da un punto di vista matematico richiede invece qualche riflessione.
Per inquadrare meglio il problema facciamo riferimento ad
un esperimento casuale che com’è noto è caratterizzato da un insieme di possibili risultati, da una famiglia d’eventi (insiemi di
risultati) e dalle probabilità associate a ciascuno di essi.
In prima istanza si accetta facilmente l’idea che il contenuto
informativo di un evento sia tanto più grande quanto più esso è
inatteso, ciò ad esempio si riflette nella dimensione del carattere
utilizzato nei titoli di un quotidiano che, di regola, è direttamente
proporzionale alla “sensazionalità” dell’evento di cui il titolo
intende dare notizia. Una notizia è tanto più sensazionale quanto
più essa è inattesa, “un padrone ha morso il suo cane”.
Pertanto, volendo definire una misura per la quantità d’informazione associata ad un evento, minor prevedibilità deve equivalere ad un valore maggiore di tale misura.
Inoltre, qualora si verifichino più eventi, per semplicità
prendiamone in considerazione solo due, la misura dell’informazione complessiva dovrebbe essere pari alla somma delle informazioni acquisite con il manifestarsi dei singoli eventi, sempre che
0 - Appunti di Teoria dell’Informazione e Codici
10
le informazioni acquisite con il manifestarsi di uno di essi non abbiano modificato l’incertezza sul secondo.
In conclusione una misura dell’informazione deve essere:
- legata alla probabilità che il generico evento ha di manifestarsi
ed in particolare deve crescere al diminuire di essa e deve
variare con continuità al variare di quest’ultima;
- nel caso di un evento congiunto deve essere pari alla somma
delle informazioni associate ai singoli eventi, se questi sono
tra loro statisticamente indipendenti cioè se il manifestarsi di
uno dei due lascia inalterata l’incertezza sull’altro.
Ricordando che la probabilità che si verifichino più eventi
statisticamente indipendenti è pari al prodotto delle probabilità
dei singoli eventi, si può pensare di quantificare l’informazione
sfruttando la nota proprietà dei logaritmi
(
)
( )
( )
(1.2.1)
In particolare si assume come informazione (A) associata ad un
evento che si manifesta con probabilità
(A) valga:
( )
( )
(1.2.2)
L’informazione associata all’evento non dipende quindi dalla natura di quest’ultimo, ma solo dalla probabilità che esso ha di
manifestarsi, pertanto la notazione utilizzata è impropria poiché fa
apparire l’informazione come associata all’evento, non alla sua
probabilità.
La (1.2.2) soddisfa i due requisiti sopra indicati, in particolare cresce al diminuire di . É stato dimostrato che il logaritmo è
l’unica funzione che soddisfa i requisiti sopra elencati.
Osserviamo anche che la base adottata per il logaritmo non
è concettualmente importante, cambiarla equivale ad introdurre
un fattore di scala, come appare ovvio se si ricorda la regola per il
cambiamento di base dei logaritmi:
Sorgenti con Alfabeto Continuo
11
(1.2.3)
In pratica scegliere la base nella (1.2.2) equivale a scegliere una
particolare unità di misura. La potenza di un motore non cambia
se viene misurata in KW o in HP, anche se espressa in cavalli è
più accattivante.
Nella Teoria dell’Informazione si utilizzano tipicamente
due basi per il logaritmo che compare nella (1.2.2) la base se si
intende misurare l’informazione il nat, o la base se la si vuole
misurare in bit (binary information unit non binary digit).
Ad esempio nel caso del lancio di una moneta non truccata al
manifestarsi dell’evento
è associata un’informazione pari
a –
o a –
L’utilizzo del bit
come unità di misura è di regola preferito dal momento che la
quasi totalità dei moderni sistemi di informazione utilizza sistemi
di calcolo che lavorano in base e che i dati tra computer vengono scambiati tipicamente sotto forma di parole binarie. In quel
che segue il logaritmo naturale verrà indicato con “ ” ed il logaritmo in base con “ ” omettendo l’indicazione della base.
1.3 - Sorgenti d’Informazione
Una sorgente d’informazione, è un sistema che emette in
modo più o meno casuale sequenze d’elementi appartenenti ad un
assegnato insieme, l’alfabeto della sorgente.
Come vedremo, la natura dei simboli è del tutto inessenziale per lo sviluppo della teoria, potremo quindi sempre pensare
che l’alfabeto sia numerico, cioè che la sorgente emetta una sequenza di variabili aleatorie, che, se l’insieme è finito, saranno di
tipo discreto. In alternativa possiamo pensare di definire sull’insieme dei simboli emessi, che costituisce in sostanza l’insieme dei
risultati di un esperimento casuale, una V.A. biettiva.
Un sistema di trasmissione ha il compito di recapitare dei
dati in modo affidabile da un emissario a un destinatario. Il grado
0 - Appunti di Teoria dell’Informazione e Codici
12
d’affidabilità del sistema può essere caratterizzato dal numero
d’errori da cui è mediamente afflitto.
Si osservi che emissario e destinatario possono anche trovarsi nello stesso luogo ed essere addirittura lo stesso soggetto, come ad
esempio avviene nel caso della memorizzazione di dati, che si auspica possano essere utili in futuro, su un supporto fisico.
L’emissario in sostanza è una sorgente d’informazione che
può generare segnali a tempo continuo o discreto.
Le sorgenti di tipo discreto sono quelle che emettono dei
simboli, o lettere, appartenenti ad un assegnato insieme, al più
numerabile, che chiameremo alfabeto di sorgente.
Se la probabilità che in un dato istante la sorgente emetta
una qualunque lettera non dipende dai simboli emessi negli altri
istanti si dice che la sorgente è priva di memoria.
Una sorgente discreta priva di memoria (Discrete Memoryless Source,
DMS) potrebbe ad esempio essere quella che emette la sequenza
dei risultati ottenuti lanciando ripetutamente un dado, l’alfabeto
utilizzato sarebbe in questo caso costituito da sei simboli che si
potrebbero etichettare con i primi sei numeri naturali.
Viceversa una sorgente discreta dotata di memoria potrebbe essere una sorgente che trasmette testi in lingua italiana. Esisterebbero pochi dubbi su quale sarà il simbolo emesso successivamente alla sequenza “p r e c i p i t e v o l i s s i m e v o l m e n t”,
almeno per quelli che hanno visto Mary Poppins, o sul fatto che
dopo l’emissione della lettera q verrà emessa una u, a meno che i
due simboli precedenti non siano stati s o, fatti salvi, ovviamente,
gli errori, sempre in agguato malgrado e, talvolta, a causa dei correttori ortografici.
Come anticipato nella premessa, non si perde generalità
ipotizzando che la sorgente emetta una sequenza di variabili
aleatorie
che assumono valori appartenenti ad un sottoinsieme di che si può porre in corrispondenza biunivoca con
l’insieme delle lettere che costituiscono l’alfabeto della sorgente
Sorgenti con Alfabeto Continuo
13
che supporremo finito. In sostanza quanto detto equivale ad
associare un’etichetta numerica ad ogni lettera dell’alfabeto della
sorgente.
In quel che segue supporremo che la
sia stazionaria
cioè che la sua statistica a qualunque ordine dipenda esclusivamente dalla posizione relativa degli istanti di osservazione, non
dall’origine dei tempi. L’ipotesi appena fatta implica, tra l’altro,
che l’alfabeto utilizzato non vari al variare dell’indice temporale .
Detta la V.A. emessa dalla sorgente all’istante , ad ogni
simbolo
sione:
dell’alfabeto si può associare una probabilità d’emis(
)
(1.3.1)
L’informazione che si acquisirebbe rilevando l’emissione
della lettera
senza nulla sapere sulle lettere precedentemente
emesse varrebbe quindi:
(
)
(
assumendo ove necessario
)
(1.3.2)
, alla sorgente si può asso-
( )
ciare la sua entropia:
( )
∑
(
)
(
)
∑
(1.3.3)
L’entropia ( ) appena definita, è la media statistica
dell’informazione associata all’emissione dell’ -esimo simbolo.
Essa rappresenta pertanto l’informazione che mediamente si
acquisisce per effetto dell’emissione di un simbolo da parte della
sorgente all’istante . Osserviamo che la stazionarietà della sequenza
comporta che ( ) sia indipendente da , tale indice può
quindi essere omesso.
Si noti che anche l’entropia dipende esclusivamente dalla
distribuzione di probabilità dei simboli emessi e non dalla loro natura.
0 - Appunti di Teoria dell’Informazione e Codici
14
L’entropia di una sorgente, è non negativa ed è limitata
superiormente. In particolare se l’alfabeto ha cardinalità si ha:
∑
(1.3.4)
Per verificare la precedente disuguaglianza consideriamo
due possibili dmp:
∑
(1.3.5)
∑
vale la seguente catena di disuguaglianze:
∑
∑
∑
∑
3
(
)
y
2
1
-0.5
0.5
1
1.5
2
2.5
3
x
-1
-2
Fig. 1.1 -
,
( ).
∑
(1.3.6)
La maggiorazione effettuata è
corretta in quanto nell’insieme di
definizione di
risulta
(vedi Fig. 1.1). La precedente permette di affermare che
se sostituiamo la dmp ad argomento del logaritmo con una diversa da quella utilizzata per il calcolo della media otteniamo comunque una maggiorazione dell’entropia.
In particolare se nella (1.3.6) si
sceglie
si ot-
Sorgenti con Alfabeto Continuo
15
tiene:
∑
∑
(1.3.7)
( )
∑
da cui la (1.3.4).
Esempio I.1.1
Si consideri una sorgente che emette simboli appartenenti a un alfabeto
binario costituito quindi da due soli simboli ad esempio,
, detta la
probabilità che venga emesso il simbolo l’entropia della sorgente vale:
( )
( )
(
)
Si osservi che ( ) (vedi Fig.E 1.1) in accordo con la (1.3.7) raggiunge il suo massimo per
.
H p 
1
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
p
Fig.E 1.1 - Entropia di una sorgente binaria in
funzione della dmp dei dati
In sostanza una
sorgente fornisce mediamente tanta più informazione quanto meno prevedibile è il simbolo che essa emetterà.
Nel caso di una sorgente binaria la massima
entropia è pari ad un bit
e si ottiene quando la
sorgente emette dati equiprobabili.
La (1.3.7) mostra che il massimo contenuto informativo
medio si ottiene da sorgenti in cui ogni simbolo ha la stessa probabilità di essere emesso di qualsiasi altro appartenente all’alfabeto.
1.4 - Informazione Associata a un Messaggio
Si può anche definire l’informazione derivante dall’emissione di una -upla di simboli emessi consecutivamente dalla sor-
0 - Appunti di Teoria dell’Informazione e Codici
16
gente. In questo caso parleremo di -messaggio emesso dalla sorgente, che possiamo pensare come la realizzazione di una V.A. dimensionale
. Se l’alfabeto della sorgente ha
cardinalità allora esisteranno al più
possibili messaggi. Indicando con
A , il generico -messaggio e con
( ) la probabilità che sia emesso, l’informazione ad esso
associata è data da:
( )
(1.4.1)
( )
mediando sui possibili messaggi otteniamo l’entropia associata
all’ -messaggio:
( )
∑
( )
( )
(1.4.2)
Se i simboli emessi dalla sorgente sono i.i.d. allora risulta:
( )
∏
( )
(1.4.3)
sostituendo la precedente nella (1.4.2):
( )
∑ ( )
( )
∑ ( )∑
∑∑ ( )
∑ ( )
( )
( )
∏
( )
∑ ∑ ( )
( )
(1.4.4)
( )
pertanto, se la sorgente è stazionaria e priva di memoria, l’entropia
associata ad un messaggio di lunghezza è volte l’entropia
associata al singolo simbolo.
Assumiamo adesso:
Sorgenti con Alfabeto Continuo
( )
17
∏ ( )
(1.4.5)
( ) soddisfa ovviamente le condizioni necessarie per essere una
possibile dmp di una V.A.multidimensionale. Seguendo la falsariga della (1.3.6) si può scrivere:
∑ ( )
( )
∑ ( )
∑ ( )(
( )
∑ ( )
( )
( )
(1.4.6)
( )
( )
)
d’altro canto risulta:
∑ ( )
( )
∑ ( )
∏
∑ ( )∑
( )
( )
(1.4.7)
∑ ∑ ( )
∑ ( )
( )
∑∑ ( )
( )
( )
dove l’ultima uguaglianza vale solo nel caso in cui i simboli emessi
dalla sorgente siano identicamente distribuiti, cioè nel caso in cui
la sorgente sia stazionaria, pur non essendo necessariamente priva
di memoria.
Dalle (1.4.6) e (1.4.7) deduciamo che in generale per sorgenti stazionarie risulta
( )
( )
(1.4.8)
cioè a parità di cardinalità dell’alfabeto e di lunghezza del messaggio la massima informazione media è fornita da sorgenti prive
di memoria che emettono simboli equiprobabili.
0 - Appunti di Teoria dell’Informazione e Codici
18
SORGENTI CON ALFABETO CONTINUO
1.5 - Entropia di una Sorgente con Alfabeto Continuo
Consideriamo adesso una sorgente che emette con cadenza
regolare simboli appartenenti ad un insieme non numerabile.
Potremo cioè pensare che la sorgente emetta una sequenza
di variabili aleatorie di tipo continuo. La sorgente sarà pertanto equivalente da un processo aleatorio a tempo discreto continuo in ampiezza, che è completamente caratterizzato qualora sia
nota la sua statistica a qualunque ordine.
Per definire l’entropia ( ) di una tale sorgente, cioè l’informazione che mediamente acquisiremmo in seguito all’emissione di un singolo simbolo, senza nulla sapere dei simboli emessi
precedentemente da una tale sorgente, dovremo fare riferimento
alla densità di probabilità
( ) della variabile aleatoria che essa
genera in un dato istante. Se supponiamo che la sorgente sia
stazionaria tale densità di probabilità sarà indipendente dall’istante
di osservazione.
Basandoci su quanto detto per le sorgenti con alfabeto
discreto, sorge spontaneo definire tale entropia come segue:
( )
∫
( )
( )
(1.5.1)
assumendo che
. Tale definizione non gode di tutte le
proprietà di cui godeva l’entropia di una sorgente con alfabeto
finito, essa ad esempio può assumere anche valori negativi e può
non essere limitata.
Anche per le sorgenti ad alfabeto continuo possiamo definire l’entropia associata a più simboli emessi. Nel caso di due soli
simboli si ha:
Sorgenti con Alfabeto Continuo
(
)
∫ ∫
(
∫ ∫
(
(
∫ ∫
)
(
( )
se e
ottiene:
)
(
)
( )
)
)
19
(
( )
(1.5.2)
)
(
)
sono statisticamente indipendenti dalla precedente si
(
)
( )
( )
(1.5.3)
Si può provare che in generale risulta:
(
)
( )
( )
(1.5.4)
1.6 - Sorgenti Gaussiane
Osserviamo che:
( )
(
( ))
∫
( )(
( )
∫ (
( ))
∫
( )
)
(1.6.1)
( )
∫ (
( ))
ne segue che se ∫ ( ( ))
la ( ) è limitata inferiormente. Ciò avviene certamente se la ( ) è limitata. La sommabilità di ( ) garantisce in questo caso anche quella di ( ( )) . La
( ) è certamente limitata inferiormente anche quando la ( )
non si mantiene limitata, purchè in corrispondenza ai valori di
in cui diverge lo faccia più lentamente di
con
per
. Consideriamo adesso una generica ddp ( ) risulta:
0 - Appunti di Teoria dell’Informazione e Codici
∫
∫
( )
( )
∫
( )
∫
( )
( )(
20
( )
( )
( )
( )
( )
(1.6.2)
)
La precedente può essere pensata come una generalizzazione della
(1.4.6).
Supponiamo che la sorgente emetta una variabile aleatoria
(
con varianza finita
, ponendo nella (1.6.2) ( )
cioè scegliendo una ddp Gaussiana con varianza
∫
( )
¯)
,
√
otteniamo:
( )
(
( )
∫
¯)
(√
)
(
√
∫
(
)
(
)
( )
( )
∫
∫
( )
(
(
d’altro canto si verifica facilmente che
(
¯)
)
(1.6.3)
¯)
)
(
) è anche
l’entropia di una variabile aleatoria Gaussiana, con varianza .
Quanto appena esposto ci porta a concludere che a parità
di varianza le sorgenti continue Gaussiane generano la massima
informazione media.
È opportuno osservare che l’entropia di una sorgente stazionaria continua è indipendente dal valor medio della variabile
aleatoria emessa. Un valor medio non nullo incide solo sul valor
quadratico medio della sequenza emessa aumentandolo. Il che in
altri termine vale a dire che un valor medio diverso da zero au-
Sorgenti con Alfabeto Continuo
21
menta la potenza media del processo senza offrire alcun beneficio
in termini d’informazione media a esso associata.
Capitolo - 2
LA CODIFICA DI SORGENTE
2.1 - Premessa
Gli attuali sistemi di trasmissione sono spesso basati su un
mezzo trasmissivo di capacità limitata che viene condiviso tra più
utenti, diventa quindi essenziale cercare di ottimizzarne l’utilizzo
al fine di consentire l’accesso alla risorsa ad un maggior numero di
soggetti. È quindi auspicabile mettere in atto dei metodi che
consentano di “compattare” le informazioni da trasmettere in
modo da utilizzare il sistema per il minor tempo possibile, ovvero
da occupare una minore quantità di banda, senza pregiudicare il
contenuto informativo del messaggio. Lo stesso discorso ovviamente vale nel caso dell’immagazzinamento delle informazioni,
“zippare” un file serve a sfruttare meglio la memoria dell’hard
disk.
La quasi totalità dei sistemi di trasmissione oggigiorno è
numerica, e fa uso di sistemi d’elaborazione digitale che lavorano
in base due, pertanto ci occuperemo di analizzare delle tecniche di
codifica di sorgente che associno alle singole lettere o a interi messaggi emessi da quest’ultima delle parole binarie cioè delle stringhe
di lunghezza non necessariamente costante costituite utilizzando
un alfabeto di due sole lettere.
Una sorgente che utilizza un alfabeto di cardinalità può
emettere al più
M-messaggi distinti, se a ciascuno di essi si
associa una parola binaria si dice che si è definito un codice.
2.2 - La Regola del Prefisso
Il codice citato nel precedente paragrafo può essere costruito utilizzando parole binarie tutte con lo stesso numero di bit, nel
qual caso la lunghezza minima di tali parole non potrà essere inferiore a:
24
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
(
)
(2.2.1)
dove
indica il primo intero non minore.
Si possono anche utilizzare parole di codice di lunghezza
variabile, in questo caso, però, occorrerà prestare attenzione al
fatto che se s’invia un file costituito da più -messaggi consecutivi i singoli messaggi dovranno essere decodificabili in modo univoco, dovremo in altri termini essere certi del fatto che a coppie
distinte di sequenze finite di messaggi il codice non associ la stessa
stringa binaria (da qui in poi con stringa indicheremo una sequenza di lunghezza finita di parole di codice).
Tale requisito è certamente soddisfatto se nessuna delle parole del codice è identica alla parte iniziale di un’altra parola di
codice. In questo caso diciamo che il codice rispetta la regola del
prefisso.
È opportuno sottolineare che la regola del prefisso è solo
sufficiente, si potrebbero cioè individuare dei codici che pur non
rispettandola, sono decodificabili in modo univoco. Tali codici
tuttavia ci obbligherebbero per effettuare la decodifica ad attendere la ricezione se non dell’intera sequenza di -messaggi certamente di più di un messaggio. Viceversa, se il codice soddisfa la
regola del prefisso la decodifica può essere effettuata istantaneamente cioè ogniqualvolta una parola binaria coincide con una
parola di codice l’ -messaggio corrispondente si può dare per
identificato, non essendo possibile alcuna ambiguità.
2.3 - Lunghezza Media di un Codice.
Note le caratteristiche della sorgente e fissata la lunghezza
del messaggio da codificare e detto ( ) il numero di bit che costituiscono la parola binaria ( ) che il codice associa all’ -messaggio , ad ogni codice si può associare una lunghezza media della parola di codice:
∑ ( )( )
(2.3.1)
25
La Codifica di Sorgente
ne discende che il numero medio di bit utilizzati per ciascun simbolo emesso dalla sorgente è pari a .
La conoscenza di tale dato è importante in quanto ci permette ad esempio di stimare con buona approssimazione lo spazio di memoria necessario per archiviare un file “tipico” costituito
da un numero sufficientemente grande di simboli emessi dalla
sorgente .
Dal nostro punto di vista un codice di sorgente è tanto migliore quanto minore è la sua lunghezza media a patto che ovviamente la sua decodifica non risulti troppo onerosa.
Esiste un importante teorema che, nel caso di sorgenti
DMS stazionarie da un lato pone un limite inferiore alla lunghezza
media ottenibile al variare del codice scelto e dall’altro garantisce
che, se si è disposti ad accettare una maggiore complessità nei
processi di codifica/decodifica è possibile approssimare tale limite
bene quanto si vuole.
Per dimostrare tale teorema ci serviremo di una condizione
necessaria alla decodificabilità di un codice di sorgente, a differenza di quella del prefisso che, come già detto, è invece una condizione sufficiente.
2.4 - La Disuguaglianza di Kraft.
Consideriamo una sorgente DMS con alfabeto di cardinalità ed un generico codice per gli -messaggi emessi da essa.
Comunque scelto
vale l’identità:
(∑
( ))
∑ ∑
∑
((
)
(
)
(
))
(2.4.1)
la sommatoria ad ultimo membro della precedente può anche essere calcolata “accorpando” i termini con uguale esponente. A tale
scopo indichiamo con
la massima lunghezza raggiunta dalle
parole di codice. Il massimo esponente che può comparire nel-
26
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
l’ultimo membro della (2.4.1) vale quindi
possiamo scrivere:
(∑
( )
)
∑
. Ciò premesso,
(2.4.2)
essendo il numero di stringhe di bit che si possono ottenere
giustapponendo parole di codice.
Se pretendiamo che il codice sia univocamente decodificabile, dovrà necessariamente essere
, se così non fosse,
esisterebbero certamente almeno due sequenze di
-messaggi
codificate con la stessa stringa binaria di bit.
La considerazione fatta suggerisce per la (2.4.2) la seguente
maggiorazione:
(∑
( ))
∑
∑
(2.4.3)
Osserviamo che la precedente deve valere per ogni e, visto che il primo membro, se crescesse con lo farebbe esponenzialmente, non può essere soddisfatta a meno che non risulti
∑
( )
(2.4.4)
La precedente va sotto il nome di Disuguaglianza di Kraft ed
in quanto condizione necessaria all’univoca decodificabilità costituisce un vincolo sulla distribuzione delle lunghezze delle parole
di un codice.
Esempio 2.1
Premesso che:un grafo è definito da una coppia d’insiemi (
);
- l’insieme è detto insieme dei vertici ;
- l’insieme
è detto insieme dei lati e definisce una
relazione (detta di adiacenza) su
- a ciascun vertice di un grafo si può associare un grado definito
come il numero di lati in cui esso appare;
- un percorso di lunghezza è definito come una sequenza di
vertici
,
tali che (
)
,
;
La Codifica di Sorgente
27
-
un grafo è detto connesso se comunque scelti due vertici distinti
esiste un percorso tra essi;
- un ciclo è un percorso in cui il primo e l’ultimo vertice coincidono;
- un albero è un grafo connesso senza cicli;
- in un albero i nodi di grado uno sono detti foglie;
- un albero ha radice se uno dei vertici viene etichettato come tale;
- un albero binario è un albero con radice in cui nessun vertice ha
grado maggiore di tre e la radice ha grado non maggiore di due;
- per ordine di un vertice si intende la lunghezza del percorso che
lo connette alla radice, i vertici di ordine
adiacenti ad un
nodo di ordine sono detti figli ed il vertice che li connette è
detto padre.
Un metodo per costruire un codice che soddisfi la regola del prefisso
è definire un albero binario avente
foglie ed associare ai vertici
stringhe binarie di lunghezza pari al loro ordine secondo le seguenti
regole:
- alla radice si associa la stringa vuota
- ai vertici figli si associano stringhe distinte ottenute a partire da
quelle associate ai vertici padri, giustapponendovi rispettivamente i simboli ‘0’ ed ‘1’.
Al termine della costruzione, le foglie dell’albero hanno associate parole di codice che soddisfano la regola del prefisso. È utile notare che la
diseguaglianza di Kraft è soddisfatta per costruzione. In particolare lo è
come uguaglianza nel caso in cui il numero di vertici dell’albero sia
.
2.5 - Limite Inferiore per la Lunghezza di un Codice.
Forti del precedente risultato consideriamo la seguente
funzione del generico -messaggio
( )
( )
∑˜
( ˜)
(2.5.1)
( ) soddisfa tutte le condizioni per poter essere la dmp di una
-upla di variabili aleatorie discrete che assumono valori appartenenti all’alfabeto , pertanto, tenendo conto della (1.3.6), si può
scrivere:
28
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
( )
∑ ( )
∑ ( )
( )
∑ ( )
∑ ( )
( )
( )
( ˜)
(∑
)
(2.5.2)
˜
∑ ( )
( )
(∑
( ˜) )
˜
(∑
( ˜) )
˜
La disuguaglianza di Kraft ci garantisce che il logaritmo all’ultimo membro della precedente non è positivo, se ne conclude
che vale la disuguaglianza
( )
(2.5.3)
che, se la sorgente è stazionaria, comporta:
( )
(2.5.4)
La precedente ci fa capire che, non possono esistere codici
univocamente decodificabili che utilizzano un numero medio di
bit per simbolo minore dell’entropia della sorgente da codificare.
Esiste quindi un limite inferiore alla possibilità di “comprimere”,
senza perdite, le informazioni emesse dalla sorgente, a prescindere
dalla complessità del codificatore, che come s’intuisce, tipicamente cresce al crescere di . La (2.5.4) ha anche il merito di chiarire
meglio l’importanza dell’entropia nell’ambito della Teoria dell’Informazione.
Esempio 2.2
Un algoritmo ricorsivo per la costruzione di un codice di sorgente
ottimo nel senso della lunghezza media delle parole è dovuto ad Huffman
(1952).
L’algoritmo di Huffman consiste nella costruzione ricorsiva di un
albero binario. Ricordando che l’obiettivo è ottenere la minore lunghezza
media possibile, si intuisce che a simboli meno probabili devono corrispondere parole di codice aventi lunghezza maggiore, ovvero foglie
aventi ordine maggiore.
Per costruire l’albero si deve disporre delle
probabilità di manifestazione degli -messaggi
. L’albero costruito dall’algoritmo di
Huffman ha
vertici: i primi
sono associati alle probabilità
29
La Codifica di Sorgente
, mentre i restanti
vengono determinati ricorsivamente. A
ciascun vertice viene associata una variabile booleana che ne indica
l’utilizzo da parte dell’algoritmo.
Al passo -esimo,
si procede come segue:
si scelgono tra i vertici non ancora marcati come utilizzati i due
vertici e aventi le probabilità associate minori, si marcano e
come utilizzati e si introduce un nuovo vertice
avente probabilità
associata pari a
si aggiungono all’insieme dei lati i due elementi
(
)e(
).
Sostanzialmente l’algoritmo può essere riassunto come segue:
“inizialmente tutti i vertici sono orfani; a ciascun passo si scelgono i due
orfani aventi probabilità associata minima e li si dota di un vertice padre
(a sua volta orfano) avente probabilità pari alla somma delle probabilità
dei figli”.
Al termine dell’algoritmo resta un unico vertice non ancora utilizzato,
e lo si denota radice dell’albero. Una volta costruito l’albero, il codice di
Huffman è definito dalla procedura dell’Esempio 2.1.
BB
0.49
BA
0.21
AB
0.21
1.00
Parola di codice
AA
111
AB
110
BA
10
BB
0
0.51
0.30
AA
M-messaggio
0.09
Fig.E 2.1 - Albero e codice di Huffman associato al codice con M = 2
Come esempio, consideriamo la costruzione di un codice di Huffman
per una sorgente DMS stazionaria avente alfabeto
e
probabilità di emissione
e
.
Essendo la sorgente binaria, con
il codice contiene due sole
stringhe ‘0’ ed ‘1’; la lunghezza media del codice risulta:
mentre l’entropia è data da:
( )
Con
, gli M-messaggi possibili sono quattro, caratterizzati dalle
probabilità di emissione
,
,
e
; l’albero costruito secondo l’algoritmo di Huffman è riportato in
Fig.E 2.1.
La lunghezza media del codice risulta:
(
)
30
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
( ),
ed il numero medio di bit utilizzati per simbolo
in accordo con la (2.5.4).
2.6 - La Proprietà di Equipartizione.
Occupiamoci adesso di un’importante proprietà delle
sorgenti d’informazione.
Consideriamo una DMS stazionaria con entropia ( ) ,
fissiamo un
e, nell’insieme di tutti gli -messaggi, prendiamo in considerazione il sottoinsieme S così definito
{
( ( )
)
( ( )
( )
)}
(2.6.1)
dalla precedente discende innanzi tutto che:
( ( )
∑
)
∑ ( )
(2.6.2)
quest’ultima implica che la cardinalità di S non può essere maggiore di ( ( ) ) quindi tutti i messaggi appartenenti ad S possono essere codificati utilizzando parole di codice di lunghezza
fissa con un numero di bit non superiore a:
( ( )
)
(2.6.3)
Tenendo conto del fatto che la sorgente è per ipotesi priva di memoria si può anche scrivere:
{
( ( )
)
∑
( )
( ( )
)}
(2.6.4)
{
( )
∑
( ( ))
}
Dall’ultimo membro della precedente si può facilmente
dedurre la definizione, del complementare
di S rispetto
all’insieme degli -messaggi, precisamente:
̅
{ |∑
( ( ))
( )|
}
(2.6.5)
31
La Codifica di Sorgente
Ci proponiamo di maggiorare la probabilità dell’evento: “la
sorgente ha emesso un messaggio appartenete a ”. A tal fine ricordiamo
che la disuguaglianza di Chebyshev garantisce che la probabilità
che una V.A. con varianza disti dal suo valore medio per più di
è non maggiore di .
( ( )) può essere interpretata
Notiamo che
∑
come una V.A. ottenuta sommando le variabili aleatorie statisticamente indipendenti
( ( )) tutte identicamente distribuite. Il valor medio di ciascuna di esse vale
( ) quindi il valor
medio di vale:
( ( )))
(∑
Anche la varianza di
∑(
è
( )
(2.6.6)
volte la varianza di
( (
))
( ))
(
( ( )) e vale:
)
(2.6.7)
In conclusione, ponendo
, la probabilità che un
messaggio appartenga ad sarà non maggiore di
∑
(
)
(
( (
))
( ))
(
( ))
-
(2.6.8)
La disuguaglianza appena scritta ci dice che la probabilità
che un -messaggio non appartenga a S tende a zero al tendere
di all’infinito.
In altri termini abbiamo appena mostrato che “asintoticamente” i messaggi emessi da una sorgente possono essere suddivisi
in due classi la prima contiene messaggi sostanzialmente equipro( )
babili con probabilità di manifestarsi
, la seconda
contenente messaggi che si presentano con probabilità prossima a
zero.
32
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
La proprietà appena descritta, che vale anche per sorgenti
dotate di memoria, va sotto il nome di proprietà di equipartizione
(equipartition property). Essa in sostanza ci dice che, pur di considerare messaggi sufficientemente lunghi, il numero di messaggi distinti che una sorgente emette è approssimativamente pari a
( )
che rappresenta solo una frazione degli
teoricamente generabili.
Il fatto che esista un sottoinsieme di messaggi aventi un’esigua probabilità di manifestarsi può essere utilmente sfruttato nel
caso in cui si vogliano mettere a punto dei sistemi di codifica che
accettino una qualche perdita nel contenuto informativo. Si potrebbe ad esempio pensare di progettare un codificatore di sorgente che ignori i messaggi poco probabili. Ciò porterebbe a una
perdita d’informazione che potrebbe però essere trascurabile rispetto a quella che si perderebbe comunque a causa ad esempio
degli errori introdotti dal sistema di trasmissione.
2.7 - Teorema sulla Codifica di una Sorgente DMS.
Abbiamo visto che la (2.5.4) impone un limite inferiore alla
lunghezza media del codice, ma, la stessa, nulla ci dice su quanto a
detto limite ci si possa avvicinare.
Per rispondere a questo quesito utilizzeremo la proprietà di
equipartizione introdotta nel paragrafo precedente al fine di costruire un codice univocamente decodificabile per gli M-messaggi
emessi dalla sorgente.
Fissiamo ad arbitrio un
, possiamo utilizzare il primo
bit (binary digit) della parola del costruendo codice per classificarla come appartenente o meno all’insieme S definito nel precedente paragrafo. Osserviamo quindi che, per identificare univocamente tutti gli elementi di S , sulla base della (2.6.3), saranno sufficienti ulteriori S
( ( )
) bit. Restano da codificare
gli elementi appartenenti ad . A tal fine ricordiamo che tali elementi hanno una probabilità molto piccola di manifestarsi, quindi
33
La Codifica di Sorgente
incidono poco sulla lunghezza media del codice che è la quantità
che ci interessa limitare. Ciò premesso possiamo utilizzare per codificarli un numero di bit
, laddove
bit
sarebbero sufficienti a codificare tutti gli
M-messaggi.
In sostanza la generica parola di codice avrà lunghezza S o
, e non vi è nessuna ambiguità per il decodificatore che osservando il primo bit di ogni parola saprebbe quale è la sua lunghezza. Ciò ovviamente è vero solo se il codificatore e il decodificatore
sono esenti da errori.
Calcoliamo adesso lunghezza media per simbolo emesso
dalla sorgente del codice che abbiamo appena costruito:
(
(
)
(
))
(2.7.1)
che, tenuto conto della (2.6.8), si può maggiorare come segue:
(
(
)
(
(
( ( )
( ( )
(
))
(
))
)
)
)
(
̅̅̅
(
(
)
)
(2.7.2)
)
( )
Si osservi che può essere scelto arbitrariamente, in particolare possiamo scegliere
( )
ottenendo:
(
)
(2.7.3)
Nella (2.7.3) tutti gli addendi a secondo membro eccetto il primo
tendono a zero al crescere di , possiamo quindi scriverla nella
forma:
34
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
( )
( )
(2.7.4)
La precedente ci permette di affermare che per una DMS,
accettando una maggiore complessità di codifica/decodifica, si
può costruire un codice con un numero medio di bit per simbolo
prossimo quanto si vuole alla sua entropia.
In conclusione mettendo insieme la (2.5.3) e la (2.7.4)
abbiamo dimostrato il seguente
Teorema 2.1
Data una DMS stazionaria con entropia ( ) e comunque scelto
, esiste un intero
in corrispondenza al quale si può costruire un
codice univocamente decodificabile che esibisce una lunghezza media per
simbolo di sorgente che soddisfa la seguente disuguaglianza:
( )
Inoltre, qualunque sia
( )
(2.7.5)
, non è possibile costruire codici per i quali
risulti:
( )
(2.7.6)
***********
Vale la pena di osservare che il codice che abbiamo costruito, se da un lato c’è stato utile per ottenere la (2.7.5), dal
punto di vista pratico sarebbe difficilmente applicabile perché
presuppone la conoscenza della dmp della sorgente, dato questo
di cui in pratica difficilmente si dispone. Esistono algoritmi di
codifica che tendono al limite inferiore imposto dalla (2.7.5) pur
non presupponendo la conoscenza della dmp in parola, e che
quindi si rivelano molto più utili in pratica.
Esempio 2.3
L’algoritmo di Huffman descritto nell’Esempio 2.2 richiede la conoscenza a priori delle probabilità dei simboli di sorgente. Descriviamo
brevemente un possibile metodo per ottenere una versione adattativa
35
La Codifica di Sorgente
dell’algoritmo che presuppone solo la conoscenza della cardinalità
dell’alfabeto
.
L’idea è riassumibile in due punti:
Xk
Xk
S
z 1
X k 1
Encoder
Decoder
Relative
Frequency
Computer
Relative
Frequency
Computer
D
X k 1
z 1
Fig.E 2.3 - Schema a blocchi di un generico codec (codificatore/decodificatore)
adattativo.
-
utilizzare, invece delle probabilità di manifestazione, le fre-
M=1
M=2
2
2
1.5
1.5
1
1
0.5
0.5
0
0
500
1000
1500
2000
0
0
200
M=3
2
1.5
1.5
1
1
0.5
0.5
0
100
200
300
600
800
1000
300
400
500
M=4
2
0
400
400
500
600
0
0
100
200
Fig.E 2.2 - Andamento temporale (blu), al variare di , della lunghezza
media del codice prodotto dal codec adattativo di Fig.E 2.3 per la sorgente
DMS dell’Esempio 2.3. In rosso l’entropia stimata in base alle frequenze
relative.
-
quenze relative di manifestazione dei simboli di sorgente, inizializzate con una distribuzione a priori nota a codificatore e
decodificatore
non aggiornare la tabella delle frequenze relative di apparizione
dei simboli fintanto che il decodificatore non li ha potuti osservare.
36
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
Lo schema di riferimento dell’algoritmo adattativo (che è di carattere
generale) è riportato in Fig.E 2.3Si noti che così descritto, questo metodo
richiede nella peggiore delle ipotesi la ricostruzione (previa verifica di
consistenza) dell’albero di Huffman per ogni simbolo trasmesso, il che
può essere impraticabile. Inoltre, l’algoritmo adattativo così formulato è
basato sull’assunzione che le frequenze relative convergano in tempi
brevi alle probabilità di manifestazione dei simboli; per “brevi” si intende rispetto al tempo durante il quale si può assumere che la sorgente
sia effettivamente stazionaria.
In Fig.E 2.2 è mostrato l’andamento temporale della lunghezza
(media) del codice per un codificatore adattativo che elabora simboli
quaternari caratterizzati dalle probabilità di manifestazione
,
,
e
, al variare della lunghezza degli
M-messaggi; l’entropia della sorgente è pari a ( )
.
2.8 - Codifica di Sorgenti con Memoria.
Una sorgente è detta con memoria quando la probabilità di
emissione di un simbolo dipende dalla sequenza di simboli emessa
in precedenza:
(
)
(
)
(2.8.1)
Come puntualizzato al termine del capitolo precedente, per
una sorgente discreta con memoria l’entropia di un M-messaggio è
minore dell’entropia della sorgente riguardata come senza memoria. Ciò implica che codificare una sorgente con memoria con
metodi che possono essere ottimi nel caso di sorgenti DMS può
risultare ben lontano dall’ottimo.
Si potrebbe osservare che la proprietà di equipartizione,
valida anche per sorgenti con memoria, permette di affermare che
la codifica senza memoria di -messaggi è, asintoticamente per
, ottima; d’altra parte l’impiego di valori di maggiori di
qualche unità è quasi sempre proibitivo.
L’approccio utilizzato in pratica per la codifica di sorgenti
con memoria consiste nell’operare una forma di pre-codifica allo
scopo di rendere il più possibile incorrelata la sorgente. Riportiamo di seguito alcuni esempi didattici che s’ispirano a metodi impiegati nella pratica.
La Codifica di Sorgente
37
Esempio 2.4
Nel caso di sorgenti discrete ottenute tramite campionamento di
segnali a valori discreti (si pensi ad esempio ad una scansione FAX), si
può impiegare la codifica run-length (RLE).
L’idea alla base della RLE è sostituire sequenze costituite da simboli
identici con una indicazione di quale simbolo viene ripetuto quante volte.
Ad esempio, la codifica run-length della sequenza:
A, A, A, A, A, B, B, B, B, B, B, C, C, C, C, A, A, B, B, B, B, B, C, C, C
è data da:
(A,5), (B,6), (C,4), (A,2), (B,5), (C,3).
Fig.E 2.4 - Immagine (ingrandita in modo da evidenziare i singoli pixel) per l’esempio di
codifica run-length (32x128x1).
Per valutare l’efficienza della codifica run-length si deve tenere conto
dell’overhead richiesto per codificare la lunghezza dei run. Per ottenere
qualche numero tangibile, consideriamo la piccola immagine in bianco e
nero (32 righe, 128 colonne) in Fig.E 2.4
Questa immagine, riguardata come una sequenza di simboli binari
emessi da una sorgente DMS, ha una entropia di 0.5871 bit/simbolo (578
pixel neri, 3518 pixel bianchi), ovvero un contenuto informativo stimato
di 2405 bit.
Se codificata RLE per colonne con lunghezza massima dei run pari a
511, è rappresentata da 313 run aventi una entropia stimata di 4.582
bit/run ovvero un contenuto informativo complessivo non inferiore a
1435 bit (con un guadagno potenziale del 65% rispetto alla dimensione
non codificata di 4096 bit).
Si deve però notare che la lunghezza massima dei run è un parametro
problematico da impostare, in quanto se, da una parte, incrementandolo il
numero complessivo di run diminuisce, dall’altra il numero di bit
necessario a codificare la lunghezza di un singolo run aumenta, sicché
per immagini di piccola dimensione come questa l’effettivo guadagno
può risultare marginale.
Da segnalare che per la codifica di immagini in bianco e nero (ad.
esempio FAX), esistono generalizzazioni bidimensionali della codifica
run length, che sfruttano le correlazioni esistenti tra le righe.
Esempio 2.5
Nel caso di sorgenti discrete generiche esistono molti metodi, nessuno dei quali ottimo. Un approccio utilizzato nella codifica di sorgente
38
Capitolo - 2 - Appunti di Teoria dell’Informazione e Codici
di dati correlati è quello a dizionario. Il più diffuso algoritmo di codifica
di sorgente a dizionario è il Lempel-Ziv (del 1977, LZ77), implementato
in molte utility “zip” (pkzip, winzip, infozip, gzip, compress e altre).
L’idea della codifica LZ77 è sostituire, nella sequenza originaria, a
sequenze di simboli già incontrate una indicazione di “a partire da dove”
e “per quanti simboli” è possibile copiarle. Per chiarire, consideriamo la
codifica LZ77 della sequenza dell’Esempio 2.4
(A,1,4), (B,1,5), (C,1,3), (A,11,6), (C,1,2).
Il primo blocco, (A,1,4), viene decodificato come: “dopo un simbolo
A, torna indietro di un passo e copia per quattro volte”, ovvero una
sequenza di cinque simboli A. Il secondo blocco ed il terzo blocco sono
analoghi al primo. Per comprendere come viene interpretato il quarto
blocco, notiamo che dopo i primi tre blocchi il decodificatore avrà
prodotto la sequenza:
A, A, A, A, A, B, B, B, B, B, B, C, C, C, C.
A questo punto, aggiungere un simbolo A, tornare indietro di undici
passi e copiare per sei volte corrisponde ad aggiungere la sequenza A, B,
B, B, B, B, C in coda. L’ultimo blocco è di tipo run-length come i primi
tre.
La codifica LZ77 dell’immagine in bianco e nero di Fig.E 2.4 è una
sequenza di solo 60 triplette aventi una entropia stimata di 11.52 bit
ciascuna, per un contenuto informativo complessivo non minore di 692
bit (con un guadagno potenziale dell’83% sulla dimensione non
codificata di 4096 bit).
Capitolo - 3
CANALI PRIVI DI MEMORIA
3.1 - L’Informazione Mutua.
Consideriamo un generico esperimento casuale. Abbiamo
detto che al manifestarsi di un dato evento
è associata una
quantità d’informazione
; la stessa quantità può essere in( )
terpretata come la nostra incertezza sull’evento . Ad esempio se
( )
allora sul fatto che si manifesti non abbiamo nessuna incertezza ed in questo caso si avrebbe
nel caso
( )
in cui ( ) fosse molto piccola avremmo una grande incertezza
sul fatto che si possa manifestare, ed acquisiremmo quindi una
grande informazione qualora si manifestasse.
Consideriamo adesso una coppia d’eventi , , il manifestarsi di può variare la nostra incertezza su se ad esempio
il manifestarsi di
rimuoverebbe tutta l’incertezza
(
)
che a priori avevamo su
. Se, viceversa, i due eventi
fossero statisticamente indipendenti il manifestarsi di lascerebbe immutata l’incertezza che a priori avevamo su .
In altri termini se sapessimo che è verificato il manifestarsi di
ci fornirebbe un’informazione in genere diversa da
quella che avremmo avuto a priori (cioè senza saper nulla circa ).
In particolare l’informazione fornita a posteriori (cioè sapendo che
è verificato) dal manifestarsi di
varrebbe
(
)
.
Si definisce informazione mutua (
) tra due eventi, l’incertezza che rimossa sull’evento per effetto del manifestarsi di
In formule:
(
)
(
(
)
(
)
)
(
)
(3.1.1)
40
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
Alla luce della definizione appena data la scelta del nome
informazione mutua può apparire infelice, esso probabilmente
trae origine dal fatto che ricordando la regola di Bayes possiamo
scrivere:
(
(
)
( ) ( )
)
(
)
(
Osserviamo che, nel caso in cui
(
)
cioè
ci fornisce su
)
(
, (
)
(3.1.2)
) varrebbe
tutta l’informazione che ci po-
trebbe fornire stesso. cioè rimuoverebbe ogni incertezza su
. Se (
)
( ) ( ) allora (
)
che sta a
significare che il manifestarsi di non modificherebbe la nostra
l’incertezza su .
È anche opportuno sottolineare che (
) può assumere
anche valori negativi, ciò da conto del fatto che il manifestarsi di
potrebbe rendere molto più incerto, se non impossibile il manifestarsi di , ad esempio qualora
si avrebbe
(
)
(
)
(
)
(3.1.3)
3.2 - Concetto di Canale.
Come già detto, un sistema di trasmissione serve a inviare
un messaggio da un emissario a un destinatario in luoghi e/o
tempi diversi. Per recapitare il messaggio, il sistema si giova di un
mezzo trasmissivo che viene abitualmente chiamato canale.
Il concetto di canale è piuttosto ampio, nel senso che esso
può includere, a seconda delle necessità, o solo il mezzo fisico, ad
esempio il solo doppino telefonico o un nastro magnetico, o anche tutto ciò che è compreso tra un microfono e un altoparlante.
Nel caso di un sistema di trasmissione numerico modulato
linearmente basato su di una costellazione bidimensionale, si può
pensare che il canale includa, modulatore, amplificatore RF, mezzo fisico, amplificatore d’ingresso, eventuale demodulatore a frequenza intermedia, demodulatore, filtri adattati e campionatori. In
Canali Discreti Privi di Memoria
41
questo caso il canale accetta in ingresso un numero complesso
associato ad un punto della costellazione e fornisce in uscita un
numero complesso che in genere differisce da quello inviato per
effetto del rumore e dei disturbi introdotti dal mezzo e dagli apparati. Se decidessimo di includere nel canale anche il decisore, l’uscita del canale sarebbe sì un punto della costellazione, ma, come
ben sappiamo, non sempre lo stesso che si era inviato.
Qui ci limitiamo a considerare canali di tipo discreto che
sono caratterizzati da un alfabeto d’ingresso e da uno d’uscita ,
legati da un mapping aleatorio.
In pratica non si lede la generalità se si pensano ingresso e
uscita come una coppia di variabili aleatorie definite sullo stesso
esperimento casuale.
Se l’alfabeto d’ingresso e quello d’uscita hanno rispettivamente cardinalità ed e se
e
sono i
rispettivi alfabeti, il canale è univocamente individuato quando
sono note le seguenti dmp condizionate:
(
|
)
(
|
)
(3.2.1)
Risulta spontaneo pensare alle
come agli elementi di una
matrice con un numero di righe pari alla cardinalità dell’alfabeto di ingresso e un numero di colonne uguale alla cardinalità di
quello d’uscita. Chiameremo matrice di transizione di canale.
Nel caso in cui l’alfabeto d’ingresso è finito e quello d’uscita
ha la potenza del continuo il canale è caratterizzato se si conoscono le seguenti densità di probabilità condizionate:
( |
)
( |
)
(3.2.2)
Si dice che il canale è privo di memoria se,
la probabilità di rivelare un data sequenza di
simboli d’uscita in
corrispondenza ad un dato -messaggio di ingresso è data da
42
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
(
[
]|
[
])
∏
(
)
(3.2.3)
se l’alfabeto d’uscita è finito.
Ovvero la densità di probabilità della sequenza d’uscita
condizionata ad una sequenza d’ingresso è data da:
(
)(
∏ ( | )
)
(3.2.4)
nel caso in cui l’alfabeto d’uscita ha la potenza del continuo.
Se in ingresso al canale è connessa una sorgente che emette
simboli compatibili con il canale, e se sono note le probabilità d’emissione ( )
di ciascun simbolo dell’alfabeto di sorgente
dalle (3.2.1) e (3.2.2) possiamo dedurre la distribuzione di massa
di probabilità dell’alfabeto d’uscita del canale, cioè dei simboli
:
(
)
∑
(3.2.5)
ovvero la densità di probabilità della V.A. d’uscita:
( )
∑ (
)
(3.2.6)
Consideriamo un canale discreto e privo di memoria (DMC
- Discrete Memoryless Channel).
Se in uscita rilevassimo il simbolo
l’incertezza residua
sull’emissione del generico simbolo d’ingresso
varrebbe:
(
)
(3.2.7)
che ricordando la (3.1.2) è uguale a
(
)
(
)
(3.2.8)
43
Canali Discreti Privi di Memoria
mediando su tutte le possibili coppie ingresso uscita otteniamo
una misura dell’incertezza che mediamente rimane sul simbolo in
ingresso dopo aver osservato il corrispondente simbolo in uscita:
(
)
(
)
( )
( )
∑∑
(
)
∑∑
(
)
∑∑
(
|
(
)
)
(3.2.9)
Abbiamo appena definito l’informazione mutua media. Sostituendo
nella precedente la (3.2.5) otteniamo ancora:
(
)
∑∑
(3.2.10)
∑
Sebbene l’informazione mutua (3.2.8) possa assumere anche valori negativi così non è per l’informazione mutua media
(3.2.9), risulta infatti:
(
)
∑∑
∑∑
∑∑
[∑
(
∑
)
∑∑
3.3 - L’equivocazione.
La (
) si può anche scrivere:
(
)
(3.2.11)
(
)]
44
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
( )
(
) ∑∑
( )
( )
∑
( )
( )
∑∑
(
)
(3.3.1)
(
)
Il primo addendo ad ultimo membro della precedente rappresenta
l’entropia della sorgente ( ), il secondo la cosiddetta equivocazione
(
) ∑
∑
(
)
. Si costata che ( )
(
)
Utilizzando l’equivocazione possiamo scrivere:
(
)
( )
(
)
( )
(3.3.2)
La ( ) deve il suo nome al fatto che essa rappresenta la
quantità l’informazione che viene mediamente dispersa dal canale.
Essa risulta infatti nulla nel caso di canale ideale, cioè nel caso in
cui il simbolo in uscita dal canale determina con certezza il simbolo emesso dalla sorgente. In questo caso avremmo cioè
(
)
( ). Nel caso di canale inutile, cioè nel caso in cui l’uscita del canale sia statisticamente indipendente dal suo ingresso,
( ) e, conseguentemente, (
)
avremmo ( )
. Tutta
l’informazione della sorgente verrebbe pertanto dispersa dal
canale.
3.4 - La capacità di canale
Osservando la (3.2.10) ci rendiamo conto che l’informazione mutua non dipende solo dal canale, ma anche dalla dmp
della sorgente. Al fine di fornire una grandezza caratteristica del
solo canale si procede alla ricerca del massimo della (3.2.10) al variare delle distribuzioni
di massa di probabilità
della sorgente. Otteniamo così la capacità di canale:
(
)
(3.4.1)
Canali Discreti Privi di Memoria
45
che, come vedremo, gioca un ruolo fondamentale nel dimensionamento di un sistema di trasmissione. La ricerca del suddetto
massimo, dato il tipo di dipendenza da non è in genere semplice.
Ricordando la (1.3.7) e la (3.3.2) per un canale con alfabeto
di ingresso di cardinalità possiamo scrivere:
(
)
( )
(3.4.2)
La precedente vale per ogni possibile informazione mutua, quindi
anche per quella in corrispondenza alla quale si raggiunge la capacità del canale. Ne concludiamo che la capacità di un canale discreto è limitata superiormente dal logaritmo della cardinalità dell’alfabeto d’ingresso.
3.5 - Il Canale Simmetrico Binario.
Si consideri un canale
schematizzato in Fig. 3.1 che
accetta ed emette simboli appartenenti a un alfabeto binario costituiti cioè rispettivamente da due soli simboli,
,
.
La matrice di transizioFig. 3.1 - Canale Simmetrico Binario
ne ad esso associata è quindi
una
che se risulta
è simmetrica. La matrice di
transizione di canale in questo caso vale:
|
|
(3.5.1)
Un canale caratterizzato dalla matrice appena scritta è detto Canale
simmetrico binario (BSC, Binary Simmetric Channel).
Se il canale è connesso a una sorgente che emette simboli
con probabilità
,
risulta:
46
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
(
)
(
)
(
)(
)
(3.5.2)
L’informazione mutua media di un BSC varrà quindi:
(
(
)
∑∑
)
∑∑
∑∑
∑∑
∑
(
)
(
)(
(
)
( )
Fig. 3.2 - Capacità del canale simmetrico binario
(
)
(
(3.5.3)
)
(
)
)
∑
∑
( )
Dalla precedente si evince che la
capacità di canale si ottiene massimizzando l’entropia dell’uscita ( ) , che,
come già visto, raggiunge il suo massimo quando i simboli d’uscita sono equiprobabili, cosa che, data la simmetria del canale, avviene quando lo sono
quelli emessi dalla sorgente.
Concludiamo che la capacità di un
BSC vale:
( )
(3.5.4)
(vedi Fig. 3.2).
È interessante osservare che
implicherebbe
che
da conto del fatto che in questo caso il canale sarebbe ovviamente
del tutto inutile ai fini del trasferimento d’informazione.
47
Canali Discreti Privi di Memoria
3.6 - Capacità del Canale AWGN a Banda Limitata.
Consideriamo adesso il canale
con ingresso e uscita ad alfabeto
continuo rappresentato in Fig. 3.3
X
Y
S
esso aggiunge alla variabile aleatoria
generata dalla sorgente un disturbo
Fig. 3.3 - Canale Gaussiano
costituito da una variabile aleatoria
, Gaussiana a media nulla e varianza , statisticamente indipendente dalla variabile aleatoria in ingresso.
L’informazione mutua associata al canale in questione è data da:
n
(
)
( )
(
∫
)
( )
∫ ∫
( )
(
∫
( )
∫
( )∫
)
(
(
)
(3.6.1)
( )
(
)
(
Osserviamo che
)
√
(
)
)
in quanto
differisce da
per il solo disturbo che abbiamo detto essere Gaussiano. Sostituendo nella (3.6.1) e ricordando la (1.6.3) otteniamo:
(
)
∫
( )
∫
( )
( )
(
)
(3.6.2)
∫
( )
( )
(
)
Per ottenere la capacità del canale dobbiamo massimizzare
l’integrale ad ultimo membro, cioè l’entropia dell’uscita. Sappiamo
(vedi § 1.6 - ) che il massimo dell’entropia, a parità di varianza, si
ottiene da una sorgente Gaussiana.
48
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
Affinché la ( ) sia Gaussiana, tale deve essere la variabile
aleatoria in ingresso Indicata con
la sua varianza, in virtù
della supposta indipendenza tra ed si ha:
(3.6.3)
La capacità del canale Gaussiano è quindi data da:
( )
(
)
(
)
(
(
)
)
(3.6.4)
Consideriamo adesso il canale AWGN (Addittive White
Gaussian Noise) (vedi Fig. 3.4)
cioè un canale con ingresso e uscita a tempo continuo che agisce
Fig. 3.4 - Canale AWGN
sul segnale d’ingresso sommando
a quest’ultimo un segnale stazionario Gaussiano a media nulla e
densità spettrale di potenza bilatera costante pari ad
Come sappiamo ogni sistema di trasmissione è affetto quantomeno dal rumore termico che si può modellare proprio con un
processo Gaussiano bianco.
Ogni sistema d’interesse pratico tratta di fatto segnali a banda
limitata. Pertanto, per ridurre la potenza di rumore introdotta il
canale viene sempre limitato in banda tramite un apposito filtro
passabasso o passabanda posto tipicamente in ingresso al ricevitore. Se indichiamo con la banda del segnale sappiamo che esso
può essere ricostruito a partire dai suoi campioni purché ne vengano prelevati almeno
al secondo. Il canale AWGN equivale
quindi a un canale Gaussiano utilizzato con la stessa cadenza. La
varianza dei campioni del segnale coinciderà con la potenza media
del segnale, e quella del rumore con la frazione di potenza di
quest’ultimo contenuta nella banda del segnale risulta quindi:
Canali Discreti Privi di Memoria
()
49
(3.6.5)
dove ( ) rappresenta la potenza del segnale e
indica la densità spettrale di potenza monolatera del rumore. Sostituendo nella
(3.6.4) otteniamo:
(
()
)
(3.6.6)
La precedente indica la capacità del canale AWGN limitato
in banda per uso del canale, espressa quindi in bit. In pratica è più
utile esprimere la capacità in termini di bit al secondo, in questo
caso a partire dalla precedente è sufficiente osservare che il canale
viene utilizzato
volte al secondo. La capacità espressa in
del canale in questione vale quindi:
(
()
)
(3.6.7)
Osserviamo che nella (3.6.7) appare il rapporto segnale rumore. Essa ci dice che per aumentare la capacità di un canale a
tempo continuo possiamo aumentarne il rapporto segnale rumore
o aumentarne la banda. Occorre però tener presente che un
aumento del rapporto segnale rumore comporta sì un aumento
della capacità, ma detto aumento non segue una legge lineare
bensì una legge logaritmica. In sostanza, affinché la capacità del
canale aumenti di un bit al secondo, la potenza del segnale dovrebbe approssimativamente raddoppiare quindi parrebbe molto
più efficace agire sulla banda del segnale, osserviamo però che, a
parità di potenza del segnale, un aumento della banda comporta
un deterioramento del rapporto segnale rumore. Per meglio capire
come tali effetti si combinino, mantenendo costante la potenza
del segnale e la densità spettrale monolatera del rumore, facciamo tendere nella precedente la banda ad infinito. Otteniamo:
50
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
( )
()
(
( )
(
)
)
()
(3.6.8)
La precedente ci fa capire che un aumento della banda a parità di
potenza del segnale comporta oltre certi limiti effetti trascurabili
sulla capacità del canale, viceversa, a parità di banda aumentando
la potenza trasmessa si può aumentare, almeno in linea di principio, la capacità del canale indefinitamente. Ciò, come abbiamo
mostrato nel § - 3.4 - non accade nei canale con alfabeto di
ingresso e di uscita finiti la cui capacità è limitata dal logaritmo
della cardinalità dell’alfabeto di ingresso.
3.7 - Informazione Mutua tra
-messaggi.
Consideriamo un DMC. Utilizzando le dmp congiunte,
possiamo facilmente definire l’informazione mutua tra -messaggi in ingresso e in uscita.
(
)
∑ ∑
(
(
)
)
( )
(3.7.1)
la precedente può anche essere riscritta:
(
)
∑
( )
( )
∑ ∑
(
)
(
)
(3.7.2)
e, ricordando la (1.3.6), può essere maggiorata come segue:
(
)
∑
∑ ∑ ∑
( )
∏
(
)
∑ ∑
(
)
∑ ∑
(
) ( )
(
) ( )
(
)
∏
(
)
(
)
(
(3.7.3)
)
(
∑ (
)
)
51
Canali Discreti Privi di Memoria
L’uguaglianza vale se i simboli d’uscita sono mutuamente statisticamente indipendenti perché in questo caso si avrebbe ( )
∏
) . Questa condizione è certamente soddisfatta se la
(
sorgente è priva di memoria.
Se la sorgente ed il canale sono stazionari tenuto conto della (3.4.1) possiamo ulteriormente scrivere:
(
)
∑
(
)
(
)
(3.7.4)
3.8 - Canali in Cascata.
Consideriamo adesso il caso di due canali in cascata (vedi
Fig. 3.5 - Canali in cascata
Fig. 3.5). Supponiamo che l’alfabeto d’uscita del primo canale
coincida con quello d’ingresso del secondo, e che l’uscita di ciascun canale dipenda esclusivamente dal suo ingresso. Ciò significa
che
(
)
(
)
(3.8.1)
Facendo sempre riferimento alla figura, consideriamo la differenza tra le informazioni mutue ( )ed ( ). Si ha:
(
)
(
)
∑ (
∑ (
)
)
( )
( )
( ) ( )
( ) ( )
∑ (
)
( )
( )
(3.8.2)
52
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
∑ (
)(
( ) ( )
( ) ( )
(∑
(∑
(∑
(
)
) (
( ) (
) ( )
)
∑ (
(
) ( ) ( ) ( )
( ) ( )
(
) ( ) ( )
( )
(∑ (
) (
) ( )
(∑ (
)∑ (
(∑ (
)
)
))
)
)
)
)
)
In definitiva abbiamo mostrato che se si collegano due, o,
ovviamente, più canali in cascata l’informazione mutua tra ingresso e uscita può solo diminuire. Il risultato appena ottenuto vale
anche nel caso in cui si colleghino in cascata al canale dei sistemi
deterministici, come ad esempio un codificatore in ingresso e\o
un decodificatore d’uscita.
Consideriamo (vedi Fig. 3.6) il caso di una DMS connessa a
un codificatore che opera in modo deterministico su M-messaggi
X  X1  XM 
S
Z  Z1 ZL 
Y  Y1 YL 
Codificatore
Canale
V  V1 VM 
Decodificatore
Fig. 3.6
emessi dalla sorgente per generare sequenze di lettere compatibili con un DMC con alfabeti d’ingresso e d’uscita della stessa car-
Canali Discreti Privi di Memoria
53
dinalità . L’uscita del canale è poi connessa a un decodificatore
che opera in modo deterministico sugli -messaggi emessi dal
canale per “cercare” di ricostruire gli -messaggi emessi dalla sorgente. Ovviamente una condizione sufficiente affinché in uscita
venga ricostruito correttamente il messaggio è che il canale non
abbia introdotto disturbi tali da indurre il decodificatore in errore.
Assumiamo inoltre che le durate dell’ -messaggio emesso
dalla sorgente e del corrispondente -messaggio in uscita al codificatore siano uguali, pertanto se la sorgente emette lettere con una
cadenza regolare la cadenza dei simboli in ingresso al canale
sarà data da:
(3.8.3)
Con riferimento alla Fig. 3.6 considerando l’informazione
mutua ( ), tenuto conto della (3.8.2) possiamo scrivere:
(
)
(
)
(
)
(3.8.4)
dove è la capacità relativa ad una coppia di simboli ingresso/uscita del canale.
3.9 - L’Inverso del Teorema della Codifica di Canale
Il nostro obiettivo nella progettazione di un sistema di trasmissione è ottenere la minore probabilità d’errore compatibilmente con dei prefissati vincoli di potenza impiegabile e/o di
banda, senza tralasciare ovviamente la complessità del sistema
che, anche quando non si scontra con barriere tecnologiche, ha
comunque un impatto sui costi.
Facendo sempre riferimento alla Fig. 3.6 considerando ad
esempio la -esima lettera dell’ -messaggio emesso dalla sorgente,
il sistema commette un errore se la -esima lettera del corrispondente -messaggio in uscita dal decodificatore non coincide con
quella emessa.
54
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
La probabilità
che il sistema commetta un errore sulla esima lettera del messaggio è quindi uguale alla (
), che, in
termini della dmp congiunta delle variabili
vale:
∑
(
)
(3.9.1)
La probabilità d’errore appena calcolata dipende in genere
dall’indice . Se volessimo farci un’idea della probabilità d’errore
media, , su un generico simbolo dell’ -messaggio potremmo
calcolare la media aritmetica delle
ottenendo:
∑
(3.9.2)
Consideriamo la catena di disuguaglianze:
( )
(
)
∑ ( )
∑ ∑ (
( )
∑ ∑ (
∑( ( )∑ (
)
)
(
(
(
)
)
( )
)
)
)
(3.9.3)
( )∑ (
∑
)
∏
(
∑∑ ∑ (
)
∑∑∑ (
( | )
)
( | )
)
( | )
Il nostro scopo è quello di esplicitare il legame tra le grandezze associate all’informazione e la probabilità d’errore espressa
55
Canali Discreti Privi di Memoria
dalla (3.9.1), appare pertanto opportuno riscrivere la (3.9.3) nella
forma:
( )
∑
∑
(
)
(
(
)
∑ (
)
(3.9.4)
)
(
(
)
)
Introducendo la probabilità di corretta decisione
sul -esimo simbolo possiamo maggiorare la seconda sommatoria in parentesi nella precedente come segue:
∑ (
)
∑ (
( | )
∑ (
)
∑ (
)
∑ (
( | )
)(
∑( ( )
(
)
)
)
)
(
(
( | )
(3.9.5)
))
(
)
Procedendo in modo analogo sulla prima sommatoria in
parentesi nella (3.9.4) si ottiene anche:
∑
(
)
( | )
∑
(
)
(
( | )(
(3.9.6)
)
)
56
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
∑
(
)
)
( | )(
∑
(
)
∑
(
(
)(
(
)
∑
(
(
)
)
( | )(
)
( | )(
)
)
)
(
)
∑ ( ) ∑
(
)
(
)
(
)
(
)
(ricordiamo che rappresenta la cardinalità dell’alfabeto ).
Tenuto conto delle (3.9.5) e (3.9.6) il primo membro della
(3.9.4) può essere ulteriormente maggiorato:
( )
(
)
(
∑[
∑
(
(
∑[
)
)
)
(
(
(
)
)
]
)
(
]
)
∑ (
(3.9.7)
)
57
Canali Discreti Privi di Memoria
Nella precedente ( ) può essere interpretata come l’entropia di
una sorgente binaria con probabilità
e
.
Ricordando la (1.3.6) possiamo ancora scrivere:
( )
(
)
(
)
∑[
(
(
)
)
(
(
)
]
(3.9.8)
)
( )
Sfruttando il fatto che, per ipotesi, la sorgente è priva di
memoria e tenendo in conto la (3.8.4) abbiamo ancora:
(
)
( )
( )
(
)
( )
(
)
(3.9.9)
( )
che, in virtù della (3.8.3), conduce alla:
(
)
( )
( )
( )
(3.9.10)
Per assegnata cardinalità dell’alfabeto di sorgente possiamo
tracciare il grafico della funzione: ( )
(
)
( ).
Come si può notare (vedi Fig. 3.7) la ( )
pertanto la
limitazione imposta dalla (3.9.10), che per comodità riscriviamo
nella forma:
( )
( )
non avrà alcun effetto fintanto che risulta ( )
(3.9.11)
o, che è
lo stesso, quando
( )
(3.9.12)
58
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
cioè fintantoché l’entropia
della sorgente espressa in bit
F Pe 
al secondo si mantiene minore della capacità di canale,
log N
anch’essa espressa in bit al
secondo.
Quando viceversa la
(3.9.12) non è soddisfatta la
(3.9.11) pone un limite infeN 1
1 Pe
N
riore alla probabilità d’errore
ottenibile; saranno compatiFig. 3.7 - ( )
(
)
( )
bili con la (3.9.11) solo valori di che fanno si che il valore assunto dalla ( ) resti al di
sopra della quantità ( )
.
Nel piano di Fig. 3.7,
( )
è una retta parallela all’asse
delle ascisse. Saranno dunque compatibili con la (3.9.11) soltanto
valori di probabilità d’errore che restino alla destra dell’ascissa
dell’intersezione di detta retta con la curva ( ).
Quello che abbiamo appena dimostrato è noto come: inverso
del teorema della codifica di canale.
Teorema 3.1
Non è possibile ottenere una probabilità d’errore piccola a piacere
all’uscita di un canale che ha una capacità
[
] se quest’ultima è minore
dell’entropia (espressa in [ ]) della sorgente ad esso connessa.
**********
Purtroppo il teorema appena enunciato nulla ci dice circa la
probabilità di errore effettivamente ottenibile nel caso in cui la capacità del canale sia maggiore dell’entropia della sorgente.
59
Canali Discreti Privi di Memoria
3.10 - Il piano di Shannon
Riprendiamo in considerazione il canale AWGN, abbiamo
calcolato la sua capacità
( )
(
)[
].
Alla luce del teorema appena dimostrato l’entropia di una
sorgente ad esso connessa dovrà essere inferiore a tale capacità se
non vogliamo porre un limite inferiore alla probabilità d’errore ottenibile. Dovremo quindi avere
( )
( )
(
)
(3.10.1)
Il primo membro può essere interpretato come il numero medio
di bit che la sorgente emette ogni secondo, lo chiameremo velocità
di informazione . Detto il tempo impiegato dalla sorgente per
emettere un bit di informazione avremo:
(3.10.2)
Sostituendo nella (3.10.1) abbiamo:
(
( )
)
(3.10.3)
Vogliamo utilizzare quest’ultima per confrontare l’efficienza di
sistemi di trasmissione numerica diversi. È utile a tal fine fare
riferimento all’energia
che il sistema di trasmissione
( )
utilizzato mediamente assegna ad ogni bit. Utilizzando la (3.10.2)
otteniamo:
(
)
(3.10.4)
60
Capitolo - 3 - Appunti di Teoria dell’Informazione e Codici
Il rapporto
prende il nome di efficienza spettrale del sistema di
trasmissione, le sue dimensioni sono [
⁄
]
L’efficienza spettrale
ci da un’idea di come il sistema di trasmissione utilizzi la banda di
cui dispone. Tanto maggiore è tale rapporto tanto più efficacemente sarà utilizzata la banda occupata del segnale trasmesso.
La (3.10.4) pone in sostanza un limite inferiore al rapporto
tra l’energia media per bit e la densità spettrale monolatera del rumore per data efE
dB
 
ficienza spettrale
N
(vedi Fig. 3.8).
Ci domandiamo quale sia il
minimo valore di
b
0
che rispetti la
(3.10.4). A tal fine
notiamo che il seFig. 3.8 – Piano di Shannon.
condo membro
della (3.10.4) cresce al crescere dell’efficienza spettrale. Il suo minimo verrà quindi raggiunto all’estremo inferiore del suo insieme
-1.6
di definizione, quindi per
Rb
B
, o, che è lo stesso, per
ot-
teniamo:
(3.10.5)
Possiamo dunque affermare sulla base del Teorema 3.1, che
non è possibile trasmettere con probabilità d’errore piccola a
piacere su un canale AWGN se risulta
Capitolo - 4
CENNI DI TRASMISSIONE NUMERICA
4.1 - Scenario di Riferimento.
Al fine di introdurre il teorema di Shannon sulla codifica di
canale, è opportuno introdurre alcuni concetti di trasmissione
numerica.
Come schema di principio del nostro sistema consideriamo
una sorgente che emette lettere
appartenenti ad un alfabeto
di cardinalità finita N con una cadenza di lettere al secondo. La
suddetta sorgente è connessa a un codificatore di sorgente che
ogni
secondi emette un
-messaggio ( ) (
) che potremo pensare come il risultato di un
esperimento casuale . ( ) piloterà un codificatore di canale.
Il codificatore di canale, o modulatore, ha il compito di
associare ad ogni ( ) un segnale ( ) ad energia finita,
individuato da una funzione reale ( ) ( ), di durata non maggiore
di , che verrà inviato sul canale, che qui supporremo AWGN,
cioè un canale che si limita a sommare al segnale un processo
stazionario Gaussiano bianco ( ), con densità spettrale di potenza bilatera costante , o, che è lo stesso, con funzione di autocorrelazione ( )
( ).
Il ricevitore è chiamato, a fornire una stima dell’ messaggio trasmesso, basandosi sul segnale ricevuto e, ove possibile, sulla conoscenza della statistica di sorgente.
4.2 - Struttura del modulatore e del codificatore di sorgente
Il set di segnali
utilizzato dal codificatore di canale
sopra citato ha cardinalità finita. Esso sarà pertanto contenuto in
un sottospazio S di dimensione
dello spazio dei segnali a
energia finita.
62
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
Tramite la procedura di ortonormalizzazione di GramSmith potremo costruire quindi una base ortonormale
per
S . Ogni segnale emesso dal modulatore si può quindi esprimere
nella forma:
∑
(4.2.1)
La precedente suggerisce anche uno schema di principio
per il codificatore di sorgente che in sostanza associa a ogni sequenza
di lettere emesse dalla sorgente il vettore
che consente al codificatore di canale di generare a sua volta tramite la (4.2.1) il segnale
da inviare sul canale.
4.3 - Struttura del Ricevitore.
Trascurando il ritardo introdotto dal canale, nell’intervallo
), il ricevitore vede al suo ingresso il segnale
(4.3.1)
a energia finita che possiamo pensare come una manifestazione di
un segnale aleatorio .
Il segnale ricevuto può essere scomposto in due segnali: il
primo, S , appartenente al sottospazio S il secondo, ˜ ,
ortogonale a detto sottospazio.
In particolare avremo
∑
(4.3.2)
( )) ( )
(4.3.3)
dove
∫ (
()
Teniamo presente che tutte le funzioni in gioco sono reali
e, a parte il rumore, nulle al di fuori dell’intervallo
, quindi
Cenni di Trasmissione Numerica
63
tali sono anche le funzioni che rappresentano i componenti della
base ortonormale utilizzata. La (4.3.3) esprime pertanto il
prodotto scalare tra il segnale ricevuto e l’ -esimo elemento .
Le sono variabili aleatorie Gaussiane a media nulla con
varianza , l’ortonormalità della base
garantisce anche che
esse sono mutuamente statisticamente indipendenti. Osserviamo
che il segnale ˜
S non contiene nessuna informazione circa il segnale trasmesso in quanto non appartiene per costruzione
allo spazio S dei segnali trasmessi. La nostra strategia di decisione si può quindi basare esclusivamente su S , o, che è lo stesso,
sul vettore delle sue componenti rispetto alla base
.
In sostanza il vettore costituisce la cosiddetta statistica sufficiente su cui deve operare il ricevitore per fornire una stima del
messaggio trasmesso.
Possiamo pensare il ricevitore costituito da due sistemi in
cascata, un demodulatore che ha il compito di calcolare il vettore
ed un decisore che sulla base di quest’ultimo provvede a stimare
il messaggio trasmesso.
In pratica si può pensare al vettore come alla realizzazione di un vettore di variabili aleatorie definito sull’esperimento
casuale innescato dall’emissione di un messaggio e dal suo invio
sul canale AWGN.
4.4 - La Regola di Decisione Ottima.
Vogliamo che la strategia seguita dal ricevitore nel suo complesso conduca alla minima probabilità d’errore media. In altri termini vogliamo che sia minima la probabilità di prendere decisioni
sbagliate sul messaggio trasmesso, noto il segnale ricevuto e la
probabilità di emissione di ciascun messaggio.
Ovviamente la minimizzazione della probabilità d’errore
equivale alla massimizzazione della probabilità di corretta decisione. La regola di decisione ottima sarà quindi quella che ci fa scegliere per il messaggio
se risulta:
64
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
(
|
)
(
|
)
(4.4.1)
La regola di decisione appena descritta si esprime sinteticamente scrivendo:
˜
(
)
(4.4.2)
Nell’ipotesi, in questo contesto remota, in cui due o più messaggi
massimizzino la precedente sceglieremo a caso tra essi.
Quando si adotta la regola di decisione (4.4.2) si sta
applicando il criterio della massima probabilità a posteriori (MAP
Maximum A posteriori Probability).
4.5 - Il Criterio della Massima Verosimiglianza.
Detto
scrivere:
un intorno di
(
)
e ( ) la sua misura possiamo
(
( )
)
(4.5.1)
indicando con ( ) la densità di probabilità di , la probabilità
che
vale ∫
( )
Scegliendo opportunamente ˜ e ̂ in
.possiamo ulteriormente elaborare la (4.5.1) come segue:
(
)
(
( )
)
(
)∫
( )
∫
( )
∫
( )
(
)
(
)
(4.5.2)
(˜) ( )
( )
(̂
) ( ) (
(˜) ( )
( )
(
) (
)
( )
sostituendo la (4.5.2) nella (4.4.2) otteniamo:
)
65
Cenni di Trasmissione Numerica
˜
{
(
) (
)
( )
}
(4.5.3)
Appare chiaro che la densità di probabilità marginale di al denominatore della precedente non ha alcuna influenza sull’argomento che lo rende massimo, pertanto possiamo ulteriormente
scrivere:
˜
(
) (
)
(4.5.4)
4.6 - Funzioni di Verosimiglianza.
Un’ulteriore semplificazione della (4.5.3), si ottiene infine se
i messaggi
sono tutti equiprobabili. In questo caso, semplificando ulteriormente la notazione, ponendo cioè
(
)
(
), la regola di decisione ottima diventa:
˜
decidi per se:
˜
(
)
(4.6.1)
La densità di probabilità (
) prende il nome di funzione di verosimiglianza. Essa, come si può notare, dipende sostanzialmente dal canale, che in questo caso pensiamo costituito dalla
cascata del modulatore, del canale AWGN e del demodulatore.
Un ricevitore che adotta la regola di decisione (4.6.1) applica il criterio della Massima Verosimiglianza MV, o ML (Maximum
Likelihood), se si preferisce l’acronimo inglese.
È opportuno precisare che il criterio MV viene di regola
adottato, anche quando la statistica della sorgente non è nota, in
questo caso il criterio non è ottimo, non conduce cioè alla minima
probabilità d’errore media, ma spesso non si può fare altrimenti
non conoscendo la statistica della sorgente, in ogni caso, in genere, la perdita in termini di prestazioni adottando il criterio MV
anziché il MAP è accettabile.
66
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
4.7 - Le Regioni di Decisione.
Ricordiamo che ad ogni messaggio
corrisponde tramite la (4.2.1) un punto
nello spazio S . Quindi, se è stato trasmesso
, all’uscita del demodulatore sarà presente il vettore
, dove
è la realizzazione di un vettore di variabili aleatorie Gaussiane a media nulla e matrice di covarianza
cioè di variabili tra loro mutuamente statisticamente
indipendenti, ne segue che , per fissato
, è anch’esso un
vettore di variabili aleatorie Gaussiane mutuamente indipendenti
con matrice di covarianza
e media
.
Si ha pertanto:
(
( |
)
∏
(
)
∏
√
(
∑
(
ad ogni
(
)
)
(4.7.1)
)
)
(
)
si può quindi associare l’insieme dei punti di S
(
)
(
)
(4.7.2)
che è denominato regione di decisione di
.
Se abbiamo cura di assegnare a caso all’una o all’altra regione i punti di S che si trovano al confine tra due o più regioni di
decisione, ci si convince facilmente che
∪
(4.7.3)
Per il canale AWGN possiamo ancora scrivere:
‖
{
(
)
‖
‖
(
‖
)
}
(4.7.4)
{
}
Cenni di Trasmissione Numerica
67
dalla precedente s’intuisce facilmente che le frontiere delle regioni
di decisione sono iperpiani di S , e che la probabilità che cada
sulla frontiera di una regione di decisione è in questo caso nulla,
essendo nulla la misura di tali frontiere.
Il concetto di regione di decisione è applicabile anche in un
contesto più generale, basandosi direttamente sulla (4.5.3) nel caso
di messaggi non equiprobabili.
Anche nel caso in cui lo spazio d’osservazione S sia discreto si possono definire le regioni di decisione, tenendo però
presente che tutte le ddp che compaiono nelle (4.5.3) e (4.6.1)
vanno intese come dmp e che, in questo caso, l’eventualità che il
vettore cada su un punto di S appartenente alla frontiera di una
regione di decisione può essere diversa da zero.
Indichiamo con
la probabilità che il ricevitore stimi
in modo errato il messaggio atteso che sia stato trasmesso il
messaggio
. Detto
il complementare di
rispetto allo
spazio di osservazione S ,
( ) si potrà esprimere come segue:
( ))
(
( )
(4.7.5)
La probabilità d’errore media del sistema sarà espressa dalla media
statistica delle
( ) . Avremo quindi:
∑
(
)
( )
(4.7.6)
che nel caso di equiprobabilità dei messaggi trasmessi varrà:
∑
( )
(4.7.7)
Sebbene la precedente sia concettualmente semplice, calcolarne il valore può essere complicato. La sua valutazione comporta generalmente il calcolo d’integrali su domini multidimensio-
68
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
nali che difficilmente si risolvono in forma chiusa, e che anche approcciati per via numerica possono presentare delle criticità.
È pertanto utile, in generale, e in particolare per i nostri
scopi, introdurre dei metodi che permettano di maggiorare la probabilità d’errore:
4.8 - L’Union Bound.
L’union bound è una maggiorazione della che si basa sul
fatto che la probabilità dell’unione di due eventi è minore o uguale
della somma delle probabilità di ciascuno di essi.
In particolare si osservi che se il decisore dovesse scegliere
soltanto tra due alternative, ad esempio tra il messaggio
e il
messaggio
, vi sarebbero solo due regioni di decisione quella
associata a
e la sua complementare rispetto a S ,
.
Ovviamente
, risulta inoltre:
⋂
⋃
(4.8.1)
avremo pertanto:
(
∪
)
(4.8.2)
∑
(
)
Nel caso in esame:
{
la
(
}
) è data da:
(4.8.3)
69
Cenni di Trasmissione Numerica
(
)
(
∫
(
)
∫ (
)
)
(4.8.4)
∏
Al fine di calcolare la (4.8.4) è utile riformulare la disuguaglianza che definisce la
nel modo seguente:
(
(4.8.5)
)
∑(
)
Osserviamo che
∑
(
)
può interpretarsi
come il valore assunto da una variabile aleatoria ottenuta combinando linearmente le componenti di che, se è stato trasmesso
( )
, costituiscono una -upla di variabili aleatorie Gaussiane
statisticamente indipendenti. è quindi una variabile aleatoria
Gaussiana con valor medio:
∑(
)
(4.8.6)
e varianza:
∑(
Ricordando che ( )
(
|
)
√
)
(4.8.7)
potremo scrivere:
∫
(
‖
‖
‖
‖
)
(4.8.8)
70
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
(
√
(
)
∫
‖
‖
‖
‖
)
∫
√
(
)
(
()
√
(
)
√
(
)
( )
)
√
L’ultimo membro della precedente può essere sostituito
nella (4.8.2) che tenuto conto della (4.7.6) e dell’ipotesi di equiprobabilità dei simboli trasmissibili, ci permette di scrivere:
∑
(
)
∑
(
)
( )
(
)∑
∑
(
‖
(
√
‖
√
)
(4.8.9)
)
4.9 - Bound di Bhattacharrya.
L’union bound può essere applicato anche al caso in cui lo
spazio di osservazione sia discreto. Consideriamo ad esempio il
caso di una sorgente binaria priva di memoria che emetta una
parola di bit. Vogliamo trasmettere la parola in questione
utilizzando un BSC volte con
. Il compito del codificatore
71
Cenni di Trasmissione Numerica
di canale consiste quindi nell’associare a ciascuno dei possibili
messaggi di sorgente una tra le possibili parole da affidare al
canale. Chiameremo codice il sottoinsieme delle parole scelte.
Osserviamo che per effetto del canale la parola ricevuta
potrebbe non appartenere al codice, ma in ogni caso sarebbe una
tra le . In sostanza lo spazio d’osservazione è in questo caso
finito.
La probabilità (
) che venga rivelata la parola quando è stata trasmessa la parola di codice
è data da
(
)
(
)
(
) (
)
(4.9.1)
in cui rappresenta il numero di simboli in cui differisce da
e la probabilità di crossover del BSC. Osserviamo che, se
, (
) è quindi una funzione decrescente di
,
che, co-
me vedremo in seguito, è detta distanza di Hamming. Ciò ci permette di associare a ogni parola di codice una regione di decisione,
che conterrà i punti dello spazio d’osservazione, cioè le parole di
bit aventi da essa una distanza minore rispetto a quella che
hanno dalle altre parole di codice, convenendo di assegnare in
modo puramente casuale a una sola delle regioni interessate i punti dello spazio d’osservazione che dovessero trovarsi a uguale distanza tra due o più parole di codice.
Ciò premesso, il calcolo della probabilità d’errore condizionata all’emissione di una data parola di codice vale:
∑
(
)
(4.9.2)
e la probabilità d’errore media:
∑ (
) ∑
(
)
(4.9.3)
72
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
dove ( ) rappresenta la probabilità di emissione della parola
da parte del codificatore di canale, che equivale, essendo il
codificatore deterministico, a quella di emissione della corrispondente parola di bit dalla sorgente.
Anche in questo contesto è possibile applicare l’union
bound. Individuando le
associate alle coppie di parole di codice possiamo infatti scrivere:
(
)
∑
(
)
(4.9.4)
tramite la funzione ausiliaria
( )
{
(4.9.5)
possiamo riformulare la (4.9.4) come segue
(
Osserviamo che
)
∑
( ) (
)
(4.9.6)
S risulta:
( )
(
(
(
)
)
)
(4.9.7)
possiamo pertanto maggiorare la (4.9.6) ottenendo:
(
)
∑(
∑( (
(
(
)
)
)
)) (
(
)
))
(4.9.8)
∑ [∏ ( (
∏ ∑ ( (
) (
) (
))]
))
73
Cenni di Trasmissione Numerica
in cui abbiamo anche tenuto conto del fatto che il canale è privo
di memoria.
La sommatoria a ultimo membro della precedente può assumere solo due valori a seconda che
risulti o meno uguale a
nel primo caso la somma varrà nell’altro √ (
mo finalmente scrivere:
(
)
∏ ∑ ( (
) (
). Potre-
))
(4.9.9)
( √ (
))
essendo
la distanza di Hamming tra
e
.
Quella appena ottenuta è la maggiorazione di Bhattacharyya.
Che utilizzata nello union bound ci permette di scrivere:
∑ (
) ∑( √ (
))
(4.9.10)
Il bound di Bhattacharyya sulla probabilità d’errore può essere applicato anche nel caso di spazio d’osservazione continuo.
Per mostrarlo prendiamo nuovamente in considerazione la
(4.8.4), possiamo scrivere:
(
|
)
∫ √
( |
( |
∫ √ ( |
∫
)
)
( |
)
( |
)
) ( |
(4.9.11)
)
la quale sostituendo alle ddp condizionate che vi compaiono le
loro espressioni fornisce:
74
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
(
|
∫ √ ( |
)
∑
(
)
∑
(
)
(
(
(
)
)
)
)
)
(4.9.12)
√
)
(
)
√
(
)
∏
∑
)
∫
(
∏∫
(
)
∫
(
∏∫
) ( |
∏
(
)
La precedente può essere utilizzata nell’union bound
∑
(
)
∑
( )
‖
(
√
)
(4.9.13)
‖
∑
La (4.9.13), a ben vedere, si poteva ottenere direttamente
utilizzando una ben nota catena di disuguaglianze relative alla
( ), risulta infatti (vedi Fig. 4.1):
√
(
)
( )
√
(4.9.14)
Cenni di Trasmissione Numerica
75
( )
Constatiamo che, nel caso di uno spazio di osservazione
continuo, la maggiorazione di Bhattacharyya seppur asintoticamente stretta è comunque più “lasca”
di quelle che si possono ottenere maggiorando la ( )
tramite una delle
precedenti. Utilizzando ad esempio
la seconda si intro2
0.5
1
1.5
2
2.5
3
x

durrebbe un fattore
0.6
0.5
0.4
0.3
0.2
0.1
Fig. 4.1- ( ),
,
vale cioè la se-
√
guente
disuguaglianza:
‖
∑
‖
(4.9.15)
L’utilizzo della prima delle (4.9.14) fornirebbe come risulta
evidente dalla Fig. 4.1 una maggiorazione certamente più stretta
solo qualora i valori degli argomenti delle ( ) nella (4.9.13) fossero tutti maggiori di √ .
4.10 - Bound di Gallager.
Lo Union Bound può rivelarsi in molti casi una maggiorazione piuttosto lasca, talvolta addirittura palesemente inutile se
dovesse risultare maggiore di uno.
Un diverso approccio per maggiorare
è quello di
̅ e valutare la probabilità (
considerare una regione ̃
̃
) . Quest’ultima, sarà necessariamente non minore di
76
Capitolo - 4 - Appunti di Teoria dell’Informazione e Codici
. A tale scopo, scelto ad arbitrio
, consideriamo il
sottoinsieme dello spazio d’osservazione S :
̃
̃
{
̅ , infatti se
∑(
(
(
)
)
)
}
(4.10.1)
̅
deve esistere almeno un
in corrispondenza al quale risulti (
)
(
) , ciò, ricordando
che
, comporta che almeno un addendo, e quindi tutta la
sommatoria nella (4.10.1) che è a termini positivi, assuma un valore maggiore di in ogni punto di ̅ . Introducendo la funzione
ausiliaria:
( )
̃
{
(4.10.2)
possiamo scrivere:
( )
∫ (
)
∫ ( ) (
)
(4.10.3)
̃
È facile verificare che per ogni
( )
[∑ (
risulta:
(
(
)
) ]
)
(4.10.4)
la (4.10.3) può quindi essere ulteriormente maggiorata ottenendo:
( )
∫ [∑ (
(
(
)
) ]
)
(
)
(4.10.5)
∫ [∑( (
Ponendo
)) ]
(
)(
)
, nella precedente otteniamo il bound di Gallager:
Cenni di Trasmissione Numerica
∫ [∑( (
( )
))
]
(
)
77
(4.10.6)
La maggiorazione della probabilità d’errore che si ottiene
dalla (4.10.6), mediando su tutti i messaggi
, è applicabile
anche a spazi d’osservazione discreti, a patto di sostituire l’integrale con una sommatoria estesa all’intero spazio d’osservazione e di
interpretare le densità di probabilità che vi compaiono come distribuzioni di massa di probabilità:
(
)
∑ [∑( (
))
]
(
)
(4.10.7)
L’utilizzo del bound di Gallager, tuttavia, rimane ristretto
ad un limitato insieme di sistemi di trasmissione in quanto esso
comporta comunque il calcolo di integrali o sommatorie multidimensionali la cui complessità cresce con legge esponenziale al
crescere delle dimensioni dello spazio d’osservazione.
Va anche sottolineato che il valore di al secondo membro
delle (4.10.6) e (4.10.7) deve essere ottimizzato se si vuole rendere
la maggiorazione più stretta possibile.
In questo contesto il bound appena introdotto è propedeutico alla dimostrazione del teorema di Shannon sulla codifica di
canale che dimostreremo nel prossimo capitolo.
Capitolo - 5
IL TEOREMA DI SHANNON SULLA CODIFICA
DI CANALE
5.1 - Premessa.
Shannon, nel suo pionieristico lavoro del 1948, individuò
una maggiorazione della probabilità d’errore che, anziché cercare
di maggiorare la probabilità d’errore associata alla scelta di uno
specifico insieme di segnali, si propone di maggiorare la probabilità di errore media tra tutti i possibili insiemi costituiti da un numero fissato di segnali, contenuti in un sottospazio di dimensione assegnata . Le componenti di ciascun segnale possono
assumere valori appartenenti al medesimo alfabeto di cardinalità
finita .
Sotto queste ipotesi si possono effettuare un numero finito
di scelte per la -upla di segnali da impiegare, esistono infatti solo
( ) possibili -uple di segnali, molte delle quali peraltro palesemente “infelici” quali ad esempio quelle che, utilizzando due o
più volte uno stesso segnale per messaggi diversi, darebbero luogo
a probabilità d’errore particolarmente elevate.
Shannon, per dimostrare il suo teorema, sfruttò il fatto che
una qualsiasi funzione di variabili aleatorie assume certamente
almeno un valore non maggiore del suo valor medio.
Tale considerazione, applicata al caso in esame, comporta il
fatto che deve esistere almeno una -upla di segnali, anche se non
sappiamo necessariamente quale, che da luogo ad una probabilità
d’errore non maggiore della media tra le probabilità d’errore di
tutte le possibili -uple.
È interessante osservare che quest’affermazione resta valida
quale che sia la distribuzione di massa di probabilità che si sceglie
per calcolare la media citata. Utilizzando, ad esempio una ddm
80
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
uniforme (media aritmetica) daremmo peso uguale a ogni -upla.
Potremmo ritenere più sensato scegliere di attribuire peso nullo a
tutte le -uple in cui uno stesso segnale è utilizzato più di una
volta. Con questa scelta otterremo un valor medio delle probabilità d’errore che sarebbe indubbiamente una maggiorazione più
stretta.
In sostanza esistono infinite possibili scelte, ciascuna delle
quali potrebbe rivelarsi più meno felice, ma costituirebbe comunque una maggiorazione per la probabilità d’errore di almeno
una - upla.
5.2 - La Disuguaglianza di Jensen
Per dimostrare il teorema di Shannon è utile impiegare la
disuguaglianza di Jensen che trova applicazione anche nella trattazione di molti altri argomenti legati alla Teoria dell’Informazione.
Per provare tale disuguaglianza, cominciamo con il definire
un sottoinsieme convesso di uno spazio vettoriale:
Definizione 5.1
Un sottoinsieme di uno spazio vettoriale su o su è convesso se
comunque presi due suoi elementi
e un reale non negativo non
maggiore di risulta:
(
)
(5.2.1)
***********
La precedente in sostanza ci dice che un insieme è convesso se contiene tutte le corde che uniscono coppie di suoi
elementi. Un esempio di regione convessa in
è l’insieme di
tutte le possibili distribuzioni di massa di probabilità di una
variabile aleatoria discreta che assume valori appartenenti ad un
insieme di cardinalità . Ad esempio in
tale regione è
costituita dalla della retta
appartenente al primo
quadrante. Nel caso di
(vedi Fig. 5.1) da tutti i punti del piano
di coordinate non negative.
Il Teorema di Shannon sulla Codifica di Canale
81
È facile convincersi del fatto che:
l’intersezione (anche infinita) d’insiemi convessi e convessa
l’insieme ottenuto moltiplicando tutti gli elementi di un
convesso per uno stesso scalare è
convesso.
è convesso l’insieme che
ha per elementi tutte le possibili
somme tra elementi appartenenti
a due insiemi convessi.
1
1
1
Fig. 5.1
Definizione 5.2
Una funzione ( ) a valori in
si dice concava su un sottoinsieme
convesso del suo dominio se comunque presi due elementi
appartenenti ad e un reale non negativo
risulta:
( )
(
)(
)
(
(
)
)
(5.2.2)
( )
(
)(
)
(
(
)
)
(5.2.3)
Se risulta
la funzione si dice strettamente concava.
***********
Le definizioni di funzione convessa e strettamente convessa
sono rispettivamente uguali alle (5.2.2) e (5.2.3) salvo il fatto che
le diseguaglianze cambiano di verso.
Nel caso di funzioni definite su sottoinsiemi di la (5.2.2)
caratterizza le funzioni con concavità rivolta verso il basso in tutti
i punti di un intervallo, di misura non necessariamente finita, che
è l’unico possibile sottoinsieme convesso di .
È noto che, laddove esiste, la derivata seconda di una funzione concava è non positiva.
Inoltre, la combinazione lineare di funzioni concave è
concava, lo è strettamente se anche una sola delle funzioni lo è.
82
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
Per verificarlo è sufficiente sommare termine a termine le (5.2.2)
scritte per ciascuno degli addendi della combinazione lineare.
Osservando la (5.2.2) notiamo che se si interpretano ed
come i valori che può assumere una V.A. generalmente multidimensionali e con ed
rispettivamente le probabilità che
essa li assuma, potremo affermare che per una funzione concava
su un convesso che contenga tutti i valori che la V.A. può assumere ed una V.A. del tipo citato vale la proprietà:
( )
( )
(5.2.4)
Vogliamo mostrare che la precedente è valida in generale
cioè per variabili aleatorie discrete generalmente multidimensionali che possano assumere valori.
Abbiamo mostrato che la (5.2.4) è vera per
, per
lo è banalmente supponiamo quindi che lo sia per
e mostriamo che allora lo è anche per .
Se la (5.2.4) è vera per
quale che sia la dmp di si ha:
∑
( )
(∑(
))
(5.2.5)
dove
rappresenta la probabilità che la variabile aleatoria
assuma il valore .
Risulta:
∑
( )
∑
∑
(
Osserviamo che ∑
∑
(
∑
)
(
)
(5.2.6)
)
soddisfa tutte le proprietà di una
dmp quindi in virtù della (5.2.5) possiamo scrivere:
83
Il Teorema di Shannon sulla Codifica di Canale
∑
( )
∑
∑
( (
∑
(
∑
( ( ))
)
))
(
(5.2.7)
)
dove è certamente un punto appartenente al convesso su cui è
definita la funzione.
All’ultimo membro della precedente potremo applicare la
(5.2.2) ottenendo:
∑
( )
∑
( ( ))
∑
(
)
(∑
∑
(∑
∑
(
)
)
(5.2.8)
)
( )
ovviamente la (5.2.5) diventa
∑
( )
(∑(
))
(5.2.9)
se la ( ) anziché essere concava è convessa.
5.3 - Il Teorema di Shannon sulla Codifica di Canale.
Consideriamo la probabilità d’errore
condizionata
all’emissione dello -esimo segnale di una data -upla.
è in
realtà una funzione della -upla nel suo complesso, in quanto il
cambiamento anche di un solo segnale nella -upla potrebbe comportare la modifica della regione di decisione associata ad
.
Per rimarcare questo fatto, porremo in quel che segue
(
).
84
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
Dovendo calcolare la media citata nel precedente paragrafo,
e tenuto conto delle considerazioni fatte in merito, possiamo scegliere ad arbitrio una dmp
(
) per le -uple di
possibili segnali. Per semplicità supponiamo che
(
)
∏
(
)
(5.3.1)
e che tutte le dmp marginali che compaiono nella produttoria
siano identiche.
Per non appesantire troppo la notazione calcoliamo la
tale scelta non lede la generalità dei calcoli in quanto come vedremo il risultato finale è indipendente dall’indice . Avremo quindi:
∑∑
∑∏
(
)
(
)
(5.3.2)
utilizzando il bound di Gallager otteniamo:
∑
∑∏
(
)
(5.3.3)
∫ [∑( (
))
]
(
)
che, portando la media all’interno dell’integrale, fornisce:
∫∑
(
)
(
)
(5.3.4)
{∑
∑ ∏
(
) [∑ ( (
Osserviamo che la quantità
∑
))
( (
] }
))
, è reale
positiva e può intendersi come il valore assunto dalla funzione
(
)
(5.3.5)
85
Il Teorema di Shannon sulla Codifica di Canale
dei messaggi
.
Nel derivare il bound di Gallager avevamo supposto
se lo limitiamo all’intervallo
, è una funzione concava di
A possiamo quindi applicare la disuguaglianza di Jensen
(vedi § precedente). Maggiorando così il contenuto delle parentesi
graffe della (5.3.4)
∑
∑ ∏
(
[∑
) [∑ ( ( |
∑ ∏
[∑ ∑
[(
(
∑ ∏
[∑ ∑
(
)∑
))
( )
)∑( ( |
))
]
(
))
]
)( ( |
(
]
)( ( |
))
)( (
(5.3.6)
]
))
]
Abbiamo potuto scrivere l’ultimo membro della precedente
in quanto la quantità ∑
(
)( ( |
, come ci si con-
))
vince facilmente, non dipende dall’indice .
La precedente ci consente di maggiorare ulteriormente la
ottenendo:
∫∑
(
)
(
)
(5.3.7)
[(
)∑
(
)( ( |
))
]
86
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
(
) ∫ [∑
( )( (
))
]
Ulteriori elaborazioni si possono ottenere osservando che il
contenuto delle parentesi quadre può intendersi come il valor
medio della ( ( ))
multidimensionale .
pensata come funzione della V.A.
Ciò premesso, ipotizziamo che:
(
)
∏
(
),
cioè che il canale sia privo di memoria, se utilizzato in tempi
diversi per inviare le componenti del segnale, ovvero che, per inviare dette componenti, si utilizzino contemporaneamente
canali identici mutuamente indipendenti.
Sotto tale ipotesi, ricordando che la media di un prodotto è
uguale al prodotto delle medie, la (5.3.7) si può riscrivere come
segue:
∫[ ∑
∏( ( |
∑
))
∫ [∏ ∑
∑
(
)
(5.3.8)
]
(
)( ( |
))
]
la quale limitandoci a considerare delle
( )
∏
( ) forni-
sce ancora:
∫ [∏ ∑
(
)( ( |
))
]
(5.3.9)
87
Il Teorema di Shannon sulla Codifica di Canale
∫ ∏ [∑ (
)( (
{∫ [∑ (
))
)( (
))
]
]
}
È opportuno ribadire che la maggiorazione appena ricavata,
essendo basata sul bound di Gallager, è del tutto generale quindi
si può applica con semplici modifiche anche a canali discreti.
Pertanto, prima di procedere oltre, provvediamo a riscrivere la (5.3.9) per spazi d’uscita discreti.
Per farlo dobbiamo sostituire l’integrale con una sommatoria estesa a tutti i possibili simboli dell’alfabeto d’uscita che
supporremo di cardinalità , e la densità di probabilità condizionata che caratterizza il canale con uscita nel continuo con le dmp
condizionate del DMC ottenendo:
[∑ (∑ (
)( (
))
)
]
(5.3.10)
è utile riscrivere la precedente nella forma:
{
{
[∑
[∑
{
(
(∑
(∑
[∑
(∑
)( (
(
)( (
(
)( (
))
)
))
] }
)
))
(5.3.11)
]}
)
]}
che ne rende esplicita la dipendenza dal rapporto
.
Ricordiamo che è il numero di segnali utilizzati e la dimensione del sottospazio in cui detti segnali sono contenuti, si
può quindi interpretate come la massima quantità d’informazione, espressa in nat, che i parametri fissati per il sistema consentirebbero di affidare a ogni dimensione del sottospazio. rappresenta quindi il data rate del sistema.
88
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
La (5.3.11) si può esprimere in forma più compatta ponendo:
(
[∑ (∑ ( )( (
( ))
))
)
]
(5.3.12)
Sostituendo la precedente nella (5.3.11) otteniamo:
(
(
( ))
)
(5.3.13)
Il minimo al variare di e ( ) del secondo membro della precedente fornisce la maggiorazione più stretta.
La minimizzazione citata equivale alla ricerca di:
( )
(
( ))
( )
(5.3.14)
Ovviamente tale ricerca deve tener conto delle limitazioni
poste su , che deve appartenere all’intervallo
e del fatto che
la ( ) è una dmp.
Osserviamo infine che la maggiorazione appena ricavata
non dipende da quindi essa è anche una maggiorazione per la
probabilità d’errore media del sistema. Tutto ciò considerato possiamo scrivere:
( )
(5.3.15)
Appare chiaro quanto siano importanti le proprietà della
(
( )). In quel che segue per semplificare la notazione porre)
mo ( )
, (
, e indicheremo la distribuzione di
massa ( ) con
Osserviamo che, indipendentemente dalla ( ), risulta:
(
)
[∑ (∑
(
)
)
]
(5.3.16)
[∑ ∑
si ha inoltre:
]
89
Il Teorema di Shannon sulla Codifica di Canale
(
)
{ [∑
(∑
(
|
∑
)
)
]}
|
|
|
(∑
{(
(
)
)
∑
[∑
(
)
)
]
(
)
]
|
)
[∑
(
)
]}
|
∑
|
(
[∑
∑ (∑
))
(
∑
(
(
∑
)
∑
{
{
∑
)
(5.3.17)
(
)
|
}}
)
∑
∑∑
∑∑
(
)
( )
Pertanto la pendenza della ( ) , valutata per
, è
pari all’informazione mutua del canale connesso ad una sorgente
che emette simboli distribuiti secondo la . Abbiamo indicato la
suddetta informazione mutua come una ( ) proprio per evidenziarne la dipendenza dalla distribuzione sotto il nostro controllo.
Abbiamo già visto che ( )
, se risulta ( )
allora la
(
) che, come abbiamo visto attraversa l’asse delle nell’origine, assume certamente valori positivi in un intorno destro di
quest’ultima.
Si può anche verificare che la ( ), se ( )
, è una
funzione strettamente crescente e che la sua derivata seconda è
non positiva per
. Essa ha quindi la concavità rivolta verso
90
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
il basso, salvo alcune eccezioni in cui la derivata seconda è nulla,
ma tali casi non hanno interesse pratico.
Il nostro scopo è quello di massimizzare la ( )
,
consideriamo per il momento solo la dipendenza da , la derivata
parziale rispetto a della funzione in parola vale:
(
)
(5.3.18)
(
affinché si annulli deve risultare
)
. Sappiamo che
(
)
non è crescente poiché sua derivata è non positiva, pertanto la
(5.3.18) non può annullarsi per
se:
(
)
|
(5.3.19)
Ovvero se
(
per i valori di
)
|
( )
(5.3.20)
(
che soddisfano la (5.3.19) risulta,
)
quindi ( )
è strettamente crescente nell’intervallo
ed assume il suo massimo valore nell’estremo destro dell’intervallo; avremo cioè:
(
)
(
(
)
)
|
(5.3.21)
per
(
)
|
( )
(5.3.22)
la (5.3.18) si annulla certamente per un valore di
all’intervallo
che risolve l’equazione
(
appartenente
)
. Tale zero
corrisponde certamente a un massimo come si constata facil-
91
Il Teorema di Shannon sulla Codifica di Canale
mente analizzando il segno della (5.3.18). La ( ) nel range di
valori di dato dalla (5.3.22) è implicitamente definita dalle:
(
)
(
(
)
(
)
(5.3.23)
)
{
dalle quali si ottiene:
(
(
(
(
)
)
)
(
)
)
(
)
(
(
)
)
(5.3.24)
che comporta:
(
(
(
)
)
)
(
)
(5.3.25)
Nelle ultime due equazioni il secondo membro è una funzione di essendo la soluzione della seconda delle (5.3.23) che
è unica in quanto nell’intervallo di interesse abbiamo visto che la
(
)
è una funzione monotona di .
Per i valori di
( ) la (5.3.18) assumerebbe valori negativi quindi la ( )
sarebbe una funzione decrescente di
quindi il suo massimo lo raggiungerebbe per
, ma ( )
(
)
indipendentemente da ne seguirebbe
e la (5.3.15) si
rivelerebbe del tutto inutile.
In conclusione la ( ) per valori di appartenenti all’intervallo [
(
)
|
] è un tratto di retta parallela alla secon-
da bisettrice che tocca l’asse delle ordinate in
(
(
)) alla
quale si raccorda un tratto di curva con concavità rivolta verso
l’alto che tocca l’asse delle ascisse in
I( ) , come si verifica
92
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
facilmente valutando le (5.3.23) per
. A questo punto non
resta che massimizzare la ( ( )) rispetto alla ( ).
La che massimizza la ( ) dipende dal canale che si sta
utilizzando, e, per fissato canale può dipendere dal rate , in
particolare esistono canali per cui la ( ) è massimizzata da
un'unica , canali per i quali esistono delle distinte che massimizzano la funzione in parola in intervalli di disgiunti e canali
per cui la ( ) che massimizza la ( ) varia con continuità con
. In ogni caso il fatto che la ( ) sia una funzione limitata
convessa per
I( ) , assicura che la massimizzazione
desiderata è in pratica l’inviluppo superiore di tutte le ( ), si
può dimostrare che detta funzione è anch’essa convessa,
( ( )) è la
decrescente e non negativa per
, dove
capacità di canale e che in questo contesto assume un ruolo fondamentale.
In sostanza abbiamo appena dimostrato il:
Teorema 5.1: Teorema di Shannon sulla codifica di canale
Dato un qualsiasi canale discreto privo di memoria, esiste un codice
con un rate [
], con parole di
simboli per il quale risulta:
( )
(5.3.26)
dove è la probabilità d’errore ottenuta tramite un ricevitore a massima
verosimiglianza ed ( ) una funzione decrescente, convessa e maggiore di
zero nell’intervallo
.
***********
Il precedente teorema in pratica mostra che se aumentiamo
mantenendo costante possiamo individuare codici con probabilità d’errore piccola a piacere purché risulti
. È opportuno
tuttavia osservare che al crescere di il numero di parole di
codice necessario per mantenere costante il rate cresce anch’esso,
“purtroppo” con legge esponenziale, portando così, spesso a livelli improponibili, la complessità di decodifica. Da qui la necessità
di individuare dei codici su spazi dotati di strutture algebriche
93
Il Teorema di Shannon sulla Codifica di Canale
molto ricche che permettano operazioni di codifica e decodifica
relativamente semplici, malgrado l’elevato numero di parole che li
costituiscono.
Potrebbe sorgere una perplessità circa il risultato appena ottenuto, si potrebbe infatti sospettare che il bound ottenuto per la
probabilità d’errore media del codice nasconda delle probabilità
d’errore condizionate all’emissione di una specifica parola del codice molto maggiore del bound relativo alla probabilità d’errore
media.
Per fugare questa, legittima, perplessità consideriamo uno
spazio di dimensione , o che è lo stesso un codice costituito da
parole di simboli emessi consecutivamente da un codificatore di
canale. Il teorema di Shannon ci garantisce che esiste almeno un
set di
parole tra le
possibili scelte, che esibisce una probabilità d’errore media non maggiore di:
(
(
)
)
(5.3.27)
Se assumiamo che le parole che costituiscono il codice abbiano
uguale probabilità di essere emesse, allora avremo:
∑
(5.3.28)
Scartando gli segnali cui corrispondono le probabilità d’errore
più grandi, ci rendiamo conto che la probabilità d’errore associata
ad uno qualsiasi dei segnali sopravvissuti non può essere maggiore
di
(
(
)
)
. Se così non fosse, almeno ad un termine dei so(
)
(
)
pravvissuti corrisponderebbe una
vi sarebbero
quindi almeno
segnali, quelli scartati più quello appena
(
citato, con
(
)
(
(
(
)
)
e potremmo scrivere:
)
)
(
(
)
)
contro l’ipotesi che il codice soddisfa la (5.3.27).
(
(
)
)
(5.3.29)
94
Capitolo - 5 - Appunti di Teoria dell’Informazione e Codici
Per ogni
scrivere:
del gruppo dei sopravvissuti potremo allora
(
(
)
)
(
(
(
(
(
(
(
)
(
(
)
( )
)
( )
))
)
)
)
)
(5.3.30)
(
( )
)
Pertanto esiste certamente un codice costituito da parole di K
simboli per il quale la peggiore delle probabilità d’errore condizionata supera il bound sulla probabilità d’errore media per al più un
fattore .
Capitolo - 6
STRUTTURE ALGEBRICHE
Al fine di introdurre il concetto di codice è opportuno
ricordare alcune definizioni:
6.1 - Gruppo
Un insieme non vuoto in cui si è definita una legge di
composizione interna che indicheremo con è un gruppo rispetto
a tale legge se valgono le seguenti proprietà:
(
)
(
)
(6.1.1)
Se la legge di composizione interna è anche commutativa
è un gruppo commutativo o abeliano.
6.2 - Anello
Un insieme nel quale siano state individuate due leggi di
composizione interna che chiameremo addizione e moltiplicazione è un anello se:
è un gruppo commutativo rispetto all’addizione;
- la moltiplicazione gode della proprietà associativa;
- vale la legge distributiva della moltiplicazione rispetto all’addizione sia a destra che a sinistra.
Se la moltiplicazione gode anche della proprietà commutativa diremo che è un anello commutativo, se esiste in l’elemento
neutro per la moltiplicazione diremo che è un anello con identità.
6.3 - Campo
Un insieme che sia un anello commutativo con identità è
anche un campo se privato dell’elemento neutro rispetto all’addizione è un gruppo commutativo rispetto alla moltiplicazione.
96
Capitolo - 6 - Appunti di Teoria dell’Informazione e Codici
L’insieme dei numeri razionali, l’insieme dei reali e l’insieme dei complessi sono campi. Si verifica facilmente che anche l’insieme
, effettuando l’addizione senza riporto, cioè ponendo
e con la usuale moltiplicazione in è un campo
che indicheremo con .
6.4 - Spazio vettoriale
Dato un gruppo abeliano ed un campo si dice che è
uno spazio vettoriale sul campo se si è individuata una legge di
composizione esterna, detta prodotto per scalari, che associa ad
ogni elemento di
un elemento di e che comunque scelti
e
goda delle proprietà:
(
)
(
)
(6.4.1)
{
dove e indicano rispettivamente gli elementi neutri dell’addizione e della moltiplicazione del campo, quello del gruppo, che
chiameremo anche origine dello spazio.
Capitolo - 7
DISTANZA DI HAMMING
7.1 - Lo Spazio
Fissato un naturale
consideriamo l’insieme
di tutte
le -uple ordinate d’elementi di . Ci si rende conto facilmente
che
è un gruppo rispetto alla legge di composizione interna
che associa ad ogni coppia di elementi di
quello ottenuto componendo termine a termine tramite l’addizione in gli elementi
omologhi delle due -uple. Si constata che ogni -upla è l’opposta
di se stessa e che l’elemento neutro del gruppo è la -upla
identicamente nulla.
è anche uno spazio vettoriale di dimensione sopra il
campo , potremo quindi pensare gli elementi di
come vettori
riga con componenti che assumono valori in . In quel che segue indicheremo gli elementi di
con lettere corsive minuscole
in grassetto e li chiameremo parole di , o semplicemente parole,
le componenti della generica parola saranno chiamate bit (nel senso di Binary digIT, non di Binary Informationn uniT).
È opportuno tenere presente che:
è uno spazio metrico, possiamo infatti assumere come distanza tra due parole di
la somma in delle somme in
delle componenti omologhe;
è uno spazio normato potendosi assumere come norma
del generico elemento di
la distanza di detto elemento dall’origine di , cioè dalla parola identicamente nulla.
In quel che segue indicheremo l’addizione in con .
La distanza sopra introdotta è detta distanza di Hamming.
Essa in pratica è espressa dal numero di bit corrispondenti diversi
delle due parole; in formule:
98
Capitolo - 7 - Appunti di Teoria dell’Informazione e Codici
(
)
∑
(7.1.1)
Che la distanza di Hamming sia effettivamente una metrica
si verifica facilmente, essa infatti è non negativa ed è nulla se e
solo se le parole sono uguali, inoltre si può facilmente verificare
che vale la disuguaglianza triangolare, cioè che date tre parole
di
risulta:
(
)
(
)
(
)
(7.1.2)
per sincerarsene basta esplicitare la precedente:
∑
∑
∑
(7.1.3)
ed osservare che tutti gli addendi delle sommatorie che compaiono nella precedente sono non negativi, pertanto è sufficiente verificare che la (7.1.3) sia soddisfatta addendo per addendo, fatto
questo facilmente verificabile effettuando prove esaustive.
La massima distanza possibile tra due parole di
vale e
si ottiene in corrispondenza a coppie di parole che siano una la
negata dell’altra, cioè ottenute mutando tutti i bit uno in zero e viceversa.
La norma di un elemento di
viene denominato peso della
parola e coincide con il numero di bit uno presenti nella parola.
La norma e la metrica appena introdotte sono tra loro
coerenti, infatti la distanza tra due elementi coincide con la norma
della differenza tra di essi. Ricordiamo che in
addizione e sottrazione coincidono, in quanto ogni elemento è l’opposto di se
stesso.
7.2 - Generalizzazione della distanza di Hamming
Dato un insieme di cardinalità consideriamo l’insieme
A . Anche su detto insieme si può introdurre la distanza di Hamming tra due suoi elementi, che anche in questo caso è espressa
Codici Lineari a Blocchi
99
dal numero di simboli corrispondenti diversi tra loro. La distanza
tra due elementi di A è quindi al più .
Si può verificare che la distanza di Hamming è una metrica
su A . Essa è non negativa, nulla se e solo se i due elementi sono
lo stesso elemento, la verifica della validità della disuguaglianza
triangolare può essere effettuata analizzando tutti i casi possibili.
Fissato un elemento di A ed un naturale
esistono
( )(
) elementi di A a distanza da . Potremmo dire che
detti elementi giacciono sulla superficie di una sfera di raggio
centrata in . Detta sfera contiene esattamente ∑
( )(
)
elementi, il numero di tali elementi, per analogia, ne costituisce il
“volume”.
Qualora A fosse anche uno spazio vettoriale, tramite la
distanza di Hamming si potrebbe individuare un “peso” per ogni
elemento di A espresso dalla distanza dell’elemento dall’origine
dello spazio, tale peso costituirebbe una possibile norma per A .
Capitolo - 8
CODICI BINARI A BLOCCHI
8.1 - Codificatore, Codice, Decodificatore
Cominciamo con alcune definizioni:
Definizione 8.1 - codificatore a blocchi
Un codificatore binario a blocchi è un’applicazione
è iniettiva il codificatore è non ambiguo.
***********
da
a
, se
Definizione 8.2 - codice binario a blocchi
Dato un codificatore da
a
chiameremo codice binario a
blocchi l’insieme
( )
. Gli elementi di
sono denominati
parole di codice.
***********
In altri termini per codice binario a blocchi intenderemo
l’insieme delle parole di
che sono immagine secondo il codificatore di almeno un elemento di , uno solo se il codificatore
è non ambiguo.
In questo contesto la finalità di un codice è quella di combattere l’effetto dei disturbi introdotti dal canale nel segnale ricevuto, tali disturbi potrebbero infatti dar luogo ad errori nella ricezione. Compito del sistema di codifica è ridurre la frequenza di
tali errori seguendo una delle seguenti strategie:
- individuare e segnalare gli errori che si verificano con maggiore probabilità.
Ciò è utile qualora:
o sia disponibile un canale di ritorno;
o non sia necessario trasmettere in tempo reale e sia quindi possibile la ritrasmissione del messaggio senza pregiudicare la qualità del servizio.
102
Capitolo - 8 - Appunti di Teoria dell’Informazione e Codici
In questo caso si parla di tecniche di tipo ARQ (Automatic
Repeat-reQuest);
- tentare, qualora la ritrasmissione non sia possibile, di correggere gli errori che più verosimilmente sono presenti nella parola ricevuta in questo caso si fa riferimento a strategie di tipo
FEC (Forward Error Correction).
In alcuni casi sono previste entrambe le strategie, cioè alcuni errori vengono rivelati e corretti, altri semplicemente segnalati.
In quel che segue ci occuperemo principalmente di sistemi
di codifica finalizzati alla FEC. La funzione di correzione sopra
citata è affidata a un’applicazione che chiameremo decodificatore.
Definizione 8.3 - decodificatore
Dato un codice binario a blocchi
, il decodificatore è un’appli-
cazione
che sulla base di un criterio prefissato, ha il compito di associare ad ogni elemento di
che si presenti all’uscita del canale l’elemento
di che verosimilmente era stato immesso nel codificatore posto all’ingresso
del canale stesso.
***********
Quanto appena detto rende chiaro che più che di codici bisognerebbe parlare di sistemi di codifica-decodifica, sia perché uno
stesso codice
(in quanto sottoinsieme di ) potrebbe essere
ottenuto con codificatori diversi, sia perché potrebbe essere decodificato con decodificatori basati su criteri diversi.
Nella pratica in effetti quando si parla di codice ci si riferisce indifferentemente, lo faremo anche noi, sia a che a
,
lasciando al contesto l’onere di rendere chiaro a cosa si stia effettivamente facendo riferimento.
Appare in conclusione chiaro che un sistema di codifica è
in realtà completamente definito solo dalla terna
.
La capacità di correzione di un codice è in pratica affidata
alla ridondanza più o meno oculatamente introdotta dal codifica-
Codici Binari a Blocchi
103
tore, ne discende che di regola
e che il codificatore è una
applicazione iniettiva.
Altrettanto evidente è che, se il codice è non ambiguo, il
criterio adottato per la scelta del decodificatore deve necessariamente essere tale che la restrizione di a
coincida con
l’applicazione inversa della restrizione di a
.
8.2 - Utilità della codifica di canale
La scelta del codice, e quella del decodificatore possono
avere un considerevole impatto sulle prestazioni del sistema di
trasmissione in termini di probabilità d’errore e di complessità del
sistema.
Va anche sottolineato che, per fissato codice, possono
essere individuati diversi decodificatori. Per taluni sistemi può
essere più qualificante ottimizzare la probabilità d’errore sul
singolo bit informativo, per altri quella sul simbolo trasmesso,
nella scelta del decodificatore se ne dovrebbe tener conto. Un
altro elemento da considerare nella scelta del sistema di codifica è
il tipo di canale, che può essere il classico AWGN, un canale
dotato di memoria, con conseguente presenza d’interferenza
intersimbolica, o un canale che introduce disturbi di tipo burst,
cioè disturbi che seppur di breve durata tendono a coinvolgere
più simboli consecutivi.
Non si può nemmeno trascurare tra i parametri da tenere in
considerazione la complessità della decodifica. Scegliere ad esempio un algoritmo di decodifica sub-ottimo, comporta in genere un
degrado delle prestazioni, detto degrado, però, potrebbe essere
ampiamente ripagato da una significativa riduzione della complessità e quindi dei costi, ovvero potrebbe essere una scelta obbligata
da limiti tecnologici contingenti.
In particolare per il momento faremo riferimento a un sistema che trasmette su un BSC (Binary Symmetric Channel) privo
di memoria. I simboli che costituiscono la generica parola di codi-
104
Capitolo - 8 - Appunti di Teoria dell’Informazione e Codici
ce vengono quindi inviati indipendentemente sul canale e ciascuno di essi avrà una probabilità
di essere rivelato in modo er-
rato, pertanto in uscita al canale avremo un elemento di
che
non è certo corrisponda all’elemento inviato.
La probabilità di ricevere una parola di
correttamente
sarà data da (
) ad esempio con
e
avremo
conseguentemente la probabilità di ricevere una parola non corretta vale
, tale probabilità è in realtà scomponibile nella somma di tante probabilità d’eventi disgiunti, precisamente eventi del tipo: “nella parola ricevuta sono presenti esattamente
errori”.
La probabilità che la parola ricevuta non sia corretta si può
quindi anche scrivere nella forma:
∑( )
(
)
(8.2.1)
dove il - esimo addendo esprime la probabilità che nella parola
ricevuta siano presenti esattamente errori. La probabilità che la
parola contenga almeno due errori si può pertanto scrivere anche
nella forma:
∑( )
(
)
(8.2.2)
nel nostro esempio tale probabilità si ridurrebbe a
.
Quanto detto mostra come il contributo alla probabilità
dell’errore singolo sia di fatto dominante essendo gli addendi della
(8.2.1) rapidamente decrescenti al crescere di 1.
1
Per verificarlo è sufficiente esprimere
) ed osservare che se
decrescente di t .
risulta (
(
)
nella forma ( ⁄
)
, pertanto (
) (
) è una funzione
Codici Binari a Blocchi
105
Disporre di un codice in grado di correggere anche un numero limitato di errori in una parola ricevuta sembrerebbe pertanto essere una scelta quasi obbligata, in realtà bisogna anche
tener presente che le capacità correttive di un codice comportano
l’introduzione di una ridondanza cioè l’introduzione di bit non destinati a trasportare informazione, ciò, a parità di tempo destinato
all’invio di una parola, comporta un aumento della banda, a meno
di non voler rallentare il flusso informativo.
Bisogna anche considerare che il confronto tra assenza e
presenza di codice andrebbe fatto a parità d’energia associata al
bit informativo, cioè tenendo conto che parte dell’energia dei bit
di informazione non codificati, in presenza di un codice, deve
essere dedicata ai bit di ridondanza, in quanto, a parità di densità
spettrale di potenza del rumore, la sul bit cresce al diminuire
della energia ad esso associata, il calcolo della (8.2.2) andrebbe
quindi effettuato introducendo un valore di che tiene conto di
ciò.
Malgrado le considerazioni appena fatte, fin quando è accettabile l’aumento della banda, l’introduzione di un codice a correzione d’errore è comunque vantaggiosa rispetto alla trasmissione non codificata.
8.3 - La decodifica a massima verosimiglianza
In quel che segue ci riferiremo a canali BSC ed adotteremo
la tecnica di decodifica a massima verosimiglianza (MV), nel caso
in cui i bit informativi emessi dalla sorgente siano equiprobabili,
che, com’è noto, equivale alla maximum a posteriori probability
(MAP). Osserviamo che in questo caso sono equiprobabili anche
tutte le parole di
e quindi, in virtù dell’iniettività del codificatore , lo saranno anche tutte le parole del codice .
Sotto quest’ipotesi, indicando con la generica parola di
codice, con
la parola ricevuta e con ̂ la parola di codice
scelta dal decodificatore, la regola di decisione sarà:
106
Capitolo - 8 - Appunti di Teoria dell’Informazione e Codici
Regola di decisione a Massima Verosimiglianza
Scegli la parola di codice ̂ per la quale è massima la probabilità di
ricevere , atteso che ̂ sia la parola trasmessa, in simboli:
( (
̂
))
(8.3.1)
Qualora il massimo non dovesse essere unico, scegli a caso, tra le parole di
codice che lo raggiungono.
***********
Nella precedente e rappresentano VV.AA. multidimensionali che assumono rispettivamente valori in
ed in .
Considerato che nel nostro caso risulta:
(
)
(
)
(
dove
) (
(
)
)
(8.3.2)
rappresenta il numero di bit in cui differisce da Se
il massimo della (8.3.2) si raggiunge per tutti i valori di che
rendono minimo. Qualora ciò avvenga in corrispondenza ad
un'unica parola di codice, si sceglie quella. Se dovessero esservi
più parole per le quali ciò avviene, il decodificatore, o, in armonia
con la regola MV, sceglie a caso, o segnala al trasmettitore la
presenza di errori nella parola ricevuta. Va da se che l’ultima opzione è praticabile solo se si dispone di un canale di ritorno e se la
trasmissione non deve necessariamente avvenire in tempo reale.
Osserviamo che , è la distanza di Hamming tra e ,
quindi il criterio di decisione a massima verosimiglianza su canale
BSC consiste in pratica nello scegliere a caso, tra le parole del codice a minima distanza di Hamming dalla parola ricevuta.
8.4 - Definizioni e teoremi sui codici rivelatori e correttori
Supponiamo che il trasmettitore invii una parola e che per
effetto dei disturbi venga ricevuta una parola diversa da . Si
constata che esiste certamente
che ci permette di scrivere
. Chiameremo evento o pattern d’errore.
Codici Binari a Blocchi
107
Definizione 8.4
Un pattern di errore è rilevabile se risulta:
(8.4.1)
essendo il complementare di rispetto a .
Viceversa diremo che non è rilevabile se:
(8.4.2)
***********
Ad ogni pattern d’errore corrisponde un peso. sistono
( ) eventi d’errore di peso Osserviamo che le posizioni dei bit
uno nel pattern d’errore identificano i bit errati nella parola ricevuta.
Si dice che un codice è in grado di rivelare errori se rivela
tutti i pattern di errore di peso indipendentemente dalla parola
di codice trasmessa.
Definizione 8.5
Siano e
un codice:
due parole di
. Si definisce distanza minima (
( ( ) ( ))
) di
(8.4.3)
***********
Teorema 8.1
Un codice binario a blocchi, rivela tutti gli errori di peso se e solo se
.
Dimostrazione:
Necessarietà:
Se il codice rivela tutti gli errori di peso non superiore a ,
allora, comunque scelta una parola di codice ed un pattern
d’errore di peso , la parola
non può essere una parola di
codice.
Ammettiamo per assurdo che
esisterebbero allora
almeno due parole di codice, siano e , tali che ( )
.
108
Capitolo - 8 - Appunti di Teoria dell’Informazione e Codici
Consideriamo il pattern d’errore
, risulta:
(8.4.4)
esisterebbe quindi un evento d’errore di peso
che non può essere rivelato in quanto composto con una parola di codice ne
genera un’altra.
Sufficienza:
Se
risulta:
e viene ricevuta la parola
(
)
(
, con
)
(8.4.5)
non può quindi essere una parola di codice poiché
l’errore viene pertanto rilevato.
,
***********
Definizione 8.6
Diciamo che un decodificatore è in grado di correggere un pattern
d’errore se, quale che sia la parola di codice c , risulta:
(
)
( )
(8.4.6)
Diciamo che un decodificatore è in grado di correggere errori di peso
se la precedente è vera per ogni pattern d’errore di peso .
***********
Teorema 8.2
Affinché un decodificatore MV possa correggere tutti i pattern d’errore
di peso non superiore a , il codice deve avere una
.
Dimostrazione:
Supponiamo, per assurdo, che esista un codice in grado di
correggere tutti gli errori di peso non superiore a con
. Per detto codice esisterà quindi almeno una coppia di parole di codice, e , la cui distanza è
. Esistono anche
certamente due pattern d’errore, siano ed , entrambi di peso
non maggiore di , tali che:
(8.4.7)
Codici Binari a Blocchi
Nel caso in cui
tale che
ed un
precedente.
potremo scegliere un pattern d’errore
tale che
che soddisfino la
Supponiamo adesso che venga ricevuta la parola
sua distanza da vale
quella da vale:
(
)
109
(
)
, la
(8.4.8)
pertanto il decodificatore a massima verosimiglianza decide per ,
o per una qualsiasi altra parola di codice che disti non più di da
.
Se
potremo scegliere due pattern d’errore ed
entrambi di peso che soddisfano la (8.4.7). Supponiamo ancora
una volta che venga ricevuta la parola
, la sua distanza da
vale come pure la sua distanza da pertanto, o il decodificatore
sceglie a caso tra e , ovvero decide a favore di un’altra parola
di codice che disti da
, meno di .
***********
Teorema 8.3
Un decodificatore MV è in grado di correggere tutti i pattern d’errore
di peso non superiore a
.
Dimostrazione:
Supponiamo che il canale modifichi una parola di codice
aggiungendovi un pattern d’errore di peso non superiore a .
All’ingresso del decodificatore si presenta quindi la parola
. Quale che sia
risulta
, in quanto
,
poiché dista da meno di
, inoltre:
(
Il peso di
superiore a , pertanto,
)
(8.4.9)
e quello del pattern d’errore è non
, (
)
, mentre ( )
110
Capitolo - 8 - Appunti di Teoria dell’Informazione e Codici
, quindi il decodificatore MV in corrispondenza a
( )
( ), l’errore verrà quindi corretto.
***********
restituirà
Capitolo - 9
CODICI LINEARI A BLOCCHI
9.1 - Premessa
Abbiamo visto che un codice a blocco è sostanzialmente
un’applicazione iniettiva tra
e
con
gli
bit aggiunti consentono in pratica di migliorare le prestazioni del sistema introducendo un’opportuna ridondanza ai bit informativi.
Osserviamo che al crescere di cresce, con legge esponenziale, il numero delle parole di codice. Ci si rende conto che in
queste condizioni la tecnica di decodifica, consistente in una ricerca esaustiva su una tabella (in pratica un banco di memoria)
che associa ad ogni possibile elemento di
l’elemento di
che
più “verosimilmente” è stato trasmesso diventa in breve impraticabile a causa delle eccessive dimensioni della succitata tabella, ovvero perché si preferisce utilizzare la memoria del sistema per altri
scopi.
Queste considerazioni inducono alla progettazione di codici
che permettano di adottare delle tecniche di decodifica di tipo algoritmico, o che quantomeno limitino la quantità di memoria necessaria per effettuare la ricerca sopra citata.
Tale risultato può essere ottenuto ad esempio se si progetta
un codice in modo da individuare nel sottoinsieme una qualche
struttura algebrica. Tanto più ricca sarà tale struttura, tanto maggiore sarà la possibilità di individuare algoritmi di decodifica efficienti.
9.2 - Morfismi
È utile introdurre alcune definizioni
112
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
Definizione 9.1 - omomorfismo
Un omomorfismo è un’applicazione
e come codominio un gruppo tale che
(
)
avente come dominio un gruppo
( )
( )
(9.2.1)
***********
Nella precedente il segno indica la legge di composizione
interna relativa al gruppo in cui si opera.
Definizione 9.2 - monomorfismo
Un monomorfismo è un omomorfismo iniettivo.
***********
Definizione 9.3 - isomorfismo
Un monomorfismo suriettivo è un isomorfismo.
***********
Si può dimostrare che l’insieme immagine del dominio di
un omomorfismo ( )
è un sottogruppo del gruppo
d’arrivo. Per sottogruppo s’intende un sottoinsieme di un gruppo
che ha la struttura di gruppo rispetto alla stessa legge di composizione interna del gruppo in cui è contenuto.
9.3 - Schema di principio di un codice lineare a blocco
Un’importante classe di codici a blocco è quella dei codici
lineari. Un codificatore lineare è concettualmente costituito da
(vedi Fig. 9.1) un registro d’ingresso dotato di celle, da un banco
di sommatori ciascuno dei quali con un numero di ingressi
compreso tra e e da un registro di uscita costituito da celle
connesse alle uscite dei sommatori corrispondenti. Questi ultimi,
nel caso dei codici binari, effettuano le somme in . Conveniamo
che un sommatore con un solo ingresso equivale ad una connessione diretta tra la cella d’ingresso e quella di uscita corrispondente al sommatore.
Codici Lineari a Blocchi
113
I registri sopra citati possono essere in pratica registri a
scorrimento (shift register), in questo caso la sorgente emette una
sequenza di bit, non appena il registro d’ingresso è carico, cioè
S
1
2 3
4 5 6
7 8 9 10 11
Tclk in
Tclk out
1 2 3
4 5 6
7 8 9 10 11 12 13 14 15
Fig. 9.1 - Schema di principio di un codice di Hamming 15,11
dopo periodi del suo clock, l’uscita dei sommatori, che potrebbero essere realizzati con delle porte logiche di tipo XOR, viene
utilizzata per settare le celle del registro di uscita che verrà
quindi completamente scaricato nel tempo necessario a ricaricare
con i successivi bit il registro di ingresso.
In sostanza, se
e
indicano rispettivamente i periodi di clock del registro d’ingresso e di quello d’uscita, deve risultare
.
9.4 - Matrice generatrice del codice
I codici lineari a blocco sono anche chiamati codici a controllo di parità (parity check code) in quanto il generico elemento
del registro d’uscita, vale uno ogniqualvolta la somma in senso
ordinario dei valori delle celle di ingresso a cui è connesso è un
numero dispari e vale zero altrimenti.
Se indichiamo con una parola di
e con
( ) la
corrispondente parola di
in uscita dal codificatore, l’ esimo
bit della parola d’uscita può esprimersi nella forma:
(9.4.1)
114
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
dove il generico
è un coefficiente che vale se un ingresso
del -esimo sommatore è connesso alla -esima cella del registro di
ingresso e vale altrimenti.
Ricordiamoci che tutte le operazioni delle (9.4.1) sono
effettuate secondo le regole del campo .
Un codice definito tramite le (9.4.1) si dice lineare in quanto, come si verifica facilmente, la parola di codice ottenuta in corrispondenza alla somma di due qualsiasi parole di
è la somma
in
delle rispettive parole di codice.
e
sono gruppi, ed un codificatore lineare è un omomorfismo, ovviamente, è auspicabile che sia anche un monomorfismo, onde evitare che a due parole distinte di
corrisponda la
stessa parola di codice in .
Il codice è pertanto un sottogruppo di .
Se pensiamo e come vettori riga le (9.4.1) si possono
rappresentare sotto forma matriciale:
(9.4.2)
dove è una matrice
il cui generico elemento è
detta matrice generatrice del codice.
.
è
Si osservi che le righe della matrice , sono le parole di
codice che vengono generate in corrispondenza agli elementi che
costituiscono la base canonica di . Ci si convince anche abbastanza facilmente del fatto che le righe di generano mediante
tutte le loro possibili combinazioni lineari , che oltre ad essere
un sottogruppo di
ne è anche un sottospazio. Ovviamente affinché il codice non sia ambiguo deve essere un monomorfismo.
Una condizione necessaria e sufficiente affinché sia un
monomorfismo è che le righe della sua matrice generatrice siano
linearmente indipendenti.
Codici Lineari a Blocchi
115
9.5 - Distribuzione dei pesi di un codice lineare a blocco
Abbiamo detto che la somma di due parole di un codice
lineare è una parola di codice, ciò comporta che la parola identicamente nulla in un codice lineare è sempre una parola di codice, in
quanto ottenibile sommando ad una qualunque parola del codice
se stessa, indicando con la parola identicamente nulla per un
codice lineare avremo:
(
)
(
)
(9.5.1)
ma, per fissato , al variare di in si ottengono tutte le parole
di codice, in sostanza fissata una distanza di Hamming ogni parola
di un codice lineare vedrà lo stesso numero di parole di codice a
quella distanza. Tale proprietà si rivela utile ad esempio nel calcolo della probabilità d’errore in quanto la probabilità d’errore condizionata all’invio di una parola di codice non dipende dalla particolare parola inviata, ed è quindi uguale alla probabilità d’errore
non condizionata.
Dalla (9.5.1) si deduce inoltre facilmente che per calcolare
la distanza minima del codice è sufficiente individuare la parola
non nulla di peso minimo, che è evidentemente la parola a minima distanza di Hamming dalla parola nulla, ovviamente non è
detto che tale parola sia unica.
La (9.5.1) ci suggerisce di introdurre la cosiddetta distribuzione dei pesi del codice.
Definizione 9.4 –Distribuzione dei pesi di un codice lineare
Dato un codice lineare
per distribuzione dei pesi s’intende una
applicazione
( ) , definita sull’insieme dei naturali non maggiori di , a
valori in ; che associa ad ogni elemento del suo dominio il numero di parole
di codice che hanno peso pari ad esso.
***********
È facile intuire che le prestazioni di un codice sono in prima istanza influenzate dalla sua distanza minima, che coincide con
116
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
il più piccolo elemento non nullo del dominio di
( ) cui corrisponde un’immagine diversa da zero, ma dipendono anche dalla
( ) nel suo insieme.
9.6 - Capacità di rivelazione di un codice lineare a blocco
Per la capacità di rivelazione di un codice lineare a blocco
vale il seguente teorema:
Teorema 9.1
Un decodificatore a massima verosimiglianza per un codice lineare non
è in grado di rivelare tutti e soli gli eventi d’errore che coincidono con una
parola di codice.
Dimostrazione:
Se il canale fa sì che ad una parola di codice venga aggiunto un pattern d’errore che coincide con una parola di codice
in ingresso al decodificatore si presenterà la parola
, ma il
codice è lineare quindi
è una parola di codice pertanto
l’errore non sarà rivelato.
Viceversa se un pattern d’errore non viene rivelato, allora
deve esistere una parola di codice tale che
essendo
la parola trasmessa. L’eguaglianza appena scritta comporta:
(9.6.1)
pertanto è una parola di codice.
***********
9.7 - Probabilità di non rivelazione d’errore di un codice
lineare
Ci proponiamo di calcolare la probabilità che un codice
lineare, impiegato per la sola rivelazione d’errore, non ne riveli la
presenza nella parola ricevuta, sotto l’ipotesi che il codice venga
utilizzato su un canale BSC e che il decodificatore sia a MV.
Sappiamo che (vedi Teorema 9.1) gli unici pattern d’errore
non rivelati sono quelli che coincidono con una parola di codice.
Codici Lineari a Blocchi
117
La probabilità che si presenti un dato pattern d’errore ̂ dipende
esclusivamente dal suo peso e vale in particolare:
̂
(
)
(9.7.1)
Tra tutti gli ( ) possibili pattern d’errore di peso non verranno
rivelati soltanto quelli che coincidono con una parola di codice,
cioè tanti quante sono le parole di codice di quel peso. Poiché i
pattern d’errore sono tra loro indipendenti, la probabilità
( )
che un errore non venga rivelato dal codice vale:
( )
∑
() (
)
(9.7.2)
La precedente presuppone la conoscenza della distribuzione dei pesi. Purtroppo detta funzione non è nota per molti dei codici d’uso comune, in questo caso può essere utile una maggiorazione della (9.7.2) che si basa sulla considerazione che in ogni
caso deve essere:
()
( )
(9.7.3)
non possono cioè esservi più pattern d’errore di peso di quante
non siano le parole di
aventi quel peso. Potremo quindi certamente scrivere:
( )
∑ ( )
(
)
(9.7.4)
9.8 - Laterali di un sottogruppo
In questo paragrafo utilizzeremo la notazione moltiplicativa
per indicare la legge di composizione di un gruppo e indicheremo
con l’elemento neutro rispetto ad essa.
Consideriamo un gruppo abeliano ed un suo sottogruppo
è quindi chiuso rispetto alla legge di composizione di .
118
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
Consideriamo un generico elemento non appartenente a
. Se componiamo con gli elementi di otteniamo un sottoinsieme di disgiunto da . Se, infatti, risultasse che, per un qualche elemento
di ,
, ciò implicherebbe che
, quindi
, ma se
allora, essendo un gruppo, vi appartiene anche , contro l’ipotesi.
viene denominato laterale, coinsieme o coset di .
Consideriamo adesso, se esiste, un elemento che non appartiene né a né a , sia . Anche , composto con gli elementi di , genera un sottoinsieme
di disgiunto da , ma an
che da ; se infatti esistesse
tale che
˜
, ciò
implicherebbe
˜
quindi
contraddicendo l’ipotesi. Possiamo quindi concludere che i laterali di un
sottogruppo se non sono disgiunti sono coincidenti.
Ogni sottogruppo induce quindi nel gruppo una partizione
in laterali. Si può facilmente verificare che tutti i laterali hanno la
stessa cardinalità del sottogruppo cui sono associati e che ogni
elemento di un laterale, composto con gli elementi del sottogruppo, è in grado di generare il laterale cui appartiene. È quindi
legittimo scegliere in corrispondenza a ogni laterale un suo elemento, che viene denominato rappresentante di laterale o di coinsieme,
o ancora coset leader. Il criterio di scelta può essere qualsiasi.
Ricordiamoci che stiamo considerando gruppi abeliani, se
rimuovessimo questa ipotesi ad ogni sottogruppo potrebbero essere associati dei laterali destri e sinistri, generalmente distinti,
qualora tali laterali dovessero coincidere si direbbe che il sottogruppo considerato è un sottogruppo normale.
Il fatto che tutti i laterali di un sottogruppo hanno la stessa
cardinalità consente di affermare, nel caso di gruppi finiti, che
ogni sottogruppo ha un numero d’elementi sottomultiplo di quello del gruppo in cui è contenuto.
Codici Lineari a Blocchi
119
9.9 - Decodifica tramite i rappresentanti di laterale
Tornando ai codici lineari a blocco ( ), ricordiamo che
l’insieme delle parole di un tale codice costituisce un sottogruppo
. Abbiamo anche mostrato che un codice lineare a blocco è
in grado di rivelare tutti i pattern d’errore che non coincidono con
parole di codice.
Occupiamoci adesso delle sue capacità correttive. A tal
proposito osserviamo che ogni parola ricevuta appartiene ad un
solo laterale di
rispetto a , intendendo ovviamente stesso
come un laterale. Risulta inoltre
, il pattern d’errore introdotto dal canale appartiene quindi certamente allo stesso laterale cui appartiene .
Visto che la probabilità che il canale introduca un pattern
d’errore di un dato peso decresce al crescere di quest’ultimo, l’ipotesi più verosimile è che il pattern d’errore introdotto coincida
con una parola di peso minimo appartenente allo stesso laterale
della parola ricevuta.
Dato un codice scegliamo quindi in ogni suo laterale una
parola di peso minimo. Qualora in un laterale vi siano più parole
di peso minimo ne sceglieremo una a caso fra esse. Osserviamo
che, quale che sia la parola ricevuta, esisterà una sola parola di
codice che permette di scrivere:
essendo il coset leader
del laterale a cui appartiene.
Comunque scelta una parola di codice risulta:
(
)
(
)
(9.9.1)
in quanto
è una parola di
che appartiene allo stesso
laterale di , visto che
è una parola di codice, ed è per ipotesi una parola di peso minimo di quel laterale, pertanto se adottiamo la decodifica ML dobbiamo necessariamente scegliere la parola .
Se nello stesso laterale più di una parola ha peso minimo,
ciò significa che la parola ricevuta si trova alla stessa distanza da
120
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
due o più parole di codice, in questo caso, quale che sia la scelta
effettuata tra le parole candidate, le prestazioni del decodificatore
non cambiano.
Si osservi che, qualora la parola ricevuta appartenga al codice, tale operazione non la altera in quanto il rappresentante di laterale relativo a è unico ed è ovviamente la parola identicamente
nulla.
Quanto sopra detto ci porta ad enunciare il seguente
Teorema 9.2
Un decodificatore che adotta la tecnica dei coset leader corregge tutti e
soli i pattern d’errore coincidenti con un coset leader.
***********
Un vantaggio della decodifica basata sui coset leader è
quello di restituire sempre una parola di codice, ovviamente non
sempre quella corretta. Il suo principale svantaggio consiste nel
fatto che per metterla in pratica occorre comunque effettuare una
ricerca in tutto
per individuare il laterale cui appartiene la parola, se è grande tale ricerca può diventare troppo onerosa.
9.10 - Probabilità d’errore di un codice lineare a blocchi
Il Teorema 9.2 ci suggerisce come calcolare la probabilità di
corretta decisione di un codice, impiegato su un canale BSC.
Osserviamo innanzitutto che all’uscita del decodificatore
sarà presente la parola effettivamente inviata tutte e sole le volte
che il pattern d’errore introdotto dal canale coincide con un coset
leader, considerando anche tra i pattern d’errore quello identicamente nullo che è il coset leader del codice.
La coinciderà quindi con la probabilità che il pattern di
errore sia un qualsiasi coset leader. Possiamo quindi scrivere:
∑ () (
)
(9.10.1)
Codici Lineari a Blocchi
121
dove rappresenta il massimo peso raggiunto dai coset leader ed
( ) un’applicazione che associa ad ogni intero compreso tra
ed il numero di coset leader di peso .
Dalla (9.10.1) discende facilmente:
∑ () (
)
(9.10.2)
9.11 - Codici perfetti, bound di Hamming
Una maggiorazione della probabilità d’errore può essere ottenuta ricordando il Teorema 8.3, che afferma che la capacità
correttiva di un codice è non minore di
. In altri ter-
mini il teorema afferma che la regione di decisione di ciascuna parola di codice contiene una “ipersfera” di raggio pari a in , che
contiene esattamente ∑
( ) punti.
In un codice lineare tutte le regioni di decisione hanno la
stessa forma e l’insieme dei coset leader costituisce la regione di
decisione associata alla parola nulla. Vi sono
laterali, quindi
coset leader. Il Teorema 8.3 nel caso di codici lineari implica
quindi che deve valere la disuguaglianza:
∑( )
∑ ()
(9.11.1)
la precedente va sotto il nome di Bound di Hamming i codici che lo
soddisfano come uguaglianza sono detti codici perfetti.
Quale che sia il codice lineare che stiamo considerando, i
primi
addendi dell’ultimo membro della (9.11.1) devono
necessariamente essere uguali ai corrispondenti addendi della
sommatoria a primo membro, possiamo pertanto scrivere:
∑ () (
)
∑( )
(
)
(9.11.2)
122
Capitolo - 9 - Appunti di Teoria dell’Informazione e Codici
∑( )
(
)
∑ ( )
(
)
La precedente è ovviamente soddisfatta come uguaglianza
solo dai codici perfetti, quali sono ad esempio i codici di Hamming cui accenneremo più avanti.
Capitolo - 10
CODICI SISTEMATICI
10.1 - Codici Sistematici
Quanto detto nei precedenti paragrafi ci fa comprendere
che le prestazioni di un codice lineare sono da attribuirsi sostanzialmente al sottospazio di
generato dalle righe della matrice
che se sono linearmente indipendenti costituiscono una base per il
sottospazio da esse generato. In sostanza quindi codici generati da
matrici distinte, delle stesse dimensioni, che generano però lo
stesso sottospazio di
sono, da questo punto di vista, del tutto
equivalenti.
In pratica lo spazio generato dalle righe di non cambia se
si permutano le sue righe, o se si somma ad una qualunque riga di
una combinazione lineare delle restanti.
Dato un codice lineare a blocchi, consideriamo la sua matrice e selezioniamone una sua colonna non identicamente
nulla. Supponiamo sia la -esima. Consideriamo quindi una riga di
che abbia un nella -esima colonna, supponiamo sia la -esima,
sommiamo tale riga a tutte le altre righe di che si trovano nelle
stesse condizioni. Otterremo così una matrice, sia ( ) , equivalente a la cui -esima colonna ha un solo valore in posizione esima. Operiamo adesso sulla matrice ( ) come avevamo operato
sulla con la sola accortezza di scegliere una colonna che abbia
un in una riga diversa dalla -esima, otterremo così una ( ) con
due colonne che presentano un solo valore su righe diverse.
All’ -esimo passo sceglieremo una colonna che abbia un in una
riga diversa da quelle selezionate ai passi precedenti.
Tale procedura potrà essere ripetuta al più volte, a meno
che non sia più possibile selezionare una colonna, ma ciò accade
solo nel caso in cui tutte le righe non ancora selezionate sono
124
Capitolo - 10 - Appunti di Teoria dell’Informazione e Codici
identicamente nulle, in questo caso le righe della matrice da cui
eravamo partiti non erano linearmente indipendenti, quindi non
erano in grado di generare un sottospazio di dimensione , o, che
è lo stesso, il codificatore non era un monomorfismo di
in
cioè si tratterebbe di un codice ambiguo.
Al termine della procedura sopra descritta avremo quindi
una matrice ( ) che ha almeno colonne in cui compare un solo
. Tra le colonne con un solo ne esisterà almeno una che lo ha
in corrispondenza alla prima riga, una in corrispondenza alla
seconda e cosi via fino alla -esima.
Se poi s’intende utilizzare il codice su un canale simmetrico
binario, ovvero mappando coppie di bit della parola di codice in
punti di una costellazione QAM, è anche legittimo permutare le
colonne della matrice , questa operazione equivale in sostanza ad
etichettare diversamente le dimensioni dello spazio .
È ovvio che permutando opportunamente le colonne della
( )
si può ottenere una matrice del tipo:
(10.1.1)
Un codice lineare a blocchi la cui matrice generatrice assuma la forma (10.1.1) si dice sistematico tale denominazione è dovuta al fatto che i primi bit della parola di codice coincidono
con i bit informativi, i restanti
sono utilizzati per effettuare i
controlli di parità definiti dalle colonne della matrice .
In pratica in corrispondenza a ogni codice lineare a blocco
non ambiguo esiste un codice sistematico ad esso equivalente.
L’utilizzo dei codici sistematici è auspicabile, in quanto, solo per fare un esempio, consente di non effettuare nessuna decodifica sulla parola ricevuta, limitandosi ad osservarne i primi bit,
compensando, in questo caso, il degrado delle prestazioni con la
diminuzione della complessità del sistema.
125
Codici Sistematici
10.2 - Matrice di controllo di parità
Dato un codice lineare a blocco
sistematico, indichiamo con la generica parola d’ingresso e con la generica parola
di codice. Se prendiamo in considerazione soltanto le ultime
componenti della parola di codice, ponendo
possiamo scrivere:
[
]
(10.2.1)
sostituendo a la sua espressione in termini della matrice
niamo:
[
]
[
(
otte-
]
)
(10.2.2)
Sempre in virtù del fatto che il codice è sistematico possiamo scrivere anche:
(10.2.3)
che ci suggerisce di riscrivere l’ultima eguaglianza nella (10.2.2)
nella forma:
[
]
(10.2.4)
La matrice che compare nella precedente prende il nome
di matrice di controllo di parità (parity check matrix), in quanto la
(10.2.4) è soddisfatta da tutte e sole le parole di codice.
10.3 - Codici duali
Osserviamo che la (10.2.4) implica l’ortogonalità tra la
generica parola di codice e ogni riga della matrice , le cui
righe essendo linearmente indipendenti sono in grado di generare
un sottospazio
di
ortogonale a
, nel senso che com-
126
Capitolo - 10 - Appunti di Teoria dell’Informazione e Codici
binando linearmente le righe di si ottengono sempre parole di
ortogonali a qualsiasi parola di
.
Ci si rende facilmente conto del fatto che si può pensare a
come ad un codice (
).
Permutando opportunamente le colonne della matrice si
può sempre rendere
sistematico, in un certo senso lo è
anche senza permutarle, solo che in questo caso i bit informativi
coincidono con gli ultimi
bit della parola di codice.
10.4 - Decodifica basata sulla sindrome
Supponiamo di ricevere una parola , affetta da un pattern
d’errore . Se sostituiamo a primo membro della (10.2.4) otteniamo:
(10.4.1)
è una parola di
bit che prende il nome di sindrome della
parola ricevuta. Vi sono
possibili sindromi.
È interessante osservare che il calcolo della sindrome può
essere effettuato in ricezione con uno schema analogo a quello
utilizzato per il codificatore, dimensionando correttamente i due
registri a scorrimento.
Il calcolo della sindrome nei codici a rivelazione d’errore
consente verificare facilmente se la parola ricevuta appartiene al
codice solo le parole di codice hanno infatti sindrome nulla.
Osservando la (10.4.1) si rileva che gli elementi di uno
stesso laterale del codice hanno la stessa sindrome. Gli elementi di
un laterale si ottengono infatti sommando ad un qualsiasi elemento del coset stesso una parola di codice. È altresì chiaro che
elementi appartenenti a laterali distinti avranno sindromi distinte.
In sostanza esiste una corrispondenza biunivoca tra il gruppo
delle sindromi e l’insieme dei laterali che è esso stesso un gruppo,
detto gruppo quoziente indicato con ⁄ . La composizione tra
due laterali del gruppo quoziente si effettua individuando il coset
Codici Sistematici
127
di appartenenza dell’elemento di
ottenuto componendo due
elementi arbitrariamente scelti nei due laterali componendi.
Il gruppo delle sindromi
è isomorfo al gruppo quoziente di
individuato dal suo sottogruppo
.
Le considerazioni appena fatte ci permettono di concludere
che la decodifica a massima verosimiglianza può essere effettuata
calcolando la sindrome della parola ricevuta ed utilizzandola come
indirizzo di una cella di memoria in cui è scritto il coset leader del
laterale ad essa associato, che va sommato alla parola ricevuta per
effettuare la decodifica.
Tale tecnica comporta quindi un banco di memoria in
grado di contenere
parole di bit.
In effetti essendo interessati solo ai bit informativi è
sufficiente memorizzare soltanto i primi bit del coset leader,
questo accorgimento riduce un po’ il fabbisogno di memoria.
La decodifica basata sulla sindrome è più efficiente di quella
basata sui coset leader, anche se, inevitabilmente, al crescere delle
dimensioni della parola di codice, diventa anch’essa impraticabile,
a causa della crescita esponenziale della quantità di memoria di cui
necessita.
Capitolo - 11
CODICI DI HAMMING E LORO DUALI
11.1 - Codici di Hamming
Abbiamo visto come si calcola la sindrome di un codice ed
abbiamo osservato che più pattern d’errore possono condividere
la stessa sindrome. Immaginiamo adesso di voler costruire un
codice che abbia la capacità di correggere tutti i pattern d’errore di
peso . Affinché ciò sia possibile ciascun pattern d’errore di peso
deve essere un coset leader.
Abbiamo visto che un codice ( ) consta di parole di
bit. Esistono quindi distinti pattern d’errore di peso , ciascuno
dei quali, moltiplicato per
fornisce la rispettiva sindrome.
Detta sindrome coincide con la colonna della matrice che corrisponde alla posizione dell’unico bit nel pattern d’errore. Quindi,
se vogliamo che il codice sia in grado di correggere tutti i pattern
d’errore di peso , è necessario che le colonne della matrice
siano tutte diverse tra loro e non nulle. Poiché ogni colonna della
matrice in questione ha
elementi, deve necessariamente
essere:
(11.1.1)
3
7
15
31
63
127
1
4
11
26
57
120
Tabella 11.1 Alcuni valori di
e per i codici di Hamming
La precedente scritta come uguaglianza definisce implicitamente una famiglia di codici, i codici di Hamming,
che sono in grado di correggere tutti
gli errori di peso e di rivelare quelli
di peso non superiore a due in quanto
si può mostrare che la loro
vale
. Alcune soluzioni della (11.1.1) sono
riportate nella in Tabella 11.1.
130
Capitolo - 11 - Appunti di Teoria dell’Informazione e Codici
Il primo codice della tabella è in effetti un codice a ripetizione, in sostanza ogni bit informativo viene inviato consecutivamente tre volte, vi sono due sole parole di codice, la distanza di
Hamming tra esse, quindi anche la
del codice, è , il codice è
in grado di correggere errori singoli, la regola di decisione a massima verosimiglianza per questo codice consiste nello scegliere il bit
che compare almeno due volte nella parola ricevuta. Se il canale
introduce un errore doppio il codice rileva l’errore, ma non è in
grado di correggerlo, nel senso che restituisce una parola di codice
diversa da quella inviata nel caso di decodifica MV. Vi sono tre
laterali del codice a ciascuno di essi appartiene un pattern d’errore
singolo e il suo negato.
Per concludere si può facilmente verificare che la (9.11.1) è
verificata come uguaglianza per tutti i codici di Hamming risulta
infatti:
⌊
⌋
(11.1.2)
da cui
∑
S
1
2
3
( )
(11.1.3)
4
Tclk in
Tclk out
1
2
3
4
5
6
7
Fig.E 11.1 - Schema a blocchi del Codice 7,4
di Hamming
[
ma per i codici di Hamming
I codici di Hamming sono
quindi codici perfetti.
Esempio 11.1
Una possibile matrice del
secondo
codice
della
Tabella 11.1, il 7,4,è data
da:
]
131
Codici di Hamming e loro Duali
Codice di Hamming 7,4
0000 000
0001 111
0010 011
0011 100
0100 101
0101 001
0110 110
0111 001
1000 110
1001 001
1010 101
1011 010
1100 011
1101 100
1110 000
1111 111
Osserviamo che la matrice in esame ha
per colonne tutte le parole di tre bit ad
esclusione di quella costituita da soli zero,
ordinate in modo da rispettare la (10.2.4).
Ricordiamoci che le prime quattro colonne di possono essere permutate tra loro
senza che le caratteristiche del codice cambino.
Basandoci sulla (10.2.4) e sulla (10.1.1)
potremo facilmente scrivere la matrice generatrice del codice:
[
]
il relativo schema a blocchi è mostrato in
Fig.E 11.1, la lista delle parole del codice è
elencata nella Tabella 11.2 dove ogni parola
Tabella 11.2 - Parole del
è stata suddivisa tra contenuto informativo (i
codice Hamming 7.4
primi 4 bit) e controlli di parità (gli ultimi 3).
Uno schema a blocchi del codice di Hamming 15,11 è mostrato in
Fig. 9.1
11.2 - Duali dei codici di Hamming
Nel caso dei duali dei codici di Hamming, le colonne della
loro matrice generatrice sono tutte e sole le parole binarie non
nulle che si possono scrivere con bit vi saranno quindi esattamente
colonne nella matrice generatrice. La matrice
definisce quindi un codice (
) , le cui parole non nulle
hanno tutte peso
.
Infatti ogni riga della matrice generatrice contiene per costruzione
bit zero e
bit uno. Le restanti parole del
codice si ottengono combinando linearmente le righe della matrice generatrice, tale combinazione lineare, a ben vedere, consiste
nel cancellare un sottoinsieme di righe dalla matrice generatrice e
sommare le restanti.
Per semplificare il ragionamento immaginiamo di aggiungere alla matrice una colonna nulla, sia ˜ la matrice estesa così
ottenuta. Osserviamo che le parole del codice (
) generato da
132
Capitolo - 11 - Appunti di Teoria dell’Informazione e Codici
˜ differiscono da quelle generate da solo per il fatto di avere un
bit in più, che essendo generato dalla colonna identicamente nulla,
vale sistematicamente . Possiamo quindi affermare che le parole
corrispondenti dei due codici, cioè generate dalla stessa parola di
hanno lo stesso peso.
Osserviamo adesso che la cancellazione di una riga in ˜ da
luogo ad una sottomatrice ˜ ( ) che ha le colonne uguali a due a
due; se cancellassimo due righe avremmo una sottomatrice ˜ ( )
con colonne uguali a quattro a quattro e così via.
In generale quindi cancellando righe di ˜ , con
,
( )
˜
avremo una sottomatrice
di
righe con solo
colonne
distinte che non potranno essere altro se non tutte le parole
binarie di
bit.
Il peso della parola di codice ottenuta componendo le
righe di ˜ ( ) , è uguale al numero di colonne che hanno un numero
dispari di
al loro interno. Ci si convince facilmente che
esattamente la metà delle
colonne diverse tra loro hanno
peso dispari. Il peso della parola di codice ottenuta componendo
le
righe vale
, indipendente dal numero di righe
cancellato, pur di non cancellarle tutte, in questo caso otterremo
la parola di codice nulla che ha peso .
Possiamo quindi concludere che la distanza minima per
codici generati da matrici di tipo ˜ , o da matrici di tipo vale
, che è anche, la distanza tra due parole di codice qualsiasi.
11.3 - Codici ortogonali e transortogonali
Immaginiamo di utilizzare un codice generato da una matrice del tipo ˜ , introdotta nel § 11.1 - , con una segnalazione di tipo
antipodale, associando cioè ai bit un impulso di segnalazione in
banda base ( ) (la cui durata, per semplicità possiamo pensare sia
non maggiore dell’intervallo di segnalazione ), e ai bit il suo
opposto. Alla generica parola di codice verrà quindi associato il
segnale in banda base:
133
Codici di Hamming e loro Duali
()
∑(
)
(
(
) )
(11.3.1)
Se effettuiamo il prodotto scalare tra i segnali associati a due distinte parole di codice otteniamo:
∫
)
∑(
∑(
)
(
(
∑ ∑(
(
∑(
(
) )
(
) (
) )
) ∫
(
) ) (
) )
) (
(11.3.2)
) ∫
(
(
(
(
) )
∑(
)(
∑(
)(
(
) ) (
)
)∫
() ()
)
nella precedente
indica l’energia del bit informativo, conseguentemente l’energia specifica dell’impulso di segnalazione, che
tiene conto del Rate
del codice, vale
. La sommatoria a
ultimo membro vale in quanto la distanza di Hamming tra due
parole di codice distinte vale
.
Sotto le ipotesi appena fatte i segnali associati alle parole del
codice generato dalla matrice di parità estesa di un codice di
Hamming ˜ sono a due a due ortogonali. Per quanto riguarda i
codici duali dei codici di Hamming, nelle stesse condizioni
generano un set di segnali isoenergetici in uno spazio a
dimensioni. Detti segnali non sono più mutuamente ortogonali,
anche se la distanza tra una qualunque coppia di segnali è la stes-
134
Capitolo - 11 - Appunti di Teoria dell’Informazione e Codici
sa. I codici duali dei codici di Hamming si chiamano transortogonali.
Rispetto ai codici generati da matrici di tipo ˜ i codici transortogonali hanno il vantaggio a parità d’energia di consentire un
aumento dell’energia associata al bit della parola di codice, in virtù
del rate più basso, per questo le loro prestazioni sono leggermente
migliori.
Capitolo - 12
CODICI CONVOLUZIONALI
12.1 - Premessa
I codici convoluzionali furono proposti per la prima volta
da P. Elias nel 1955, ma hanno trovato ampia applicazione dopo
che A. J. Viterbi propose nel 1967 un efficiente algoritmo di decodifica. Nei codificatori convoluzionali la parola prodotta non dipende soltanto dalla parola emessa dalla sorgente al tempo presente, ma anche da quelle emesse precedentemente. Si tratta quindi di un codificatore dotato di memoria.
12.2 - Struttura del codificatore
Lo schema di prinx
x
x
x
x
x
cipio di un codificatoTs
Ts
Ts
Ts
Ts
S
re convoluzionale è
mostrato in Fig. 12.1.
I simboli emessi dalla
sorgente appartengo2T
no a un alfabeto di
cardinalità assegnata
y y y
ed i sommatori opera2
T
3
no modulo la cardinalità dell’alfabeto.
Fig. 12.1 - Schema di principio di un codificatore
Lo schema di Fig.
convoluzionale
12.1, a prima vista,
non differisce da quello di un codificatore per codici a blocchi, se
non fosse per la dimensione dello shift register d’ingresso che è
maggiore di quello d’uscita. La differenza sostanziale tra il codificatore di figura e quello di uno a blocchi, consiste nel fatto che il
registro d’uscita, nel codificatore di figura, viene letto ogni due
simboli emessi dalla sorgente.
Ts
i 
 
i 
 
2
1
i1
 
 
i1
1
2
s
i 
 
3
s
i 
 
2
i 
 
1


i 2
2
i 2


1
136
Capitolo - 12 - Appunti di Teoria dell’Informazione e Codici
In generale in un codificatore convoluzionale il numero di
simboli che costituiscono la parola informativa è un sottomultiplo
della lunghezza dello shift register d’ingresso. Il rapporto tra il
numero di celle dello shift register e il numero di simboli di
sorgente che costituiscono la parola informativa viene denominato lunghezza di vincolo (costraint lenght) ( in quel che segue).
Da quanto appena detto discende che la parola di codice
non dipende soltanto dalla parola d’ingresso attuale ma anche
dalle
parole precedentemente emesse dalla sorgente.
Nello schema di Fig. 12.1 la lunghezza di vincolo
, la
parola di codice dipende pertanto dalla parola corrente e dalle
parole informative che la precedono.
Anche nei codificatori convoluzionali si può definire un rate
espresso dal rapporto tra la lunghezza della parola informativa (2
in Fig. 12.1) e quella della parola di codice generata (3 in Fig.
12.1). A differenza dei codici a blocchi le lunghezze, sia delle
parole d’ingresso, sia di quelle di codice, sono piccole (dell’ordine
delle unità), i simboli utilizzati appartengono tipicamente a .
12.3 - Matrice generatrice e generatori.
I codificatori convoluzionali come si evince dalla Fig. 12.1
figura del paragrafo precedente sono lineari. Osserviamo che, se la
lunghezza di vincolo fosse unitaria, degenererebbero in un codificatore a blocco. Se, come sempre accade, la lunghezza di vincolo
è maggiore di uno la sequenza d’uscita dipende dall’intera sequenza in ingresso. In ogni caso possiamo affermare che la sequenza
codificata associata a una generica sequenza informativa può sempre essere ottenuta come combinazione lineare delle risposte che
il codificatore genererebbe in corrispondenza a sequenze “canoniche”, cioè a sequenze seminfinite contenenti un unico bit .
Codici Convoluzionali
137
In Tabella 12.1 sono mostrate le sequenze d’uscita che si
otterrebbero dalSequenze di ingresso
Sequenze codificate
l’analisi del codi10,00,00,00,0…
001,100,001,000…
ficatore Fig. 12.1
01,00,00,00,0…
010,010,100,000…
in corrispondenza
00,10,00,00,0…
000,001,100,001,000…
alle citate sequenze,
assumendo
00,01,00,00,0…
000,010,010,100,000…
che, in assenza di
00,00,10,00,0…
000,000,001,100,001,000
una sequenza in
00,00,01,00,0…
000,000,010,010,100,000…
ingresso, tutte le
00,00,00,10,00,0…
000,000,000,001,100,001,000
celle dello shift re00,00,00,01,00,0…
000,000,000,010,010,100,000…
gister contengano
Tabella 12.1 - sequenze di uscita del codificatore di Fig. il bit
. Le se12.1 in corrispondenza alle sequenze canoniche
quenze codificate
della tabella si possono pensare come le righe di una matrice
generatrice del codice. Detta matrice ha dimensioni semi infinite,
motivo questo di per sé sufficiente per cercare un approccio più
efficiente allo studio dei codici in parola.
È interessante osservare che la matrice generatrice ha una
struttura ben precisa, come si desume dalla Tabella 12.1essa è a
blocchi del tipo:
[
]
(12.3.1)
dove le
rappresentano matrici
e gli zeri indicano matrici
nulle delle stesse dimensioni. Osservando la struttura della generica
ci si rende conto che essa è in realtà la matrice generatrice
di un codice a blocchi , il suo generico elemento
vale cioè
solo se l’ -esima cella dell’ -esimo blocco dello shift register di
ingresso è connessa al sommatore - esimo.
La (12.3.1) è di scarsa utilità pratica. Le matrici
potrebbero essere si usate per descrivere la struttura del codificatore,
138
Capitolo - 12 - Appunti di Teoria dell’Informazione e Codici
ma, anche a questo scopo, esse si rivelano in genere meno efficienti dei cosiddetti generatori.
I generatori sono vettori binari ciascuno con
componenti. Dove la -esima componente dell’ -esimo generatore vale
solo se l’ -esimo sommatore è connesso all’ -esima cella del
registro d’ingresso.
Per il codificatore di Fig. 12.1 i generatori sono:
{
(12.3.2)
Noto il rate del codificatore i generatori permettono di tracciare
facilmente lo schema del codificatore.
Il vantaggio che si ha nell’utilizzo dei generatori rispetto
all’uso delle matrici costituenti la matrice generatrice è legato al
fatto che i generatori sono in numero pari al numero di bit della
parola d’uscita dell’ordine delle unità, mentre le matrici in parola
sono in numero pari alla lunghezza di vincolo che può essere dell’ordine delle decine. Inoltre i generatori si prestano a essere rappresentati in notazione diversa da quella binaria, tipicamente quella ottale, rappresentando cioè gruppi di tre bit con la corrispondente cifra ottale per il nostro codificatore ciascun generatore si
può rappresentare mediante due cifre ottali in particolare per il
nostro esempio si ha:
(12.3.3)
12.4 - Diagramma di stato del codificatore.
La matrice generatrice, non è certamente uno strumento di
semplice impiego per analizzare un codificatore convoluzionale. I
generatori, sono sì uno strumento efficace per descrivere la struttura del codificatore, ma mal si prestano al calcolo della sequenza
che esso genera in uscita. Un modo alternativo, certamente più ef-
Codici Convoluzionali
139
ficace, per descrivere il comportamento del codificatore è quello
di tener conto del fatto che l’uscita prodotta in un certo istante dipende oltre che dalla parola d’ingresso corrente anche dalla storia
della sequenza d’ingresso, in particolare l’uscita dipende dai
(
) bit d’ingresso che hanno preceduto la parola corrente.
In altri termini, noti i (
) bit precedenti e i bit della
parola corrente, possono essere univocamente determinati, sia
l’uscita corrente, sia i (
) bit che contribuiranno unitamente
alla parola d’ingresso successiva a determinare la parola d’uscita
seguente. Osserviamo che esistono esattamente ( ) contenuti
distinti per le celle del registro che costituiscono la memoria del
sistema. Possiamo dire pertanto che il codificatore può assumere
(
)
stati diversi ( nel nostro esempio). L’arrivo di una parola
d’ingresso comporta tipicamente una variazione del contenuto
della memoria, quindi una variazione dello stato del sistema. In
sostanza un codificatore convoluzionale non è altro che una
macchina a stati finiti.
Gli stati del codificatore possono essere associati ai vertici
di un grafo (vedi Esempio 2.1) due vertici vengono connessi tramite un lato se esiste una parola di ingresso che induce la transizione tra i due stati. Ad ogni lato potremo associare un’etichetta
che contiene la parola d’ingresso ad esso relativa, ma anche la
corrispondente parola di uscita che dipende dal vertice da cui il
suddetto lato fuoriesce.
Osserviamo che da ogni vertice origineranno e si dipartiranno esattamente lati, tanti quante sono le possibili parole
d’ingresso (nel nostro esempio 4). Quindi ogni vertice è di grado
(
)
. Il grafo è anche connesso in quanto, comunque scelti due
vertici distinti, esiste sempre un percorso che li congiunge, osserviamo che tale percorso è costituito al più da (
) lati.
140
Capitolo - 12 - Appunti di Teoria dell’Informazione e Codici
Il grafo relativo al codificatore di Fig. 12.1 è mostrato in
Fig. 12.2 dove si
000
sono utilizzati colori diversi per
111
distinguere le parole d’ingresso associate ai lati. Nel100
la stessa figura si
sono indicate solo
111
alcune parole d’u00
scita per non pre01
giudicarne la leggi10
11
bilità.
100
Tracciato che
Fig. 12.2 - Grafo del codificatore mostrato in Fig. 12.1
sia il grafo del codificatore, per dato stato iniziale, si può valutare la sequenza
codificata associata a una qualsiasi sequenza d’ingresso seguendo
il percorso da essa individuato ed annotando le corrispondenti
parole d’uscita. Ovviamente, per sequenze molto lunghe, anche
questa rappresentazione manifesta i suoi limiti. Si pensi al caso in
cui uno stesso lato compaia più volte nell’ambito di una stessa
sequenza.
1111
1011
1101
1110
1000
1100
1001
1010
0000
0001
0111
0010
0110
0011
0100
0101
12.5 - Codici catastrofici
Osserviamo che ogni codificatore convoluzionale, essendo
lineare, associa alla sequenza d’ingresso nulla la sequenza nulla.
Il percorso associato alla sequenza d’ingresso identicamente nulla
nel grafo di Fig. 12.2 consisterebbe nel percorrere infinite volte il
ramo che emerge e termina nello stato zero. I rami che originano
e terminano nello stesso stato vengono denominati self loop.
Notiamo che lo stesso codificatore, partendo dallo stato
zero, associa alla sequenza costituita solo da bit , la sequenza
come possiamo notare tale sequenza
seppur semi-infinita ha peso ; cioè, nonostante la sequenza
Codici Convoluzionali
141
d’ingresso considerata sia quella a massima distanza dalla sequenza nulla, le rispettive sequenze codificate distano tra loro non
più di indipendentemente dalla loro lunghezza. Il codificatore di
Fig. 12.1 è in realtà un esempio di Codice catastrofico. Tale
denominazione discende dal fatto che da un codificatore ci si
aspetterebbe, quantomeno, che al crescere della distanza di
Hamming tra le sequenze d’ingresso (parliamo si sequenze semiinfinite) cresca anche quella tra le corrispondenti sequenze
codificate. un codificatore, come ad esempio quello di Fig. 13.1, è
catastrofico se il suo diagramma di stato contiene un selfloop che
associa a una parola d’ingresso di peso non nullo la parola d’uscita
nulla, sicché "ciclando" su detto selfloop il peso della sequenza
d’uscita non varia. Il codificatore fin qui utilizzato, malgrado sia
catastrofico non perde la sua valenza che è puramente didattica.
12.6 - Trellis degli stati
I limiti all’utilizzo del grafo per lo studio di un codice convoluzionale, sono essenzialmente legati al fatto che in questa rappresentazione non compare il tempo.
Premesso che in quel che segue per brevità enumereremo
talvolta gli stati con il numero decimale corrispondente al contenuto della memoria, supponiamo che all’istante iniziale il codificatore si trovi nello stato , da esso all’istante , potranno essere
raggiunti nuovi stati figli e da ciascuno di questi ultimi all’istante
ne potranno essere raggiunti
per un totale di
stati figli raggiungili all’istante
a partire dallo stato iniziale dopo due parole d’ingresso.
Ci rendiamo conto del fatto che all’istante (
)
tutti i
possibili stati del codificatore saranno raggiungibili. Ciò è vero
anche in virtù del fatto che, per la struttura stessa del codificatore,
a prescindere dallo stato in cui si trova, a parole d’ingresso distinte
corrispondono stati di arrivo distinti.
142
Capitolo - 12 - Appunti di Teoria dell’Informazione e Codici
Quanto appena detto può essere rappresentato graficamente mediante il trellis (letteralmente, ma è “infelice”, graticcio) degli
stati del codice. Il trellis associato al codificatore di Fig. 12.1 è rap000
0000
0000
000
0100
1000
1100
00
6Ts
4Ts
2Ts
0
01
0000
000
0000
8Ts
000
0000
0001
0001
0001
0010
0010
0010
0011
0011
0011
0100
0100
0100
0101
0101
0101
0110
0110
0110
0111
0111
0111
1000
1000
1000
1001
1001
1001
1010
1010
1010
1011
1011
1011
1100
1100
1100
1101
1101
1101
1110
1110
1110
1111
1111
1111
10
11
Fig. 12.3 – Trellis degli stati del codificatore di Fig. 12.1
presentato in Fig. 12.3 Come possiamo notare il trellis è un albero, che ha origine nello stato in cui si trova il codificatore all’istante iniziale, che generalmente, ma non necessariamente, è lo
stato . Esso costituisce la radice dell’albero, da cui si dipartono i
lati associati a tutte le possibili parole di ingresso che terminano
sui vertici raggiungibili all’istante
da ciascuno di detti vertici
si dipartiranno ulteriori lati che termineranno su
vertici figli
al tempo
.
Codici Convoluzionali
143
)
Al tempo (
tutti gli stati vengono raggiunti da un
lato ed al passo successivo la sezione di trellis, cioè l’insieme dei lati
compresi tra i vertici relativi a due istanti di tempo consecutivi, è
completa, nel senso che contiene tutti i possibili lati, tutte
le sezioni successive saranno
complete, uguali tra loro ed,
idealmente, in numero infinito. Ogni sezione si può etichettare con un numero che
esprime la “profondità” della sezione cioè la collocazione temporale di una data sezione nel
trellis.
Fig.E 12.1 - schema del codificatore
Seguire l’evoluzione delconvoluzionale
rate
l’uscita sul trellis è semplice in
quanto nel percorso associato alla sequenza d’ingresso non vi possono essere sovrapposizioni.
Esempio 12.1
Si Calcoli l’uscita del codice di rate individuato dai generatori
. In corrispondenza alla sequenza d’ingresso
.
Fig.E 12.2 – Trellis del codice convoluzionale
I due generatori rappresentati in binario sono:
rate
144
Capitolo - 12 - Appunti di Teoria dell’Informazione e Codici
e corrispondono allo schema mostrato in Fig.E 12.1. Il codificatore ha
stati, il suo trellis è mostrato in Fig.E 12.2, nella stessa figura è
evidenziato il percorso associato alla sequenza di ingresso
, la
corrispondente sequenza d’uscita è quindi:
.
È interessante osservare che un ulteriore zero nella sequenza
d’ingresso riporterebbe il codificatore allo stato zero.
Capitolo - 13
L’ALGORITMO DI VITERBI
13.1 - Decodifica hard e soft di un codice convoluzionale.
Occupiamoci adesso della decodifica utilizzando il criterio
MV.
nN
xi i1
s t    2ci  1p t  i  1Ts 
ci i 1
nN
kN
Tb
i 1
Ts
Codificatore
convoluzionale
S
n t 
Modulatore
ri i1  2ci  1  ni i1
nN
nN
nN
{bi}i=1
r t   s t   n t  T
s
filtro
adattato
rivelatore
a soglia
decodificatore
hard
nN
cˆi i 1
decodificatore
soft
Fig. 13.1 - schema di principio di un sistema di trasmissione, con codificatore
convoluzionale e modulazione antipodale in banda base - decodificatore hard,
ramo superiore, decodificatore soft, ramo inferiore.
Facciamo riferimento allo schema di principio mostrato in
Fig. 13.1. Esso rappresenta una sorgente binaria che emette una
sequenza binaria di
bit,
, cui è connesso un codificatore
convoluzionale con rate che produce una sequenza codificata di
bit,
, che modula antipodalmente un impulso di segnalazione ( ) in banda base di durata non maggiore dell’intervallo
assegnato a ogni bit codificato ottenendo il segnale:
()
∑(
) (
(
) )
(13.1.1)
146
Capitolo - 13 - Appunti di Teoria dell’Informazione e Codici
( ) viene quindi inviato su un canale AWGN che introduce cioè
un rumore gaussiano ( ) con densità spettrale di potenza bilatera
.
Il segnale ricevuto ( ), trascurando ritardo ed attenuazione, sarà quindi ( )
( )
( ).
Il ricevitore di figura è costituito da un filtro adattato all’impulso di segnalazione la cui uscita viene campionata a cadenza ,
producendo la sequenza
, che per le ipotesi fatte non sarà
affetta da interferenza intersimbolica. Avremo cioè
in cui è una variabile aleatoria Gaussiana a media nulla e varianza η. Ne segue che la generica , condizionata all’invio di è
la realizzazione di una variabile aleatoria gaussiana a media
e varianza η. Inoltre Le
condizionate all’invio di una data
saranno mutualmente statisticamente indipendenti.
In Fig. 13.1 Abbiamo a questo punto indicato due alternative:
- la prima (ramo superiore in blu in Fig. 13.1) consiste
nell’utilizzare un rivelatore a soglia che fornirebbe in uscita
una sequenza binaria stimata
, da dare in “pasto” ad un
decodificatore che in questo caso sarebbe di tipo hard;
- la seconda (ramo inferiore in verde in Fig. 13.1) consiste
nell’utilizzare un decodificatore che si basa direttamente sulla
; in questo caso il nostro decodificatore sarebbe di tipo
soft.
Indipendentemente dal tipo di decodificatore viene prodotta una sequenza informativa stimata ̂
ottenuta in
corrispondenza a una sequenza codificata ̂
, cioè una sequenza che corrisponde ad un percorso sul trellis del codificatore.
Ovviamente non è detto che i due decodificatori producano la stessa ̂
e conseguentemente la stessa sequenza informativa stimata ̂
.
L’Algoritmo di Viterbi
147
In quel che segue supporremo di voler decodificare una sequenza di lunghezza finita. Supporremo anche che il decodificatore hard o soft che sia:
- conosca la struttura del codificatore convoluzionale;
- conosca lo stato iniziale in del codificatore;
- conosca lo stato finale fin del codificatore,
Osserviamo che la conoscenza dello stato finale da parte
del decodificatore, implica che il codificatore abbia provveduto ad
aggiungere alla sequenza informativa un suffisso in grado di condurre il codificatore in uno stato assegnato. Va da se che i simboli
del suffisso non conterranno informazione e comporteranno
quindi un peggioramento dell’effettivo rate del codice. Tale
peggioramento sarà tanto meno rilevante quanto più lunghe
saranno le sequenze da trasmettere.
In linea di principio la decodifica MV hard della sequenza
costituita da
-uple di bit in uscita al rivelatore a soglia è
semplice, è, infatti, sufficiente scegliere la sequenza ammissibile2
che ha la minima distanza di Hamming dalla
generata dal
rivelatore, scegliendo eventualmente a caso qualora dovesse esservi più d’una sequenza ammissibile con lo stesso requisito.
Analogamente la decodifica MV soft consisterebbe nello
scegliere, tra le sequenze ammissibili, quella cui è associata una sequenza
̂
che, pensata come un punto di
, ha la
minima distanza Euclidea dalla sequenza
corrispondente al
segnale ricevuto, rappresentata nello stesso spazio.
Va da se che, in questo caso, la probabilità che due sequenze ammissibili abbiano la stessa distanza da quella ricevuta è nulla.
2
per sequenza ammissibile intendiamo una sequenza
percorso sul trellis che abbia inizio in
e termini in
associabile ad un
.
148
Capitolo - 13 - Appunti di Teoria dell’Informazione e Codici
Già questa sola considerazione ci fa intuire che l’impiego
della decodifica soft migliora le prestazioni del sistema in termini
di probabilità d’errore.
Al crescere della lunghezza dei messaggi da decodificare,
appare chiaro che l’approccio sopra descritto seppur formalmente
corretto diventa improponibile in pratica, sia per la crescita esponenziale del numero di sequenze ammissibili, sia per il ritardo che
un tale decodificatore comporterebbe. Sarebbe infatti indispensabile attendere la ricezione dell’intera sequenza prima che il processo di decodifica possa avere inizio.
13.2 - L’algoritmo di Viterbi
In questo paragrafo descriveremo un algoritmo di decodifica che, con modifiche non concettuali, può essere impiegato sia
per decodificatori hard che soft dei codici convoluzionali.
In quel che segue chiameremo:
- metrica di ramo la distanza di Hamming, o il quadrato della
̂ ̂
̂
distanza Euclidea, tra gli bit ̂
codificati
che etichettano il ramo e la porzione di sequenza ricevuta corrispondente precisamente
(
∑
(
)
̂
∑
(
)
( ̂
)
{
(13.2.1)
)
(ad apice abbiamo indicato la sezione di trellis cui il ramo appartiene ed i pedici,
individuano lo stato di partenza e quello
di arrivo del ramo in esame);
- percorso una sequenza ininterrotta di rami che origina in in
- lunghezza del percorso il numero di rami compongono il percorso
- metrica di percorso la somma delle metriche di ramo che compongono il percorso;
L’Algoritmo di Viterbi
-
149
cammino una sequenza ininterrotta di rami del tipo
̂
̂
̂
lunghezza del cammino il numero di rami compongono il
cammino
- metrica di cammino la somma delle metriche dei rami che lo
compongono;
Abbiamo detto che il decodificatore conosce lo stato iniziale in cui si trova il codificatore all’arrivo di una sequenza informativa, supponiamo sia lo stato zero. Al primo passo, osservando
la sequenza ricevuta, il decodificatore può etichettare ciascuno dei
rami del trellis che emergono dallo stato iniziale, con la metrica
ad essi associata, calcolata mediante la prima o la seconda delle
(13.2.1), a seconda che la decodifica sia di tipo hard o soft rispettivamente. Il decodificatore provvederà anche ad etichettare gli stati
raggiunti con le metriche dei percorsi che vi pervengono. Le metriche di percorso in questo caso coincidono banalmente con
quelle del singolo ramo che compone i percorsi cui si riferiscono.
Agli stati raggiunti verrà associata anche la sequenza informativa
associata al relativo percorso.
Al secondo passo da ciascuno dei stati raggiunti emergeranno rami, a ciascuno di essi si può associare una metrica di
ramo come al passo precedente. Ad ogni stato in cui termina un
ramo assoceremo:
- una metrica di percorso ottenuta sommando alla metrica del
ramo che termina nello stato in parola quella di percorso
associata allo stato da cui il ramo emergeva;
- una sequenza informativa di percorso ottenuta giustapponendo a
quella associata allo stato di partenza quella del ramo.
Potremo continuare ad addentrarci nel trellis seguendo
questa logica fino al passo
, in quanto fino a tale passo ogni
stato viene raggiunto al più da un percorso.
-
150
Capitolo - 13 - Appunti di Teoria dell’Informazione e Codici
Al - esimo passo potremo ancora associare a ogni ramo la
sua metrica, ma per associare le metriche di percorso agli stati sorgerà un problema. Esistono infatti percorsi distinti che terminano in ciascuno stato.
Se consideriamo un cammino nel trellis di lunghezza
che abbia origine in uno stato in cui confluiscano percorsi di
lunghezza , giustapponendo il cammino a ciascun percorso di
lunghezza
otterremmo
percorsi ammissibili di lunghezza
. La metrica di ciasuno di essi sarà data dalla somma della
metrica di uno dei percorsi di lunghezza più la metrica del
cammino. Tra i percorsi così ottenuti quello che avrà la metrica
minore sarà evidentemente ottenuto a partire dal percorso di
lunghezza che aveva la metrica minore. Ne segue che se più
percorsi confluiscono in uno stesso stato ha senso memorizzare
solo quello che ha la metrica minore.
Osserviamo che nel caso in cui la metrica fosse quella di
Hamming (decodifica hard) potrebbe darsi che più di un percorso
abbia minima metrica, il decodificatore in questa eventualità dovrebbe scegliere a caso.
Dal - esimo passo in poi il decodificatore memorizzerà
per ogni stato solo la metrica e la sequenza informativa associata
al “miglior” percorso che vi confluisce.
Fa eccezione solo l’ultimo passo, in questo caso il decodificatore conoscendo lo stato di arrivo si limiterà a considerare solo i
percorsi che vi confluiscono scegliendo il migliore tra essi
(quello che ha accumulato la metrica minore).
Abbiamo appena descritto l’algoritmo di Viterbi.
13.3 - Efficienza dell’algoritmo di Viterbi
Appare evidente la riduzione di complessità di questo algoritmo rispetto alla ricerca esaustiva teorizzata nel paragrafo precedente. Infatti ad ogni passo di decodifica, a parte il transitorio
iniziale, dovremo calcolare metriche di ramo per ciascuno dei
(
)
stati iniziali della sezione di trellis e utilizzarle per calcola-
L’Algoritmo di Viterbi
151
re le metriche di
percorsi. Di questi ultimi solo ( )
verranno memorizzati per utilizzarli al passo successivo. Ne segue
che la complessità dell’algoritmo cresce solo linearmente con la
lunghezza della sequenza informativa, a differenza della ricerca
esaustiva su tutti i percorsi ammissibili il cui numero cresce
esponenzialmente al crescere della lunghezza della sequenza
informativa.
Va comunque sottolineato che la complessità dell’algoritmo
di Viterbi cresce esponenzialmente con la lunghezza di vincolo
del codificatore.
Un altro vantaggio nell’utilizzo dell’algoritmo di Viterbi
consiste nel fatto che dopo un certo numero di passi di decodifica
che dipende dalla lunghezza di vincolo (tipicamente una decina di
lunghezze di vincolo) tutti i percorsi “sopravvissuti” finiscono
con l’avere una parte iniziale in comune. La parte della sequenza
informativa associata alla parte comune a tutti i percorsi non
potendo subire alcuna modifica potrà essere resa immediatamente
disponibile in uscita al decodificatore. Potremo cioè utilizzare una
decodifica a finestra mobile che limita sia la latenza sia il fabbisogno di
memoria del decodificatore.
Capitolo - 14
PRESTAZIONI DEI CODICI CONVOLUZIONALI
14.1 - Distanza libera di un codifie convoluzionale.
I codici convoluzionali sono come abbiamo già detto lineari, nel senso che la somma di due sequenze codificate è ancora
una sequenza codificata, esattamente quella che si otterrebbe codificando la somma delle corrispondenti sequenze informative.
Ciò significa che possiamo valutare le prestazioni del codice
in termini di probabilità d’errore ammettendo che venga inviata la
sequenza nulla e valutare la probabilità che, a causa del canale,
venga rivelata una sequenza ammissibile diversa.
Per i nostri scopi è utile definire alcune grandezze associate
al codificatore. La prima è la cosiddetta distanza colonna
( )
essa è un’applicazione che associa ad ogni livello di profondità del
trellis del codice la minima distanza di Hamming ottenibile dalla
sequenza nulla prendendo in considerazione tutte le possibili sequenze d’ingresso cui corrispondono percorsi sul trellis che si discostano da quello relativo alla sequenza nulla a partire dall’istante
iniziale. Il limite di
( ) per
si chiama distanza libera,
, del codice. Il percorso cui corrisponde la distanza libera non è
necessariamente unico, ma certamente salvo il caso in cui il codice
sia catastrofico è un percorso che si discosta dalla sequenza nulla
per poi ricongiungersi ad essa.
Sia la distanza colonna che la distanza libera possono in
teoria essere calcolate per ispezione diretta sul trellis del codice,
ma è anche possibile ottenere la distanza libera e molte altre
informazioni sul codice procedendo in modo diverso.
154
Capitolo - 14
14.2 - Funzione di trasferimento di un codificatore convoluzionale.
Ci proponiamo in particolare di raccogliere informazioni
sul numero di percorsi che hanno origine e termine nello stato
zero diversi da quello
JLD
4
0
6
7
che da esso non si
discosta mai.
JLD
JLD
Per farlo consi5
2
3
L
deriamo il diagramma
LD
1
0
degli stati del codifiFig. 14.1 – Grafo modificato del Codice
catore, sopprimiamo
rate ⁄
il self loop associato
allo stato zero, quindi sdoppiamo lo stato zero in due stati uno,
sorgente, da cui fuoriescono i rami ed uno, pozzo con solo rami
entranti come in Fig. 14.1. Nella stessa figura si può notare anche
che i rami del grafo sono stati etichettati con dei trinomi
l’indeterminata vi compare sempre con grado , la sua funzione
è in realtà solo quella di tener conto del passaggio attraverso il
ramo, il grado di esprime il peso della parola informativa
associata al ramo esso è quindi compreso tra e , il grado di
esprime il peso della parola di codice associata al ramo, e non può
quindi essere maggiore di .
Basandoci sulla teoria dei grafi orientati e pesati possiamo
ricavare la funzione di trasferimento tra il nodo sorgente ed il
nodo pozzo.
Si può procedere in due modi, il più semplice consiste nello
scrivere il sistema lineare di equazioni che il grafo rappresenta.
Ciò si ottiene associando a ogni nodo un’incognita del sistema.
In corrispondenza a ciascun nodo possiamo scrivere un’equazione che, detta l’incognita associata al nodo -esimo e la
trasferenza associata al ramo che emerge dal nodo -esimo e
converge in quello -esimo, sarà del tipo:
2
Prestazioni dei Codici Convoluzionali
(
∑
155
)
(14.2.1)
In corrispondenza al ramo sorgente non si scrive alcuna
equazione essendo quest’ultimo privo di rami entranti. A titolo
d’esempio, denominando rispettivamente
e
le variabili associate al nodo sorgente ed al nodo pozzo in cui abbiamo sdoppiato lo stato , scriviamo le equazioni associate al grafo di Fig.
14.1:
(14.2.2)
{
Possiamo quindi procedere all’eliminazione di tutte le variabili ad eccezione delle
e
. Utilizzando ad esempio le prime
tre equazioni otteniamo:
(14.2.3)
{
quindi, procedendo in modo analogo, dopo qualche passaggio otteniamo:
(
)
(14.2.4)
156
Capitolo - 14
la (
ce.
) prende il nome di funzione di trasferimento del codi-
Se con la tecnica della divisione lunga espandiamo la
(14.2.4), pensando il numeratore e il denominatore come polinomi nell’indeterminata , possiamo ancora scrivere:
(
)
(
)
)
(
(
)
(
(14.2.5)
)
dal coefficiente della potenza più piccola di a secondo membro
della precedente, desumiamo che vi è un cammino con peso
d’ingresso che si discosta dallo stato per tornarvi dopo rami
accumulando un peso d’uscita pari a . Ne segue che la distanza
libera del codice in parola sarà .
Osservando il coefficiente della potenza di immediatamente superiore scopriamo che esistono anche tre percorsi con
peso d’uscita , di cui: uno di lunghezza e peso d’ingresso ; il
secondo di lunghezza e peso d’ingresso ; il terzo di lunghezza
con peso d’ingresso .
Qualora fossimo interessati solo al peso delle sequenze codificate che si discostano dalla sequenza nulla per poi ricongiungersi con essa, potremmo porre nella (14.2.4) o nella (14.2.5)
e
, ottenendo
( )
(14.2.6)
In generale la funzione di trasferimento di un codice convoluzionale può essere espressa nella forma:
(
)
∑ ∑∑ (
)
(14.2.7)
Prestazioni dei Codici Convoluzionali
157
dove ( , , ) esprime il numero di cammini di peso , con peso
della sequenza d’ingresso che emergono dallo stato zero per poi
farvi ritorno dopo rami.
Dalla precedente, eguagliando ad le variabili che non ci
interessano e sommando rispetto ai rispettivi indici, otteniamo
delle funzioni di trasferimento semplificate, ad esempio ponendo
e
nella (14.2.7) otteniamo
( )
(
)
∑ ∑∑ (
)
(14.2.8)
∑
dove ( )
∑
∑
( )
(
).
14.3 - Bound sulla probabilità di primo evento d’errore.
Per analizzare le prestazioni di un codice convoluzionale si
fa riferimento, oltre che alla probabilità d’errore sul bit informativo anche alla cosiddetta probabilità di primo evento d’errore,
o anche probabilità d’errore di nodo. ssa esprime la probabilità
che in un certo istante la sequenza stimata si discosti da quella effettivamente trasmessa per poi ricongiungersi con essa.
Possiamo assumere ai fini del calcolo che la sequenza trasmessa
sia quella identicamente nulla, indicheremo con
tale sequenza che corrisponde al percorso semiinfinito sul trellis
che non si discosta mai dallo stato . Possiamo fare tale ipotesi in
virtù della linearità del codificatore e del fatto che la decodifica è a
massima verosimiglianza.
Sappiamo che il decodificatore opera le sue scelte basandosi
sulla sequenza binaria
prodotta dal rivelatore a soglia nel
caso di decodifica hard, ovvero sulla sequenza reale
dei
campioni in uscita al filtro adattato per decodifica soft.
158
Capitolo - 14
Ammettiamo che fino alla profondità nel trellis il decodificatore abbia attribuito al percorso la metrica minore e che al
passo successivo abbia inizio un cammino ˜ ( ) ( )
che si
discosta dallo stato per ritornarvi dopo sezioni di trellis. Alla
profondità
il decodificatore lascerà sopravvivere un solo
percorso tra quelli che pervengono allo stato se il percorso ,
coincidente con
fino alla profondità nel trellis e con da
fino alla sezione
, avrà accumulato la metrica minore
di , quest’ultimo verrà scartato. è un possibile primo evento
d’errore. Va da sé che vi è un’infinità numerabile di possibili primi
eventi d’errore, cioè tutti i cammini che si discostano dallo stato
zero per poi ricongiungersi ad esso.
Purtroppo il calcolo esatto della probabilità di primo evento
d’errore è impraticabile. Possiamo tuttavia maggiorare la probabilità cercata, basandoci sull’union bound.
Detto
il cammino coincidente con
tra le sezioni
e
Osserviamo che la scelta del decodificatore sarà
determinata soltanto dalle metrica accumulata dai cammini
e
, in quanto fino al passo i due percorsi coincidevano quindi
condividevano la stessa metrica.
Per applicare l’union bound dobbiamo valutare, in corrispondenza a ciascun primo evento d’errore, la probabilità che detto evento si manifesti nell’ipotesi che il decodificatore possa scegliere solo tra il percorso corretto e quest’ultimo.
Ciò, detto in altri termini, equivale a calcolare la probabilità
che, a causa del rumore introdotto dal canale BSC, la porzione di
(
)
sequenza
in uscita al rivelatore a soglia, per il decodifi(
)
catore hard (la porzione
di campioni in uscita al filtro
adattato per quello soft) corrispondente alle sezioni del trellis
che contengono i due cammini
e , appartenga alla regione di
decisione di malgrado sia stata inviata la sequenza identicamente nulla, corrispondente a
Prestazioni dei Codici Convoluzionali
159
Ci si convince facilmente che la somma di tutte le probabilità appena descritte maggiora la probabilità d’errore di nodo, in
quanto quest’ultima rappresenta la probabilità dell’evento unione
tra tutti quelli associati ai possibili primi eventi d’errore sopra
descritti.
Detta
la regione di decisione di
nell’ipotesi che il
decisore sia chiamato a scegliere tra
e , possiamo scrivere:
∑
(
(
)
)
(14.3.1)
Nel caso di decodifica hard, è opportuno osservare che ai
fini del calcolo della probabilità che compare ad argomento della
sommatoria nella (14.3.1), non contribuiscono i bit codificati di
uguali a quelli di
(cioè i bit nulli di ), in quanto quale che sia
il corrispondente bit della sequenza ricevuta esso apporterebbe un
(
)
eguale contributo alle distanze di
da entrambi i cammini.
Indichiamo con ( ) il peso del cammino . Osserviamo
che se ( ) è dispari, posto
⌊
( )
⌋
, il decodificatore sce(
)
glierà il cammino ogniqualvolta il numero di bit 1 di
che corrispondono ai bit 1 di risulti maggiore o uguale a . La
probabilità che ciò accada, condizionata all’invio della sequenza
nulla è data da:
( )
( ̂
(
)
)
∑ (
( )
)
(
)
( )
(14.3.2)
dove ̂ ( ) indica il cammino stimato e indica la probabilità
di crossover del BSC con cui può essere schematizzata la parte
inclusa nel poligono tratteggiato in rosso del sistema di trasmissione mostrato in Fig. 13.1
160
Capitolo - 14
Se il peso di
( )
( ) ) possibili sequen-
è pari esisteranno (
(
)
ze ricevute
che hanno eguale distanza da e
. In
tale eventualità il decodificatore sceglierebbe in modo puramente
casuale tra e
. La probabilità che venga scelto il cammino
sarà in questo caso espressa dalla:
(
(
)
)
( )
( ( ))
(
)
(
)
(14.3.3)
( )
∑
⌊
(
)
(
( )
)
(
)
( )
⌋
Esempio 14.1
La probabilità di crossover del BSC con cui può essere schematizzata
la parte inclusa nel poligono tratteggiato in rosso del sistema di
trasmissione mostrato in Fig. 13.1, assumendo che al bit codificato
competa un’energia
e che il rumore gaussiano
abbia una densità spettrale di potenza monolatera
, sarà espressa
dalla probabilità che il campione in uscita al filtro adattato per effetto del
rumore sia minore di zero, malgrado il bit codificato fosse un uno, o
indifferentemente, dalla probabilità che il succitato campione, per lo
stesso motivo, sia maggiore di zero malgrado il bit codificato inviato
fosse uno zero. Nel caso in cui il bit trasmesso sia un uno avremo
(
)
(
∫
√
)
(
)
√
√
√
∫
√
( )
√
Tenuto conto delle ipotesi fatte sull’energia del bit codificato, se
vogliamo fare comparire nella precedente il rapporto tra l’energia
associata al bit informativo e la densità spettrale monolatera di rumore
possiamo scrivere:
√
Da cui:
√
Prestazioni dei Codici Convoluzionali
(√
161
)
Osserviamo che la (14.3.2) e la (14.3.3), dipendono solo dal
peso di non dal numero di rami da cui esso è costituito. In altri
termini, tutti gli eventi d’errore di uguale peso avranno la stessa
probabilità di essere erroneamente scelti dal decodificatore indipendentemente dal numero di rami in essi contenuti. Sulla base di
quest’ultima osservazione possiamo compattare in un'unica
espressione la (14.3.2) e la (14.3.3), indicando semplicemente con
un evento d’errore di peso , ottenendo:
(
)
(
)
(
)
⌊ ⌋
(
)
(14.3.4)
∑ ( )
(
)
⌊ ⌋
Osserviamo adesso che la probabilità di primo evento di
errore di peso condizionata all’invio di una qualunque sequenza
è uguale a quella condizionata all’invio della sequenza nulla. Ne
segue che, se tutti i percorsi sul trellis sono equiprobabili, la probabilità di errore di nodo di peso è uguale alla probabilità di
errore di nodo condizionata all’invio della sequenza nulla:
( )
(
)
(14.3.5)
La (14.3.4) ci suggerisce di riordinare la (14.3.1) accorpando
tutti gli eventi d’errore di ugual peso. Il numero di tali eventi può
essere dedotto dalla ( ) del codice. Tenendo conto della (14.2.8)
e della (14.3.5) possiamo quindi scrivere:
∑
(
(
)
)
∑
( )
( )
(14.3.6)
162
Capitolo - 14
Nel caso di decodifica soft, basandoci sullo schema di Fig. 13.1 e
assumendo che l’impulso di segnalazione abbia energia
,
potremo scrivere:
∑
(
(
(
(
(
)
)
{√
{ √ }
√∑
)
( ˜
()
(
(
∑
)
)
)}
)
( √
)
(
)
)
()
˜ )
(14.3.7)
√
(
∑ (√
(
)
( )
)
che può essere anche riformulata in termini dell’energia per bit
⁄ è il rate del
informativo, ponendo cioè
, dove
codice e della densità spettrale di potenza monolatera
ottenendo:
∑ (√
( )
)
(14.3.8)
Osserviamo che anche gli argomenti delle ( ) a secondo
membro della precedente non dipendono dalla lunghezza di ,
ma solo dal suo peso. La sommatoria a secondo membro della
precedente può quindi, anche in questo caso, essere riordinata accorpando tutti gli eventi di errore di egual peso, ottenendo:
∑
( ) (√
)
(14.3.9)
La precedente, a fronte di un’ulteriore maggiorazione può
assumere una forma più semplice da calcolare. Ricordando infatti
Prestazioni dei Codici Convoluzionali
163
che vedi , per argomento non negativo, vale la disuguaglianza
( )
(vedi (4.9.14), possiamo ancora scrivere:
(
)
(√
)
(
)
)
∑
( )
(14.3.10)
per mezzo della quale otteniamo:
∑
( ) (√
(14.3.11)
( )|
Anche nel caso della decodifica Hard possiamo maggiorare
ulteriormente la
ricordando la maggiorazione di Bhattacharyya (4.9.10) che ci permette di scrivere:
( )
(
)
(14.3.12)
Quest’ultima ci permette, partendo dalla (14.3.6) di scrivere:
∑
( )
(
)
∑
( )
(
)
(14.3.13)
( )
La (14.3.11) e la (14.3.13) possono essere calcolate facilmente, disponendo della ( ) del codice, la (14.3.6) e la (14.3.9)
sono dei bound più stretti, ma possono essere calcolati solo in
modo approssimato, entrambe tuttavia sono in genere dominate
dal primo addendo della sommatoria che corrisponde alla distanza
libera del codice. Il primo addendo di ciascuna di esse rappresenta
in genere già da solo una maggiorazione della probabilità d’errore
di nodo.
164
Capitolo - 14
14.4 - Bound sulla probabilità d’errore sul bit informativo.
Al fine di calcolare la probabilità d’errore sul bit d’informazione
, consideriamo una porzione di sequenza codificata
̂
costituita da
bit con
(l’apice ha la sola funzione di etichetta). Nella corrispondente porzione di sequenza decodificata ̂
costituita da
bit saranno presenti un certo numero di bit errati. La presenza di bit errati è possibile solo se nella
̂
si sono manifestati errori di nodo. Sappiamo che ad ogni
evento d’errore di nodo corrisponde un ben preciso numero di bit
informativi errati.
Indichiamo adesso con
la frequenza relativa d’errore
sul bit, della sequenza -esima. Essa è espressa dal rapporto tra il
numero di bit informativi errati e di quelli inviati. Il numero totale
di bit informativi errati può essere anche calcolato accorpando
tutti gli eventi d’errore di nodo caratterizzati da uno stesso numero di bit informativi errati. Indicando con
( ) il numero di
eventi d’errore che contengono esattamente bit informativi errati
manifestatisi nella -esima realizzazione dell’esperimento, possiamo scrivere:
∑
()
(14.4.1)
La probabilità d’errore sul bit informativo si può ottenere
mediando su un numero idealmente infinito di repliche dello
stesso esperimento come segue:
∑
(14.4.2)
sostituendo la (14.4.1) nella precedente abbiamo:
Prestazioni dei Codici Convoluzionali
∑
()
∑
()
∑
∑
165
(14.4.3)
Nella precedente, prima di invertire l’ordine delle sommatorie, si è
tenuto conto del fatto che, al crescere della lunghezza della sequenza, si possono manifestare eventi d’errore con un numero arbitrariamente grande di bit informativi errati. Si constata facilmente che il limite all’interno della sommatoria di indice ad ultimo
membro della precedente, esprime la probabilità che si manifesti
un qualsiasi evento d’errore di nodo che contenga esattamente
bit informativi errati.
Indicando con l’insieme di tutti gli eventi d’errore con
bit informativi errati possiamo scrivere:
()
∑
(
(14.4.4)
)
la precedente può essere maggiorata applicando, come nel
paragrafo precedente, l’union bound:
(
)
∑
( )
(14.4.5)
A partire dalla (14.4.3) possiamo ancora scrivere:
∑
(
)
∑ ∑
( )
(14.4.6)
Ricordando la (14.2.7) che per comodità riscriviamo:
(
)
∑ ∑∑ (
)
(14.4.7)
166
Capitolo - 14
e tenuto conto che, indipendentemente dal tipo di decodificatore,
la probabilità che si presenti un dato errore di nodo dipende solo
dal suo peso possiamo ancora scrivere:
∑ ∑
( )
∑ ∑∑ (
)
( )
(14.4.8)
∑ ∑
(
) ( )
La precedente può essere ulteriormente maggiorata applicando la (14.3.13) nel caso di decodifica hard o la (14.3.11) in
quella soft ottenendo rispettivamente:
∑ ∑
(
)
(
)
(14.4.9)
∑ ∑
∑ ∑
(
(
)
)(
)
(14.4.10)
Osserviamo adesso che:
(
)
|
∑ ∑∑
(
)
|
(14.4.11)
∑ ∑∑ (
)
∑ ∑
(
)
la quale ci permette di riscrivere la (14.4.9) e la (14.4.10) rispettivamente nella forma più compatta:
(
e
)
|
(14.4.12)
Prestazioni dei Codici Convoluzionali
(
)
|
167
(14.4.13)
Capitolo - 15
ANELLI DI POLINOMI
15.1 - Premessa
Abbiamo già fornito la definizione di campo e abbiamo anche
operato nel campo costituito da due soli elementi. Si possono
0
1
2
3
4
5
6
0
1
2
3
4
5
6
0
0
1
2
3
4
5
6
0
0
0
0
0
0
0
0
1
1
2
3
4
5
6
0
1
0
1
2
3
4
5
6
2
2
3
4
5
6
0
1
2
0
2
4
6
1
3
5
3
3
4
5
6
0
1
2
3
0
3
6
2
5
1
4
4
4
5
6
0
1
2
3
4
0
4
1
5
2
6
3
5
5
6
0
1
2
3
4
5
0
5
3
1
6
4
2
6
6
0
1
2
3
4
5
6
0
6
5
4
3
2
1
Tabella 15.1 - Campo di Galois di 7 elementi
costruire anche campi finiti (Campi di Galois
Galois Field) con un
numero d’elementi che sia un primo o una potenza di un primo.
Nel caso in cui il campo abbia un numero primo d’elementi,
l’addizione e la moltiplicazione tra elementi del campo si possono
effettuare in modo tradizionale avendo cura di ridurre il risultato
modulo .
Nella Tabella 15.1 a titolo d’esempio sono riportati i risultati di tutte le possibili somme e prodotti tra coppie d’elementi di
, il campo di Galois con sette elementi.
15.2 - L’anello polinomi a coefficienti in
Consideriamo un campo e un’indeterminata , indichiamo con
l’insieme di tutti i possibili polinomi (cioè di qualunque grado) nella variabile con coefficienti appartenenti ad , il
generico elemento di
sarà cioè del tipo:
( )(
)
(15.2.1)
170
Capitolo - 15 - Appunti di Teoria dell’Informazione e Codici
dove è un intero non negativo qualsiasi e
, essendo l’elemento neutro rispetto all’addizione in . Conveniamo inoltre:
a) di utilizzare per le leggi di composizione del campo i simboli
utilizzati per il campo reale
b) di indicare con ( ) ( ) il polinomio identicamente nullo,
cioè coincidente con
c) di omettere l’apice tra parentesi per indicare un polinomio di
grado qualsiasi;
d) che dato ( ) ( ),
per
.
( )
( )
Siano
( )
( ) due elementi di
e un elemento
di , poniamo:
( )
(
)
( )(
)
(
)
(
( )(
)
)
( )(
( )
(
(
)
)
(15.2.2)
(15.2.3)
e
( )
( )
∑
( )
)
( )
(15.2.4)
Nella precedente, la sommatoria va calcolata secondo le regole di
, come pure il prodotto al suo interno.
In sostanza abbiamo appena introdotto in
l’addizione
e la moltiplicazione. ispetto all’addizione è facile verificare che
è un gruppo commutativo, inoltre la moltiplicazione tra polinomi in è commutativa e distributiva rispetto all’addizione.
è pertanto un anello commutativo, con identità, che, ovviamente,
coincide con l’identità del campo , che indicheremo con .
Inoltre il prodotto tra polinomi non nulli è non nullo. Il polinomio nullo si ottiene se e solo se almeno uno dei due moltiplicandi è il polinomio nullo. Vale cioè anche la legge di annullamento del prodotto.
Anelli di Polinomi
171
Quanto detto comporta che i polinomi
sono linearmente indipendenti su
.
15.3 - Spazi di polinomi
Consideriamo il sottoinsieme ( ) di
costituito da
tutti i polinomi di grado minore di . La somma di due elementi
di ( ) è ancora un elemento di ( ) . Inoltre, moltiplicando un qualunque elemento di ( ) per un elemento di ,
che coincide con ( ) , otteniamo un elemento di ( ) .
(
)
è quindi uno spazio vettoriale su . La sua dimensione è in quanto generabile tramite i suoi elementi linearmente indipendenti
.
Ci si convince facilmente che detto spazio vettoriale è isomorfo allo spazio costituito da tutte le -uple ordinate di ele(
)
menti di , basta infatti associare al polinomio ( ) ( )
,
l’elemento a
se
, ovvero l’elemento
se
Capitolo - 16
CODICI POLINOMIALI
Dati due interi
e
, scegliamo un polinomio
( )
che chiameremo polinomio generatore, tramite
(
)
(
)
( ) possiamo individuare il sottoinsieme
che contiene i polinomi che si ottengono da tutti i possibili pro(
)
dotti tra ( ) ( ) e i polinomi ( )
.
Consideriamo adesso due elementi ( ) e ( ) appartenenti
a
, quindi esprimibili rispettivamente nella forma:
(
)
( )
( )
(
)(
)
Comunque scelti
( )
( )
( )
( )
(
)(
)
(16.1.1)
risulta:
(
( )
( ))
(
)(
)
(16.1.2)
La precedente ci mostra che ( ) è un sottospazio di ( ) ,
quindi ne è anche un sottogruppo.
Il corrispondente sottoinsieme di
è quindi un codice
di gruppo.
Abbiamo già detto (vedi § 7.2 - ) che la distanza di Hamming tra parole di è una metrica, la distanza minima di è data
dalla sua parola di peso minimo cioè dalla parola che ha il minor
numero di lettere diverse da , che non è necessariamente unica.
Ci si convince anche facilmente del fatto che se s’intende
impiegare un codice polinomiale per la rilevazione d’errore è sufficiente dividere il polinomio corrispondente alla parola ricevuta
per il polinomio generatore e verificare che il resto di tale divisione sia il polinomio nullo, per essere certi che la parola ricevuta appartiene al codice.
Consideriamo adesso il caso dei codici polinomiali sul campo essi sono certamente codici binari a blocchi, nel senso che
ammettono una matrice generatrice che si può facilmente
174
Capitolo - 16
(
)
costruire a partire da
( ) . Come righe di tale matrice si
possono scegliere infatti le stringhe dei coefficienti dei polinomi
di codice ottenuti moltiplicando il polinomio generatore per i polinomi
. Viceversa non è vero in generale che i
codici lineari a blocchi siano polinomiali, al fine di verificare se un
codice lineare a blocchi è polinomiale è sufficiente verificare che
tutti i polinomi associati alle righe della matrice generatrice ammettano un fattore comune di grado
.
Capitolo - 17
IDEALI DI UN ANELLO DI POLINOMI
17.1 - Premessa
Torniamo adesso a parlare di campi finiti, abbiamo visto
come si possono costruire campi finiti con un numero primo
d’elementi; è anche possibile, come mostreremo più avanti, definire campi che hanno un numero di elementi che è una potenza (ad
esponente intero) di un numero primo. Il generico elemento di un
tale campo si può quindi mettere in corrispondenza biunivoca con
l’insieme
(
)
, che ha la stessa cardinalità.
Sorge quindi spontaneo indagare sulla possibilità di individuare in ( ) due opportune leggi di composizione tra suoi
elementi che consentano di pensare a
po di
(
)
come ad un cam-
elementi. Sarebbe a questo punto possibile definire degli
isomorfismi tra
(
)
e
. Parliamo di isomorfismi perché
potrebbero esistere più leggi di composizione interna che soddisfano le condizioni necessarie per interpretare ( )
come
campo.
Abbiamo già visto che ( ) è un gruppo commutativo
rispetto all’addizione tra polinomi, purtroppo non possiamo dire
lo stesso della moltiplicazione tra polinomi non fosse altro perché
(
)
non è chiuso rispetto ad essa.
È quindi necessario definire una legge di composizione interna per ( ) che abbia tutte le proprietà di cui deve godere
la moltiplicazione tra elementi di un campo. A tal fine è necessaria
una piccola digressione di carattere generale.
176
Capitolo - 17 - Appunti di Teoria dell’Informazione e Codici
17.2 - Ideali di un anello con identità.
Consideriamo un anello commutativo con identità
mo che un suo sottogruppo è un ideale se:
dicia(17.2.1)
Qualora l’anello non fosse commutativo dovremmo distinguere
tra ideale sinistro e ideale destro, che potrebbero anche coincidere, nel qual caso si tratterebbe di un ideale bilaterale.
Abbiamo detto che un ideale è un sottogruppo di , quindi
definisce un gruppo quoziente ⁄ , i cui elementi sono l’ideale
stesso, che ne costituisce l’elemento neutro, e tutti i suoi laterali in
, che indicheremo con
. Con questa notazione risulta:
(
(
)
)
(17.2.2)
Osserviamo che le precedenti sono indipendenti dalla scelta
dei rappresentanti di laterale. Si può anche verificare che ⁄ è
come un anello commutativo con identità detto anello quoziente di rispetto a . Dalla seconda delle (17.2.2) si deduce
facilmente che l’identità moltiplicativa è il laterale che si può indicare con
, cioè quello che contiene l’identità moltiplicativa
di
Osserviamo che comunque scelto un elemento di , l’insieme
è un ideale, infatti ( ) (
)
(
)
, inoltre indicando con , l’opposto di , ( )
e risulta ( )
( )
( ( ))
, pertanto è un sottogruppo d . Ogni ideale generato da un elemento di è detto
ideale principale.
Vale il seguente teorema:
Teorema 17.1
Tutti gli ideali dell’anello
principali.
Dimostrazione:
dei polinomi su un campo
sono
177
Ideali di un Anello di Polinomi
(
)
Osserviamo innanzitutto che
( )
è un ideale
principale per l’anello commutativo con identità
. Consideria(
)
mo adesso un ideale di
diverso da
( ) , in esso
scegliamo un elemento ( ) ( )
di grado minimo.
Comunque scelto un polinomio ( ) ( )
potremo scrivere:
( )(
(
)
)(
)
( )(
( )(
)
)
(17.2.3)
(cioè ( ) ( ) non è un divisore di ( ) ( ) )
, ma in questo caso potremmo scrivere:
dove se
risulterà
( )
( )
( )
(
( )
)
( )
( )
( )
(17.2.4)
( )
che è un assurdo in quanto
( ) deve appartenere ad , come
mostra la precedente, pur avendo grado minore di che per ipotesi è il grado minimo dei polinomi non nulli contenuti in . Deve
(
)
pertanto essere
, o, che è lo stesso, ( ) ( )
( )
,
pertanto ogni ideale di
è principale.
***********
Ci si convince facilmente che comunque scelto
,
( )
anche il polinomio
( ) genera lo stesso ideale. Ovviamente
sarà sempre possibile individuare tra i generatori di un ideale
un solo polinomio monico cioè con il coefficiente del termine di
massimo grado pari ad .
Vale il seguente teorema:
Teorema 17.2
Dati due ideali di
se e solo se ( ) ha
Dato un ideale
che esistono ( ) ( ) e
( )(
)
∪
, siano
( ) ed
( )
( ) tra i suoi fattori.
***********
( ) e un polinomio ( ) ( ), sappiamo
)
( ) tali che si può scrivere:
( )
(
( )(
)
( )(
)
{
( )(
)
(17.2.5)
178
Capitolo - 17 - Appunti di Teoria dell’Informazione e Codici
che ci permette di affermare che
allo stesso laterale di ( ) ( ) , cioè:
( )
( )
( )
()
( )
( )
( )
( ) ed
( )
( )
( )
( ) appartengono
(17.2.6)
Ciascun laterale di un ideale contiene un unico polinomio di
grado minimo, grado che, in virtù della (17.2.5), deve essere minore di . Per convincersene è sufficiente ricordare che due elementi
di un gruppo appartengono allo stesso laterale se e solo se la loro
differenza appartiene al sottogruppo, ma la differenza tra due polinomi distinti di grado minore non potrà appartenere all’ideale
che essendo principale contiene solo polinomi di grado maggiore
od uguale ad , fatta eccezione per il polinomio nullo, che peraltro è l’unico polinomio di grado minimo contenuto nell’ideale
pensato come laterale di se stesso.
siste quindi un isomorfismo “naturale” tra l’anello
( )
( ) e l’insieme
(
)
dei polinomi a coefficienti in
di grado minore di . si può quindi pensare a ( ) come ad un
anello commutativo con identità assumendo come risultato della
moltiplicazione tra due polinomi di ( ) il resto della divisione tra l’usuale prodotto dei due polinomi e ( ) ( ).
⁄
Capitolo - 18
CODICI CICLICI
18.1 - Rappresentazione polinomiale di un codice ciclico.
Definizione 18.1
Un codice lineare a blocchi
que scelta una sua parola di codice
si dice ciclico se e solo se comun-
(18.1.1)
***********
In quel che segue mostreremo che i codici ciclici sono polinomiali. Dovremo in altri termini mostrare che se un codice è ciclico allora la sua rappresentazione polinomiale ammette un polinomio generatore.
Ad ogni parola di codice possiamo associare un polinomio
appartenente a ( ) come segue:
( )
(18.1.2)
denoteremo con
le di codice.
Risulta:
( ) l’insieme dei polinomi associati alle paro-
( )
(18.1.3)
Notiamo che per trasformare ( ) in
( ) il polinomio
:
( )
(
( ) occorre sottrarre a
)
(18.1.4)
( )
180
Capitolo - 18 - Appunti di Teoria dell’Informazione e Codici
ma poiché
è il quoto della divisione tra ( ) e
, dalla
precedente si deduce che ( ) è il resto della divisione appena
citata.
In altri termini, l’operazione corrispondente alla rotazione
ciclica di una parola in equivale, nel linguaggio dei polinomi, a
considerare il resto della divisione per
del prodotto tra il
polinomio corrispondente alla parola ed . In simboli:
( )
( )
(
)
(18.1.5)
18.2 - Teorema sui codici ciclici
Teorema 18.1
Condizione necessaria e sufficiente affinché un codice sia ciclico è che il
( ) dei laterali dell’ideale
sottoinsieme
contenenti i polimomi
⁄
di codice sia un ideale di
.
Necessarietà:
L’insieme dei polinomi di codice
( ) essendo costituito
(
)
da polinomi appartenenti a
costituisce anche un sottoinsieme dei coset leader (intesi come i polinomi di grado minimo)
⁄
dei laterali di
.
Inoltre:
a) il codice
è lineare, pertanto è uno spazio vettoriale
sul campo , quindi la sua rappresentazione in forma polinomiale
( ) deve essere anche un sottospazio di
;
⁄
b) l’anello
ha la struttura di spazio vettoriale sul
campo ;
⁄
c) esiste un isomorfismo naturale tra ( ) ed
,
(
)
quello che associa ad ogni polinomio di
l’unico late⁄
rale che lo contiene in
.
Dalle considerazioni appena fatte discende che l’immagine,
( ) , secondo l’isomorfismo sopra citato di
( ) in
⁄
è a sua volta un sottospazio vettoriale, quindi anche
⁄
un sottogruppo,
( ) di
, i cui elementi sono i laterali di
che contengono i polinomi di codice.
181
Codici Ciclici
La ciclicità e la linearità del codice implicano:
( )
( )
( )
(
( )
)
(18.2.1)
dalla quale sempre in virtù della linearità di
facilmente:
( )
( )
( ) ( )
(
( ) discende anche
( )
)
( )
(18.2.2)
Quest’ultima, sulla base dell’osservazione c), può essere rivisitata
( )
in termini di laterali di
, infatti
possiamo
scrivere:
( )
( )
{ ( ) ( )
( ) ( )
(
( )
( )
( )
( )
(18.2.3)
( )
⁄
( ) è dunque un ideale dell’anello
Sufficienza:
Consideriamo un ideale di
un suo elemento, sia ( )
implica che:
( )
( )
( ) ( )
( )
}
)
⁄
.
comunque preso
, il fatto che sia un ideale
⁄
( ) ( )
(
)
( )
⁄
(18.2.4)
Ne discende che la controimmagine dell’isomorfismo di cui all’osservazione c) è un codice ciclico.
***********
18.3 - Polinomio generatore di un codice ciclico
di
Il sottoinsieme di
costituito dall’unione di tutti i laterali
che appartengono
( ) , in virtù della (18.2.2), è un
182
Capitolo - 18 - Appunti di Teoria dell’Informazione e Codici
ideale, ma tutti gli ideali di
sono principali (vedi Teorema
17.1), esiste cioè un polinomio di grado minimo che li genera, tale
(
)
polinomio deve appartenere a
( )
in particolare
potremmo scegliere in quest'ultimo l’unico polinomio monico di
grado minimo, sia ( ) . Il grado di ( ) dovrà necessariamente
essere
per un codice
.
( )
, quindi, in virtù del Teorema 17.2, ( )
deve essere un divisore di
, ne discende che:
un codice ciclico
esiste se e solo se il polinomio
, a coefficienti nel
campo , si può scomporre nel prodotto tra due polinomi uno dei quali di
grado
.
18.4 - Polinomio di parità di un codice ciclico
Nel paragrafo precedente abbiamo visto che se
genera un codice ciclico
( ), allora deve esistere
( )(
(
)
)(
)
( )(
(
)
)
( )
(18.4.1)
D’altro canto nel precedente capitolo abbiamo visto che ogni parola di un codice polinomiale può essere scritta nella forma:
( )
( )
(
)(
)
(18.4.2)
dove ( ) è un qualsiasi polinomio appartenente a
Risulta:
( )
( ) ( )
( )
( )(
(
)
( )
)
( )
(
( )
( )(
)
)
(
)
.
(18.4.3)
La precedente è vera per tutti e soli i polinomi di codice, ne
discende che ( ) ( ), o un qualunque altro polinomio di
che
lo contenga come fattore senza contenere
, può essere utilizzato per effettuare il controllo di parità nel caso in cui si intenda
utilizzare il codice esclusivamente per la rivelazione dell’errore.
( )
Il polinomio ( )(
)
( ) ( ) ha tutti i coefficienti di grado maggiore di
e minore di nulli. Questa os-
Codici Ciclici
183
servazione ci permette di scrivere
equazioni che devono
essere soddisfatte dai coefficienti del polinomio ( ) ( ) ( ):
∑
(18.4.4)
ciascuna delle equazioni appena scritte coinvolge
simboli
consecutivi della parola di codice e può quindi essere utilizzata come controllo di parità qualora si intenda utilizzare il codice per la
correzione di errore. Le (18.4.4) potrebbero anche essere utilizzate
per implementare un codificatore sistematico utilizzando un filtro
FIR.
Infatti nella prima delle (18.4.4) possiamo scegliere arbitrariamente
, (in sostanza la parola informativa) e calcolare , quindi utilizzare nella seconda
per calcolare
e così via fino ad ottenere una parola di codice. In sostanza si
risolvono ricorsivamente equazioni del tipo
∑
(18.4.5)
Nell’incognita tali equazioni ammettono certamente soluzione
dal momento che deve essere diverso da . Se così non fosse,
tra le radici di ( ) vi sarebbe lo zero del campo che non è una radice di
, quindi non può esserlo per nessuno dei suoi fattori.
Esempio 18.1
Vogliamo implementare un codificatore basato sulle (18.4.5) che
emetta gli simboli della parola di codice in sequenza. Osserviamo che
il codificatore è sistematico, i simboli informativi emessi dalla sorgente
potranno quindi essere resi disponibili direttamente all’uscita del
codificatore. Nello stesso tempo, al fine di calcolare i simboli di parità
essi dovranno essere temporaneamente memorizzati in uno stack di
memoria che nel caso di codici binari si identifica di fatto con uno shift
register. Osserviamo lo schema di Fig.E 18.1, nel quale sono indicati in
rosso i simboli presenti nelle celle di memoria, schematizzate come elementi di ritardo. Ci rendiamo conto che, non appena la sorgente emette il
-esimo simbolo informativo (
), all’uscita del moltiplicatore posto in
serie al sommatore sarà presente . Il passo successivo consisterà nel
184
Capitolo - 18 - Appunti di Teoria dell’Informazione e Codici
Fig.E 18.1 Codificatore sistematico basato sul polinomio di parità
chiudere l’anello di reazione, spostando sulla posizione b il commutatore
e mantenerlo in questa posizione per
periodi di clock per calcolare
i restanti simboli di parità.
Osserviamo che ( ) può essere scelto in modo che risulti
,
nel qual caso sarebbe possibile eliminare il moltiplicatore in uscita al
sommatore; d’altra parte tale scelta comporta in genere la rinuncia ad un
polinomio generatore monico. Nel caso in cui il codice sia binario, la sua
struttura si semplifica ulteriormente in quanto si potrebbero abolire tutti i
moltiplicatori limitandosi a connettere al sommatore solo le celle di memoria cui corrisponde un coefficiente non nullo del polinomio di parità.
Notiamo anche che in questo caso le celle di memoria si ridurrebbero a
dei Flip Flop. Per concludere osserviamo che il “cuore” di questo codificatore è sostanzialmente un filtro FIR.
18.5 - Matrice generatrice di un codice ciclico
Consideriamo un codice ciclico sul campo la cui rappresentazione polinomiale sia l’insieme
( ) , abbiamo visto che
esso deve ammettere un polinomio generatore di grado
, sia:
(
)(
)
(18.5.1)
(
)
Sappiamo che, anche i polinomi
( )
(
) devono
( ) in virtù della ciclicità. Osserviamo che per i
appartenere a
polinomi ottenuti al variare di tra e
risulta
(
)(
)
(
)
(
)(
)
(18.5.2)
Detti polinomi sono linearmente indipendenti, giacché tutti di
( )
grado diverso e sono in numero pari alla dimensione di
pensato come sottospazio di ( ) , ne costituiscono quindi
una base.
Quanto appena detto ci consente di scrivere una matrice
generatrice del codice
che avrà evidentemente come
righe le parole corrispondenti ai polinomi appena individuati
185
Codici Ciclici
[
]
(18.5.3)
18.6 - Codici ciclici Sistematici
La matrice generatrice individuata nel paragrafo precedente
non è in forma sistematica, vogliamo mostrare che è possibile individuarne una che lo è.
Dato un codice ciclico
( ) generato da ( ) ( ) consideriamo polinomi del tipo:
(18.6.1)
Essi non sono certamente polinomi di codice in quanto tra le loro
radici non compaiono certamente quelle di ( ) ( ) , tuttavia sottraendo da ciascuno di essi il resto della divisione per ( ) otteniamo un polinomio di codice possiamo cioè affermare che:
( ( ))
( )
(18.6.2)
Se scriviamo i polinomi ottenuti tramite la (18.6.2) in corrispondenza ai valori di compresi tra tra
ed
otteniamo
polinomi di codice che hanno il solo coefficiente -esimo pari a
uno e tutti i restanti nulli nel range di valori di in parola, ciò in
quanto il resto di una divisione per ( ) è un polinomio che al più
può avere grado
. I polinomi appena ottenuti, essendo di
grado diverso, sono linearmente indipendenti, si possono quindi
utilizzare le parole di codice ad essi associate per costruire una
matrice generatrice del codice che sarà del tipo:
(18.6.3)
in grado quindi di generare un codice sistematico con la parte informativa “in coda” anziché “in testa”.
Da quanto detto discende che il polinomio di codice asso(
)
ciato al polinomio informativo ( )
è dato da:
( )
( )
( )
(
(
)(
))
(18.6.4)
186
Capitolo - 18 - Appunti di Teoria dell’Informazione e Codici
Prendiamo adesso in considerazione la matrice:
(18.6.5)
che si ottiene effettuando rotazioni cicliche su ciascuna riga della
. Essa ha per righe parole di
linearmente indipendenti
ed è quindi anch’essa una matrice generatrice.
Esempio 18.2
Per costruire un codificatore basato sulla (18.6.4) dobbiamo disporre
di un sistema in grado di calcolare il resto della divisione tra due
polinomi.
Supponiamo di disporre all’istante - esimo del polinomio
( ), e
che tale polinomio all’istante
- esimo venga aggiornato, per effetto
dell’emissione da parte di una sorgente di un simbolo
secondo la
regola:
( )
( )
Indichiamo rispettivamente con ( ) e
( ) il resto e il quoto della divisione tra
( )e ( ) che supponiamo monico. Vogliamo calcolare
( ). Risulta:
( ) [
( )]
( ( ))
Ma
( )
mente scrivere:
( )
[
( ) ( )
[
( )
( )
]
(
possiamo quindi ulterior-
(
(
)
( )
(
)
(
( ( ))
( ( ))
ha al più grado
( )
]
)
(
)
)
)
Fig.E 18.2 Schema di principio di un sistema che calcola il resto della divisione tra due
polinomi
Possiamo quindi facilmente tracciare lo schema di principio mostrato in
Fig.E 18.2
187
Codici Ciclici
Non appena tutti i coefficienti del dividendo, a partire da quello di
grado maggiore, saranno immessi nel sistema, sarà sufficiente aprire
l’anello di reazione tramite il deviatore in uscita e nei successivi
passi si presenteranno in uscita i coefficienti del resto.
18.7 - Duale di un codice ciclico
Abbiamo mostrato che un codice ciclico
generatore un fattore ( ) ( ) del polinomio
quindi un ( ) ( ) tale che:
(
)(
)
( )(
( ), ha come
. Esiste
)
(18.7.1)
Abbiamo già visto come ( ) ( ) possa essere utilizzato come polinomio di parità, ma ( ) ( ) , in quanto fattore di
, è in
grado, a sua volta, di generare un codice ciclico
( )
(
)
anch’esso contenuto in
che viene chiamato, seppur impropriamente in quanto le parole di
non sono in genere ortogonali a quelle di
, duale di
( ).
Consideriamo due polinomi ( )
( ) e
( )
( ). Risulta:
( ) ( )
( )
(
)(
) ( )
( )(
)
( ) ( )(
)
(18.7.2)
Il polinomio ( ) ( ) ha grado al più (
) (
)
, ne segue che il coefficiente del termine di grado
( ) ( ) deve essere nullo. Possiamo quindi scrivere:
∑
di
(18.7.3)
la precedente vale per ogni scelta di ( )
( ) e ( )
( ) . Essa ci suggerisce come costruire il codice duale
propriamente detto che si ottiene ribaltando le parole di
.
Anche il codice duale propriamente detto è polinomiale il
suo polinomio generatore risulta essere:
(
)
una sua matrice generatrice potrebbe essere:
(18.7.4)
188
Capitolo - 18 - Appunti di Teoria dell’Informazione e Codici
[
]
(18.7.5)
Capitolo - 19
CAMPI FINITI
19.1 - Polinomi irriducibili e campi a essi associati
Definizione 19.1
Diciamo che un polinomio
è irriducibile se:
( )
( )
()
( )
( )
( )
( )
( )
di grado non inferiore a
(19.1.1)
Ovviamente tutti i polinomi di primo grado sono irriducibili. In
. Anche il polinomio
è irriducibile esso infatti non è divisibile né per né per
, che sono tutti e soli i
polinomi di primo grado appartenenti a
. Non sono necessarie altre verifiche in quanto le eventuali fattorizzazioni devono
comunque contenere un polinomio di primo grado. Il polinomio
è irriducibile in , ma pensato come elemento di
non lo è
Vale il seguente teorema:
Teorema 19.1
⁄ ( ) ( ) individuato dall’ideale generato
Il gruppo quoziente
dal polinomio ( ) ( ) è un campo se ( ) ( ) è un polinomio irriducibile di
.
Dimostrazione:
⁄ ( ) ( ) è un anello commutativo
Sappiamo già che
con identità, quindi dobbiamo solo verificare che per ogni suo
elemento, fatta eccezione per ( ) ( ) , esiste un inverso.
Osserviamo che ( ) ( ) non coincide con
. Infatti, se
( )
così non fosse, esisterebbe ( )
( ) ( )
, ma la
precedente può essere soddisfatta solo se
, ma essendo, per
( )
ipotesi,
( ) irriducibile, il suo grado non può essere inferiore
190
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
ad . Possiamo pertanto affermare che
( )
almeno un polinomio ( )
( ).
Consideriamo adesso l’insieme
{ ( )
( )
( )
( )
⁄
( ) contiene
( ) ( ) | ( ) ( )
(19.1.2)
si constata facilmente che è un ideale di
, ma (vedi Teorema
17.1) tutti gli ideali di
sono principali, deve pertanto esistere
( )
in
un polinomio
( ) tale che risulti ( ) ( )
.
( )
Dalla (19.1.2) deduciamo che
( )
, quindi deve
esistere un polinomio per il quale risulti ( ) ( ) ( ) ( ) ( ) ( ),
ma ( ) ( ) è irriducibile, quindi, necessariamente, o
, o
( )
. Nel primo caso
( )
, ma ciò è assurdo perché
( )
( )
contiene anche
( )
( ) , deve quindi essere
. Ciò
implica
da cui discende che devono esistere ( ) ( )
che soddisfano l’uguaglianza
( )
( )(
)
( )
( )(
( )(
)
( )(
)
(19.1.3)
La precedente implica:
( )(
)
(
( )(
( )(
( )(
)
)
)
( )(
( )(
)
( )(
)
)
( )(
( )(
))
)
( )(
)
(19.1.4)
)
( )(
Dalla precedente si deduce che il laterale
l’inverso di ( ) ( ) ( ) ( ) .
***********
)
( )
( )
( )
( )
è
19.2 - Ordine degli elementi di un gruppo
Consideriamo un gruppo finito , abbiamo già visto che
ogni suo sottogruppo individua una partizione del gruppo in
laterali, che hanno tutti la stessa cardinalità del sottogruppo. Ciò
comporta il fatto che il numero di elementi di un sottogruppo, il
suo ordine ( ), è un sottomultiplo dell’ordine del gruppo in cui
esso è contenuto.
191
Campi Finiti
Sia
l’insieme:
un elemento di un gruppo finito
. Consideriamo
(19.2.1)
è un sottoinsieme di , in quanto è chiuso rispetto alla legge
, quindi
deve avere un numero finito di elementi, da cui
facilmente discende che deve esistere un intero
( ), tale che
risulti
, o, che è lo stesso, tale che
(19.2.2)
Abbiamo appena mostrato che
contiene . Considerando
adesso il più piccolo valore di che soddisfa la (19.2.2), risulta:
(19.2.3)
è quindi un sottogruppo di . L’ordine del sottogruppo
generato da un elemento di un gruppo è detto ordine di , ( ).
19.3 - Ordine degli elementi di un campo finito
Consideriamo un campo finito . Sia l’ordine di rispetto
alla legge , possiamo affermare che è un numero primo. Infatti, se così non fosse, esisterebbero due interi, ed , entrambi
per i quali varrebbe l’uguaglianza:
(
)
(19.3.1)
ma è un campo vale quindi la legge di annullamento del prodotto, quindi o
o
. ( ) sarebbe quindi il minimo tra
ed e non . Ne segue che ( ) deve essere un primo.
Osserviamo che per ogni elemento di si può scrivere
, da cui:
(
) (
)
(
)
(19.3.2)
più in generale
, ma
solo se
, ovvero
se
, possiamo quindi concludere che tutti gli elementi di-
192
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
versi da di un campo finito hanno lo stesso ordine rispetto alla
somma, e che tale ordine è un primo risulta cioè:
(19.3.3)
19.4 - Ordine di un campo finito
Consideriamo un campo , ed un suo sottocampo , in
questo caso diremo che è un’estensione di . Si constata che
ha la struttura di spazio vettoriale sul campo , se la dimensione
dello spazio è finita è detta grado di su .
Vale il seguente teorema:
Teorema 19.2 - Ordine di un campo finito
L’ordine di un campo finito o è un primo, o è una potenza (intera) di
un primo.
Dimostrazione:
Abbiamo visto che l’ordine dell’elemento di un qualsiasi
campo è un primo , si verifica facilmente che l’insieme
3
(19.4.1)
é un campo (isomorfo a
) quindi è un sottocampo non necessariamente proprio (in quanto potrebbe coincidere con ) di .
D’altro canto, ha la struttura di spazio vettoriale sul campo e la sua dimensione deve essere finita, essendo finito.
Un qualsiasi elemento di potrà essere quindi espresso in
modo univoco come combinazione lineare, con coefficienti appartenenti a , di elementi che costituiscano una base per ,
cioè che siano linearmente indipendenti su . Osservando che
esistono esattamente combinazioni lineari distinte si conclude
che l’ordine di se non è primo è una potenza di un primo.
***********
Quale che sia il campo finito
, il campo
generato
dalla sua unità moltiplicativa è detto sottocampo primo o fondamentale. Esso è contenuto in tutti i sottocampi di
, o, che è
193
Campi Finiti
lo stesso, è l’intersezione di tutti i sottocampi di
quindi è anche il più piccolo sottocampo di
che contiene (si dice che
è la caratteristica del campo).
Se un Campo non è finito, allora anche l’insieme definito
nella (19.4.1) non lo è, e non è neppure un sottocampo di (non
è nemmeno un gruppo) in questo caso si può dimostrare che il
sottocampo minimo contenuto in è isomorfo al campo dei
razionali e che l’insieme definito nella (19.4.1) è isomorfo all’insieme dei naturali. In questo caso diremo che il campo ha
caratteristica
19.5 - Elementi primitivi di un campo
Sappiamo che un campo
privato dell’elemento neutro
rispetto alla somma è un gruppo rispetto alla moltiplicazione, indichiamolo con
. L’ordine di
è
.
Sia l’ordine di un generico elemento di
, risulta
⏟
(19.5.1)
fattori
deve necessariamente essere un divisore di
naturale tale che
. Ne segue:
esiste cioè un
( )
Dalla precedente discende che per ogni elemento di
mo scrivere:
(19.5.2)
potre(19.5.3)
La precedente vale anche per , quindi:
(19.5.4)
Si può dimostrare che il gruppo
è un gruppo ciclico,
cioè che in
vi sono elementi il cui ordine è uguale all’ordine
del gruppo. Un tale elemento si chiama generatore del gruppo.
Un generatore di
si dice elemento primitivo del campo,
in particolare si può dimostrare che vi sono elementi primitivi in
194
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
numero uguale a quello dei naturali
e con esso relativamente primi, ad esempio in
ve ne saranno , in
.
Inoltre in ogni campo per cui
è un primo, quale ad esempio
tutti gli elementi diversi da sono primitivi.
19.6 - Campi di polinomi
Cerchiamo adesso di mettere un po’ d’ordine, sappiamo
che:
- se ( ) ( ) è un polinomio irriducibile appartenente a
,
(
)
⁄
allora
( ) è un campo.
- ogni campo finito
ha un numero di elementi che se non è
un numero primo è una potenza di un primo;
(
)
, è isomorfo ad uno spazio vettoriale di
dimensione , costituito esattamente da ( )
elementi
(una potenza di un primo).
Fissato un polinomio irriducibile ( ) ( ) , a coefficienti in
e comunque scelto un polinomio ( ) ( ) di
possiamo
scrivere:
( )(
)
( )(
)
( )(
)
( )(
)
(19.6.1)
La precedente ci mostra che ( ) ( ) ed ( ) ( ), appartengono allo
stesso laterale dell’ideale generato da ( ) ( ). Notiamo anche che
il grado di ( ) ( ) è, inferiore al grado di ( ) ( ).
Osserviamo che ( ) ( ) può essere un qualunque polinomio appartenente a ( ) in definitiva quindi, individuato un
polinomio irriducibile ( ) ( ), possiamo affermare che ( ) ,
con l’usuale somma tra polinomi in
e definendo come prodotto tra due suoi elementi il resto della divisione tra il loro pro⁄ ( ) ( ) , in
dotto in
e ( ) ( ), è un campo isomorfo a
quanto ogni elemento di ( ) individua uno e un solo laterale
di ( ) ( ) , e viceversa.
Esempio 19.1
195
Campi Finiti
dei polinomi sul Campo
. Il
⁄
è un
campo, di ordine , in
quanto sono i polinomi di grado minore
di a coefficienti in .
Osserviamo che tutti i
suoi elementi non nulli
sono primitivi in quanto il gruppo
ha
elementi, e sette è un
primo. In particolare
anche l’elemento:
Consideriamo l’anello
polinomio
è irriducibile. Pertanto
sarà primitivo. Assumendo come rappre⁄
Tabella 19.1 sentanti di laterale i polinomi di grado inferiore a otterremo la Tabella 19.1, nella quale
abbiamo convenzionalmente indicato l’elemento neutro rispetto alla somma con
e, nella quarta colonna, abbiamo associato ai rappresentanti
di laterale le corrispondenti parole binarie di bit.
19.7 - Polinomi irriducibili primitivi
Definizione 19.2
Diciamo che un polinomio irriducibile ( ) ( )
se esso è fattore di
e non di
con
è primitivo
.
Vale il seguente teorema:
Teorema 19.3
( )
Se
( )
⁄
( )
( )
solo se
( ) è un polinomio irriducibile di
( )
l’elemento
( ) è primitivo per
⁄
( )
( ) se e
( ) è un polinomio primitivo.
19.8 - Alcune proprietà dei campi finiti
Consideriamo due elementi
facilmente che vale l’uguaglianza:
(
)
∑(
)
[( )]
e
∑(
di
ci convinciamo
)
[( )]
(19.8.1)
196
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
Osserviamo adesso che i coefficienti binomiali nella sommatoria a ultimo membro sono multipli di , essendo primo, ciò
premesso ci basta ricordare la (19.3.3) per concludere che tutti gli
addendi della sommatoria all’ultimo membro della precedente sono uguali ad ne discende che
(
)
(19.8.2)
Risulta anche:
(
)
(
)
(
)
(19.8.3)
Dalle precedenti, sfruttando la proprietà associativa della
somma e tenuto conto che la precedente può essere applicata iterativamente, otteniamo l’equazione:
(
)
(19.8.4)
Un interessante caso particolare si ha quando si eleva a
una combinazione lineare di elementi di
pensato come spazio vettoriale sul suo sottocampo primo:
(∑
)
∑
(19.8.5)
La precedente consente di affermare che per un qualsiasi polinomio ( ) ( )
risulta:
(
( )(
))
(∑
)
∑
(
)
( )
(
dalla quale discende che, se il polinomio ammette
radice, ammette anche
viamente tutte distinte.
Esempio 19.2
con
)
(19.8.6)
come
. Tali radici non saranno ov-
Campi Finiti
197
Vogliamo costruire un campo con
elementi
. Per farlo
abbiamo bisogno di individuare un polinomio irriducibile a coefficienti
in
di quarto grado.
Prendiamo quindi in
considerazione il polinomio
. Detto
0010
polinomio non è divisibile
0100
per
poiché non è
1000
omogeneo né per
poiché ha un numero di1001
spari di coefficienti non
1011
nulli. quindi non è divi1111
sibile neppure per polinomi
0111
di terzo grado. Esso non è
divisibile neppure per i
1110
polinomi di secondo grado
0101
,
,
, per1010
tanto è irriducibile.
Dovremmo a questo
1101
punto verificare che si
0011
tratta di un polinomio pri0110
mitivo, accertandoci che
1100
non è un fattore di
con
. Tale
0001
verifica
è
piuttosto
noiosa,
0000
d’altro canto, qualora il poTabella 19.2 - possibile rappresentazione di
linomio in parola non fosse
Tabella 19.3 Addizioni e moltiplicazioni in
198
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
( )
primitivo lo scopriremmo facilmente in quanto
il polinomio non sarebbe un generatore per il
campo, esso avrebbe cioè un ordine inferiore a
.
A partire dal polinomio che associamo all’elemento del campo cominciamo a riempire
la Tabella 19.2 con il resto della divisione tra le
successive potenze di
e il polinomio
. Come si può notare dalla Tabella
19.2 il polinomio è primitivo in quanto l’ordine
0010
Tabella 19.4 - logaritmo
di Zech per la rappresentazione di
dell’Esempio 19.2
0100
1000
0011
0110
di
. Nella terza colonna
1100
della
Tabella
abbiamo
1011
indicato la rappresentazione
0101
binaria dei polinomi.
1010
Abbiamo a questo punto
generato gli elementi del
0111
campo.
1110
Per operare più rapi1111
damente su di esso possiamo
1101
costruire la Tabella 19.3 che
riassume tutti i possibili
1001
risultati di somme e prodotti
0001
tra gli elementi del campo. È
0000
opportuno sottolineare che
tale tabella dipende dal Tabella 19.5 – altra possibile rappresentaziopolinomio irriducibile scelto ne di
nel senso che se avessimo
utilizzato un polinomio diverso avremmo ottenuto una diversa
rappresentazione di
e conseguentemente una Tabella 19.3 diversa.
19.9 - Il logaritmo di Zech
Un modo alternativo per calcolare le somme in un campo finito è quello di fare riferimento ai logaritmi di Zech.
199
Campi Finiti
Sia un elemento primitivo del campo; supponiamo di
voler calcolare la somma di due elementi siano ed entrambi
diversi da possiamo scrivere:
(
)
(19.9.1)
Osserviamo che il termine in parentesi si può esprimere come potenza di . Notiamo inoltre che esso dipende esclusivamente dalla
differenza tra gli esponenti
, che va valutata modulo la cardinalità di
, ovvero
. Possiamo quindi scrivere
(
)
)
, convenendo che (
qualora dovesse risultare
, (in tutte le estensioni di
ogni elemento ha se
stesso come opposto, ma non è vero in generale!).
I possibili valori assunti dalla quantità in parentesi si
possono leggere nella Tabella 19.3. e possiamo scrivere
(
)
(
)
(19.9.2)
) è detta logaritmo di Zech. Essa, ovviamente,
La funzione (
dipende sia dalla scelta del polinomio irriducibile, sia da quella dell’elemento primitivo. Il vantaggio nell’utilizzazione del logaritmo
di Zech, anziché della Tabella 19.3, consiste nel fatto che la tabella
che si ottiene è più compatta essendo costituita solo da
valori contro i (
) della parte additiva della Tabella 19.3
che diventa ben presto ingestibile al crescere della cardinalità del
campo.
Si osservi che qualora avessimo utilizzato il polinomio
, anch’esso irriducibile e primitivo, per generare
avremmo ottenuto la rappresentazione di Tabella 19.5 per la quale
la Tabella 19.3 e la Tabella 19.4 dovrebbero essere riscritte.
Il logaritmo di Zech si presta meglio ad essere implementato in un programma di calcolo.
19.10 - Elementi algebrici di un campo su un sottocampo
Consideriamo adesso un campo
e una sua estensione .
200
Capitolo - 19 - Appunti di Teoria dell’Informazione e Codici
Definizione 19.3
Diciamo che un elemento
esiste un polinomio ( ) ( ) di
effettuando le operazioni in risulti
è algebrico su un suo sottocampo se
che ha come radice, cioè tale che
( )
( )
.
Consideriamo ad esempio il campo dei razionali e la sua
estensione (il campo eale) l’elemento √ è algebrico su in
quanto il polinomio
ha √ tra le sue radici se lo si
pensa come un polinomio appartenente a
.
Osserviamo che l’insieme
contenente i polinomi
che hanno
tra le radici è un ideale di
. Infatti, comunque scelto un polinomio in moltiplicandolo per un qualunque
polinomio di
si ottiene ancora un polinomio che ha tra le
sue radici.
L’ideale deve ammettere quindi un polinomio generatore
( )
sia
( ), osserviamo che esiste sempre un polinomio generatore
che ha come coefficiente del termine di grado massimo. Un tale
polinomio sarà detto monico, da ora in poi quando parleremo di
polinomio generatore ci riferiremo a quello monico.
Il polinomio ( ) ( ) è irriducibile in
, (non è detto che
lo sia in
) in quanto se così non fosse almeno uno dei fattori
in cui potrebbe essere scomposto ammetterebbe come radice.
Tale fattore apparterrebbe quindi ad , ed avrebbe grado inferiore
a ( ) ( ) , ( ) ( ) non sarebbe in grado di generarlo e perverremmo ad un assurdo.
Da quanto sopra segue che esiste un unico polinomio generatore monico di che è chiamato polinomio minimale di su .
Osserviamo che ogni elemento di è algebrico su . Inoltre è facile constatare che se è finito ogni elemento di è algebrico sul suo sottocampo primo, in quanto
si annulla in
virtù della (19.5.2)
.
Capitolo - 20
CODICI BCH
20.1 - Codici BCH
Supponiamo di voler generare un codice polinomiale con
parole di lunghezza i cui simboli appartengano a un campo
che abbia una distanza minima non inferiore a .
Un modo per farlo è scegliere un’estensione di
di
grado con un numero di elementi pari a
, sia
.
Scegliamo in
un elemento primitiv e costruiamo il
polinomio ( )
di grado minimo che ha come radici gli
elementi dell’insieme
con
. Detto polinomio è il minimo comune multiplo tra i polinomi
minimali associati agli elementi
.
Affermiamo che un polinomio ( ) così costruito è in grado di generare un codice con distanza minima non inferiore a .
Per provarlo osserviamo che l’insieme delle radici di ogni
polinomio associato a una parola di codice conterrà l’insieme
. Affinché un codice abbia distanza minima pari almeno a non devono esistere parole di codice, ad eccezione di quella nulla, che abbiano meno di simboli diversi da .
Supponiamo per assurdo che un codice generato nel modo
anzidetto non rispetti questa condizione, in questo caso esisterà
almeno una parola di codice individuata da un polinomio del tipo:
( )
(20.1.1)
Essendo ( ) un polinomio di codice l’insieme delle sue radici
conterrà l’insieme devono quindi essere contemporaneamente
soddisfatte le equazioni:
202
Capitolo - 20 - Appunti di Teoria dell’Informazione e Codici
(
)
(
)
(
)
(20.1.2)
{
(
)
(
)
(
)
Abbiamo così ottenuto un sistema lineare e omogeneo di
equazioni in
incognite.
La matrice dei coefficienti del sistema di cui sopra è:
(
[
)
(
(
)
)
(
(
)
)
(
]
(20.1.3)
)
risulta:
[
]
(
)
(
)
(
)
(20.1.4)
[
Il determinante di
]
vale quindi :
∏(
)∏
(20.1.5)
essendo la prima matrice a secondo membro della (20.1.4) di Vandermonde e la seconda diagonale.
è certamente non singolare ciò discende dal fatto che,
essendo per ipotesi, elemento primitivo di
, possiamo scrivere:
(20.1.6)
Possiamo quindi concludere che il sistema omogeneo
(20.1.2) è di Cramer. Esso ammette quindi solo la soluzione banale. Non esistono pertanto parole di codice, ad eccezione di quella
Codici BCH
203
con simboli tutti nulli, che abbiano meno di simboli diversi da
.
Quanto appena mostrato permette di costruire un’importante classe di codici detti BCH, dalle iniziali dei loro scopritori:
Bose (1959), Chaundhuri e Hocquenghem (1960). Alla classe dei
codici BCH appartengono anche i codici di Hamming che abbiamo già visto, nonché i codici di Reed Solomon (RS).
Osserviamo che i codici BCH sono ciclici in quanto il loro
polinomio generatore ( ) ( ) ha tra le sue radici un sottoinsieme di quelle di
(pensato come polinomio a coefficienti in
(
)
).
( ) ne è pertanto un fattore.
Osserviamo anche che il grado del polinomio generatore
non è assegnato a priori, ma dipende dalla scelta dell’elemento primitivo di
. ne segue che anche il numero di simboli che costituiscono la parola informativa non può essere prefissato. Va
anche osservato che la distanza minima del codice potrebbe
risultare maggiore di quella di progetto.
Tipicamente i simboli che costituiscono la parola di codice
appartengono a un campo
, cioè ad un campo con un numero di elementi che sia una potenza di .
In particolare i codici di Reed Solomon, che sono certamente i più importanti tra i codici BCH, hanno simboli appartenenti a
, lunghezza della parola di codice
, lunghezza della parola informativa qualsiasi, purché (ovviamente)
minore di , e distanza minima
.
Un codice di RS che ha trovato diverse applicazioni pratiche è il (
) che presenta una distanza minima di con
simboli appartenenti a
, cioè costituite da un byte. Pensato
come codice binario la parola di codice è quindi di
bit e la corrispondente parola informativa di
bit. Questo codice è in grado di correggere fino ad byte errati indipendentemente dal numero di bit errati nel byte.
Esempio 20.1 - Progetto di un codice BCH
204
Capitolo - 20 - Appunti di Teoria dell’Informazione e Codici
( )
Tabella 20.1
Vogliamo realizzare
un codice BCH con una
parola di codice di
bit in grado di correggere almeno
errori
Tabella 20.2 - Possibile rappresentazione di
quindi con una distanza
minima pari almeno a . Per farlo abbiamo bisogno di generare
.
Possiamo verificare che
è un polinomio irriducibile primitivo. A partire da quest’ultimo ricaviamo la Tabella 20.2, da essa
possiamo facilmente calcolare i logaritmi di Zech riportati in Tabella
20.1.
01010
10010
00001
Codici BCH
205
Possiamo quindi procedere alla costruzione del polinomio generatore
a coefficienti in
, che deve avere come radici 6 potenze consecutive
di un elemento primitivo . Possiamo scegliere:
Tale scelta ha il vantaggio di semplificare la ricerca del polinomio generatore, in quanto il polinomio minimale associato ad tenendo conto
della (19.8.6) è anche minimale per
ed
quello di
lo è anche per
. Il polimomio generatore cercato sarà quindi il prodotto di tre
polinomi minimali, quello associato ad , quello associato ad
e quello
associato ad .
Osserviamo che se avessimo scelto il polinomio generatore avente
come radici:
Esso avrebbe avuto certamente un grado non minore di quello
associato alla scelta precedente in quanto oltre ai tre fattori citati avrebbe
dovuto avere tra i suoi fattori il polinomio minimale associato ad .
L’aumento del grado del polinomio generatore comporta inevitabilmente
una riduzione del grado del polinomio informativo. Inoltre nel caso
specifico, la distanza minima di progetto sarebbe anche aumentata perché
il polinomio generatore avrebbe avuto almeno 7 potenze consecutive di
tra le sue radici.
La ricerca dei polinomi minimali può essere fatta per tentativi
possiamo solo ridurne il numero. Nel caso ad esempio del polinomio
minimale associato ad
sappiamo che esso avrà anche le radici
quindi dovrà essere almeno di quinto grado, possiamo
quindi cominciare a prendere in considerazione i polinomi non omogenei
di 5 grado con un numero dispari di coefficienti, in quanto quelli con un
numero pari di coefficienti, essendo divisibili per
, non sarebbero
irriducibili. Restano quindi 8 possibili polinomi di quinto grado da
prendere in considerazione.
Il polinomio minimale associato ad risulta essere
. Che
sia una sua radice si constata immediatamente osservando che
e
, appartengono allo stesso laterale (vedi Tabella 20.2).
è
irriducibile in quanto è il polinomio che abbiamo utilizzato per generare
il campo.
Il polinomio irriducibile associato ad
deve avere tra le sue radici
anche
, anch’esso avrà quindi un grado non inferiore al
quinto il polinomio che cerchiamo è
. Proviamo a
verificare che
è una sua radice. Utilizzando i logaritmi di Zech (vedi
Tabella 20.1) otteniamo:
206
Capitolo - 20 - Appunti di Teoria dell’Informazione e Codici
Dobbiamo anche verificare che sia irriducibile. Non avendo tra i suoi
fattori nessun polinomio di primo grado, verifichiamo che non ne abbia
di secondo grado. Ovviamente esso non è divisibile per , non lo è
neppure per
ne per
, quindi è irriducibile in quanto non
possono esistere fattori di terzo grado, se non ve ne sono di secondo, in
un polinomio di quinto grado.
Il polinomio minimale associato ad
è
, come si
può analogamente verificare.
Possiamo a questo punto calcolare il polinomio generatore del codice
che sarà il prodotto dei tre polinomi minimali sopra indicati che sarà di
quindicesimo grado:
( )
(
)(
(
)(
)
)(
)
Poiché il polinomio di codice è di trentesimo grado e il polinomio
generatore di quindicesimo il polinomio informativo sarà anch’esso di 15
grado la parola informativa sarà quindi costituita da 16 bit, avremo
quindi 65.536 parole di codice immerse in uno spazio di
parole (tutte le possibili parole costituite da 31 bit.
Le parole di codice si possono a questo punto generare moltiplicando
il polinomio associato alla parola informativa per il polinomio generatore, ma in questo caso il codice non sarebbe sistematico, ovvero possiamo ricordare che i codici BCH sono ciclici e basandoci sul § 18.6 possiamo generare le parole di codice a partire da un polinomio informativo ( ) effettuando rotazioni cicliche sulla parola di codice
( )
( )
( )
( ( ))
Capitolo - 21
LA TRASFORMATA DI FOURIER DISCRETA
21.1 - La Trasformata di Fourier Discreta
Ricordiamo che la trasformata (DFT) e l’antitrasformata
(IDFT) di Fourier discreta di una sequenza
a valori nel
campo complesso di durata , o periodica di periodo è data da:
∑
∑
(21.1.1)
∑
∑
dove
rappresenta una radice -esima dell’unità, in altri termini
nelle (21.1.1) compaiono le radici appartenenti al campo complesso del polinomio, a coefficienti in ,
. Si noti che il
campo complesso è un’estensione del campo reale.
Volendo generalizzare le (21.1.1) ai campi finiti, occorre innanzitutto soffermarsi sull’esistenza della radice -esima dell’unità del
campo. Ricordando la (19.5.1) e la (19.5.3) concludiamo che se
operiamo in
la lunghezza della sequenza deve essere un
divisore di
.
Ciò premesso consideriamo una sequenza, appartenente a
ed una radice -esima dell’unità in
, cioè un
elemento di ordine per il gruppo
, sia . Prendendo spunto dalle (21.1.1) possiamo scrivere la coppia di trasformate
∑
(21.1.2)
˜
∑
208
Capitolo - 21 - Appunti di Teoria dell’Informazione e Codici
Vogliamo verificare se esiste un elemento
in corrispondenza al quale risulti
˜
. A tal fine sostituiamo la prima delle (21.1.2) nella seconda:
˜
∑ ∑
∑
∑
∑
(
∑
(
∑
)
)
(
)
∑
∑
∑
(
)
(
(21.1.3)
)
{
(
∑{
)
(
)
(
)
(
)
}
}
Affinché le (21.1.1) siano una coppia di trasformate è quindi sufficiente che sia l’inverso di
in
, in realtà è anche l’inverso di
in
.
Possiamo quindi scrivere la coppia di trasformate:
∑
(21.1.4)
(
)
∑
209
La Trasformata di Fourier Discreta
Per la DFT su un campo finito valgono quasi tutte le proprietà già note per quella nel campo complesso, ad esempio la linearità, la cui verifica è banale, o quella di traslazione ciclica.
Sia data una sequenza
, la cui DFT sia
, fissato un intero consideriamo la sequenza il cui generico elemento
˜
, dove
sta ad indicare che la differenza va effettuata modulo . Vogliamo calcolare la DFT di ˜
otteniamo:
˜
∑ ˜
∑
(
∑
)
(21.1.5)
∑
Dualmente fissato un intero
la sua DFT vale:
˜
∑
consideriamo la sequenza
(
∑
Alla sequenza
)
(21.1.6)
possiamo associare il polinomio:
( )
(21.1.7)
lo stesso possiamo fare per la sua DFT
, ammesso che esista, definendo in modo analogo un polinomio ( ) di grado al più
. Osservando le (21.1.4) ci rendiamo conto che risulta:
(
(
)
)
(
(21.1.8)
)
Dalle precedenti discende che se
allora ( ) ha
come radice, o, che è lo stesso, ha il polinomio
tra i suoi
210
Capitolo - 21 - Appunti di Teoria dell’Informazione e Codici
fattori. Analoghe considerazioni possono farsi su ( ) se qualche
.
Consideriamo una sequenza
non banale cui corrisponda un ( )di grado non maggiore di
. Detto polinomio può avere al più
radici che qualora coincidessero
tutte con le , comporterebbero l’annullamento di non più di
elementi della
che conseguentemente avrebbe
almeno elementi non nulli. Applicando la (21.1.5) possiamo facilmente concludere che è in realtà sufficiente che in una sequenza
non banale siano nulli
elementi consecutivi (modulo ),
affinché la sequenza trasformata, o antitrasformata abbia almeno
elementi non nulli.
21.2 - DFT e codici ciclici
Le considerazioni fatte dopo la (21.1.8) ci permettono di
introdurre una definizione alternativa per i codici ciclici. Possiamo
infatti affermare che
Definizione 21.1
Un codice ciclico (
DFT si annulla in
) è costituito dal sottoinsieme di
la cui
posizioni prefissate.
La definizione appena data comporta ovviamente l’esistenza
della DFT, deve esistere cioè un elemento di ordine per
,
che consenta di calcolarla, ne discende che deve essere un sottomultiplo di
, cioè una radice -esima dell’unità di
. Se
vogliamo che le parole di codice abbiano la massima lunghezza
l’elemento scelto per il calcolo della DFT dovrà essere primitivo.
In questo caso avremmo
. Il fatto che la Definizione
21.1 sia equivalente alla Definizione 18.1 risulta evidente tenendo
conto della (21.1.8) che ci permette di affermare che ogni polinomio di un codice costruito sulla base della Definizione 21.1 è mul-
La Trasformata di Fourier Discreta
tiplo di uno stesso polinomio che è a sua volta un fattore di
inteso come polinomio a coefficienti in
.
211