Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

115
Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Transcript of Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Page 1: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Giovanni Garbo

Stefano Mangione

Appunti di Teoria dei Codici

Page 2: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 3: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Sommario

Capitolo I .................................................................................................................... 1

Strutture Algebriche................................................................................................... 1 I.1 Gruppo................................................................................................................... 1 I.2 Anello ..................................................................................................................... 1 I.3 Campo.................................................................................................................... 2 I.4 Spazio vettoriale.................................................................................................... 2

Capitolo II .................................................................................................................. 3

Lo Spazio nB ............................................................................................................ 3

II.1 Lo Spazio nB ........................................................................................................ 3 II.2 Generalizzazione della distanza di Hamming .................................................... 4

Capitolo III................................................................................................................. 7

Codici Binari a Blocchi.............................................................................................. 7 III.1 Codificatore, Codice, Decodificatore .................................................................. 7

Definizione III.1 - codificatore a blocchi ................................................................................. 7 Definizione III.2 - codice binario a blocchi.............................................................................. 7 Definizione III.3 - decodificatore ............................................................................................. 8

III.2 Utilità della codifica di canale.............................................................................. 9 III.3 La decodifica a massima verosimiglianza......................................................... 11

Regola di decisione a Massima Verosimiglianza ................................................................... 11 III.4 Definizioni e teoremi sui codici rivelatori e correttori..................................... 12

Definizione III.4 ..................................................................................................................... 12 Definizione III.5 ..................................................................................................................... 12 Teorema III.1.......................................................................................................................... 13 Definizione III.6 ..................................................................................................................... 13

Capitolo IV ............................................................................................................... 17

Codici Lineari a Blocchi .......................................................................................... 17 IV.1 Premessa .............................................................................................................. 17 IV.2 Morfismi .............................................................................................................. 17

Definizione IV.1 - omomorfismo........................................................................................... 17 Definizione IV.2 - monomorfismo......................................................................................... 18 Definizione IV.3 - isomorfismo ............................................................................................. 18

IV.3 Schema di principio di un codice lineare a blocco ........................................... 18 IV.4 Matrice generatrice del codice........................................................................... 19

Page 4: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

ii Sommario

IV.5 Distribuzione dei pesi di un codice lineare a blocco......................................... 20 Definizione IV.4.....................................................................................................................21

IV.6 Capacità di rivelazione di un codice lineare a blocco ...................................... 21 IV.7 Probabilità di non rivelazione d’errore di un codice lineare .......................... 22 IV.8 Laterali di un sottogruppo ................................................................................. 23 IV.9 Decodifica tramite i rappresentanti di laterale ................................................ 24

Teorema IV.2 .........................................................................................................................25 IV.10 Probabilità d’errore di un codice lineare a blocchi ..................................... 26 IV.11 Codici perfetti, bound di Hamming .............................................................. 26

Capitolo V ................................................................................................................. 29

Codici Sistematici ..................................................................................................... 29 V.1 Codici Sistematici................................................................................................ 29 V.2 Matrice di controllo di parità............................................................................. 30 V.3 Codici duali.......................................................................................................... 31 V.4 Decodifica basata sulla sindrome ...................................................................... 32

Capitolo VI................................................................................................................ 35

Codici di Hamming...................................................................................................35 Esempio VI.1..........................................................................................................................36

VI.1 Duali dei codici di Hamming.............................................................................. 37 VI.2 Codici ortogonali e transortogonali................................................................... 38

Capitolo VII .............................................................................................................. 41

Codici Convoluzionali ..............................................................................................41 VII.1 Premessa.......................................................................................................... 41 VII.2 Struttura del codificatore............................................................................... 41 VII.3 Matrice generatrice e generatori................................................................... 42 VII.4 Diagramma di stato del codificatore............................................................. 44 VII.5 Codici catastrofici ........................................................................................... 46 VII.6 Trellis degli stati ............................................................................................. 47

Esempio VII.1 ........................................................................................................................48 VII.7 Decodifica hard e decodifica soft di un codice convoluzionale. .................. 49 VII.8 L’algoritmo di Viterbi .................................................................................... 52 VII.9 Efficienza dell’algoritmo di Viterbi .............................................................. 54 VII.10 Funzione di trasferimento di un codificatore convoluzionale..................... 55

Page 5: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Sommario iii

VII.11 Bound sulla probabilità di primo evento d’errore. ..................................... 59 Esempio VII.2 ........................................................................................................................ 62

VII.12 Bound sulla probabilità d’errore sul bit informativo. ................................ 64 Capitolo VIII ............................................................................................................ 69

Anelli di polinomi..................................................................................................... 69 VIII.1 Premessa.......................................................................................................... 69 VIII.2 L’anello polinomi a coefficienti in F ............................................................ 69 VIII.3 Spazi di polinomi ............................................................................................ 71

Capitolo IX ............................................................................................................... 73

Codici polinomiali .................................................................................................... 73

Capitolo X................................................................................................................. 75

Ideali di un anello di polinomi ................................................................................ 75 X.1 Premessa .............................................................................................................. 75 X.2 Ideali di un anello con identità. ......................................................................... 76

Teorema X.1........................................................................................................................... 76 Teorema X.2........................................................................................................................... 77

Capitolo XI ............................................................................................................... 79

Codici Ciclici ............................................................................................................ 79 XI.1 Rappresentazione polinomiale di un codice ciclico.......................................... 79

Definizione XI.1..................................................................................................................... 79

XI.2 L’anello n

x

x

⎡ ⎤⎢ ⎥⎣ ⎦−

Fe

...................................................................................... 80

Teorema XI.1 ......................................................................................................................... 82 XI.3 Polinomio generatore di un codice ciclico......................................................... 82 XI.4 Polinomio di parità di un codice ciclico ............................................................ 83

Esempio XI.1.......................................................................................................................... 84 XI.5 Matrice generatrice di un codice ciclico ........................................................... 85 XI.6 Codici ciclici Sistematici..................................................................................... 85

Esempio XI.2.......................................................................................................................... 86 XI.7 Duale di un codice ciclico ................................................................................... 87

Capitolo XII.............................................................................................................. 89

Campi finiti............................................................................................................... 89 XII.1 Polinomi irriducibili e campi ad essi associati ............................................. 89

Definizione XII.1 ................................................................................................................... 89

Page 6: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

iv Sommario

Teorema XII.1 ........................................................................................................................89 XII.2 Ordine degli elementi di un gruppo .............................................................. 91 XII.3 Ordine degli elementi di un campo finito ..................................................... 92 XII.4 Ordine di un campo finito.............................................................................. 92

Teorema XII.2 - Ordine di un campo finito............................................................................92 XII.5 Elementi primitivi di un campo..................................................................... 94 XII.6 Campi di polinomi .......................................................................................... 95

Esempio XII.1 ........................................................................................................................96 XII.7 Polinomi irriducibili primitivi ....................................................................... 96

Definizione XII.2....................................................................................................................96 Definizione XII.3....................................................................................................................97 Teorema XII.3 ........................................................................................................................98

XII.8 Alcune proprietà dei campi finiti .................................................................. 98 Capitolo XIII........................................................................................................... 101

Codici BCH............................................................................................................. 101 XIII.1 Codici BCH ................................................................................................... 101

Capitolo XIV ........................................................................................................... 105

La Trasformata di Fourier Discreta ...................................................................... 105 XIV.1 La Trasformata di Fourier Discreta ........................................................... 105 XIV.2 DFT e codici ciclici........................................................................................ 108

Definizione XIV.1 ................................................................................................................108 XIV.3 DFT e codici BCH......................................................................................... 109

Page 7: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo I

Strutture Algebriche

Al fine di introdurre il concetto di codice è opportuno ricordare alcune definizioni:

I.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à:

( ) ( )1 2 3 1 2 3 1 2 3 , ,

,g g g g g g g g g

g g g g

g g g g g g

⊕ ⊕ ⊕ ⊕

⊕ ⊕

⊕ ⊕

= ∀ ∈

∃ ∈ | ∀ ∈ = =′ ′ ′∀ ∈ ∃ ∈ | = =

o o oo

(I.1.1)

Se la legge di composizione interna è anche commutativa è un gruppo

commutativo o abeliano.

Equation Section (Next)

I.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à.

Equation Section (Next)

Page 8: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

2 Capitolo I

I.3 Campo Un insieme F che sia un anello commutativo con identità è un campo se F privato

dell’elemento neutro rispetto all’addizione è un gruppo commutativo rispetto alla

moltiplicazione.

L’insieme dei numeri razionali, l’insieme dei reali e l’insieme dei

complessi, com’è noto, sono dei campi. Si verifica facilmente che anche l’insieme

{ }0,1 , effettuando l’addizione senza riporto, cioè ponendo 1 1 0+ = e con la usuale

moltiplicazione in è un campo che indicheremo con B .

Equation Section (Next)

I.4 Spazio vettoriale Dato un gruppo abeliano ed un campo F si dice che è uno spazio vettoriale

sul campo F se si è individuata una legge di composizione esterna, detta prodotto per

scalari, che associa ad ogni elemento di ×F un elemento di e che comunque scelti

1 2, ∈g g e 1 2,α α ∈F goda delle proprietà:

( )( )

1 1 2 2

1 2 1

1 1 2

1

1 1

0

1

α αα αα

∈+ ∈

==

g gg

g gg og g

(I.4.1)

dove 0 e 1 indicano rispettivamente gli elementi neutri dell’addizione e della

moltiplicazione del campo, o quello del gruppo, che chiameremo anche origine dello

spazio.

Page 9: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo II

Lo Spazio nB

II.1 Lo Spazio nB

Fissato un naturale 1n ≥ consideriamo l’insieme nB di tutte le n -uple ordinate

d’elementi di B . Ci si rende conto facilmente che nB è un gruppo rispetto alla legge di

composizione interna che associa ad ogni coppia di elementi di nB quello ottenuto

componendo termine a termine tramite l’addizione in B gli elementi omologhi delle due

n -uple. Si constata che ogni n -upla è l’opposta di se stessa e che l’elemento neutro del

gruppo è la n -upla identicamente nulla.

nB è anche uno spazio vettoriale di dimensione n sopra il campo B , potremo

quindi pensare gli elementi di nB come vettori riga con n componenti che assumono

valori in nB . In quel che segue indicheremo gli elementi di nB con lettere corsive

minuscole in grassetto e li chiameremo parole di nB , 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:

- nB è uno spazio metrico, possiamo infatti assumere come distanza tra due

parole di nB la somma in delle somme in B delle componenti omologhe;

- nB è uno spazio normato potendosi assumere come norma del generico

elemento di nB la distanza di detto elemento dall’origine di nB , cioè dalla

parola identicamente nulla.

In quel che segue indicheremo l’addizione nel campo con ⊕ .

La distanza sopra introdotta è detta distanza di Hamming. Essa in pratica è

espressa dal numero di bit corrispondenti diversi delle due parole; in formule:

Page 10: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

4 Capitolo II

( )1

,n

i ii

d a b⊕=

= ∑a b (II.1.1)

Che la distanza di Hamming sia effettivamente una metrica si verifica facilmente, essa è

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 , ,a b c di nB

risulta:

( ) ( ) ( ), , ,d d d≤ +a b a c c b (II.1.2)

per sincerarsene basta esplicitare la (II.1.2):

1 1 1

n n n

i i i i i ii i i

a b a c c b⊕ ⊕ ⊕

= = =

≤ +∑ ∑ ∑ (II.1.3)

ed osservare che tutti gli addendi delle sommatorie che compaiono nella precedente sono

non negativi, pertanto è sufficiente sincerarsi che la (II.1.3) sia soddisfatta addendo per

addendo, fatto questo facilmente verificabile effettuando delle prove esaustive.

La massima distanza possibile tra due parole di nB vale n 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 nB 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 nB

addizione e sottrazione coincidono, in quanto ogni elemento è l’opposto di se stesso.

Equation Section (Next)

II.2 Generalizzazione della distanza di Hamming

Dato un insieme A di cardinalità q consideriamo l’insieme nA . Anche su detto

insieme si può introdurre la distanza di Hamming tra due suoi elementi, che anche in

questo caso è espressa dal numero di simboli corrispondenti diversi tra loro. La distanza

tra due elementi di nA è quindi al più n .

Page 11: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Lo Spazio nB 5

Si può verificare che la distanza di Hamming è una metrica su nA . 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 a di nA ed un naturale r n≤ esistono ( )1rn

rq

⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠− elementi

di nA a distanza i dal punto prefissato, potremmo dire che detti elementi giacciono sulla

superficie di una sfera di raggio i centrata in a . La sfera appena citata contiene

esattamente ( )0

1r

in

ii

q⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠

=

−∑ elementi, potremmo dire che il numero di tali elementi

costituisce il “volume” di detta sfera.

Qualora nA fosse anche uno spazio vettoriale, tramite la distanza di Hamming si

potrebbe individuare un “peso” per ogni elemento di nA espresso dalla distanza

dell’elemento dall’origine dello spazio, tale peso costituirebbe una possibile norma per

nA .

Page 12: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 13: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo III

Codici Binari a Blocchi

III.1 Codificatore, Codice, Decodificatore Cominciamo con alcune definizioni:

Definizione III.1 - codificatore a blocchi Un codificatore binario a blocchi è un’applicazione C da kB a nB , se C è iniettiva il

codificatore è non ambiguo.

Definizione III.2 - codice binario a blocchi Dato un codificatore C da kB a nB chiameremo codice binario a blocchi l’insieme

( )k nn,k C= ⊆B B . Gli elementi di n,k sono denominati parole di codice.

In altri termini per codice binario a blocchi intenderemo l’insieme delle parole di

nB che sono immagine secondo il codificatore C di almeno un elemento di kB , 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 sia disponibile un canale di ritorno, non sia necessario

trasmettere in tempo reale e sia quindi possibile la ritrasmissione del mes-

saggio senza pregiudicare la qualità del servizio, 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).

Page 14: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

8 Capitolo III

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 ad un’applicazione D che

chiameremo decodificatore.

Definizione III.3 - decodificatore

Dato un codice binario a blocchi n,k , il decodificatore è un’applicazione Dn k→B B che

sulla base di un criterio prefissato, ha il compito di associare ad ogni elemento di nB

che si presenti all’uscita del canale l’elemento di kB che verosimilmente era stato

immesso nel codificatore C 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 n,k (in quanto sottoinsieme

di nB ) 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,

capiterà anche noi, sia a C che a n,k , lasciando al contesto l’onere di render chiaro al

lettore a cosa si stia effettivamente facendo riferimento.

Appare in conclusione chiaro che un sistema di codifica è in realtà completamente

definito solo dalla terna { }, ,n,kC D .

La capacità di correzione di un codice è in pratica affidata alla ridondanza più o

meno oculatamente introdotta dal codificatore, ne discende che di regola k n< e che il

codificatore C è un’applicazione iniettiva.

Altrettanto evidente è che, se il codice è non ambiguo, il criterio adottato per la

scelta del decodificatore D deve necessariamente essere tale che la restrizione di D a

n,k coincida con l’applicazione inversa della restrizione di C a n,k .

Equation Section (Next)

Page 15: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Binari a Blocchi 9

III.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 di 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 ad un sistema che trasmette su un

BSC (Binary Symmetric Channel) privo di memoria. I simboli che costituiscono la

generica parola di codice verrano quindi inviati indipendentemente sul canale e ciascuno

di essi avrà una probabilità 12

p < di essere rivelato in modo errato, pertanto in uscita al

canale avremo un elemento di nB che non è certo corrisponda all’elemento inviato.

La probabilità cP di ricevere una parola di nB correttamente sarà data da

( )1np− ad esempio con 7n = e 410p −= avremo 0.9993cP = conseguente-

mente la probabilità di ricevere una parola non corretta vale 36,997 10−⋅ , tale

probabilità è in realtà scomponibile nella somma di tante probabilità d’eventi disgiunti,

precisamente eventi del tipo: “nella parola ricevuta sono presenti esattamente t l≥

errori”.

Page 16: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

10 Capitolo III

La probabilità che la parola ricevuta non sia corretta si può quindi anche scrivere

nella forma:

( )1

1 1n

n tn tc e t

t

P P p p⎛ ⎞ −⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠

=

− = −∑ (III.2.1)

dove il t −esimo addendo esprime la probabilità che nella parola ricevuta siano presenti

esattamente t errori. La probabilità che la parola contenga almeno due errori si può

pertanto scrivere anche nella forma:

( )2

1n

n tn tt

t

p p⎛ ⎞ −⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠

=

−∑ (III.2.2)

nel nostro esempio tale probabilità si ridurrebbe a 72, 099 10−⋅ .

Quanto detto mostra come il contributo alla probabilità dell’errore singolo sia di

fatto dominante essendo gli addendi della (III.2.1) rapidamente decrescenti al crescere di

t 1.

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 eP sul bit cresce al diminuire della energia ad esso associata, il calcolo della

(III.2.2) andrebbe quindi effettuato introducendo un valore di p che tiene conto di ciò.

1 Per verificarlo è sufficiente esprimere ( )1

tn tp p −− nella forma ( ) ( )1 1

t npp p− − ed osservare che se 1

2p < risulta ( )1 1p

p− < , pertanto ( )1tp

p− è una funzione decrescente di t .

Page 17: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Binari a Blocchi 11

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.

Equation Section (Next)

III.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), che, com’è noto, equivale alla maximum a posteriori

probability (MAP) nel caso in cui i bit informativi trasmessi siano equiprobabili.

Osserviamo che in questo caso lo sono anche tutte le parole di kB e conseguentemente,

in virtù dell’iniettività del codificatore C , lo saranno anche tutte le parole del codice .

Sotto quest’ipotesi, indicando con c la generica parola di codice, con n∈b B la parola

ricevuta e con c la parola di codice scelta dal decodificatore, la regola di decisione sarà:

Regola di decisione a Massima Verosimiglianza

Scegli la parola di codice c per la quale è massima la probabilità di ricevere b , atteso

che c sia la parola trasmessa, in simboli:

( )( )ˆ argmax Pr |∈

= = =c

c B b C c (III.3.1)

Qualora il massimo non dovesse essere unico, scegli a caso, tra le parole di codice che

lo raggiungono.

*********** Nella precedente B e C rappresentano VV.AA. multidimensionali che assumono

rispettivamente valori in nB ed in .

Considerato che nel nostro caso risulta:

( ) ( ) ( ) ( )Pr | Pr | 1 11

mn m nm p

p p pp

− ⎛ ⎞⎟⎜= = = − = −⎟⎜ ⎟⎟⎜ −⎝ ⎠b c B b C c (III.3.2)

dove m rappresenta il numero di bit in cui c differisce da b . Se 12

p < il massimo

della (III.3.2) si raggiunge per tutti i valori di c che rendono m minimo. qualora ciò

avvenisse in corrispondenza ad un'unica parola di codice, si sceglierebbe quella, se

dovessero esservi più parole per le quali ciò avviene il decodificatore o in armonia con la

Page 18: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

12 Capitolo III

regola MV sceglie a caso, o può limitarsi a segnalare la presenza d’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 avvenire necessariamente in tempo reale.

Osseviamo che m , è la distanza di Hamming tra b e c , quindi il criterio di

decisione a massima verosimiglianza su canale BSC consiste in pratica nello scegliere a

caso, tra le parole di codice a minima distanza di Hamming dalla parola ricevuta.

Equation Section (Next)

III.4 Definizioni e teoremi sui codici rivelatori e correttori Supponiamo che il trasmettitore invii una parola c e che per effetto dei disturbi

venga ricevuta una parola b diversa da c . È immediato constatare che esiste certamente

n∈e B che ci permette di scrivere ⊕=b c e . Chiameremo e evento o pattern

d’errore.

Definizione III.4 Un pattern di errore e è rilevabile se risulta:

⊕ ∈ ∀ ∈e c c (III.4.1)

essendo il complementare di rispetto a nB .

Viceversa diremo che e non è rilevabile se:

| ⊕∃ ∈ ∈c c e (III.4.2)

***********

Ad ogni pattern d’errore corrisponde un peso. Esistono nt

⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠ eventi d’errore di peso

t . 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 t errori se rivela tutti i pattern di errore

di peso t indipendentemente dalla parola di codice trasmessa.

Definizione III.5 Siano a e ′a due parole di kB . Si definisce distanza minima ( mind ) di un codice:

Page 19: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Binari a Blocchi 13

( ) ( )( )min min ,k

d d C C′≠ ∈

⎡ ⎤′= ⎣ ⎦a aa a

B (III.4.3)

*********** Teorema III.1

Condizione necessaria e sufficiente affinché un codice sia in grado di rivelare tutti i

pattern d’errore di peso non superiore a t è che risulti mind t> .

Dimostrazione:

Necessarietà:

Se il codice è in grado di rivelare tutti gli errori di peso non superiore a t , allora,

comunque scelta una parola di codice c ed un pattern d’errore e di peso t≤ , la parola

⊕c e non può essere una parola di codice. Ammettiamo per assurdo che mind t≤

esisterebbero allora almeno due parole di codice, siano c e ′c , tali che ( ) min,d d′ =c c .

Consideriamo il pattern d’errore '⊕=e c c , risulta:

' '⊕ ⊕ ⊕= = ∈c e c c c c (III.4.4)

esisterebbe quindi un evento d’errore di peso t≤ che non può essere rivelato in quanto

composto con una parola di codice genera un’altra parola di codice.

Sufficienza:

Se mind t> e viene ricevuta la parola ⊕=b c e , con t≤e risulta:

( , ) ( , )d d t⊕ ⊕ ⊕= = = ≤b c c e c c e c e (III.4.5)

la precedente implica che ⊕c e non può essere una parola del codice poiché mind t> ,

l’errore viene pertanto rilevato.

***********

Definizione III.6 Diciamo che un decodificatore D è in grado di correggere un pattern d’errore e se,

quale che sia la parola di codice c , risulta:

( ) ( )1 ,D C−⊕ = ∀ ∈c e c c (III.4.6)

Diciamo che un decodificatore è in grado di correggere errori di peso t se la

precedente è vera per ogni pattern d’errore di peso t .

***********

Page 20: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

14 Capitolo III

Teorema III.2

Condizione necessaria affinché un decodificatore MV sia in grado di correggere tutti i

pattern d’errore di peso non superiore a t , è che il codice abbia una min 2 1d t≥ + .

Dimostrazione:

Supponiamo, per assurdo, che esista un codice in grado di correggere tutti gli errori di

peso non superiore a t con min 2 1d t< + . Per detto codice esisterà quindi almeno una

coppia di parole di codice, c e 'c , la cui distanza è 2m t≤ . Esistono certamente due

pattern d’errore, siano e ed 'e , entrambi di peso non maggiore di t , tali che

⊕ ⊕ ⊕ ⊕′ ′ ′ ′= ⇒ =c c e e c e c e (III.4.7)

Nel caso in cui 2 1m l= + potremo scegliere un pattern d’errore e tale che l=e

ed un 'e tale che 1l′ = +e che soddisfino la precedente.

Supponiamo adesso che venga ricevuta la parola ⊕′ ′c e , la sua distanza da ′c vale

1l + quella da c vale:

( ) ( ), ,d d l⊕ ⊕ ⊕ ⊕′ ′ = = = =c e c c e c c e c e (III.4.8)

pertanto il decodificatore a massima verosimiglianza decide per c , o per una qualsiasi

altra parola di codice che disti non più di l da ⊕′ ′c e .

Se 2m l= potremo scegliere due pattern d’errore e ed 'e entrambi di peso l che

soddisfano la (III.4.7). Supponiamo ancora una volta che venga ricevuta la parola

⊕′ ′c e , la sua distanza da ′c vale l come pure la sua distanza da c pertanto, o il

decodificatore sceglie a caso tra ′c e c , ovvero decide a favore di un’altra parola di

codice che disti da ⊕′ ′c e meno di l .

*********** Teorema III.3

Un decodificatore MV è in grado di correggere tutti i pattern d’errore di peso non

superiore a min 1

2

dt

⎢ ⎥−⎢ ⎥= ⎢ ⎥⎣ ⎦.

Dimostrazione:

Page 21: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Binari a Blocchi 15

Supponiamo che il canale modifichi una parola di codice c aggiungendovi un pattern

d’errore di peso non superiore a t . All’ingresso del decodificatore si presenta quindi la

parola ⊕=b c e . Quale che sia ′ ≠c c risulta ′≠b c , in quanto ∉b , poiché dista

da c meno di mind , inoltre:

( ),d ⊕ ⊕′ ′=c b c c e (III.4.9)

osserviamo che il peso di mind⊕′ ≥c c e quello del pattern d’errore è non superiore a

t , pertanto, ′∀ ≠c c , ( ), 1d t′ ≥ +b c , mentre ( ),d t≤b c , quindi il decodificatore

MV in corrispondenza a b restituirà ( ) ( )1D C−=b c , l’errore verrà quindi corretto.

***********

Page 22: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 23: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo IV

Codici Lineari a Blocchi

IV.1 Premessa Abbiamo visto che un codice a blocco è sostanzialmente un’applicazione iniettiva

tra kB e nB con k n< gli n k− bit aggiunti consentono in pratica di migliorare le

prestazioni del sistema introducendo un’opportuna ridondanza ai bit informativi.

Osserviamo che al crescere di k cresce, con legge esponenziale, il numero delle

parole di codice. Ci si rende conto che in queste condizioni la tecnica di decodifica, con-

sistente in una ricerca esaustiva su una tabella (in pratica un banco di memoria) che asso-

cia ad ogni possibile elemento di nB l’elemento di kB che più “verosimilmente” è stato

trasmesso diventa in breve impraticabile a causa delle eccessive dimensioni della succi-

tata 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.

Equation Section (Next)

IV.2 Morfismi È utile introdurre alcune definizioni

Definizione IV.1 - omomorfismo Un omomorfismo è un’applicazione f avente come dominio un gruppo 1 e come

codominio un gruppo 2 tale che

Page 24: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

18 Capitolo IV

( ) ( ) ( )1, f f fα β α β α β∀ ∈ + = + (IV.2.1)

Nella precedente il segno + indica la legge di composizione interna relativa al

gruppo in cui si opera.

Definizione IV.2 - monomorfismo Un monomorfismo è un omomorfismo iniettivo.

Definizione IV.3 - isomorfismo Un monomorfismo suriettivo è un isomorfismo.

Si può dimostrare che l’insieme immagine del dominio di un omomorfismo

( )1 2f ⊆ è 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.

Equation Section (Next)

IV.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. IV.1) un registro d’ingresso dotato di

k celle, da un banco di n sommatori ciascuno dei quali con un numero di ingressi com-

preso tra 1 e k e da un registro di uscita costituito da n celle connesse alle uscite dei

sommatori corrispondenti. Questi ultimi, nel caso dei codici binari, effettuano le somme

in B . 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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

c l k o u tT

1 2 3 4 5 6 7 8 9 10 11S

c l k i nT

Fig. IV.1 Schema di principio di un codice di Hamming 15,11

Page 25: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Lineari a Blocchi 19

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é dopo k periodi del suo clock, l’uscita dei sommatori, che potrebbero essere

realizzati con delle porte logiche di tipo XOR, viene utilizzata per settare le n celle del

registro di uscita che verrà quindi completamente scaricato nel tempo necessario a

ricaricare con i successivi k bit il registro di ingresso.

In sostanza, se clkinT e clkoutT indicano rispettivamente i periodi di clock del

registro d’ingresso e di quello d’uscita, deve risultare clkin clkoutkT nT= .

Equation Section (Next)

IV.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 x una parola di kB e con ( )C=c x la corrispondente parola

di nB in uscita dal codificatore, l’ i −esimo bit della parola d’uscita può esprimersi

nella forma:

1 1 2 2 1, ,i i i k kic x g x g x g i n⊕ ⊕ ⊕= =… … (IV.4.1)

dove il generico ijg è un coefficiente che vale 1 se un ingresso del j -esimo sommatore è

connesso alla i -esima cella del registro di ingresso e vale 0 altrimenti.

Ricordiamoci che tutte le operazioni delle (IV.4.1) sono effettuate secondo le

regole del campo B .

Un codice definito tramite le (IV.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 kB è la somma in nB delle rispettive parole di codice.

Page 26: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

20 Capitolo IV

kB e nB sono gruppi, ed un codificatore lineare è un omomorfismo, ovviamente, è

auspicabile che sia anche un monomorfismo, onde evitare che a due parole distinte di

kB corrisponda la stessa parola di codice in nB .

Il codice è pertanto un sottogruppo di nB .

Se pensiamo x e c come vettori riga le (IV.4.1) si possono rappresentare sotto

forma matriciale:

=c xG (IV.4.2)

dove G è una matrice k n× il cui generico elemento è ijg . G è detta matrice

generatrice del codice.

Si osservi che le righe della matrice G , sono le parole di codice che vengono

generate in corrispondenza agli elementi che costituiscono la base canonica di kB . Ci si

convince anche abbastanza facilmente del fatto che le k righe di G generano mediante

tutte le loro possibili combinazioni lineari , che oltre ad essere un sottogruppo di nB

ne è anche un sottospazio. Ovviamente affinché il codice non sia ambiguo C deve

essere un monomorfismo.

Una condizione necessaria e sufficiente affinché C sia un monomorfismo è che le

righe della sua matrice generatrice siano linearmente indipendenti.

Equation Section (Next)

IV.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 o la parola identicamente nulla per un codice lineare avremo:

( ) ( )1 2 1 2 1 2 1 2, , ,d d⊕ ⊕= = ∀ ∈c c c c o c c c c (IV.5.1)

ma, per fissato 1c , al variare di 2c 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

Page 27: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Lineari a Blocchi 21

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 (IV.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 (IV.5.1) ci suggerisce di introdurre la cosiddetta distribuzione dei pesi del

codice.

Definizione IV.4 Dato un codice lineare n,k per distribuzione dei pesi s’intende un’applicazione

( )WT i , definita sull’insieme dei naturali non maggiori di n , a valori in ; che asso-

cia 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 il più piccolo elemento non nullo del

dominio di ( )WT i cui corrisponde un’immagine diversa da zero, ma dipendono anche

dalla ( )WT i nel suo insieme.

Equation Section (Next)

IV.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 IV.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 c venga aggiunto un pattern d’errore e che

coincide con una parola di codice ′c in ingresso al decodificatore si presenterà la parola

Page 28: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

22 Capitolo IV

⊕ ′c c , ma il codice è lineare quindi ⊕ ′c c è una parola di codice pertanto l’errore non

sarà rivelato.

Viceversa se un pattern d’errore e non viene rivelato, allora deve esistere una

parola di codice ′c tale che ⊕ ′=c e c essendo c è la parola trasmessa. L’eguaglianza

appena scritta comporta:

⊕ ′ =c c e (IV.6.1)

pertanto e è una parola di codice.

*********** Equation Section (Next)

IV.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 del tipo MV.

Sappiamo che (vedi Teorema IV.1) gli unici pattern d’errore non rivelati sono

quelli che coincidono con una parola di codice. Osserviamo che la probabilità che si

presenti un dato pattern d’errore e dipende esclusivamente dal suo peso i e vale in

particolare:

{ } ( )ˆPr 1n iie e p p−

= = − (IV.7.1)

Tra tutti gli ni⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠

possibili pattern d’errore di peso i 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à ( )Pru

che un errore non venga rivelato dal codice vale:

( ) ( )min

Pr ( )n

n iiu

i d

WT i p i p−

=

= −∑ (IV.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 (IV.7.2) che si basa sulla considerazione che in ogni caso deve

essere:

Page 29: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Lineari a Blocchi 23

( ) niWT i⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠

≤ (IV.7.3)

non possono cioè esservi più pattern d’errore di peso i di quante non siano le parole di

nB aventi quel peso. Potremo quindi certamente scrivere:

( ) ( )min

Prn

n iinu i

i d

p i p−⎛ ⎞⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠

=

≤ −∑ (IV.7.4)

Equation Section (Next)

IV.8 Laterali di un sottogruppo Premesso che in questo paragrafo per comodità utilizzeremo la notazione

moltiplicativa per indicare la legge di composizione di un gruppo e che indicheremo

quindi con 1 l’elemento neutro del gruppo, consideriamo un gruppo abeliano ed un

suo sottogruppo . Ricordiamoci che, per definizione di sottogruppo, è chiuso

rispetto alla legge di composizione di .

Consideriamo adesso un generico elemento g non appartenente a , se componia-

mo questo elemento con gli elementi di otteniamo un sottoinsieme di g disgiunto da

. Se infatti risultasse che, per un qualche elemento c di , g c c ′⋅ = ∈ , ciò impli-

cherebbe che 1g c c −′⋅ ⋅ = 1 e quindi 1 1g c c− −′= ⋅ ∈ , ma se 1g− ∈ allora es-

sendo un gruppo vi appartiene anche g , contro l’ipotesi. g

viene denominato

laterale, coinsieme o coset di .

Consideriamo adesso, se esiste, un elemento che non appartiene né a né a g ,

sia g ′ . Anche g ′ , composto con gli elementi di , genera un sottoinsieme g ′ di ov-

viamente disgiunto da , ma anche da g ; se infatti esistesse c ∈ tale che

gg c g′ = ∈ , ciò implicherebbe 1 1gg cc gc− −′ = ∈ quindi gg ′ ∈ contro l’ipotesi.

Possiamo quindi concludere che i laterali di un sottogruppo se non sono disgiunti sono

coincidenti.

Page 30: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

24 Capitolo IV

Appare chiaro che ogni sottogruppo di un gruppo induce una partizione in laterali

del sottogruppo. 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 legit-

timo scegliere in corrispondenza ad 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, gene-

ralmente 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 sotto-

multiplo di quello del gruppo in cui è contenuto.

Equation Section (Next)

IV.9 Decodifica tramite i rappresentanti di laterale Tornando ai codici lineari a blocco ( ),n k , ricordiamo che l’insieme delle parole di

un tale codice costituisce un sottogruppo n⊆ B . 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 b appartiene ad un solo laterale di nB rispetto a , intendendo ov-

viamente stesso come un laterale. Risulta inoltre ⊕=b c e , il pattern d’errore intro-

dotto dal canale appartiene quindi certamente allo stesso laterale cui appartiene b . 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 coin-

cida con una parola di peso minimo appartenente allo stesso laterale della parola rice-

vuta.

Page 31: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Lineari a Blocchi 25

Le considerazioni appena fatte portano alla seguente tecnica di decodifica: dato un

codice scegliamo in ciascun suo laterale un coset leader tra le sue parole di peso mi-

nimo. Se viene ricevuta la parola b , essa si potrà scrivere in modo univoco nella forma

⊕=b c l essendo l il coset leader del laterale a cui essa appartiene. Osserviamo che

comunque scelta una parola di codice ′c risulta:

( ) ( ), ,d d ⊕ ⊕ ⊕′ ′ ′= = ≥b c c l c l c c l (IV.9.1)

in quanto ⊕ ⊕ ′l c c è una parola di nB che appartiene allo stesso laterale di b , visto

che ⊕ ′c c è una parola di codice, ed l è per ipotesi una parola di peso minimo di quel

laterale, pertanto se adottiamo la decodifica ML dobbiamo scegliere la parola c .

Se nello stesso laterale più di una parola ha peso minimo significa che la parola ri-

cevuta si trova alla stessa distanza da 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 pa-

rola identicamente nulla.

Quanto sopra detto ci porta ad enunciare il seguente

Teorema IV.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 nB per individuare il laterale cui appartiene la parola, se n è grande tale ricerca

può diventare improponibile.

Equation Section (Next)

Page 32: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

26 Capitolo IV

IV.10 Probabilità d’errore di un codice lineare a blocchi Il Teorema IV.2 ci suggerisce come calcolare la probabilità di corretta decisione

( )Pc di un codice, impiegato su un canale BSC.

Osserviamo innanzitutto che all’uscita del decodificatore sarà presente la parola ef-

fettivamente inviata tutte e sole le volte che il pattern d’errore introdotto dal canale coin-

cide con un coset leader, considerando anche tra i pattern d’errore quello identicamente

nullo che è il coset leader del codice.

La ( )Pc coinciderà quindi con la probabilità che il pattern d’errore sia un qual-

siasi coset leader. Possiamo quindi scrivere:

( ) ( )0

P ( ) 1l

n iic

i

L i p p−

=

= −∑ (IV.10.1)

dove l rappresenta il massimo peso raggiunto dai coset leader ed ( )L i un’applicazione

che associa ad ogni intero i compreso tra 0 ed l il numero di coset leader di peso i .

Dalla (IV.10.1) discende facilmente:

( ) ( ) ( )0

P 1 P 1 ( ) 1l

n iie c

i

L i p p−

=

= − = − −∑ (IV.10.2)

Equation Section (Next)

IV.11 Codici perfetti, bound di Hamming Una maggiorazione della probabilità d’errore può essere ottenuta ricordando il

Teorema III.3, che afferma che la capacità correttiva di un codice è non minore di

min 1

2

dt

⎢ ⎥−⎢ ⎥= ⎢ ⎥⎣ ⎦. In altri termini il teorema afferma che la regione di decisione di ciascu-

na parola di codice contiene una “ipersfera” di raggio pari a t . In nB che contiene esat-

tamente 0

tnj

j

⎛ ⎞⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠=∑ punti.

Osserviamo che in un codice lineare tutte le regioni di decisione hanno la stessa

forma e che l’insieme dei coset leader costituisce la regione di decisione associata alla

Page 33: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Lineari a Blocchi 27

parola nulla. Vi sono 2n k− laterali, quindi 2n k− coset leader. Il Teorema III.3 nel caso

di codici lineari implica quindi che deve valere la disuguaglianza:

0 0

2 ( )t l

n knj

j i

L i⎛ ⎞ −⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠= =

≤ =∑ ∑ (IV.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 1t + addendi

dell’ultimo membro della (IV.11.1) devono necessariamente essere uguali ai

corrispondenti addendi della sommatoria a primo membro, possiamo pertanto scrivere:

( ) ( ) ( )

( ) ( ) ( )

0 0

0 1

P ( ) 1 1

P 1 1 1

l tn i n ji jn

c ji j

t nn j n jj jn n

e j jj j t

L i p p p p

p p p p

− −⎛ ⎞⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠= =

− −⎛ ⎞ ⎛ ⎞⎟ ⎟⎜ ⎜⎟ ⎟⎜ ⎜⎟ ⎟⎟ ⎟⎜ ⎜⎝ ⎠ ⎝ ⎠= = +

= − ≥ − ⇒

≤ − − = −

∑ ∑

∑ ∑ (IV.11.2)

la precedente è ovviamente soddisfatta come uguaglianza solo dai codici perfetti, quali

sono ad esempio i codici di Hamming cui accenneremo più avanti.

Page 34: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 35: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo V

Codici Sistematici

V.1 Codici Sistematici Quanto detto nei precedenti paragrafi ci fa comprendere che le prestazioni di un co-

dice lineare sono da attribuirsi sostanzialmente al sottospazio di nB generato dalle righe

della matrice G che supporremo linearmente indipendenti e che quindi costituiranno

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 nB sono del

tutto equivalenti.

Lo spazio generato dalle righe di G non cambia se si permutano le sue righe, o se

si somma ad una qualunque riga di G una combinazione lineare delle restanti.

Dato un codice lineare a blocchi, consideriamo la sua matrice G e selezioniamone

una sua colonna non identicamente nulla. Supponiamo sia la j − esima. Consideriamo

quindi una riga di G che abbia un 1 nella j − esima colonna, supponiamo sia la

i −esima, sommiamo tale riga a tutte le altre righe di G che si trovano nelle stesse con-

dizioni. Otterremo così una matrice, sia ( )1G , equivalente a G la cui j − esima colonna

ha un solo valore 1 in posizione i −esima. Operiamo adesso sulla matrice ( )1G come

avevamo operato sulla G con la sola accortezza di scegliere una colonna che abbia un 1

in una riga diversa dalla i −esima, otterremo così una ( )2G con due colonne che pre-

sentano un solo valore 1 su righe diverse. All’l −esimo passo sceglieremo una colonna

che abbia un 1 in una riga diversa da quelle selezionate ai passi precedenti.

Tale procedura potrà essere ripetuta al più k volte, a meno che non sia più possibi-

le selezionare una colonna, ma ciò accade solo nel caso in cui tutte le righe non ancora

selezionate sono identicamente nulle, in questo caso le righe della matrice G da cui era-

vamo partiti non erano linearmente indipendenti, quindi non erano in grado di generare

Page 36: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

30 Capitolo V

un sottospazio di dimensione k , o, che è lo stesso, il codificatore non era un monomor-

fismo di kB in nB cioè avevamo preso in considerazione un codice ambiguo.

Al termine della procedura sopra descritta avremo quindi una matrice ( )kG che ha

almeno k colonne in cui compare un solo 1 , tra le colonne con un solo 1 ne esisterà al-

meno una che lo ha in corrispondenza alla prima riga, una in corrispondenza alla seconda

e cosi via fino alla k -esima.

A questo punto è opportuno osservare che se s’intende utilizzare il codice su un ca-

nale simmetrico binario, ovvero mappando coppie di bit della parola d’uscita in punti di

una costellazione QAM, è anche legittimo permutare le colonne della matrice G , questa

operazione equivale in sostanza ad etichettare diversamente le dimensioni dello spazio

nB .

È ovvio che permutando opportunamente le colonne della ( )kG si può ottenere una

matrice del tipo:

,kn kk k n k−⎡ ⎤= ⎣ ⎦G I P (V.1.1)

un codice lineare a blocchi la cui matrice generatrice assume la forma (V.1.1) si dice

sistematico tale denominazione è dovuta al fatto che i primi k bit della parola di codice

coincidono con i bit informativi, i restanti n k− sono utilizzati per effettuare i controlli

di parità definiti dalle colonne della matrice P .

In pratica in corrispondenza ad ogni codice lineare a blocco non ambiguo esiste

sempre un codice sistematico ad esso equivalente. L’utilizzo dei codici sistematici è

quindi auspicabile, in quanto, solo per fare un esempio, consente di non effettuare nes-

suna decodifica sulla parola ricevuta, limitandosi ad osservarne i primi k bit, accettando

in questo caso un degrado delle prestazioni a fronte di una diminuzione della complessità

del sistema.

Equation Section (Next)

V.2 Matrice di controllo di parità Dato un codice lineare a blocco n,k sistematico, indichiamo con x la generica pa-

rola d’ingresso e con c la generica parola di codice. Se prendiamo in considerazione sol-

Page 37: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Sistematici 31

tanto le ultime n k− componenti della parola di codice, ponendo 1,n k nc c− +⎡ ⎤= ⎣ ⎦p …

possiamo scrivere:

,

,

k n k

n k n k

− −

⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦

0p c

I (V.2.1)

sostituendo a c la sua espressione in termini della matrice G otteniamo:

( )

, , ,, , , ,

, , ,

, , , , ,

, , 1,

k n k k n k k n kk k k n k k k k n k

n k n k n k n k n k n k

k k k n k k n k n k n k k n k

k n k n k n k n k

− − −− −

− − − − − −

⊕− − − − −

⊕− − − −

⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥= = =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ ⎣ ⎦

= = ⇒⇒ =

0 0 0p xG x I P x I P

I I I

x I 0 P I xPxP pI 0

(V.2.2)

possiamo scrivere anche:

⎡ ⎤= ⎢ ⎥⎣ ⎦c x p (V.2.3)

che ci suggerisce di riscrivere l’ultima eguaglianza nella (V.2.2) nella forma:

,1,

,

k n k Tn k

n k n k

−−

− −

⎡ ⎤⎢ ⎥ = =⎢ ⎥⎢ ⎥⎣ ⎦

Pc cH 0I

(V.2.4)

La matrice H che compare nella precedente prende il nome di matrice di controllo di

parità (parity check matrix), in quanto la (V.2.4) è soddisfatta da tutte e sole le 2k parole

di codice.

Equation Section (Next)

V.3 Codici duali Osserviamo che la (V.2.4) implica l’ortogonalità tra la generica parola di codice e

ogni riga della matrice H , le cui n k− righe essendo linearmente indipendenti sono in

grado di generare un sottospazio ,n n k⊥ − di nB ortogonale a n,k , nel senso che combi-

nando linearmente le righe di H si ottengono sempre parole di nB ortogonali a qualsiasi

parola di n,k .

Ci si rende facilmente conto del fatto che si può pensare a ,n n k⊥ − come ad un

codice ( ),n n k− .

Page 38: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

32 Capitolo V

Permutando opportunamente le colonne della matrice H si può sempre rendere

,n n k⊥ − sistematico, in un certo senso lo è anche senza permutarle, solo che in questo

caso i bit informativi coincidono con gli ultimi k bit della parola di codice.

Equation Section (Next)

V.4 Decodifica basata sulla sindrome Supponiamo di ricevere una parola b , affetta da un pattern d’errore e . Se so-

stituiamo b a primo membro della (V.2.4) otteniamo:

1,T T T T T

n k⊕ ⊕−= = = =bH cH eH 0 eH eH s (V.4.1)

s è una parola di n k− bit che prende il nome di sindrome della parola ricevuta. Vi so-

no 2n k− 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).

Nel caso dei codici a correzione d’errore, osservando la (V.4.1) si rileva che tutti

gli elementi di uno stesso laterale del codice hanno la stessa sindrome.Tutti 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 sin-

dromi e l’insieme dei laterali che è esso stesso un gruppo, detto gruppo quoziente indica-

to con n

n,k

B . La composizione tra due laterali del gruppo quoziente si effettua indivi-

duando il coset di appartenenza dell’elemento di nB ottenuto componendo due elementi

arbitrariamente scelti nei due laterali componendi.

Si constata che il gruppo delle sindromi è isomorfo al gruppo quoziente di nB in-

dividuato dal suo sottogruppo normale n,k .

Page 39: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Sistematici 33

La decodifica a massima verosimiglianza può quindi essere effettuata associando

preliminarmente ad ogni sindrome il coset leader nel laterale ad essa associato, da som-

mare alla parola ricevuta per effettuare la decodifica. Tale tecnica comporta la presenza

di un banco di memoria in grado di contenere 2n k− parole di n bit.

In effetti essendo interessati solo ai bit informativi è sufficiente memorizzare sol-

tanto i primi k 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 lea-

der, anche essa diventa tuttavia ben presto difficilmente praticabile, al crescere delle di-

mensioni della parola di codice. A causa principalmente della quantità di memoria

necessaria.

Page 40: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 41: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo VI

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 1 . Affinché ciò sia possibile ciascun pattern d’errore di peso 1 deve essere un coset

leader. A cui sono associate sindromi distinte.

Abbiamo visto che un codice ( ),n k consta di 2k parole di n bit. Esistono quindi

n distinti pattern d’errore di peso 1 , ciascuno dei quali, moltiplicato per TH fornisce la

rispettiva sindrome. Detta sindrome coincide con la colonna della matrice H che

corrisponde alla posizione dell’unico bit 1 nel pattern d’errore. Quindi, se vogliamo che

il codice sia in grado di correggere tutti i pattern d’errore di peso 1 , è necessario che le

n colonne della matrice H siano tutte non nulle e diverse tra loro. Poiché ogni colonna

della matrice in questione ha n k− elementi, deve necessariamente essere:

2 1n kn −≤ − (VI.1.1)

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 1 e di rivelare quelli di peso non superiore a due in

quanto si può mostrare che la loro mind vale 3 . Alcune

soluzioni della (VI.1.1) sono riportate nella in Tabella VI.1

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 mind del codice, è 3 , il codice è in grado di correggere errori

singoli, la regola di decisione a massima verosimiglianza per questo codice consiste

n k

3 1

7 4

15 11

31 26

63 57

127 120

Tabella VI.1 Alcuni valori di n e k per i codici di Hamming

Page 42: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

36 Capitolo VI

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 (IV.11.1) è verificata come

uguaglianza per tutti i codici di Hamming risulta infatti

min 11

2

dt

⎢ ⎥−⎢ ⎥= =⎢ ⎥⎣ ⎦ (VI.1.2)

da cui

1

0

1i

nn

i=

⎛ ⎞⎟⎜ ⎟⎜ = +⎟⎜ ⎟⎟⎜⎝ ⎠∑ (VI.1.3)

ma per i codici di Hamming 1 2n kn −+ = , i codici di Hamming appartengono

pertanto all’insieme dei codici perfetti.

Esempio VI.1 Una possibile matrice H del secondo codice della tabella, il 7,4,è data da:

1 1 0 1 1 0 0

1 0 1 1 0 1 0

0 1 1 1 0 0 1

⎡ ⎤⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

H

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 (V.2.4).

Ricordiamoci che le prime quattro colonne di H possono essere permutate tra loro senza che le caratteristiche del codice cambino.

Basandoci sulla (V.2.4) e sulla (V.1.1) potremo facilmente scrivere la matrice G generatrice del codice:

1 0 0 0 1 1 0

0 1 0 0 1 0 1

0 0 1 0 0 1 1

0 0 0 1 1 1 1

G

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

1 2 3 4 5 6 7

clk outT

1 2 3 4S

clk inT

Fig. VI.1 - Schema a blocchi del Codice 7,4 di Hamming

Page 43: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici di Hamming 37

il relativo schema a blocchi è mostrato in Fig. VI.1, la lista delle parole del codice è elencata nella Tabella VI.2 dove ogni parola è stata suddivisa tra contenuto informativo (i primi 4 bit) e controlli di parità (gli ultimi 3).

Uno schema a blocchi del codice di Hamming 15,11 è mostrato in Fig. IV.1.

VI.1 Duali dei codici di Hamming Nel caso particolare dei duali dei codici di Hamming, le

colonne della matrice generatrice sono tutte e sole le parole

binarie non nulle che si possono scrivere con k bit vi saranno

quindi esattamente 2 1kn = − colonne nella matrice

generatrice. La matrice H definisce quindi un codice

( )2 1,k k− , le cui parole non nulle hanno tutte peso 12k− .

Infatti ogni riga della matrice generatrice contiene per

costruzione 12 1k− − bit zero e 12k− bit uno. Le restanti pa-

role 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 comporre le restanti.

Per semplificare il ragionamento immaginiamo di ag-

giungere alla matrice H una colonna nulla, sia H la matrice estesa così ottenuta. Os-

serviamo che le parole del codice ( )2 ,k k generato da H differiscono da quelle generate

da H solo per il fatto di avere un bit in più, che essendo generato dalla colonna identica-

mente nulla, vale sistematicamente 0 . Possiamo quindi affermare che le parole corri-

spondenti dei due codici, cioè generate dalla stessa parola di kB hanno lo stesso peso.

Osserviamo adesso che la cancellazione di una riga in H da luogo ad una sottoma-

trice ( )1H che ha le colonne uguali a due a due; se cancellassimo due righe avremmo

una sottomatrice ( )2H con colonne uguali a quattro a quattro e così via.

Codice di Hamming 7,4

0000 000

0001 111

0010 011

0011 100

0100 101

0101 001

0110 110

0111 001

1000 1101001 001

1010 101

1011 010

1100 011

1101 100

1110 000

1111 111 Tabella VI.2 - Parole del codice Hamming 7.4

Page 44: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

38 Capitolo VI

In generale quindi cancellando j righe di H , con 0 j k≤ < , avremo una

sottomatrice ( )jH di k j− righe con solo 2k j− colonne distinte che non potranno

essere altro se non tutte le parole binarie di k j− bit.

Il peso della parola di codice ottenuta componendo le k j− righe di ( )jH , è

uguale al numero di colonne che hanno un numero dispari di 1 al loro interno. Ci si

convince facilmente che esattamente la metà delle 2k j− colonne diverse tra loro hanno

peso dispari. Il peso della parola di codice ottenuta componendo le k j− righe vale

122 2

2

k jj k

−−= , indipendente dal numero di righe cancellato, pur di non cancellarle

tutte, nel qualcaso otterremo la parola di codice nulla che ha peso 0 .

Quanto appena visto ci permette di concludere che la distanza minima per codici

generati da matrici di tipo H , o da matrici di tipo H vale 12k− , che è anche, la distanza

tra due parole di codice qualsiasi.

Equation Section (Next)

VI.2 Codici ortogonali e transortogonali Immaginiamo di utilizzare un codice generato da una matrice del tipo H ,

introdotta nel paragrafo VI.1, con una segnalazione di tipo antipodale, associando cioè ai

bit 0 un impulso di segnalazione in banda base ( )h t (la cui durata, per semplicità

possiamo pensare sia non maggiore dell’intervallo di segnalazione T ), e ai bit 1 il suo

opposto. Alla generica parola di codice verrà quindi associato il segnale in banda base:

( ) ( ) ( )2

1

1 ( 1 )

k

ic

i

x t h t i T=

= − − −∑c (VI.2.1)

Se effettuiamo il prodotto scalare tra i segnali associati a due distinte parole di

codice otteniamo:

Page 45: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici di Hamming 39

( ) ( ) ( ) ( )

( ) ( ) ( )

( ) ( ) ( )( )

2 22*

01 1

2*

01

2 2

1 1

, 1 ( 1 ) 1 ( 1 )

1 1 ( )

1 1 1 02 2

k kk

i l

k

i

k k

i l i i

T c c

i l

Tc c

i

c c c cb bk ki i

h t i T h t l T dt

h t h t dt

k kE E

′′

= =

=

′ ′

= =

= − − − − − −

= − −

= − − = − =

∑ ∑∫

∑ ∫

∑ ∑

c cx x

(VI.2.2)

nella precedente bE indica l’energia del bit informativo, conseguentemente l’energia

specifica dell’impulso di segnalazione, che tiene conto del Rate 2k

k kn

= del codice,

vale 2

bk

kE . La sommatoria a ultimo membro vale 0 in quanto la distanza di Hamming

tra due parole di codice distinte vale 12k− .

Sotto le ipotesi appena fatte i segnali associati alle parole del codice generato dalla

matrice di parità estesa di un codice di Hamming H sono a due a due ortogonali. Per

quanto riguarda i codici duali dei codici di Hamming, nelle stesse condizioni generano

un set di 2k segnali isoenergetici in uno spazio a 2 1k − dimensioni. Detti segnali non

sono più mutuamente ortogonali, anche se la distanza tra una qualunque coppia di segna-

li è la stessa. I codici duali dei codici di Hamming si chiamano transortogonali. Rispetto

ai codici generati da matrici di tipo H i codici transortogonali hanno il vantaggio a pari-

tà d’energia bE di consentire un aumento dell’energia associata al bit della parola di co-

dice, in virtù del rate più basso, per questo le loro prestazioni sono leggermente migliori.

Page 46: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 47: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo VII

Codici Convoluzionali

VII.1 Premessa I codici convoluzionali furono proposti per la prima volta da P. Elias nel 1955, e

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.

Equation Section (Next)

VII.2 Struttura del codificatore Lo schema di principio di un codificatore convoluzionale è mostrato in Fig. VII.1.

Dove i simboli emessi dalla sorgente appartengono ad un alfabeto di cardinalità assegna-

ta ed i sommatori opera-

no modulo la cardinalità

dell’alfabeto.

Come si può nota-

re lo schema, a prima

vista, non differisce da

quello di un classico co-

dificatore per codici a

blocchi, se non fosse per

la dimensione dello shift

register d’ingresso che è

maggiore di quello d’u-

scita. La differenza sostanziale tra il codificatore di figura e quello di uno a blocchi, con-

siste nel fatto che il registro d’uscita, nel codificatore di figura, viene letto ogni due

simboli emessi dalla sorgente.

23 sT

2sT

3

iy⎡ ⎤⎢ ⎥⎣ ⎦

2

iy⎡ ⎤⎢ ⎥⎣ ⎦

1

iy⎡ ⎤⎢ ⎥⎣ ⎦

1

ix⎡ ⎤⎢ ⎥⎣ ⎦ 1

2

ix⎡ ⎤−⎢ ⎥⎣ ⎦2

ix⎡ ⎤⎢ ⎥⎣ ⎦ 1

1

ix⎡ ⎤−⎢ ⎥⎣ ⎦

2

1

ix⎡ ⎤−⎢ ⎥⎣ ⎦

2

2

ix⎡ ⎤−⎢ ⎥⎣ ⎦

SsT

sT

sT

sT

sT

sT

Fig. VII.1 - Schema di principio di un codificatore convoluzionale

Page 48: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

42 Capitolo VII

In generale in un codificatore convoluzionale il numero di simboli che costituicono

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).

Da quanto appena detto segue che la parola di codice non dipende soltanto dalla

parola d’ingresso attuale ma anche dalle 1V − parole emesse precedentemente dalla

sorgente (chiameremo V lunghezza di vincolo).

Nello schema di Fig. VII.1 la lunghezza di vincolo 3V = , la parola di codice

dipenderà pertanto dalla parola corrente e dalle 2 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. VII.1) e quella della parola di codice

generata (3 in Fig. VII.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à), inoltre i simboli

emessi appartengono tipicamente a 2 .

Equation Section (Next)

VII.3 Matrice generatrice e generatori. I codificatori convoluzionali come si evince dalla figura del paragrafo precedente

sono lineari. Essi se la

lunghezza di vincolo

fosse unitaria dege-

nererebbero in un

codificatore a blocco.

Se la lunghezza di

vincolo è maggiore di

uno la sequenza d’u-

scita dipende dall’in-

tera sequenza d’ingresso. In ogni caso possiamo affermare che la sequenza codificata

associata a una generica sequenza informativa può sempre essere ottenuta come

Sequenze di ingresso Sequenze codificate 10,00,00,00,0… 001,100,001,000… 01,00,00,00,0… 010,010,100,000… 00,10,00,00,0… 000,001,100,001,000… 00,01,00,00,0… 000,010,010,100,000… 00,00,10,00,0… 000,000,001,100,001,000 00,00,01,00,0… 000,000,010,010,100,000… 00,00,00,10,00,0… 000,000,000,001,100,001,000 00,00,00,01,00,0… 000,000,000,010,010,100,000… Tabella VII.1 - sequenze di uscita del codificatore di Fig. VII.1 in

corrispondenza alle sequenze canoniche

Page 49: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 43

combinazione lineare delle risposte che il codificatore genererebbe in corrispondenza a

sequenze “canoniche”, cioè a sequenze seminfinite contenenti un unico bit 1. In Tabella

VII.1 sono mostrate le sequenze d’uscita che si otterrebbero dall’analisi del codificatore

Fig. VII.1 in corrispondenza alle citate sequenze, assumendo che in assenza di una

sequenza in ingresso tutte le celle dello shift register contengano il bit 0. Le sequenze

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 essa ha una struttura a blocchi del tipo:

1 2 3

1 2 3

31 2

0 0 0

0 00

00 0

G G G

G G G

GG G

⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦ ⎣ ⎦

⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦ ⎣ ⎦

⎡ ⎤⎡ ⎤ ⎡ ⎤ ⎣ ⎦⎣ ⎦ ⎣ ⎦

⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣

… …… …

… …… … … …… … … …

(VII.3.1)

dove le iG⎡ ⎤⎣ ⎦ rappresentano matrici 2 3× e gli zeri indicano matrici nulle delle stesse

dimensioni. Osservando la struttura della generica iG⎡ ⎤⎣ ⎦ ci si rende conto che essa è in

realtà la matrice generatrice di un codice a blocchi 3,2 , il suo generico elemento ilmg⎡ ⎤⎣ ⎦

vale cioè 1 solo se l’l -esima cella dell’ i -esimo blocco dello shift register di ingresso è

connessa al sommatore m - esimo.

La (VII.3.1) è di scarsa utilità pratica. Le matrici iG⎡ ⎤⎣ ⎦ potrebbero essere si usate

per descrivere la struttura del codificatore, ma, anche a questo scopo, esse si rivelano in

genere meno efficienti dei cosiddetti generatori. I generatori sono n vettori binari

ciascuno con kV componenti. Dove la i -esima componente dell’m -esimo generatore

vale 1 solo se l’m -esimo sommatore è connesso all’ i -esima cella del registro

d’ingresso.

Per il codificatore di Fig. VII.1 i generatori sono:

Page 50: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

44 Capitolo VII

1

2

3

100010

010100

001001

g

g

g

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦

=

=

=

(VII.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 co-

stituenti 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 so-

no in numero pari alla lunghezza di vincolo che può essere dell’ordine delle decine. Inol-

tre 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 ci-

fra ottale per il nontro codificatore ciascun generatore si può rappresentare mediante due

cifre ottali in particolare si ha:

18

28

38

42

24

11

g

g

g

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦

=

=

=

(VII.3.3)

VII.4 Diagramma di stato del codificatore. Equation Section (Next) La matrice generatrice, non è certamente uno strumento di semplice impiego per

analizzare un codificatore convoluzionale. I generatori sono sì un efficace strumento per

descriverne la struttura, ma anch’essi mal si prestano al calcolo della sequenza d’uscita

del codificatore. Un modo alternativo, certamente più efficace, per descrivere il compor-

tamento 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 sequen-

za d’ingresso, in particolare essa dipende dai ( )1k V − bit d’ingresso che hanno prece-

duto la parola corrente. In altri termini, noti tali bit e i k bit della parola corrente pos-

sono essere determinati univocamente, sia l’uscita corrente, sia i ( )1k V − bit che con-

tribuiranno unitamente alla parola d’ingresso successiva a determinare la parola d’uscita

seguente. Osserviamo che esistono esattamente ( )12k V− contenuti distinti per le celle del

Page 51: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 45

registro che costituiscono la memoria del sistema. Possiamo dire pertanto che il codifi-

catore può assumere ( )12k V− stati diversi (16 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 sintesi un codificatore convoluzionale è una mac-

china a stati finiti.

Gli stati del codificatore possono essere associati ai vertici di un grafo (vedi Esem-

pio III.1 parte I) due vertici vengono connessi tramite un lato se esiste una parola di in-

gresso che induce la transizione tra i due stati. Ad ogni lato potremo associare un’e-

tichetta che contiene la parola d’ingresso ad esso relativa, ma anche la corrispondente

parola di uscita che dipende anche dal vertice da cui il suddetto lato fuoriesce.

Osserviamo che da ogni vertice origineranno e si dipartiranno esattamente 2k lati,

tanti quante sono le possibili parole d’ingresso (nel nostro esempio 4). Quindi ogni ver-

tice è di grado ( )12 k+ . Il grafo è anche connesso in quanto, comunque scelti due vertici

distinti, esiste sempre

un percorso che li

congiunge, osservia-

mo che tale percorso

è costituito al più da

( )1V − lati.

Il grafo relativo

al codificatore di Fig.

VII.1 è mostrato in

Fig. VII.2 dove si so-

no utilizzati colori di-

versi per distinguere

le parole d’ingresso

associate ai lati. Nella

stessa figura si sono

indicate solo alcune

1000

1010

0100

0101

1111

1100

0001

0010

0011

0110

0111

1001

10111101

1110

0000

00

01

10

11

111

000

100

100

111

Fig. VII.2 - Grafo del codificatore mostrato in Fig. VII.1

Page 52: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

46 Capitolo VII

parole d’uscita per non pregiudicarne la leggibilità.

Tracciato che 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 a

essa individuato ed annotando le corrispondenti parole d’uscita. Ovviamente per se-

quenze molto lunghe, anche questa rappresentazione manifesta dei limiti, si pensi al caso

in cui uno stesso lato compaia più volte nell’ambito di una stessa sequenza.

Equation Section (Next)

VII.5 Codici catastrofici Osserviamo che ogni codificatore convoluzionale associa alla sequenza d’ingresso

nulla la sequenza nulla, ciò è un’immediata conseguenza della sua linearità.

Il percorso associato alla sequenza di ingresso identicamente nulla nel grafo di Fig.

VII.1 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 associa alla sequenza costituita solo da bit 1 , la

sequenza 011 101 000 000 000 000… come possiamo notare tale sequenza seppur se-

mi-infinita ha peso 4 ; cioè, nonostante la sequenza di ingresso considerata sia quella a

massima distanza dalla sequenza nulla, le rispettive sequenze codificate distano tra loro

non più di 4 indipendentemente dalla loro lunghezza. Il codificatore di Fig. VII.1 è un

classico esempio di Codice catastrofico. Tale denominazione discende dal fatto che da

un codificatore ci si aspetta quantomeno che al crescere della distanza di Hamming tra le

sequenze d’ingresso (parliamo si sequenze semi-infinite) cresca anche quella tra le

corrispondenti sequenze codificate. Il motivo per il quale il “nostro” codificatore è

catastrofico risiede nella presenza di un selfloop che associa a una parola di peso non

nullo la parola d’uscita nulla, sicchè ciclando su questo ramo il peso della sequenza

d’uscita non varia. Il codificatore fin qui utilizzato, malgrado sia catastrofico non perde

la sua valenza che è puramente didattica.

Equation Section (Next)

Page 53: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 47

VII.6 Trellis degli stati I limiti all’utilizzo del grafo per lo studio di un codice convoluzionale, sono essen-

zialmente 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 0 , da esso all’istante skT , potranno essere rag-

0 8sT6

sT4

sT2

sT

0 0 0 0

0 1 0 0

1 0 0 0

1 1 0 0

0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

0 1 0 0

0 1 0 1

0 1 1 0

0 1 1 1

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1

0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

0 1 0 0

0 1 0 1

0 1 1 0

0 1 1 1

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1

0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

0 1 0 0

0 1 0 1

0 1 1 0

0 1 1 1

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1

0 0 0 0

0 0 0 1 1 0 1 1

0 0 0 0 0 0 0 0 0 0 0 0

Fig. VII.3– Trellis degli stati del codificatore di Fig. VII.1

Page 54: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

48 Capitolo VII

giunti 2k nuovi stati figli e da ciascuno di questi ultimi all’istante 2 skT ne potranno

essere raggiunti 2k per un totale di 22 k stati figli raggiungili all’istante 2s

kT .

Ci rendiamo conto del fatto che all’istante ( )1 sV kT− tutti i possibili stati del co-

dificatore saranno raggiungibili. Ciò è vero anche in virtù del fatto che, per la struttura

del codificatore, partendo da un qualsiasi stato, a parole d’ingresso distinte corrispondo-

no necessariamente stati di arrivo distinti.

Quanto appena detto può essere rappresentato graficamente mediante il trellis

(letteralmente graticcio) degli stati del codice. Il trellis associato al codificatore di Fig.

VII.1 è rappresentato in Fig. VII.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 0 . Esso costituisce la radice dell’albero, da cui si

dipartono i lati associati a tutte le possibili parole di ingresso che terminano sui 2k

vertici raggiungibili all’istante skT da ciascuno di detti vertici si dipartiranno 2k

ulteriori lati che termineranno su 22 k vertici figli al tempo 2 skT .

Al tempo ( )1 sV kT− tutti gli stati vengo-

no raggiunti da un lato ed al passo successivo la

sezione di trellis, cioè l’insieme dei lati com-

presi 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, ideal-

mente, in numero infinito. Ogni sezione si può

etichettare con un numero che esprime la “pro-

fondità” della sezione cioè la collocazione di

una data sezione nel trellis.

Seguire l’evoluzione dell’uscita sul trellis è semplice in quanto il percorso

associato alla sequenza d’ingresso non vi sono sovrapposizioni.

Esempio VII.1

1sT

2

2

iy⎡ ⎤⎢ ⎥⎣ ⎦

1

iy⎡ ⎤⎢ ⎥⎣ ⎦

S

sT

sT

sT

sT

[ ]1ix −[ ]ix [ ]2ix − [ ]3ix −

Fig. VII.4 schema del codificatore convo-

luzionale 8 815 ,17 rate 12

Page 55: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 49

Si Calcoli l’uscita del codice di rate 12

individuato dai generatori 8 815 ,17 . In corrispondenza alla

sequenza d’ingresso 101100 . I due generatori rappresentati in binario sono:

1

2

1101

1111

g

g

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦

=

= (VII.6.1)

e corrispondono allo schema mostrato in Fig. VII.4. Il codificatore ha 8 stati, il suo trellis è mostrato in Fig. VII.5, nella stessa figura è evidenziato il

percorso associato alla sequenza di ingresso 101100 , la corrispondente sequenza d’uscita è quindi: 11 11 01 11 01 01 .

È interessante osservare che un ulteriore zero nella sequenza d’ingresso riporterebbe il co-dificatore allo stato zero.

Equation Section (Next)

VII.7 Decodifica hard e decodifica soft di un codice convoluzionale. Occupiamoci adesso della decodifica utilizzando il criterio della massima verosimi-

glianza.

Facciamo riferimento per chiarirci le idee allo schema di principio mostrato in Fig.

VII.6. Esso rappresenta una sorgente binaria che emette una sequenza binaria di kN bit,

{ }1

kNi ix

=, cui è connesso un codificatore covoluzionale con rate

kn

che produce una se-

quenza codificata di nN bit, { }1

nNi ic

=, che modula antipodalmente un impulso di segna-

000

0

1

100

000

010

100

110

00000 00 00 00 00 00

001

010

011

100

101

110

111

000

001

010

011

100

101

110

111

000

001

010

011

100

101

110

111

000

001

010

011

100

101

110

111

000

Fig. VII.5 – Trellis del codice convoluzionale 8 815 ,17 rate 12

Page 56: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

50 Capitolo VII

lazione ( )p t in banda base di durata non maggiore dell’intervallo s bk

T Tn

= assegnato

ad ogni bit codificato ottenendo il segnale ( ) ( ) ( )( )1

2 1 1nN

i si

s t c p t i T=

= − − −∑ .

( )s t viene quindi inviato su un canale AWGN che introduce cioè un rumore

gaussiano ( )n t con densità spettrale di potenza bilatera η .

Il segnale ( )r t , in uscita al canale, che perviene al ricevitore, trascurando ritardo

ed attenuazione, sarà quindi ( ) ( ) ( )r t s t n t= + .

Il ricevitore di figura è costituito da un filtro adattato all’impulso di segnalazione la

cui uscita viene campionata a cadenza sT , producendo la sequenza { }1

nNi ir

=, che per le

ipotesi fatte non sarà affetta da interferenza intersimbolica. Avremo cioè

2 1i i ir c n= − + in cui in è una variabile aleatoria Gaussiana a media nulla e varianza

η . Ne segue che la generica ir , condizionata all’invio di ic è la realizzazione di una

( )n t

filtroadattato

rivelatorea soglia

decodificatorehard

decodificatoresoft

S

bT

{ } 1

kNi i

x=

Codificatoreconvoluzionale Modulatore

sT

sT

{ } 1

nNi i

c=

{ } 1

nNi i

c=

( ) ( ) ( )r t s t n t= +

( ) ( ) ( )( )1

2 1 1nN

i si

s t c p t i T=

= − − −∑

{ } { }1 12 1nN nN

i i ii ir c n

= == − + { } { }1 1

ˆ ˆe/onN kNi ii i

c x= =

Fig. VII.6 – 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.

Page 57: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 51

variabile aleatoria gaussiana a media 2 1ic − e varianza η . Inoltre Le ir condizionate

all’invio di una data { }1

nNi ic

= saranno mutualmente statisticamente indipendenti.

In Fig. VII.6 Abbiamo a questo punto indicato due alternative:

- la prima (ramo superiore) consiste nell’utilizzare un rivelatore a soglia che

fornirebbe in uscita una sequenza binaria stimata { }1

nNi ic

=, da dare in

“pasto” ad un decodificatore che in questo caso sarebbe di tipo hard;

- la seconda (ramo inferiore in Fig. VII.6) utilizzare un decodificatore in

grado di utilizzare direttamente la { }1

nNi ir

= in questo caso il nostro

decodificatore sarebbe di tipo soft.

Indipendentemente dal tipo di decodificatore viene prodotta una sequenza

informativa stimata { } 1ˆkN

i ix

= ottenuta in corrispondenza a una sequenza codificata

{ } 1ˆnN

i ic

=, cioè una sequenza che corrisponde ad un percorso sul trellis del codificatore.

Ovviamente non è detto che i due decodificatori producano la stessa { }1

ˆkN

i ix

=.

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 ins del codificatore;

- conosca lo stato finale fins del codificatore,

Osserviamo che la conoscenza dello stato finale da parte del decodificatore, impli-

ca 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.

Page 58: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

52 Capitolo VII

Osserviamo che in linea di principio la decodifica MV hard della sequenza

{ } 1

nMi ic

= costituita da M n -uple di bit in uscita al rivelatore a soglia è semplice, è, in-

fatti, sufficiente scegliere la sequenza ammissibile2 che ha la minima distanza di Ham-

ming dalla { } 1

Mni ic

= generata dal rivelatore, scegliendo eventualmente a caso qualora do-

vesse 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 { } 1ˆ2 1

Mni ic

=− che, pensata come un

punto di Mn , ha la minima distanza Euclidea dalla sequenza { }1

Mni ir

= 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.

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 decodificatore siffatto comporterebbe. Sarebbe infatti indispensabile attendere la rice-

zione dell’intera sequenza prima che il processo di decodifica abbia inizio.

Equation Section (Next)

VII.8 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:

2 per sequenza ammissibile intendiamo una sequenza { } 1

Mni ic

= associabile ad un percorso sul trellis che abbia

inizio in ins e termini in fins .

Page 59: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 53

- metrica di ramo la distanza di Hamming, o il quadrato della distanza Euclidea, tra

gli n bit 1 2,L LL L

xy nb b b⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦⎡ ⎤= ⎢ ⎥⎣ ⎦

b … codificati che etichettano il ramo e la porzione di

sequenza ricevuta corrispondente precisamente

( )( )

( ) ( )1

12

11

2

metrica di Hamming

1 metrica Euclidea

L

nL

L n i ii

xy nL

L n i ii

b

b

cm

r

⎡ ⎤⎣ ⎦

⎡ ⎤⎣ ⎦− +

=

⎡ ⎤⎣ ⎦− +

=

⊕⎧⎪⎪⎪⎪⎪⎪= ⎨⎪⎪ ⎡ ⎤⎪ − −⎢ ⎥⎪ ⎣ ⎦⎪⎪⎩

∑b (VII.8.1)

(ad apice abbiamo indicato la sezione di trellis cui il ramo appartiene ed i pedici,

,x y individuano lo stato di partenza e quello di arrivo del ramo in esame);

- percorso una sequenza ininterrotta di rami che origina in ins

- lunghezza del percorso il numero di rami compongono il percorso

- metrica di percorso la somma delle metriche di ramo che compongono il percorso;

- cammino una sequenza ininterrotta di rami del tipo 1 1

, , ,,H H H J

x y y z i l

⎡ ⎤ ⎡ ⎤ ⎡ ⎤+ + −⎣ ⎦ ⎣ ⎦ ⎣ ⎦⎡ ⎤⎢ ⎥⎣ ⎦b b b…

- 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 codi-

ficatore all’arrivo di una sequenza informativa, supponiamo sia lo stato zero. Al primo

passo, osservando la sequenza ricevuta, il decodificatore può etichettare ciascuno dei 2k

rami del trellis che emergono dallo stato iniziale, con la metrica ad essi associata, calco-

lata mediante la prima o la seconda delle (VII.8.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 que-

sto 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 2k stati raggiunti emergeranno 2k 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:

Page 60: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

54 Capitolo VII

- 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

1V − , in quanto fino a tale passo ogni stato viene raggiunto al più da un percorso.

Al V - esimo passo potremo ancora associare ad ogni ramo la sua metrica, ma per

associare le metriche di percorso agli stati sorgerà un problema. Esistono infatti 2k

percorsi distinti che terminano in ciascuno stato.

Se consideriamo un cammino nel trellis di lunghezza 1J ≥ che abbia origine in

uno stato in cui confluiscano 2k percorsi di lunghezza M , giustapponendo il cammino a

ciascun percorso di lunghezza M otterremmo 2k percorsi ammissibili di lunghezza

M J+ . La metrica di ciasuno di essi sarà data dalla somma della metrica di uno dei

percorsi di lunghezza M 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 M 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 V - 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 2k percorsi che vi confluiscono scegliendo

il migliore tra essi (quello che ha accumulato la metrica minore).

Abbiamo appena descritto l’algoritmo di Viterbi.

VII.9 Efficienza dell’algoritmo di Viterbi Appare evidente la riduzione di complessità di questo algoritmo rispetto alla ricerca

esaustiva teorizzata nel paragrafo precedente. Ad ogni passo di decodifica, a parte il

Page 61: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 55

transitorio iniziale, dovremo infatti calcolare 2k metriche di ramo per ciascuno dei

( )12k V− stati iniziali della sezione di trellis ed utilizzarle per calcolare le metriche di

2kV percorsi. Di questi ultimi solo ( )12k V − 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 che invece cre-

scerebbe esponenzialmente. Va comunque sottolineato che la complessità dell’algoritmo

di Viterbi cresce esponenzialmente con la lunghezza di vincolo del codificatore.

Un altro vantaggio nell’utizzo 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” fini-

scono con l’avere una parte iniziale in comune. Ciò limita sia la latenza sia il fabbisogno

di memoria del decodificatore.

Equation Section (Next)

VII.10 Funzione di trasferimento di un codificatore 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 due sequenze informative.

Ciò significa possiamo valutare le prestazioni del codice in termini di probabilità

d’errore ammettendo che venga inviata la sequenza nulla e valutare la probabilità che per

effetto del canale venga rivelata dal decodificatore una sequenza diversa.

Per i nostri scopi è utile definire alcune grandezze associate al codificatore. La

prima è la cosiddetta distanza colonna ( )cold N essa è in realtà un’applicazione che

associa ad ogni livello di profondità del trellis del codice la minima distanza 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 ( )cold N per N → ∞ si chiama distanza

libera, fd , del codice. Il percorso cui corrisponde la distanza libera non è necessariamen-

te unico, ma certamente salvo il caso in cui il codice sia catastrofico è un percorso che si

Page 62: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

56 Capitolo VII

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.

Ci proponiamo in particolare di raccogliere informazioni sul numero di percorsi che

hanno origine e termine nello stato zero diversi da quello che da esso non si discosta

mai.

Per farlo consideriamo il diagramma degli stati del codificatore e sopprimiamo il

self loop associato allo stato zero sdoppiamo quindi lo stato zero in due stati uno, sor-

gente, da cui fuoriescono i rami ed uno, pozzo con solo rami entranti come in Fig. VII.7.

Nella stessa figura si può notare anche che i rami del grafo sono stati etichettati con dei

trinomi l’indeterminata L vi compare sempre con grado 1 , la sua funzione è in realtà

solo quella di tener conto del passaggio attraverso il ramo, il grado di J esprimerà il

peso della parola informativa associata al ramo esso è quindi compreso tra 0 e k , il

grado di D esprimerà il peso della parola di codice associata al ramo, non potrà quindi

essere maggiore di n .

Basandoci sulla teoria dei grafi orientati e pesati possiamo ricavare la funzione di

trasferimento tra il nodo sorgente ed il nodo pozzo. Per farlo si può procedere in due

modi, il più semplice consiste nello scrivere il sistema lineare di equazioni che il grafo

rappresenta. Per farlo ricordiamo che ad ogni nodo, corrisponde una incognita del siste-

4

1 0

2 35

6 70

JLD

L

JLD

JLD

LD2

Fig. VII.7 – Grafo modificato del Codice 8 815 ,17 rate 12

Page 63: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 57

ma. In corrispondenza a ciascun nodo possiamo scrivere un’equazione che, detta jV

l’incognita associata al nodo j -esimo e lmT la trasferenza associata al ramo che emerge

dal nodo l -esimo e converge in quello m -esimo, sarà del tipo:

( )12

0

k V

j i iji

V VT

=

= ∑ (VII.9.1)

Osserviamo che l’equazione associata al ramo sorgente si riduce ad un’identità es-

sendo quest’ultimo privo di rami entranti. A titolo d’esempio, denominando rispettiva-

mente inV e outV le variabili associate al nodo sorgente ed al nodo pozzo in cui abbiamo

sdoppiato lo stato 0 , scriviamo le equazioni associate al grafo di Fig. VII.7:

1 2 32

2 4 5

3 6 72

4 1

5 2 32

6 4 5

7 6 72

1

in

out

V LDV LDV

V LD V LV

V LDV LDV

V JLD V JLDV

V JLDV JLDV

V JLV JLD V

V JLDV JLDV

V LD V

⎧ = +⎪⎪⎪⎪ = +⎪⎪⎪⎪ = +⎪⎪⎪⎪ = +⎪⎨⎪ = +⎪⎪⎪ = +⎪⎪⎪⎪ = +⎪⎪⎪⎪ =⎪⎩

(VII.9.2)

Possiamo quindi procedere all’eliminazione di tutte le variabili ad eccezione delle

inV e outV . Utilizzando ad esempio le prime tre equazioni otteniamo

2 3 2 3 3 3 35 6 7

4 3 4

2 3 2 2 2 2 25 4 5 6 7

26 4 5

7 6 73 5 3 3 3 4 3 4

4 5 6 7

1in

out

JLD V JL D V JL D V JL D VV

JL DV JL D V JL DV JL D V JL D V

V JLV JLD V

V JLDV JLDV

V L D V L D V L D V L D V

⎧⎪ + + +⎪ =⎪⎪⎪ −⎪⎪ = + + +⎪⎪⎪⎪ = +⎨⎪⎪ = +⎪⎪⎪⎪ = + + +⎪⎪⎪⎪⎪⎩

(VII.9.3)

Quindi, procedendo in modo analogo, dopo “qualche semplice” passaggio ottenia-

mo:

Page 64: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

58 Capitolo VII

( )4 7 2 5 6 2 5 8

2 3 4 2 3 2 2 3 4 2 4 3 2 4 5, ,

1out

in

V JL D J L D J L DT J L D

V JLD JL D JL D J L D J L D J L D J L D

+ −=

− − − + − − +(VII.9.4)

la ( ), ,T J L D prende il nome di funzione di trasferimento del codice.

Se con la tecnica della divisione lunga espandiamo la (VII.9.4), pensando il nume-

ratore e il denominatore come polinomi nell’indeterminata D , possiamo ancora scrivere:

( ) 2 5 6 4 3 6 3 7 7 2 6 4 7 4 8 4 9 8

3 8 5 8 4 9 5 9 5 10 5 11 9

3 8 4 8 6 9 4 10 5 10 6 10 5 11 6 11 6 12 6 13 10

, , ( ) ( )

( )

(2 2 2 ) ....

T J L D J L D JL J L J L D J L J L J L J L D

J L J L J L J L J L J L D

J L J L J L J L J L J L J L J L J L J L D

= + + + + + + + +

+ + + + + + +

+ + + + + + + + + + +

(VII.9.5)

dal coefficiente della potenza più piccola di D a secondo membro della precedente, de-

sumiamo che vi è un cammino con peso d’ingresso 2 che si discosta dallo stato 0 e che

torna ad esso dopo 5 rami accumulando un peso d’uscita pari a 6 . Ne segue che la

distanza libera del codice in parola sarà esattamente 6fd = . Osservando il coefficiente

della potenza di D immediatamente superiore scopriamo che esistono anche tre percorsi

con peso d’uscita 7, di cui: uno di lunghezza 4 e peso d’ingresso 1; il secondo di

lunghezza 6 e peso d’ingresso 3; il terzo di lunghezza 7 con peso d’ingresso 3, e così via.

Qualora fossimo interessati solo al peso delle sequenze codificate che si discostano

dalla sequenza nulla per poi ricongiungersi con essa, potremmo porre nella (VII.9.4) o

nella (VII.9.5) 1J = e 1L = , ottenendo

( ) 6 7 8 9 103 4 6 13 ....T D D D D D D= + + + + + (VII.9.6)

In generale la funzione di trasferimento di un codice convoluzionale può essere

espressa nella forma:

( ) ( )2 1

, , , ,fd

T J L D w J L Dι λ δ

δ λ ι

δ λ ι∞ ∞ ∞

= = =

= ∑ ∑∑ (VII.9.7)

dove ( ), ,w δ λ ι 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 1 le variabili che non ci interessano e sommando

rispetto ai rispettivi indici, otteniamo delle funzioni di trasferimento semplificate, ad

esempio ponendo 1J = e 1L = nella (VII.9.7) otteniamo

Page 65: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 59

( ) ( ) ( ) ( )1, 1

2 1

, , , ,f f

J Ld d

T D T J L D w D w Dδ δ

δ λ ι δ

δ λ ι δ∞ ∞ ∞ ∞

= == = = =

= =∑ ∑∑ ∑ (VII.9.8)

dove ( ) ( )2 1

, ,w wλ ι

δ δ λ ι∞ ∞

= =∑∑ .

Equation Section (Next)

VII.11 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. Essa esprime la probabilità che in

un certo istante la sequenza stimata si discosti da quella effettivamente trasmessa per poi

ricongiungersi con essa. Possiamo sempre assumere ai fini del calcolo della probabilità

d’errore, che la sequenza trasmessa sia quella identicamente nulla. Ciò in virtù della

linearità del codificatore e del fatto che la decodifica che effettuiamo è a MV,.

Sappiamo che il decodificatore opera le sue scelte basandosi sulla sequenza binaria

{ }ic prodotta dal rivelatore a soglia nel caso di decodifica hard, ovvero sulla sequenza

reale { }ir dei campioni in uscita al filtro adattato per decodifica soft.

Ammettiamo che fino alla profondità α nel trellis il decodificatore non abbia

commesso errori. In altri termini la sequenza nulla è quella che fino al passo α ha accu-

mulato la più piccola metrica di percorso. Al passo successivo ha inizio un evento

d’errore, cioè avrà origine un cammino ( ){ } ( )

1

lnll i

nP c

α ν

α

+

+. In realtà, che si è innescato

l’evento errore associato a lP , risulta evidente solo quando alla profondità lα ν+ il

percorso che lo contiene raggiunge nuovamente lo stato 0 , ed il decodificatore preferi-

sce quest’ultimo al percorso corretto, quello che dallo stato 0 non si discosta mai, aven-

do esso accumulato una metrica minore.

Osserviamo che ai fini di tale scelta saranno determinanti soltanto le metriche accu-

mulate dal cammino corretto 0 lP ν e lP , in quanto fino al passo α i due percorsi coinci-

devano quindi condividevano la stessa metrica.

Page 66: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

60 Capitolo VII

Il calcolo esatto della probabilità di primo evento d’errore è purtroppo impraticabi-

le, possiamo tuttavia maggiorare la probabilità cercata, basandoci sull’union bound.

Per farlo dobbiamo valutare in corrispondenza a ciascun evento d’errore la probabi-

lità che esso si manifesti nell’ipotesi che il decodificatore possa scegliere solo tra il cam-

mino corretto e quello relativo all’evento d’errore in parola.

Ciò, detto in altri termini, equivale a calcolare la probabilità che la porzione di se-

quenza { } ( )1ln

i i nc

α ν

α

+

= + in uscita al rivelatore a soglia, per il decodificatore hard, o la por-

zione { } ( )1ln

i i nr

α ν

α

+

= + di campioni in uscita al filtro adattato per quello soft, corrispondente

alle sezioni del trellis che contengono i due cammini 0 lP ν e lP , a causa del rumore in-

trodotto dal canale, appartenga alla regione di decisione di lP malgrado la sequenza

inviata fosse quella identicamente nulla.

Una piccola riflessione ci convince 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 cammini che dallo

stato zero si discostano per poi ricongiungersi ad esso.

Detto 0 , llP PR

νil complementare della regione di decisione del cammino corretto,

possiamo scrivere, per un codice con rate kn

:

{ } ( ) { } { }( )0 ,11

Pr | 0l

nodo ll

ne i P P ii n

l

P c R cν

α ν

α

∞+

= +=

≤ ∈ =∑ (VII.10.1)

Nel caso di decodifica hard è opportuno osservare che ai fini del calcolo della

probabilità che compare ad argomento della sommatoria nella (VII.10.1), non

contribuiscono i bit codificati di lP uguali a quelli di 0 lP ν (cioè i bit nulli di lP ), in

quanto quale che sia il corrispondente bit della sequenza ricevuta { } ( )1ln

i i nc

α ν

α

+

= + esso

Page 67: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 61

apporterebbe un eguale contributo alle distanze di { } ( )1ln

i i nc

α ν

α

+

= + da entrambi i cammini

lP e 0 lP ν .

Indichiamo adesso con ( )lw P il peso del cammino lP e soffermiamoci sul sotto-

insieme S di indici cui corrispondono i ( )lw P bit 1 di lP . Osserviamo che se ( )lw P è

dispari il decodificatore sceglierà il cammino lP ogniqualvolta la distanza tra { }i i Sc∈

e

( ){ }lii S

c∈

è minore di ( )

12lw P

t⎢ ⎥⎢ ⎥= +⎢ ⎥⎢ ⎥⎣ ⎦

. La probabilità che ciò accada, sapendo che è

stata inviata la sequenza nulla è data da:

{ } ( ) { } { }( ){ } { }( ) { } { }( )( ) ( ) ( )

( )

1ˆPr | 0

Pr , 0 | 0

1

l

ll

ni l ii n

H i ii S i Sw P

w Pl

t

c P c

d c t c

w Pp p

α ν

α

ξξ

ξ ξ

+

= +

∈ ∈

=

= =

= ≥ =⎛ ⎞⎟⎜ ⎟⎜= −⎟⎜ ⎟⎟⎜⎝ ⎠

(VII.10.2)

Se la distanza tra lP e 0 lP ν è pari esisteranno

( )( )2

l

l

w P

w P

⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠ possibili sequenze ricevute tali che

{ }i i Sc∈

avrà eguale distanza da { }0i S∈

e da ( ){ }lii S

c∈

. In tale eventualità il

decodificatore sceglierebbe in modo puramente casuale tra lP e 0 lP ν . La probabilità che

venga scelto il cammino lP sarà in questo caso data da:

{ } ( ) { } { }

{ } { }( ) ( ) { } { }

{ } { }( ) { } { }( )( )( ) ( )

( ) ( ) ( ) ( )( )

1

2

ˆPr | 0

1Pr , 0 | 0

2 2

Pr , 0 | 0

11 1

22

l

l ll

n

i l ii n

l

H i ii S i S

H i ii S i S

w P w Pl w Pl

lt

c P c

w Pd c c

d c t c

w Pw P

p p p pw P

α ν

α

ξξ

ξ ξ

+

= +

∈ ∈

∈ ∈

=

⎛ ⎞⎟⎜ = = =⎟⎜ ⎟⎜⎝ ⎠⎛ ⎞⎟⎜ ⎟⎜ ⎟= = +⎜ ⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠

+ ≥ =

⎛ ⎞⎟⎜ ⎛ ⎞⎟⎜ ⎟⎟ ⎜⎜ ⎡ ⎤ ⎟⎟ ⎜= − + −⎜ ⎟⎟ ⎜⎢ ⎥⎜ ⎟⎟ ⎣ ⎦ ⎜ ⎟⎜ ⎜⎟ ⎝ ⎠⎟⎜ ⎟⎜⎝ ⎠∑

(VII.10.3)

Page 68: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

62 Capitolo VII

dove p 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. VII.6

Esempio VII.2 La probabilità di crossover del BSC con cui puo essere schematizzata la parte inclusa nel poligono

tratteggiato in rosso del sistema di trasmissione mostrato in Fig. VII.6, assumendo che al bit codificato

competa un’energia 1s b bk

E E REn

= = = e che il rumore gaussiano abbia una densità spettrale di

potenza monolatera 0 2N η= , 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:

( )

( ) ( )

2 1 21

10

2 2

1 1

1 1Pr( 0 | 1)

2 2

1

xx

i ip r c e dx e dx

Q Q

ηη

ν νη

η η

πη π

− =−−

−∞ −∞= < = = =

= − − =

∫ ∫

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:

0 0 0

21 1

2s b bE RE RE

N N Nη η= = ⇒ =

Da cui:

0

2 bREp QN

⎛ ⎞⎟⎜ ⎟⎜= ⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠

Osserviamo che la (VII.10.2) e la (VII.10.3) dipendono solo dal peso di lP non dal

numero di rami da cui esso è costituito. In altri termini, tutti i cammini di uguale peso

avranno la stessa probabilità di essere erroneamente scelti dal decodificatore indipenden-

temente dalla loro lunghezza. Sulla base di quest’ultima osservazione possiamo compat-

tare in un'unica espressione la (VII.10.2) e la(VII.10.3), indicando semplicemente con eδ

un evento d’errore di peso δ , ottenendo:

{ } { }( )

( ) ( ) ( ) { }( )2

12

Pr | 0

1 11 1 Pr | 0

42

ie c

p p p p e

δ

δ δδδ ξξ

δδξ

δ δδ ξ

⎢ ⎥⎢ ⎥= +⎢ ⎥⎣ ⎦

=⎛ ⎞⎟⎜ ⎛ ⎞− + ⎟⎜ ⎟⎜⎟⎜ ⎡ ⎤ ⎟⎢ ⎥ ⎜= − + −⎟ ⎟⎜ ⎟ ⎜⎣ ⎦ ⎟⎜ ⎢ ⎥ ⎟⎟ ⎜⎝ ⎠⎜ ⎟⎟⎜ ⎢ ⎥⎝ ⎠⎣ ⎦

∑ (VII.10.4)

Page 69: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 63

La precedente ci suggerisce di riordinare la (VII.10.1) accorpando tutti gli eventi

d’errore di ugual peso. Il numero di tali eventi può essere dedotto dalla ( )T D del codi-

ce. Tenendo conto della (VII.9.8) possiamo quindi scrivere:

{ } ( ) { } { }( )( ) { }( )

0 ,11

Pr | 0

Pr | 0

l

nodo ll

f

ne i P P ii n

l

d

P c R x

w e

ν

α ν

α

δδ

δ

∞+

= +=∞

=

≤ ∈ =

=

∑ (VII.10.5)

Nel caso di decodifica soft, basandoci sullo schema di Fig. VII.6 e assumendo che

l’impulso di segnalazione abbia energia sE , potremo scrivere:

{ } ( ) ( )( ){ } ( )

{ } ( ) { } ( ){ } { }

( )( )( )

( )

1 1

11 1

2

1

1

, 2 1Pr

, | 0

2

2

ll

nodo ll

l

nn lE i s ii n n

e nnlE i s ii n n

nl

s is li n

l

d r E cP

d r E c

E cE w P

Q Q

α να ν

α αα να ν

α α

α ν

α

ηη

++∞

= + +++=

= + +

+

∞= +

=

⎛ ⎛ ⎞ ⎞⎟ ⎟⎜ ⎜ ⎟ ⎟−⎜ ⎜ ⎟ ⎟⎜ ⎜ ⎟⎜ ⎟⎝ ⎠⎜ ⎟≤ ⎜ ⎟⎜ ⎟⎛ ⎞⎜ ⎟⎟⎜ ⎟≤ − =⎜ ⎟⎜ ⎟⎜ ⎟ ⎟⎜⎝ ⎝ ⎠ ⎠⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟ ⎛⎜ ⎟⎜ ⎜⎟⎜ ⎟= =⎜ ⎟⎟⎜ ⎟⎜ ⎝⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠

∑∑

1l

=

⎞⎟⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎠∑

(VII.10.6)

che può essere anche riformulata in termini dell’energia per bit informativo, ponendo

cioè s bE RE= , e della densità spettrale di potenza monolatera 0 2N η= ottenendo:

( )1 0

2nodo

be l

l

EP Q Rw P

N

=

⎛ ⎞⎟⎜ ⎟⎜≤ ⎟⎜ ⎟⎟⎜⎝ ⎠∑ (VII.10.7)

Osserviamo che anche gli argomenti delle ( )Q ⋅ a secondo membro della preceden-

te non dipendono dalla lunghezza lν di lP , ma solo dal suo peso. La sommatoria a se-

condo membro della precedente può quindi, anche in questo caso, essere riordinata ac-

corpando tutti gli eventi di errore di egual peso, ottenendo:

( )0

2nodo

f

be

d

REP w Q

δδ

=

⎛ ⎞⎟⎜ ⎟⎜≤ ⎟⎜ ⎟⎟⎜⎝ ⎠∑ (VII.10.8)

Page 70: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

64 Capitolo VII

La precedente, a fronte di un’ulteriore maggiorazione può assumere una forma più

semplice da calcolare. Ricordando infatti che, per argomento non negativo, vale la disu-

guaglianza ( )2

212

x

Q x e−

≤ possiamo ancora scrivere:

{ }( ) 0

0

2 1Pr | 0

2

bRE

NbREe Q eN

δ

δδ −⎛ ⎞⎛ ⎞ ⎟⎜⎟ ⎟⎜ ⎜⎟ ⎟⎜= ≤ ⎜⎟ ⎟⎜ ⎜⎟ ⎟⎟⎜ ⎜ ⎟⎝ ⎠ ⎟⎜⎝ ⎠

(VII.10.9)

per mezzo della quale otteniamo:

( ) ( ) ( )0

00

2 1 1

2 2

b

REbnodo N

f f

RE

Nbe

d d D e

REP w Q w e T D

N

δ

δ δ

δδ δ

∞ ∞ −

= = =

⎛ ⎞⎟⎜ ⎟⎜≤ < =⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠∑ ∑ (VII.10.10)

Anche nel caso della decodifica Hard possiamo maggiorare ulteriormente la nodoeP

ricordando la maggiorazione di Bhattacharyya che ci permette di scrivere

{ }( ) ( ) 2Pr | 0 4 1e p p Bδ

δδ

⎡ ⎤≤ −⎣ ⎦ (VII.10.11)

Quest’ultima ci permette, partendo dalla (VII.10.5) di scrivere:

( ) { }( ) ( ) ( ) ( )2Pr | 0 4 1nodo

f f

e D Bd d

P w e w p p T Dδ

δδ δ

δ δ∞ ∞

== =

⎡ ⎤≤ ≤ − =⎣ ⎦∑ ∑ (VII.10.12)

La (VII.10.10) e la (VII.10.12) possono essere calcolate facilmente, disponendo

della ( )T D del codice, la (VII.10.5) e la (VII.10.8) sono dei bound più stretti, ma pos-

sono essere calcolati solo in modo approssimato, entrambe tuttavia sono in genere domi-

nate 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 maggiorazio-

ne della probabilità d’errore di nodo.

Equation Section (Next)

VII.12 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 decodificata { }icν⎡ ⎤⎣ ⎦ costituita da nN bit codificati con 1N >>

(l’apice ν ha la sola funzione di etichetta). Nella corrispondente porzione di sequenza

Page 71: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 65

decodificata { }ixν⎡ ⎤⎣ ⎦ costituita da kN bit saranno presenti un certo numero di bit errati.

Osserviamo che la presenza di un bit errato è possibile solo se nella { }icν⎡ ⎤⎣ ⎦ si è

manifestato un errore di nodo. Sappiamo anche che ad ogni evento d’errore di nodo

corrisponde un ben preciso numero di bit d’informazione errati.

Il numero totale di bit informativi errati potrà anche essere espresso accorpando

tutti gli eventi d’errore di nodo caratterizzati da uno stesso numero di bit informativi

errati che in essa si sono presentati. La frequenza relativa d’errore sul bit ( ),Nf eν⎡ ⎤⎣ ⎦ ,

associata alla sequenza ν -esima, sarà quindi espressa dal rapporto tra il numero di bit

informativi errati e il numero totale dei bit informativi inviati della sequenza in esame.

Detto quindi , ( )N jνμ⎡ ⎤⎣ ⎦ il numero di eventi d’errore che si sono manifestati nella

sequenza decodificata ν -esima e che contengono esattamente j bit informativi errati,

possiamo scrivere:

( )max ,

,

1

( )j NN

j

j jf e

kN

νν μ

⎡ ⎤⎣ ⎦⎡ ⎤⎣ ⎦

=

= ∑ (VII.11.1)

La probabilità d’errore sul bit informativo si può ottenere mediando su un numero

idealmente infinito di repliche dello stesso esperimento come segue:

( )( ),

1

lim

lim

N

N

b

f e

P e

γ

γ

Γ⎡ ⎤⎣ ⎦

→∞=

Γ→∞=

Γ

∑ (VII.11.2)

sostituendo la (VII.11.1) nella precedente abbiamo:

( )( )

max ,,

1 1 1

,

1

1

( )lim lim

1lim lim

( )lim

1lim

j NN

N N jb

N

N

j

j jf e

NP e

kj

Nj

k

γγ

γ γ

γ

γ

μ

μ

⎡ ⎤Γ Γ ⎣ ⎦⎡ ⎤⎣ ⎦→∞ →∞= = =

Γ→∞ Γ→∞⎡ ⎤Γ ⎣ ⎦

∞ →∞=

Γ→∞=

= =Γ Γ

∑ ∑ ∑

∑∑

(VII.11.3)

nella quale, 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

Page 72: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

66 Capitolo VII

un numero arbitrariamente grande di bit informativi errati. Si constata facilmente che il

limite ad ultimo membro della (VII.11.3) esprime la probabilità che si manifesti un

qualsiasi evento d’errore di nodo che contenga esattamente j bit informativi errati.

Indicando con Iι l’insieme di tutti gli eventi d’errore con ι bit informativi errati

possiamo scrivere:

( )

,

1

( )lim

| lim

N

N

nodo

NP e I

γ

γι

μ ι⎡ ⎤Γ ⎣ ⎦

→∞=

Γ→∞=

Γ

∑ (VII.11.4)

Il calcolo della precedente non è praticabile, essa può tuttavia essere facilmente

maggiorata applicando, come nel paragrafo precedente, l’union bound.

( ) { }( )| Pr | 0nodoe I

P e I eδ ι

ι δ∈

≤ ∑ (VII.11.5)

A partire dalla (VII.11.3) possiamo ancora scrivere:

( ) ( ) { }( )1 1

1 1| Pr | 0b nodo

e I

P e P e I ek k

δ ι

ι δι ι

ι ι∞ ∞

= = ∈

= ≤∑ ∑ ∑ (VII.11.6)

Ricordando la (VII.9.7) che per comodità riscriviamo:

( ) ( )2 1

, , , ,fd

T J L D w J L Dι λ δ

δ λ ι

δ λ ι∞ ∞ ∞

= = =

= ∑ ∑∑ (VII.11.7)

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:

( ) { }( ) ( ) { }( )

( ) { }( )

1 1 2

1

1 1Pr | 0 , , Pr | 0

1, Pr | 0

f

f

be I d

d

P e e w j ek k

w j ek

δ ι

δ δι ι δ λ

δι δ

ι ι δ λ

ι δ

∞ ∞ ∞ ∞

= ∈ = = =∞ ∞

= =

≤ =

=

∑ ∑ ∑ ∑ ∑

∑ ∑(VII.11.8)

La precedente può essere ulteriormente maggiorata applicando la (VII.10.11) nel

caso di decodifica hard o la (VII.10.9) in quella soft ottenendo rispettivamente:

( ) ( ) ( ) ( )2

1 1

1 1, 4 1 ,

f f

bd d

P e w j p p w j Bk k

δδ

ι δ ι δ

ι δ ι δ∞ ∞ ∞ ∞

= = = =

⎡ ⎤≤ − =⎣ ⎦∑ ∑ ∑ ∑ (VII.11.9)

Page 73: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Convoluzionali 67

( ) ( ) 0

1

1,

2

b

f

RE

Nb

d

P e w j ek

δ

ι δ

ι δ∞ ∞

= =

⎛ ⎞⎟⎜ ⎟⎜ ⎟≤ ⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎝ ⎠∑ ∑ (VII.11.10)

Osserviamo adesso che risulta:

( ) ( )

( ) ( )

1

2 11, 1 1, 1

1 2 1

, ,, ,

, , ,

f

f f

dL J L J

d d

T J L Dw J L D

J

w D w D

ι λ δ

δ λ ι

δ δ

ι δ λ ι δ

ι δ λ ι

ι δ λ ι ι δ ι

∞ ∞ ∞−

= = == = = =∞ ∞ ∞ ∞ ∞

= = = = =

∂=

= =

∑ ∑∑

∑ ∑ ∑ ∑ ∑ (VII.11.11)

la quale ci permette di riscrivere la (VII.11.9) e la (VII.11.10) rispettivamente nella

forma più compatta:

( ) ( )1, 1,

, ,1b

L J D B

T J L DP e

k J= = =

∂≤

∂ (VII.11.12)

e

( ) ( )01, 1,

, ,12

REbN

bL J D e

T J L DP e

k J= = =

∂≤

∂ (VII.11.13)

Page 74: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 75: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo VIII

Anelli di polinomi

VIII.1 Premessa Abbiamo già fornito la definizione di campo e abbiamo anche operato nel campo

B costituito da due soli elementi. Si possono costruire anche campi finiti (Campi di

Galois GF Galois Field) con un numero d’elementi p che sia un primo o una potenza di

un primo. Nel caso in cui il campo abbia un numero primo p d’elementi, l’addizione e

la moltiplicazione tra elementi del campo si possono effettuare in modo tradizionale

avendo cura di ridurre il risultato modulo p . Nella Tabella VIII.1 a titolo d’esempio so-

no riportati i risultati di tutte le possibili somme e prodotti tra coppie d’elementi di 7GF ,

il campo di Galois con sette elementi.

VIII.2 L’anello polinomi a coefficienti in F Consideriamo un campo F e un’indeterminata x , indichiamo con x⎡ ⎤⎣ ⎦F l’insieme

di tutti i possibili polinomi (cioè di qualunque grado) nella variabile x con coefficienti

appartenenti ad F , il generico elemento di x⎡ ⎤⎣ ⎦F sarà cioè del tipo:

7GF

⊕ 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 VIII.1 - Campo di Galois di 7 elementi

Page 76: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

70 Capitolo VIII

( ) ( ) 20 1 2

n nna x a a x a x a x= + + + +… (VIII.1.1)

dove n è un intero non negativo qualsiasi ed na ≠ o , essendo o l’elemento neu-

tro rispetto all’addizione in F .

Conveniamo inoltre:

- di utilizzare per le leggi di composizione del campo i simboli utilizzati per il campo

reale

- di indicare con ( ) ( )a x−∞ il polinomio identicamente nullo, cioè coincidente con o

- di omettere l’apice tra parentesi per indicare un polinomio di grado generico;

- che dato ( ) ( )na x , ia ≡ o per i n> .

Siano ( ) ( ) ( ) ( ),n ma x b x due elementi di x⎡ ⎤⎣ ⎦F e α un elemento di F , poniamo:

( ) ( ) ( ) ( ) ( )20 1 2

n nna a a x a x a xα α α α α= + + + +… (VIII.1.2)

( ) ( ) ( ) ( ) ( ) ( )

{ }max ,

n m l

i i i

a x b x c x

c a b l n m+

+ == ⇒ ≤

(VIII.1.3)

e

( ) ( ) ( ) ( ) ( ) ( )

0

0

n m m n

k

k m nk i k ii

a x b x c x

c a b

+

≤ ≤ +−=

=

= ∑F (VIII.1.4)

Nella precedente ∑F è utilizzato per ricordare che la sommatoria si deve ef-

fettuare secondo le regole di F , come del resto anche il prodotto al suo interno.

In sostanza abbiamo appena introdotto in x⎡ ⎤⎣ ⎦F l’addizione e la moltiplicazione.

Rispetto all’addizione è facile verificare che x⎡ ⎤⎣ ⎦F è un gruppo commutativo,

inoltre la moltiplicazione tra polinomi in F è commutativa e distributiva rispetto

all’addizione. x⎡ ⎤⎣ ⎦F è pertanto un anello commutativo, con identità, che coincide con

l’identità di F , che indicheremo con e .

Page 77: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Anelli di Polinomi 71

Osserviamo che il prodotto tra polinomi non nulli è un polinomio non nullo. Si

ottiene il polinomio nullo se e solo se uno almeno dei due moltiplicandi è il polinomio

nullo. Vale cioè anche la legge di annullamento del prodotto.

Quanto detto comporta tra l'altro che i polinomi { }2 3, , , , mx x x x… …e sono

linearmente indipendenti su x⎡ ⎤⎣ ⎦F .

Equation Section (Next)

VIII.3 Spazi di polinomi

Consideriamo adesso il sottoinsieme ( )1nx

− ⎡ ⎤⎣ ⎦F di x⎡ ⎤⎣ ⎦F costituito da tutti i

polinomi di grado minore di n . La somma di due elementi di ( )1nx

− ⎡ ⎤⎣ ⎦F è ancora un

elemento di ( )1nx

− ⎡ ⎤⎣ ⎦F . Inoltre moltiplicando un qualunque elemento di ( )1nx

− ⎡ ⎤⎣ ⎦F per

un elemento di F , che coincide con ( )0x⎡ ⎤⎣ ⎦F , otteniamo ancora un elemento di

( )1nx

− ⎡ ⎤⎣ ⎦F .

( )1nx

− ⎡ ⎤⎣ ⎦F è quindi uno spazio vettoriale su F di dimensione n in quanto è

evidentemente generabile tramite i suoi elementi linearmente indipendenti

{ }2 1, , , nx x x −…e .

Ci si convince facilmente che detto spazio vettoriale è isomorfo allo spazio nF

costituito da tutte le n -uple ordinate di elementi di F , basta infatti associare al polino-

mio ( ) ( ) ( )1nka x x− ⎡ ⎤∈ ⎣ ⎦F , l’elemento [ ]0 1 1, , , n

na a a −= ∈a … F se 1k n= − , ovvero

l’elemento 0 1, , , ,ka a a⎡ ⎤⎣ ⎦… …o o se 1k n< −

Page 78: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 79: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo IX

Codici polinomiali

Dati due interi 2n ≥ e k n< , scegliamo un polinomio ( ) ( )n kg x x− ⎡ ⎤∈ ⎣ ⎦F che

chiameremo polinomio generatore, tramite ( ) ( )n kg x− possiamo individuare il sottoin-

sieme ( )1nx x

−⎡ ⎤ ⎡ ⎤⊆⎣ ⎦ ⎣ ⎦F che contiene i polinomi che si ottengono da tutti i possibili

prodotti tra ( ) ( )n kg x

− e i polinomi ( ) ( )1na x x

− ⎡ ⎤∈ ⎣ ⎦F .

Consideriamo adesso due elementi ( )c x e ( )'c x appartenenti a x⎡ ⎤⎣ ⎦ , quindi

esprimibili rispettivamente nella forma:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ), ' 'n k n kc x a x g x c x a x g x− −= = (IX.1.1)

Comunque scelti ,α β ∈ F risulta:

( ) ( ) ( ) ( )( ) ( ) ( )' ' n kc x c x a x a x g xα β α β −+ = + ∈ (IX.1.2)

La precedente ci mostra che ( )x è un sottospazio di ( )1nx

− ⎡ ⎤⎣ ⎦F , quindi ne è

anche un sottogruppo.

Il corrispondente sottoinsieme di nF è quindi un codice di gruppo.

Abbiamo già detto (vedi par. II.2) che la distanza di Hamming tra parole di nF è

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 o , 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.

Page 80: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

74 Capitolo IX

Consideriamo adesso il caso dei codici polinomiali sul campo B essi sono

certamente codici binari a blocchi, nel senso che ammettono una matrice generatrice che

si può facilmente costruire a partire da ( ) ( )n kg x− . 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 { }2 1, , , kx x x −…e . 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

n k− .

Page 81: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo X

Ideali di un anello di polinomi

X.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 ( )( )1n

px

− ⎡ ⎤⎣ ⎦GF , che ha la stessa cardinalità.

Sorge quindi spontaneo indagare sulla possibilità di individuare in ( )1nx

− ⎡ ⎤⎣ ⎦F due

opportune leggi di composizione tra suoi elementi che consentano di pensare a

( )1nx

− ⎡ ⎤⎣ ⎦F come ad un campo di np elementi. Sarebbe a questo punto possibile definire

degli isomorfismi tra ( )( )1n

px

− ⎡ ⎤⎣ ⎦GF e ( )npGF . Parliamo di isomorfismi perché

potrebbero esistere più leggi di composizione interna che soddisfano le condizioni

necessarie per interpretare ( )1n−F come campo.

Abbiamo già visto che ( )1nx

− ⎡ ⎤⎣ ⎦F è un gruppo commutativo rispetto all’addizione

tra polinomi, purtroppo l’ordinaria moltiplicazione tra polinomi non può andar bene, non

foss’altro perché ( )1nx

− ⎡ ⎤⎣ ⎦F non è chiuso rispetto ad essa.

È quindi necessario ricercare una legge di composizione interna per ( )1nx

− ⎡ ⎤⎣ ⎦F

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.

Equation Section (Next)

Page 82: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

76 Capitolo X

X.2 Ideali di un anello con identità. Consideriamo un anello commutativo con identità diciamo che un suo

sottogruppo è un ideale se:

i r ⊗∈ ∧ ∈ ⇒ ∈ (X.2.1)

Qualora l’anello non fosse commutativo dovremmo distinguere tra ideale sinistro e

ideale destro, che potrebbero anche coincidere, nel qual caso si parlerebbe di 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 { }r ⊕ . Con questa notazione risulta:

{ } { } ( ){ }{ } { } ( ){ }

;r r r r

r r r r

⊕ ⊕ ⊕ ⊕⊕

⊕ ⊕ ⊕⊗ ⊗

′ ′′ ′ ′′=′ ′′ ′ ′′=

(X.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 (X.2.2) si deduce

facilmente che l’identità moltiplicativa è il laterale che si può indicare con { }⊕e ,

cioè quello che contiene l’identità e di

Osserviamo che comunque scelto un elemento i di , l’insieme

{ }|i r r i⊗= ∈ è un ideale, infatti ( ) ( ) ( )i r i r i r r⊗ ⊕ ⊗ ⊗ ⊕′ ′= ∈ ,

inoltre indicando con r− , l’opposto di r , ( )i r⊗ − ∈ e risulta

( ) ( ) ( )( )i r i r i r r⊗ ⊕ ⊗ ⊗ ⊕⎡ ⎤− = − =⎣ ⎦ o , pertanto è un sottogruppo di . Ogni

ideale generato da un elemento di è detto ideale principale.

Vale il seguente teorema:

Teorema X.1

Tutti gli ideali dell’anello x⎡ ⎤⎣ ⎦F dei polinomi su un campo F sono principali.

Dimostrazione:

Page 83: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Ideali di un Anello di Polinomi 77

Osserviamo innanzitutto che ( ) ( ) { }a x−∞ ≡ o è un ideale principale per

l’anello commutativo con identità x⎡ ⎤⎣ ⎦F . Consideriamo adesso un ideale di x⎡ ⎤⎣ ⎦F di-

verso da ( ) ( )a x−∞ , in esso scegliamo un elemento ( ) ( )na x ≠ o di grado minimo.

Comunque scelto un polinomio ( ) ( )mb x ∈ potremo scrivere:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )m m n n kb x q x a x r x−= + (X.2.3)

dove se k ≠ −∞ (cioè ( ) ( )na x non è un divisore di ( ) ( )mb x ) risulterà

0 1k n≤ ≤ − , ma in questo caso potremmo scrivere:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )k m m n nr x b x q x a x−= − (X.2.4)

che è un assurdo in quanto ( ) ( )kr x deve appartenere ad , essendo esprimibile com-

ponendo elementi di quest’ultimo, ma deve avere anche grado n< che per ipotesi è il

grado minimo dei polinomi non nulli contenuti in . Deve pertanto essere k = −∞ , o,

che è lo stesso, ( ) ( ) ( ) ( )kr x a x−∞= = o , pertanto ogni ideale di x⎡ ⎤⎣ ⎦F è principale.

***********

Ci si convince facilmente che comunque scelto |α α∈ ≠F o , anche il polinomio

( ) ( )nh xα ⊗ genera lo stesso ideale. Ovviamente sarà sempre possibile individuare tra i

generatori di un ideale x⎡ ⎤⎣ ⎦F un solo polinomio monico cioè con il coefficiente del ter-

mine di massimo grado pari ad e .

Vale il seguente teorema:

Teorema X.2

Dati due ideali di x⎡ ⎤⎣ ⎦F , siano ( )1 1h x= ed ( )2 2h x= , risulta 1 2⊆ se e

solo se ( )1h x ha ( )2h x tra i suoi fattori.

***********

Page 84: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

78 Capitolo X

Dato un ideale ( ) ( )nh x ed un polinomio ( ) ( )kg x , sappiamo che esistono

( ) ( )mq x e ( ) ( )jr x tali che si può scrivere :

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ } { } ,

| , 0 1 ,

,k m n j

m k nj n

m n k k n

g x q x h x r x

ν ν ν

+

⎧⎪ =−∞ <⎪⎪∈ −∞ ∪ ∈ ≤ ≤ − ⎨⎪ = − ≥⎪⎪⎩

= (X.2.5)

che ci permette di affermare che ( ) ( )kg x ed ( ) ( )jr x appartengono allo stesso laterale

di ( ) ( )nh x

( ) ( ) ( ) ( ){ } ( ) ( ) ( ) ( ){ }k n j ng x h x r x h x⊕ ⊕= (X.2.6)

ciascun laterale di un ideale contiene un unico polinomio di grado minimo, grado che, in

virtù della (X.2.5), deve essere minore di n . 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 n non potrà appartenere all’ideale che essendo principale contiene solo polinomi

di grado maggiore od uguale ad n , fatta eccezione per il polinomio nullo, che peraltro è

l’unico polinomio di grado minimo contenuto nell’ideale pensato come laterale di se

stesso.

Esiste quindi un isomorfismo “naturale” tra l’anello ( ) ( )n

x

h x

⎡ ⎤⎣ ⎦F e l’insieme

( )1nx

− ⎡ ⎤⎣ ⎦F dei polinomi a coefficienti in F di grado minore di n . si può quindi pensare

a ( )1nx

− ⎡ ⎤⎣ ⎦F come ad un anello commutativo con identità assumendo come risultato

della moltiplicazione tra due polinomi di ( )1nx

− ⎡ ⎤⎣ ⎦F il resto della divisione tra l’usuale

prodotto dei due polinomi e ( ) ( )nh x .

Page 85: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo XI

Codici Ciclici

XI.1 Rappresentazione polinomiale di un codice ciclico.

Definizione XI.1 Un codice lineare a blocchi n

n,k ⊆ F si dice ciclico se e solo se comunque scelta una

sua parola di codice

0 1 2 2 1 1 0 1 2 2, , , , , , , ,n n n,k n n n,kc c c c c c c c c c− − − −⎡ ⎤ ⎡ ⎤′= ∈ ⇒ = ∈⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦c c… … (XI.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

( )1nx

− ⎡ ⎤⎣ ⎦F come segue:

( ) 2 10 1 2 2 1 0 1 2 1, , , , n

n n nc c c c c c x c c x c x c x −− − −

⎡ ⎤= → = + + +⎢ ⎥⎣ ⎦c … … (XI.1.2)

denoteremo con ( )n,k x l’insieme dei polinomi associati alle parole di codice.

Risulta:

( ) 2 30 1 2 1

nnxc x c x c x c x c x−= + + +… (XI.1.3)

notiamo che per trasformare ( )xc x in ( )c x′ occorrerebbe sottrarre a ( )xc x il polino-

mio 1 1n

n nc x c− −− . Risulta:

( ) ( ) ( )2 3 21 1 0 1 2 2

n nn n nxc x c x c c x c x c x c x c x−− − − ′− − = + + + + =…e (XI.1.4)

ma 1nc − è il quoto della divisione tra ( )xc x e nx −e , dalla (XI.1.4) si deduce quindi

che ( )c x′ altro non è se non il resto della divisione appena citata.

Page 86: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

80 Capitolo XI

In altri termini, l’operazione corrispondente alla rotazione ciclica di una parola in

nF equivale, nel linguaggio dei polinomi, a considerare il resto della divisione per

nx −e del prodotto tra il polinomio corrispondente alla parola ed x . In simboli:

( ) ( ) ( )mod nxc x xc x

−⎡ ⎤′ = ⎣ ⎦ e

(XI.1.5)

Equation Section (Next)

XI.2 L’anello n

x

x

⎡ ⎤⎢ ⎥⎣ ⎦−

Fe

Notiamo che l’insieme dei polinomi di codice ( )n,k x essendo costituito da

polinomi appartenenti a ( )1nx

− ⎡ ⎤⎣ ⎦F costituisce anche un sottoinsieme dei coset leader

(intesi come i polinomi di grado minimo) dei laterali di n

x

x

⎡ ⎤⎣ ⎦−e

F.

Osserviamo inoltre che:

• avendo supposto che il codice nn,k ⊆ F sia lineare, esso deve avere la

struttura di spazio vettoriale sul campo F , quindi la sua rapprentazione in

forma polinomiale ( )n,k x deve essere anche un sottospazio di ( )1n−F ;

• l’anello n

x

x

⎡ ⎤⎣ ⎦−e

F ha la struttura di spazio vettoriale sul campo F ;

• esiste un isomorfismo naturale tra ( )1n−F ed n

x

x

⎡ ⎤⎣ ⎦−e

F, quello che

associa ad ogni polinomio di ( )1nx

− ⎡ ⎤⎣ ⎦F l’unico laterale che lo contiene in

n

x

x

⎡ ⎤⎣ ⎦−e

F.

Page 87: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Ciclici 81

Dalle considerazioni appena fatte discende facilmente che l’immagine secondo

l’isomorfismo sopra citato di ( )n,k x in n

x

x

⎡ ⎤⎣ ⎦−e

F è a sua volta un sottospazio

vettoriale, quindi anche un sottogruppo, ( )n,k x di n

x

x

⎡ ⎤⎣ ⎦−e

F, i cui elementi

sono i laterali di nx −e che contengono i polinomi di codice.

Osserviamo che la ciclicità e la linearità del codice implicano:

( ) ( ) ( )mod

( ) ( ) ; ,n

kn,k n,kx

c x x ax c x x a k−

⎡ ⎤∈ ⇒ ∈ ∀ ∈ ∈⎢ ⎥⎣ ⎦ eF (XI.2.1)

Dalla quale sempre in virtù della linearità di ( )n,k x discende anche facilmente:

( ) ( ) ( ) ( ) ( )mod

( ) ( ) ;nn,k n,kxc x x p x c x x p x x

−⎡ ⎤ ⎡ ⎤∈ ⇒ ∈ ∀ ∈⎣ ⎦ ⎣ ⎦e

F (XI.2.2)

Quest’ultima, sulla base dell’osservazione c), può essere rivisitata in termini di

laterali di nx −e :

{ } ( )( ) ( ){ } ( ){ }( ){ } { } ( )

( ){ }

mod

( )

( ) ( )

( ) ;

n

nn,k

n nx

n nn,k

nn

c x x x

p x c x x p x c x x

p x x c x x x

xp x x

x

⊕ ⊕−

⊗⊕ ⊕

− ∈

⎡ ⎤⇒ − ≡ −⎣ ⎦

⇒ − − ∈⎡ ⎤⎣ ⎦∀ − ∈

e

e

e e

e e

ee

F

(XI.2.3)

La precedente ci permette di affermare che se il codice è ciclico allora ( )n,k x è un

ideale dell’anello n

x

x

⎡ ⎤⎣ ⎦−e

F.

Viceversa consideriamo un ideale di n

x

x

⎡ ⎤⎣ ⎦−e

F comunque preso un suo

elemento, sia ( ){ }nc x x⊕ −e , il fatto che sia un ideale implica che

Page 88: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

82 Capitolo XI

( ){ } ( ){ }( ) ( ){ } ( ) ( ) ( ){ }

( ){ } ( ){ }mod

;n

n n

n nx

n nn

c x x p x x

c x p x x c x p x x

xc x x p x x

x

⊗⊕ ⊕

⊕ ⊕−

⊕ ⊕

− −

⎡ ⎤= − = − ∈⎣ ⎦⎡ ⎤⎣ ⎦∀ − ∈ ∧ ∀ − ∈

e

e e

e e

e ee

F

(XI.2.4)

Ne discende che la controimmagine dell’isomorfismo di cui all’osservazione c) è un

codice ciclico.

Quanto finora esposto costituisce in pratica la dimostrazione del seguente teorema:

Teorema XI.1

Condizione necessaria e sufficiente affinché un codice sia ciclico è che ( )n,k x sia un

ideale di n

x

x

⎡ ⎤⎣ ⎦−e

F.

***********

Equation Section (Next)

XI.3 Polinomio generatore di un codice ciclico Ci convinciamo facilmente del fatto che il sottoinsieme di x⎡ ⎤⎣ ⎦F costituito dall’u-

nione di tutti i laterali di nx −e che appartengono ( )n,k x , in virtù della (XI.2.2),

è un ideale, ma tutti gli ideali di x⎡ ⎤⎣ ⎦F sono principali (vedi Teorema X.1), esiste cioè un

polinomio di grado minimo che li genera, tale polinomio apparterrà evidentemente a

( ) ( )1nn,k x x

− ⎡ ⎤⊆ ⎣ ⎦F in particolare potremmo scegliere in quest'ultimo l’unico polino-

mio monico di grado minimo, sia ( )g x . Rileviamo che il grado di ( )g x dovrà necessa-

riamente essere n k− per un codice n,k .

Abbiamo visto che ( ) ng x x⊇ −e , quindi, in virtù del Teorema X.2, ( )g x

deve essere un divisore di nx −e , ne discende che un codice ciclico n,k esiste se e so-

lo se nx −e pensato come polinomio a coefficienti nel campo F si può scomporre nel

prodotto tra due polinomi di cui uno di grado n k− .

Page 89: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Ciclici 83

Equation Section (Next)

XI.4 Polinomio di parità di un codice ciclico

Nel paragrafo precedente abbiamo visto che se ( ) ( )n kg x− genera un codice ciclico

( )n,k x , allora deve esistere

( ) ( ) ( ) ( ) ( ) ( )|k n k k nh x g x h x x e− = − (XI.4.1)

D’altro canto nel precedente capitolo abbiamo visto che ogni parola di un codice

polinomiale può essere scritta nella forma:

( ) ( ) ( ) ( )n kc x a x g x−= (XI.4.2)

Dove ( )a x è un qualsiasi polinomio appartenente a ( )1kx

− ⎡ ⎤⎣ ⎦F . Risulta:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )( )( ) ( )( ) ( )mod

0n

k n k k

n n

x

h x c x a x g x h x

a x x a x x

= =⎡ ⎤= − ⇒ − =⎢ ⎥⎣ ⎦ e

e e (XI.4.3)

Poiché la precedente è vera per tutti e soli i polinomi di codice, ne discende che

( ) ( )kh x , o un qualunque altro polinomio di x⎡ ⎤⎣ ⎦F che lo contenga come fattore senza

contenere nx −e , può essere utilizzato per effettuare il controllo di parità nel caso in

cui si intenda utilizzare il codice esclusivamente per la rivelazione dell’errore.

Osserviamo che il polinomio ( )( ) ( ) ( ) ( )kna x x h x c x− =e ha tutti i

coefficienti di grado maggiore di 1k − e minore di n nulli per costruzione. Questa

osservazione ci permette di scrivere le seguenti n k− equazioni che devono essere

soddisfatte dai coefficienti del polinomio ( ) ( ) ( )kh x c x :

0

0; 1k

i j ii

h c k j n−=

= ≤ ≤ −∑ (XI.4.4)

ciascuna delle equazioni appena scritte coinvolge 1k + 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 (XI.4.4) potrebbero anche essere

Page 90: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

84 Capitolo XI

utilizzate per implementare un codificatore sistematico utilizzando un filtro FIR, a tal

fine osserviamo che nella prima delle (XI.4.4) possiamo scegliere arbitrariamente

0 1 1, kc c c −… , e calcolare kc , quindi utilizzare nella seconda 1 1,k kc c c−… per calcolare

1kc + e così via fino ad ottenere una parola di codice. In sostanza si risolvono

ricorsivamente equazioni del tipo

01

1k

i j i ji

h c h c k j n−=

= − ≤ ≤ −∑ (XI.4.5)

Nell’incognita jc tali equazioni ammettono certamente soluzione dal momento che

deve 0 0h ≠ se così non fosse, tra le radici di ( )h x vi sarebbe lo zero del campo che

non essendo una radice di nx −e non può esserlo per nessuno dei suoi fattori.

Esempio XI.1 Vogliamo implementare un codificatore basato sulle (XI.4.5) che emetta gli n simboli della parola di codice in sequenza. Osserviamo che il codificatore è sistematico, i k 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. XI.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 k -esimo simbolo informativo ( 1kc − ), all’uscita del moltiplicatore posto in serie al

sommatore sarà presente kc . Il passo successivo consisterà nel chiudere l’anello di reazione, spostando sulla posizione b il commutatore e mantenerlo in questa posizione per n k− periodi di clock per calcolare i restanti simboli di parità. Osserviamo che ( )h x può essere scelto in modo che risulti 0 1h = − , 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.

Equation Section (Next)

Σ

sT

a

bsT sT

1h 3h2h kh1

0h−−

0c

1kc

2kc

− 3kc

− 1c

1kc

1kc −

kc

2 3 0k kc c c− −

Fig. XI.1 Codificatore sistematico basato sul polinomio di parità

Page 91: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Ciclici 85

XI.5 Matrice generatrice di un codice ciclico Consideriamo un codice ciclico sul campo F la cui rappresentazione polinomiale

sia l’insieme ( )n,k x , abbiamo visto che esso deve ammettere un polinomio generatore

di grado n k− , sia

( ) ( ) 1n k n k

o n kg x g g x g x− −−= + +… (XI.5.1)

Sappiamo che, in virtù della ciclicità, anche i polinomi ( ) ( )( )mod 1n

n kj

xx g x−

⎡ ⎤⎢ ⎥⎣ ⎦

devono appartenere a ( )n,k x . Osserviamo che per i k polinomi ottenuti al variare di j

tra 0 e 1k − risulta

( ) ( )( )

( ) ( )mod n

n k n kj j

xx g x x g x− −

⎡ ⎤ =⎢ ⎥⎣ ⎦ e (XI.5.2)

Inoltre essi sono linearmente indipendenti, giacché tutti di grado diverso. Essi sono

anche in numero pari alla dimensione di ( )n,k x pensato come sottospazio di

( )1n x− ⎡ ⎤⎣ ⎦ , ne costituiscono quindi una base.

Quanto appena detto ci consente di scrivere una matrice generatrice del codice

nn,k ⊆ F che avrà evidentemente come righe le parole corrispondenti ai polinomi

appena individuati

1

1,

1

o n k

o n kk n

o n k

g g g

g g gG

g g g

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

… … …… …

… …… … … … … … … … …

o o oo o o oo o o o

(XI.5.3)

XI.6 Codici ciclici Sistematici La matrice generatrice individuata nel paragrafo precedente non è in forma

sistematica, vogliamo mostrare che è possibile individuarne una che lo è.

A tal fine dato un codice ciclico ( )n,k x generato da ( ) ( )n kg x− consideriamo

polinomi del tipo:

jx (XI.5.4)

Page 92: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

86 Capitolo XI

Essi non sono certamente polinomi di codice in quanto tra le loro radici non com-

paiono certamente quelle di ( ) ( )n kg x− , tuttavia sottraendo da ciascuno di essi il resto

della divisione per ( )g x otteniamo un polinomio di codice possiamo cioè affermare

che:

( )( )

( )mod

j jn,kg x

x x x⎡ ⎤− ∈⎢ ⎥⎣ ⎦ (XI.5.5)

Ci rendiamo conto del fatto che se scriviamo i polinomi ottenuti tramite la (XI.5.5) in

corrispondenza a 1n k j n− ≤ ≤ − otteniamo k polinomi di codice che hanno il solo

coefficiente j -esimo pari a uno e tutti i restanti nulli nel range di valori di j in parola,

ciò in quanto il resto di una divisione per ( )g x è un polinomio che al più può avere

grado 1n k− − . Si costata anche immediatamente che i polinomi appena ottenuti 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:

, , ,k n k n k k kG P I−⎡ ⎤= ⎣ ⎦ (XI.5.6)

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 associato al polinomio

informativo ( ) ( )1ka x x

− ⎡ ⎤∈ ⎣ ⎦F è dato da:

( ) ( ) ( ) ( )( )( )mod n kn k n k

g xc x a x x a x x −

− −⎡ ⎤= − ⎢ ⎥⎣ ⎦ (XI.5.7)

Prendiamo adesso in considerazione la matrice

, , ,k n k k k n kG I P −⎡ ⎤′ = ⎣ ⎦ (XI.5.8)

che si ottiene effettuando k rotazioni cicliche su ciascuna riga della ,k nG . Essa ha per

righe k parole di n,k linearmente indipendenti ed è quindi anch’essa una matrice

generatrice.

Esempio XI.2 Per costruire un codificatore basato sulla (XI.5.7) dobbiamo disporre di un sistema in grado di

calcolare il resto della divisione tra due polinomi.

Page 93: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici Ciclici 87

Supponiamo di disporre all’istante i - esimo del polinomio ( )ip x⎡ ⎤⎣ ⎦, e che tale polinomio

all’istante 1i + - esimo venga aggiornato, per effetto dell’emissione da parte di una sorgente di un simbolo 1ia ⎡ ⎤+⎣ ⎦

secondo la regola:

( ) ( )1 1i i ip x xp x a⎡ ⎤ ⎡ ⎤ ⎡ ⎤+ +⎣ ⎦ ⎣ ⎦ ⎣ ⎦= +

Indichiamo rispettivamente con ( )ir x⎡ ⎤⎣ ⎦ e ( )iq x⎡ ⎤⎣ ⎦

il resto e il quoto della divisione tra ( )ip x⎡ ⎤⎣ ⎦e

( )g x che supponiamo monico. Vogliamo calcolare ( )1ir x⎡ ⎤+⎣ ⎦. Risulta:

( ) ( )

( )( )( ) ( ) ( )

( )( )

( )( )( )

1 1 1mod mod

1 mod

i i i i ig x g x

i i g x

r x p x xq x g x xr x a

xr x a

⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤+ + +⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦

⎡ ⎤ ⎡ ⎤+⎣ ⎦ ⎣ ⎦

⎡ ⎤ ⎡ ⎤= = + +⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦⎡ ⎤= +⎢ ⎥⎣ ⎦

Ma ( ) 1i ixr x a⎡ ⎤ ⎡ ⎤+⎣ ⎦ ⎣ ⎦+ ha al più grado n k− possiamo quindi ulteriormente scrivere:

( ) ( ) ( ) ( )

( ) ( )( ) ( )( )1 1 1

11 1 0 0 1 1 2 1 1

i i i i n k

n ki i n k i i n k i n k i n k n k

r x a xr x r g x

a r g r r g x r r g x

⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤+ + − −⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦− −

⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤+ − − − − − − − − − −⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦

= + −

= − + − + −…

Possiamo quindi fa-cilmente tracciare lo schema di principio mostrato in Fig. XI.2.

Non appena tutti i coefficienti del dividen-do, a partire da quello di grado maggiore, saranno immessi nel sistema, sarà sufficiente aprire l’anello di reazione tramite il de-

viatore in uscita e nei successivi n k− passi si presenteranno in uscita i coefficienti del resto. Equation Section (Next)

XI.7 Duale di un codice ciclico Abbiamo mostrato che un codice ciclico ( )n,k x , ha come generatore un fattore

( ) ( )n kg x− del polinomio nx −e . Esiste quindi un ( ) ( )kh x tale che:

( ) ( ) ( ) ( )n k k ng x h x x− = −e (XI.6.1)

Abbiamo gia visto come ( ) ( )kh x possa essere utilizzato come polinomio di parità,

ma esso, in quanto fattore di nx −e è in grado di generare un codice ciclico

( )n,n k x⊥ − anch’esso contenuto in ( )1nx

− ⎡ ⎤⎣ ⎦F che viene chiamato (seppur impropria-

D

0g 1g

[ ] 1i n kr − −[ ]0ir [ ]1ir[ ]1ia +

[ ]1 0ir+ [ ]1 1i

r+

1n kg − −

[ ] 2i n kr

− − [ ]1 1i n kr + − −DD D

Fig. XI.2 Schema di principio di un sistema che calcola il resto della

divisione tra due polinomi

Page 94: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

88 Capitolo XI

mente) duale di ( )n,k x , in quanto le parole di n,k non sono in genere ortogonali a

quelle di n,n k⊥ − .

Consideriamo due polinomi ( ) ( )n,kc x x∈ e ( ) ( )n,n kd x x⊥ −∈ . Risulta:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )( )n k k nc x d x a x g x b x h x a x b x x−= = −e (XI.6.2)

Osserviamo che il polinomio ( ) ( )a x b x ha grado al più

( ) ( )1 1 2k n k n− + − − = − , ne consegue che il coefficiente del termine di grado

1n − di ( ) ( )c x d x deve essere nullo. Possiamo quindi scrivere:

1

10

0n

i n ii

c d−

− −=

=∑ (XI.6.3)

la precedente vale per ogni scelta di ( ) ( )n,kc x x∈ e ( ) ( )n,n kd x x⊥ −∈ . Essa ci

suggerisce come costruire il codice duale propriamente detto che si ottiene ribaltando le

parole di n,n k⊥ − .

Anche il codice duale propriamente detto è polinomiale il suo polinomio generatore

risulta essere:

( )1kx h x− (XI.6.4)

una sua matrice generatrice potrebbe essere:

2 1 0

2 1 0,

2 1 0

k

kn k n

k

h h h h

h h h hH

h h h h−

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

… …… …… …… … … … … … … … …

o o oo o oo o o

(XI.6.5)

Page 95: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo XII

Campi finiti

XII.1 Polinomi irriducibili e campi ad essi associati

Definizione XII.1 Diciamo che un polinomio ( ) ( )nh x x⎡ ⎤∈ ⎣ ⎦F di grado non inferiore a 1 è irriducibile

se:

( ) ( ) ( ) ( ) ( ) ( ) 0n l mh x a x b x lm= ⋅ ⇒ = (XII.1.1)

Ovviamente tutti i polinomi di primo grado sono irriducibili. In 2 x⎡ ⎤⎣ ⎦GF . Anche il

polinomio 3 1x x+ + è irriducibile esso infatti non è divisibile né per x né per 1x + ,

che sono tutti e soli i polinomi di primo grado appartenenti a 2 x⎡ ⎤⎣ ⎦GF . Non sono

necessarie altre verifiche in quanto le eventuali fattorizzazioni devono comunque

contenere un polinomio di primo grado. Il polinomio 2 1x x⎡ ⎤+ ∈ ⎣ ⎦ è irriducibile in

, ma pensato come elemento di x⎡ ⎤⎣ ⎦ non lo è

Vale il seguente teorema:

Teorema XII.1

Se ( ) ( )nh x è un polinomio irriducibile di x⎡ ⎤⎣ ⎦F allora il gruppo quoziente individuato

dall’ideale ( ) ( )nh x è un campo.

Dimostrazione:

Sappiamo già che ( ) ( )n

x

h x

⎡ ⎤⎣ ⎦F è un anello commutativo con identità,

dobbiamo quindi solo verificare che per ogni suo elemento, fatta eccezione per

( ) ( )nh x , esiste un inverso.

Page 96: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

90 Capitolo XII

Osserviamo che ( ) ( )nh x non coincide con x⎡ ⎤⎣ ⎦F . Se così non fosse, esiste-

rebbe ( ) ( ) ( ) ( )| ng x x h x g x⎡ ⎤∈ ⋅ =⎣ ⎦ eF , ma la precedente può essere soddisfatta

solo se 0n = , contro l’ipotesi che ( ) ( )nh x è irriducibile, quindi il suo grado non può

essere inferiore ad 1. Possiamo pertanto affermare che ( ) ( )n

x

h x

⎡ ⎤⎣ ⎦F contiene

almeno un polinomio ( ) ( ) ( )ng x h x∉ .

Consideriamo adesso l’insieme

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }| ,na x h x b x g x a x b x x⎡ ⎤= + ∈ ⎣ ⎦F (XII.1.2)

si constata facilmente che è un ideale di x⎡ ⎤⎣ ⎦F , ma (vedi Teorema X.1) tutti gli ideali

di x⎡ ⎤⎣ ⎦F sono principali, deve pertanto esistere in x⎡ ⎤⎣ ⎦F un polinomio ( ) ( )wj x tale che

risulti ( ) ( )wj x = .

Dalla (XII.1.2) deduciamo che ( ) ( )nh x ∈ , quindi deve esistere un polinomio

per il quale risulti ( ) ( ) ( ) ( ) ( ) ( )n w qh x j x y x= , ma ( ) ( )nh x è irriducibile, quindi,

necessariamente, o 0q = , o 0w = . nel primo caso ( ) ( )nh x ≡ , ma ciò è as-

surdo perché contiene anche ( ) ( ) ( ) ( )k ng x h x∉ , deve quindi essere 0w = .

Ciò implica x⎡ ⎤≡ ⎣ ⎦F da cui discende che esistono ( ) ( ),a x b x x⎡ ⎤∈ ⎣ ⎦F che

soddisfano l’uguaglianza

( ) ( ) ( ) ( ) ( ) ( )n ka x h x b x g x= +e (XII.1.3)

La precedente implica:

Page 97: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Campi Finiti 91

( ) ( ){ } ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )( ) ( ) ( ){ }( ) ( ) ( ) ( ) ( ) ( ){ }( ) ( ) ( ) ( ){ } ( ) ( ) ( ) ( ){ }

n l n m k n

m k n

m n k n

h x a x h x b x g x h x

b x g x h x

b x h x g x h x

⊕ ⊕

⊕ ⊗ ⊕

= + =

=

=

e

(XII.1.4)

osservando primo ed ultimo membro della precedente si deduce che il laterale

( ) ( ) ( ) ( ){ }m nb x h x⊕ è l’inverso di ( ) ( ) ( ) ( ){ }k ng x h x⊕ .

***********

Equation Section (Next)

XII.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 ( )O , è un sottomultiplo dell’ordine del gruppo in cui esso è contenuto.

Sia x un elemento di un gruppo finito . Consideriamo l’insieme

{ }1 2 3 2 1, , , , ,k kx x x x x x x x x x x x

⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤−⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦⊕ ⊕ ⊕= = =… … (XII.2.1)

x è un sottoinsieme di , in quanto è chiuso rispetto alla legge ⊕ , quindi x deve

avere un numero finito di elementi, da cui facilemente discende che deve esistere un

intero ( )m O≤ , tale che risulti 1mx x⎡ ⎤+⎣ ⎦ = , o, che è lo stesso, tale che

0mx x⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦= o (XII.2.2)

Abbiamo appena mostrato che x contiene o . Considerando adesso il più piccolo

valore di m che soddisfa la (XII.2.2), risulta:

i m i i m i mx x x x⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤− + −⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦⊕ = = = o (XII.2.3)

x è quindi un sottogruppo di . L’ordine del sottogruppo generato da un elemento x

di un gruppo è detto ordine di x , ( )O x .

Equation Section (Next)

Page 98: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

92 Capitolo XII

XII.3 Ordine degli elementi di un campo finito Consideriamo un campo finito F . Sia p l’ordine di e rispetto alla legge ⊕ ,

possiamo affermare che p è un numero primo. Infatti, se p non lo fosse esisterebbero

due interi, k ed l , entrambi 1> per i quali varrebbe l’uguaglianza:

( ) lp kl k k l⎡ ⎤⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦⊗ =e = e = e = e e o (XII.3.1)

ma F è un campo vale quindi la legge di annullamento del prodotto, quindi o k⎡ ⎤⎣ ⎦ =e o

o l⎡ ⎤⎣ ⎦ =e o . ( )O e sarebbe quindi il minimo tra k ed l e non p . Ne segue che ( )O e

deve essere un numero primo.

Osserviamo che per ogni elemento α di F si può scrivere eα α ⊗= , che ci

permette di scrivere anche:

( ) ( ) ( )2 2α α α α α⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦⊗ ⊕ ⊗ ⊗ ⊕ ⊗= = =e e e e e (XII.3.2)

più in generale k kα α⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦⊗= e , ma kα

⎡ ⎤⎣ ⎦⊗ =e o solo se α = o , ovvero se k⎡ ⎤⎣ ⎦ =e o ,

possiamo quindi concludere che tutti gli elementi diversi da o di un campo finito hanno

tutti lo stesso ordine rispetto alla somma, e che tale ordine è un primo risulta cioè:

;

,

p p

kk p

α α

α α

⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦⊗

⎡ ⎤⎣ ⎦

= =

< ≠ ⇒ ≠ o

e o

o (XII.3.3)

Equation Section (Next)

XII.4 Ordine di un campo finito Consideriamo un campo F , ed un suo sottocampo K , in questo caso diremo che

F è un’estensione di K . Si constata che F ha la struttura di spazio vettoriale sul campo

K . La dimensione di questo spazio se è finita è detta grado di F su K .

Vale il seguente teorema:

Teorema XII.2 - Ordine di un campo finito

L’ordine di un campo finito o è primo, o è una potenza (intera) di un primo.

Dimostrazione:

Page 99: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Campi Finiti 93

Abbiamo visto che l’ordine dell’elemento e di un qualsiasi campo F è un primo p , si

verifica facilmente che l’insieme

{ }2 3, , , p⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦ ⎣ ⎦= = ⊆…K Fe e e e o (XII.4.1)

é un campo (isomorfo a pGF ) quindi è un sottocampo non necessariamente proprio di

F .

D’altro canto, F ha la struttura di spazio vettoriale sul campo K la cui dimensione

deve necessariamente essere finita, essendo F finito per ipotesi.

Un qualsiasi elemento di F potrà essere quindi espresso in modo univoco come

combinazione lineare, con coefficienti appartenenti a K , di n elementi che

costituiscano una base per F , cioè che siano linearmente indipendenti su K .

Osservando che esistono esattamente np combinazioni lineari distinte si conclude che

l’ordine di F se non è primo è una potenza di un primo.

***********

Quale che sia il campo finito npGF , il campo pGF generato dalla sua unità

moltiplicativa è detto sottocampo primo o fondamentale. Esso è contenuto in tutti i

sottocampi di npGF , o, che è lo stesso, è l’intersezione di tutti i sottocampi di np

GF

quindi è anche il più piccolo sottocampo di npGF che contiene e (si dice che p è la

caratteristica del campo).

Osserviamo che se un Campo F non è finito, allora anche l’insieme definito nella

(XII.4.1) non lo è, e non è nemmeno un sottocampo di F (non è nemmeno un gruppo) in

questo caso si può dimostrare che il sottocampo minimo contenuto in F è isomorfo al

campo dei razionali e che l’insieme definito nella (XII.4.1) è isomorfo all’insieme

dei naturali. In questo caso diremo che il campo ha caratteristica 0

Equation Section (Next)

Page 100: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

94 Capitolo XII

XII.5 Elementi primitivi di un campo Sappiamo che un campo np

GF privato dell’elemento neutro rispetto alla somma è

un gruppo rispetto alla moltiplicazione, indichiamolo con np

⊗GF . L’ordine di np

⊗GF è

1np − .

Sia l l’ordine di un generico elemento α di np

⊗GF , risulta

fattori

l

l

α α α α α⊗ ⊗ ⊗ ⊗ =… e (XII.5.1)

l deve necessariamente essere un divisore di 1np − esiste cioè un naturale k tale che

1nlk p= − . Ne segue:

( )1n kp lk l kα α α− = = = =e e (XII.5.2)

Dalla precedente discende che per ogni elemento di np

⊗GF potremo scrivere

n

np

pα α α

⊗= ∀ ∈GF (XII.5.3)

Constatiamo immediatamente che la precedente vale anche per o , possiamo quindi

anche scrivere:

n

np

pα α α= ∀ ∈GF (XII.5.4)

Si può dimostrare che il gruppo np

⊗GF è un gruppo ciclico, cioè che in np

⊗GF vi

sono elementi il cui ordine è uguale all’ordine del gruppo. Un tale elemento si chiama

generatore del gruppo.

Un generatore di np

⊗GF si dice elemento primitivo del campo, in particolare si può

dimostrare che vi sono elementi primitivi in numero uguale a quello dei naturali

1np≤ − e con esso relativamente primi, ad esempio in 4GF ve ne saranno 2 , in

16GF 8 . Inoltre in ogni campo per cui 1np − è un primo, quale ad esempio 8GF tutti

gli elementi diversi da o sono primitivi.

Equation Section (Next)

Page 101: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Campi Finiti 95

XII.6 Campi di polinomi Cerchiamo adesso di mettere un po’ d’ordine, sappiamo che:

- se ( )( )nh x è un polinomio irriducibile appartenente a x⎡ ⎤⎣ ⎦F , allora

( ) ( )n

x

h x

⎡ ⎤⎣ ⎦F è un campo.

- ogni campo finito qGF ha un numero di elementi che se non è un numero

primo è una potenza di un primo;

- ( )1k

np

x x− ⎡ ⎤ ⎡ ⎤⊂⎣ ⎦ ⎣ ⎦GF , è isomorfo ad uno spazio vettoriale di dimensione n ,

costituito esattamente da ( )nk nkp p= elementi (una potenza di un primo).

Fissato un polinomio irriducibile ( )( )nh x , e comunque scelto un polinomio

( ) ( )ka x di x⎡ ⎤⎣ ⎦F possiamo scrivere:

( ) ( ) ( ) ( ) ( ) ( )( ) ( )k l n ma x q x h x r x= + (XII.6.1)

la precedente ci mostra che ( )( )mr x ed ( ) ( )ka x , appartengono allo stesso laterale

dell’ideale generato da ( )( )nh x . Notiamo anche che il grado di ( )( )mr x è, inferiore al

grado di ( )( )nh x .

Osserviamo che ( )( )mr x può essere un qualunque polinomio appartenente a

( )1n x− ⎡ ⎤⎣ ⎦ .

In definitiva quindi, individuato un polinomio irriducibile ( )( )nh x , possiamo af-

fermare che ( )1n x− ⎡ ⎤⎣ ⎦ , con l’usuale somma tra polinomi in x⎡ ⎤⎣ ⎦F e definendo come

prodotto tra due suoi elementi il resto della divisione tra il loro prodotto in x⎡ ⎤⎣ ⎦F e

Page 102: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

96 Capitolo XII

( )( )nh x , è un campo isomorfo a ( ) ( )n

x

h x

⎡ ⎤⎣ ⎦F, in quanto ogni elemento di

( )1n x− ⎡ ⎤⎣ ⎦ individua uno e un solo laterale di ( ) ( )nh x , e viceversa.

Esempio XII.1 Consideriamo l’anello x⎡ ⎤⎣ ⎦B dei po-

linomi sul Campo 2B GF . Il po-

linomio 3 1x x+ + è irriducibile.

Pertanto 3 1

x

x x

⎡ ⎤⎣ ⎦+ +

B è un

campo, di ordine 8 , in quanto 8 so-no i polinomi di grado minore di 3 a coefficienti in B . Osserviamo che tutti i suoi elementi non nulli sono primitivi in quanto il gruppo 8

⊗GF ha 7 elementi, e sette è un primo. In particolare anche l’elemento

3 1x x xα = + + + sarà primi-

tivo. Assumendo come rappresentan-ti di laterale i polinomi di grado infe-riore a 3 otterremo la Tabella XII.1, nella quale abbiamo convenzional-mente indicato l’elemento neutro ri-

spetto alla somma con α−∞ e, nella quarta colonna, abbiamo associato ai rappresentanti di laterale le corrispondenti parole binarie di 3 bit.

Equation Section (Next)

XII.7 Polinomi irriducibili primitivi Consideriamo adesso un campo F e una sua estensione K .

Definizione XII.2 Diciamo che un elemento α ∈ K è algebrico su F se esiste un polinomio ( ) ( )ng x di

x⎡ ⎤⎣ ⎦F che ha α come radice, cioè tale che effettuando le operazioni in K risulti

( ) ( )ng α = o .

α 3 1x x x+ + + 010

2α 2 3 1x x x+ + + 100

3α 31 1x x x+ + + + 011

4α 2 3 1x x x x+ + + + 2α α⊕ 110

5α 2 31 1x x x x+ + + + + 3 2α α⊕ 111

6α 2 31 1x x x+ + + + 4 3α α⊕ 101

7α 31 1x x+ + + 001

α−∞ 0 000Tabella XII.1

Page 103: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Campi Finiti 97

Consideriamo ad esempio il campo dei razionali e la sua estensione (il

campo Reale) l’elemento 2 è algebrico su in quanto il polinomio 2 2x x⎡ ⎤− ∈ ⎣ ⎦

ha 2 tra le sue radici se lo si pensa come un polinomio appartenente a x⎡ ⎤⎣ ⎦ .

Osserviamo che l’insieme x⎡ ⎤⊆ ⎣ ⎦A F contenente i polinomi che hanno α ∈ K tra

le radici è un ideale di x⎡ ⎤⎣ ⎦F . Infatti, comunque scelto un polinomio in A molti-

plicandolo per un qualunque polinomio di x⎡ ⎤⎣ ⎦F si ottiene ancora un polinomio che ha

α tra le sue radici.

L’ideale A deve ammettere quindi un polinomio generatore sia ( )( )ng x .

Osserviamo che esiste sempre un polinomio generatore che ha e come coefficiente del

termine di grado massimo. Un tale polinomio sarà detto monico, da ora in poi quando

parleremo di polinomio generatore sottoinderemo che sia quello monico.

Il polinomio ( )( )ng x è irriducibile in x⎡ ⎤⎣ ⎦F , (non è detto che lo sia in x⎡ ⎤⎣ ⎦K ) in

quanto se così non fosse almeno uno dei fattori in cui potrebbe essere scomposto

ammetterebbe α come radice. Tale fattore apparterrebbe quindi ad A , ed avrebbe grado

inferiore a ( )( )ng x , ( )( )ng x non sarebbe quindi in grado di generarlo e perverremmo ad

un assurdo.

Da quanto sopra segue che esiste un unico polinomio generatore monico di A che

è chiamato polinolinomio minimale di α su F .

Osserviamo che ogni elemento di F è algebrico su F . Inoltre è facile constatare

che se K è finito ogni elemento di K è algebrico sul suo sottocampo primo, in quanto

1npx − − e si annulla in virtù della (XII.5.3) α ⊗∀ ∈ K .

Definizione XII.3 Diciamo che un polinomio irriducibile ( )( )n

ph x x⎡ ⎤∈ ⎣ ⎦GF (p primo) è primitivo se esso

è fattore di 1npx − − e ,ma non di mx − e con 1nm p< − .

Vale il seguente teorema:

Page 104: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

98 Capitolo XII

Teorema XII.3

Se ( ) ( )nh x è un polinomio irriducibile di p x⎡ ⎤⎣ ⎦GF l’elemento

( ) ( ) ( ) ( )n p

n

xx h x

h xα

⎡ ⎤⎣ ⎦= + ∈GF

è primitivo per ( ) ( )p

n

x

h x

⎡ ⎤⎣ ⎦GF se e

solo se ( ) ( )nh x è un polinomio primitivo.

Equation Section (Next)

XII.8 Alcune proprietà dei campi finiti Consideriamo due elementi α e β di np

GF ci convinciamo facilmente che vale

l’uguaglianza:

( ) ( )

( )0

1

1

;

p pp jj p j

jp p

jp j p j p

j

α β α β

α α β β

⎡⎛ ⎞⎤⎟⎜⎢ ⎥⎟⎜ ⎟⎟⎜− ⎢ ⎥⎝ ⎠⎣ ⎦⊕ ⊗

=⎡⎛ ⎞⎤− ⎟⎜⎢ ⎥⎟⎜ ⎟⎟⎜− ⎢ ⎥⎝ ⎠⎣ ⎦⊕ ⊗ ⊕

=

=

=

F

F

(XII.8.1)

Osserviamo adesso che i coefficienti binomiali nella sommatoria a ultimo membro,

essendo p primo, sono tutti multipli di p . Ciò premesso ci basta ricordare la (XII.3.3)

per concludere che tutti gli addendi della sommatoria all’ultimo membro della

precedente sono uguali ad o ne discende che

( ) ;p p pα β α β⊕ ⊕= (XII.8.2)

Osserviamo anche che risulta:

( ) ( ) 2 2p pp p p p pα β α β α β⊕ ⊕ ⊕

⎡ ⎤ = =⎢ ⎥⎣ ⎦

(XII.8.3)

Dalle precedenti sfruttando la proprietà associativa della della somma e tenuto

conto che la (XII.8.3) può essere applicata iterativamente otteniamo l’equazione:

( ) ,i i i ip p p p iα β γ α β γ⊕ ⊕ ⊕ ⊕ ⊕ ⊕ ∈=… … (XII.8.4)

Page 105: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Campi Finiti 99

Un interessante caso particolare si ha quando si eleva ad una potenza p una

combinazione lineare di elementi di npGF pensato come spazio vettoriale sul suo

sottocampo primo:

{ }1 2

0 0

; , ,

i

i

pn np

j j j j jj j

k k i k e eα α⎡ ⎤ ⎡ ⎤⎣ ⎦ ⎣ ⎦

= =

⎛ ⎞⎟⎜ ⎟⎜ = ∈ ∧ ∈⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠∑ ∑ …F F (XII.8.5)

la precedente consente di affermare che per un qualsiasi polinomio ( ) ( )npg x x⎡ ⎤∈ ⎣ ⎦GF

risulta:

( ) ( )( ) ( ) ( ) ( )0 0

;

ii

i i

pn np jn nj p pj j

j j

g x k x k x g x i= =

⎛ ⎞⎟⎜ ⎟⎜= = = ∀ ∈⎟⎜ ⎟⎜ ⎟⎜⎝ ⎠∑ ∑F F (XII.8.6)

dalla quale discende immediatamente che, se il polinomio ammette npα ∈ GF come ra-

dice, esso ammette anche come radice ipα con i ∈ . Tali radici non saranno

ovviamente tutte distinte.

Page 106: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 107: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo XIII

Codici BCH

XIII.1 Codici BCH Supponiamo di voler generare un codice polinomiale con parole di lunghezza n i

cui simboli appartengono ad un campo finito qGF che abbia una distanza minima non

inferiore a d .

Un modo per farlo è quello di scegliere un’estensione di qGF di grado r con un

numero d’elementi non minore di 1n + , sia rqGF . In rq

GF sceglieremo un elemento

primitivo α e costruiremo il polinomio ( ) qg x x⎡ ⎤∈ ⎣ ⎦GF di grado minimo che ha come

radici gli elementi dell’insieme { }2 1, , dα α α −… . Detto polinomio sarà evidentemente il

minimo comune multiplo tra i polinomi minimali associati agli | 0i i dα < < ,

Mostreremo che un polinomio ( )g x così costruito è in grado di generare un codice

con distanza minima non inferiore a d .

A tale scopo osserviamo che l’insieme delle radici di ogni polinomio associato ad

una parola di codice conterrà l’insieme { }2 1, , dα α α −=R … . Affinché un codice abbia

distanza minima pari almeno a d non devono esistere parole di codice, ad eccezione di

quella nulla, che abbiano meno di d simboli diversi da o .

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:

( ) 1 2 1

1 2 1 1 2 1;d

d

n n nn n n dc x c x c x c x n n n−

− −= + + > > >… … (XIII.1.1)

Essendo ( )c x un polinomio di codice l’insieme delle sue radici conterrà l’insieme R

devono quindi essere contemporaneamente soddisfatte le equazioni:

Page 108: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

102 Capitolo XIII

( ) ( ) ( )

1 2 1

1 2 1

1 2 1

1 2 1

1 2 1

1 2 1

2 2 2

1 1 1

d

d

d

d

d

d

n n nn n n

n n nn n n

d n d n d nn n n

c c c

c c c

c c c

α α α

α α α

α α α

− − −

⎧⎪ + + =⎪⎪⎪⎪ + + =⎪⎪⎨⎪⎪⎪⎪⎪ + + =⎪⎪⎩

…………

o

o

o

(XIII.1.2)

Abbiamo così ottenuto un sistema lineare ed omogeneo di 1d − equazioni in 1d −

incognite.

La matrice dei coefficienti del sistema di cui sopra è:

( ) ( ) ( )

1 2 1

1 2 1

1 2 1

2 2 2

1 1 1

d

d

d

n n n

n n n

d n d n d n

α α α

α α α

α α α

−− − −

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥

= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

A

…… … … …

(XIII.1.3)

che si può scrivere come segue:

( ) ( ) ( )

1

1 2 1 2

1 2 1 12 2 2

1 1 1 0 0

0 0

0 0

d

d d

n

n n n n

d n d n d n n

α

α α α α

α α α α

− −− − −

⎡ ⎤⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦

A

… …… …

… … … … … … … …

… …

(XIII.1.4)

osserviamo che la prima matrice a secondo membro è una matrice di Vandermonde il

suo determinante vale pertanto

( )jinn

i j

α α>

−∏ (XIII.1.5)

A è quindi non singolare, poiché, per ipotesi, α è un elemento primitivo di rqGF

quindi il suo ordine è maggiore di 1d − , ne discende che tutti i binomi della produttoria

(XIII.1.5) sono diversi da o , inoltre il determinante della seconda matrice è certamente

diverso da zero in quanto essa è diagonale e gli elementi della diagonale tutti certamente

diversi da o .

Possiamo quindi concludere che il sistema (XIII.1.2) è di Cramer ed essendo anche

omogeneo esso ammette solo la soluzione banale. Non esistono pertanto parole di

codice, ad eccezione di quella con simboli tutti nulli, che abbiano meno di d simboli

diversi da o .

Page 109: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Codici BCH 103

Quanto appena mostrato permette di costruire un’importante classe di codici detti

BCH, dalle iniziali dei loro scopritori: Bose, Chaundhuri, Hocquenghem.

Alla classe dei codici BCH appartengono anche i codici di Hamming che abbiamo

già visto, nonché i codici di Reed Solomon (RS).

Osserviamo anche che il grado del polinomio generatore non è assegnato a priori,

ma dipende dalla scelta dell’elemento primitivo di rqGF . ne segue che anche il numero

di simboli che costituiscono la parola informativa non può essere prefissato. Osserviamo

anche che la distanza minima del codice potrebbe anche essere maggiore di quella di

progetto.

Tipicamente i simboli che costituiscono la parola di codice appartengono ad un

campo 2m

GF , cioè ad un campo con un numero di elementi che sia una potenza di 2 .

In particolare i codici di Reed Solomon che sono certamente i più importanti tra i

codici BCH hanno simboli appartenenti a 2m

GF lunghezza della parola di codice

2 1mn = − lunghezza della parola informativa k qualsiasi, purchè (ovviamente)

minore di n , e distanza minima 1d n k= − + . Un codice di RS che ha trovato

diverse applicazioni pratiche è il (255,239, 17) che presenta una distanza minima di 17

con parole appartenenti a 82GF , cioè costituite da un byte, il che significa che pensato

come codice binario la parola di codice è di 255 * 8 2040= bit e la corrispondente

parola informativa di 1912 . Questo codice è in grado di correggere fino ad 8 byte errati

indipendentemente dal numero di bit errati nel byte.

Page 110: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici
Page 111: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

Equation Chapter (Next) Section 1

Capitolo XIV

La Trasformata di Fourier Discreta

XIV.1 La Trasformata di Fourier Discreta Ricordiamo che la trasformata (DFT) e l’antitrasformata (IDFT) di Fourier

discreta di una sequenza { } 1

0

Ni ic

= a valori nel campo complesso di durata N , o

periodica di periodo N è data da:

2

1 12

0 01 1

0 0

1 1nm

jN

nmN Nj nmN

m n n Nn nN N

nmn m m N

m m

C c e c W

c C e C WN N

π

π− −− −

= =− −

= =

=

=

∑ ∑

∑ ∑ (XIV.1.1)

dove NW rappresenta una radice N -esima dell’unità, in altri termini nelle

(XIV.1.1) compaiono le radici appartenenti al campo complesso del polinomio, a

coefficienti in , 1Nx − . Si noti che il campo complesso è un’estensione del campo

reale.

Volendo generalizzare le (XIV.1.1) ai campi finiti, occorre innanzitutto soffermarsi

sull’esistenza della radice N -esima dell’unità del campo. Ricordando la (XII.5.1)e la

(XII.5.3) concludiamo che se operariamo in npx⎡ ⎤⎣ ⎦GF la lunghezza N della sequenza

deve essere un divisore di 1np − .

Ciò premesso consideriamo una sequenza { } 1

0n

N

i p ic

=∈ GF ed una radice N -

esima dell’unità in npGF , cioè un elemento di ordine N per il gruppo np

⊗GF , sia Nα .

Prendendo spunto dalle (XIV.1.1) possiamo scrivere la coppia di trasformate

Page 112: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

106 Capitolo XIV

1

01

0

Nkm

m k NkN

kmk m N

m

C c

c C

α

χ α

−−

=−

=

=

=

F

F

(XIV.1.2)

Vogliamo verificare se esiste un elemento npχ ∈ GF in corrispondenza al quale

risulti , 0 1k kc c k N= ≤ ≤ − . A tal fine sostituiamo la prima delle (XIV.1.2) nella

seconda:

( )

( )

( )

1 1 1 1

0 0 0 0

1 1 10

0 0 0

1 1 1

0 0 0

N N N Nj k mjm km

k j N N j Nm j j m

N N Nj k m

k N j Nm j m

j k

N N Nj k m

k j Nm j m

j k

c c c

c c

c c

χ α α χ α

χ α α

χ α

− − − −−−⊗ ⊗ ⊗ ⊗ ⊗

= = = =

− − −−

⊗ ⊗ ⊕ ⊗

= = =≠

− − −−

⊗ ⊗ ⊕ ⊗

= = =≠

= = =

⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜= =⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜ ⎟⎜⎝ ⎠⎛ ⎞⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜= ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎟⎜⎜⎝ ⎠

∑ ∑ ∑ ∑

∑ ∑ ∑

∑ ∑ ∑

F F F F

F F F

F F Fe

( ) ( ) ( ) ( )1 1

0

Nj k N j kN N

k j N N kjj k

c c cχ α α χ− −⎡ ⎤ ⎡ ⎤− −⎣ ⎦ ⎣ ⎦⊗ ⊗ ⊗ ⊕ ⊗ ⊕ ⊗ ⊗

=≠

=

⎟⎧ ⎫⎪ ⎪⎪ ⎪⎪ ⎪⎧ ⎫⎪ ⎪⎡ ⎤ ⎡ ⎤⎪ ⎪⎪ ⎪= + − − =⎨ ⎨ ⎬ ⎬⎢ ⎥ ⎢ ⎥⎪ ⎪ ⎪ ⎪⎣ ⎦ ⎣ ⎦⎪ ⎪⎩ ⎭⎪ ⎪⎪ ⎪⎪ ⎪⎩ ⎭

∑Fe e e e

(XIV.1.3)

Affinchè le (XIV.1.2) siano una coppia di trasformate è quindi sufficiente che χ

sia l’inverso di N⎡ ⎤⎣ ⎦e in npGF , in realtà χ è anche l’inverso di N⎡ ⎤⎣ ⎦e in pGF .

Possiamo quindi scrivere la coppia di trasformate:

( )

1

011

0

Nkm

m k Nk

NN km

k m Nm

C c

c C

α

α

−−

=−−⎡ ⎤⎣ ⎦

=

=

=

F

Fe (XIV.1.4)

Page 113: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

La Trasformata di Fourier Discreta 107

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 { } 1

0

Ni ic

=, la cui DFT sia { } 1

0

Nm mC

=, fissato un intero j

consideriamo la sequenza il cui generico elemento N

k k jc c −= , dove Ni j− sta ad

indicare che la differenza va effettuata modulo N . Vogliamo calcolare la DFT di

{ } 1

0

Ni ic

= otteniamo:

( )

1 1

0 01 1

0 0

N

N

N Nkm km

m k N k j Nk kN N

k j mjm jm km jmN k j N N k N N m

k k

C c c

c c C

α α

α α α α α

− −− −

−= =− −

− −− − − −−

= =

= = =

= = =

∑ ∑

∑ ∑ (XIV.1.5)

Dualmente fissato un intero j consideriamo la sequenza { } 1

0

NijN i icα

= la sua DFT

vale:

( )1 1

0 0N

N Ni m jij im

m N i N i N m ji i

C c c Cα α α− −

− −−−

= =

= = =∑ ∑ (XIV.1.6)

Alla sequenza { } 1

0

Ni ic

= possiamo associare il polinomio:

( ) 10 1 1

NNc x c c x c x −⊕ ⊕ ⊕ −= … (XIV.1.7)

lo stesso possiamo fare per la sua DFT { } 1

0

Nm mC

=, ammesso che esista, definendo in

modo analogo un polinomio ( )C x di grado al più 1N − . Osservando le (XIV.1.4) ci

rendiamo conto che risulta

( )

( ) ( )1

mm N

N kk N

C c

c C

α

α

−⎡ ⎤⎣ ⎦

=

= e (XIV.1.8)

Page 114: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

108 Capitolo XIV

Dalle precedenti discende che se jC = o allora ( )c x ha jNα− come radice, o che

è lo stesso, ha il polinomio jNx α−− tra i suoi fattori. Analoghe considerazioni possono

farsi su ( )C x se qualche 0jc = .

Consideriamo una sequenza { } 1

0

Ni ic

= non banale cui corrisponda un ( )c x di grado

non maggiore di 1N k− − . Detto polinomio può avere al più 1N k− − radici che

qualora coincidessero tutte con le iNα , comporterebbero l’annullamento di non più di

1N k− − elementi della { } 1

0

Nm mC

= che conseguentemente avrebbe almeno k

elementi non nulli. Applicando la (XIV.1.5) possiamo facilmente concludere che è in

realtà sufficiente che in una sequenza non banale siano nulli 1N k− − elementi

consecutivi (modulo N ), affinché la sequenza trasformata, o antitrasformata abbia

almeno k elementi non nulli.

Equation Section (Next)

XIV.2 DFT e codici ciclici Le considerazioni fatte dopo la (XIV.1.8) ci permettono di introdurre una

definizione alternativa per i codici ciclici. Possiamo infatti affermare che

Definizione XIV.1 Un codice ciclico ( ),n k è costituito dal sottoinsieme di m

nq

GF la cui DFT si annulla in

1n k− + posizioni prefissate. La (XIV.1.8).

La definizione appena data comporta ovviamente l’esistenza della DFT, deve

esistere cioè un elemento di ordine n per mq

⊗GF , che consenta di calcolarla, ne discende

che n deve essere un sottomultiplo di 1mq − , cioe una radice n -esima dell’unità di

mqGF . 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

1mn q= − . Il fatto che la Definizione XIV.1 sia equivalente alla Definizione XI.1

Page 115: Giovanni Garbo Stefano Mangione Appunti di Teoria dei Codici

La Trasformata di Fourier Discreta 109

risulta evidente tenendo conto della (XIV.1.8) che ci permette di affermare che ogni

polinomio di un codice costruito sulla base della Definizione XIV.1 è multiplo di uno

stesso polinomio che è a sua volta un fattore di 1nx − inteso come polinomio a

coefficienti in mqGF .

Equation Section (Next)

XIV.3 DFT e codici BCH