APPUNTI DI TEORIA DEI CODICI
|
|
|
- Lamberto Mariotti
- 8 anni fa
- Просмотров:
Транскрипт
1 UNIVERSITÀ DI CATANIA FACOLTÀ DI INGEGNERIA APPUNTI DI TEORIA DEI CODICI Autori: L. Cauchi V. La Terra R. Grasso F. Gullo Coperto da diritti di c copyright
2 Ho letto questi appunti scritti da Lucia Cauchi, Rosario Grasso, Valeria La Terra e Francesco Gullo, studenti che hanno seguito il mio corso di Teoria dei Codici negli anni accademici , e Lucia, Rosario e Valeria hanno contribuito alla stesura dei primi sei capitoli, mentre Francesco ha scritto il settimo. Ho deciso di inserirli nella mia pagina web perchè rispecchiano pienamente le mie lezioni e sono sicuro che essi riusciranno ad essere un ulteriore aiuto didattico agli studenti che hanno seguito e seguiranno il corso di Teoria dei Codici. Ringrazio Lucia Cauchi, Rosario Grasso, Valeria La Terra e Francesco Gullo, per la loro disponibilità a condividere liberamente il loro spontaneo lavoro, coperto da diritti di copyright legali e informatici, con tutti i loro colleghi e con il docente. Mi corre l obbligo di ringraziare il Professore Dean Hoffman che mi ha permesso, nel 1997, di seguire presso l Università di Auburn (USA) il suo corso di Coding Theory. Faccio inoltre presente che tali appunti nella parte riguardante la Teoria dei Codici trovano principale fonte bibliografica nel testo Coding Theory and Cryptography scritto da D. Hankerson, D. Hoffman, D.Leonard, C. Lindner, C. Rodger, K. Phelps, J. Wall. Lorenzo Milazzo
3 Indice 1 Cenni di Teoria dell Informazione I primi concetti Schema di codifica Codici univocamente decifrabile e istantanei Codici ottimi Algoritmo di Huffman La funzione entropia Proprietà della funzione entropia I Primi concetti Introduzione Probabilità e distanza Peso ed errore Prime tecniche di codifica Individuazione di errore Correzione di errore Codici lineari Introduzione Prodotto scalare in K n i
4 INDICE 3.3 Matrice generatrice Matrice di parità Algoritmo di generazione di H Coset Sindrome Codici perfetti Cardinalità di un codice C Codici MDS Codici estesi Codici perfetti Codice di Hamming Codice di Golay esteso Codici ciclici Polinomi su K Parole di C e polinomi Codici ciclici Codice ciclico e polinomi di K n Matrice generatrice Sindrome e matrice di parità Campi finiti e codici 2 - BCH Polinomio primitivo Campi finiti di Galois Polinomio minimo Codici di Hamming Codici 2-BCH ii
5 INDICE 6.6 Schema di codifica per codici 2-BCH Codici Reed Solomon Introduzione Codici Reed Solomon Correzione di un codice RS(2 r, δ) iii
6 Capitolo 1 Cenni di Teoria dell Informazione 1.1 I primi concetti Si definisce S 0 sorgente di un codice una coppia S 0 = (S, P ) dove S = {s 1, s 2,, s n } è un insieme finito di eventi che, come vedremo in seguito, si associano alle parole di un codice, e P = {p(s 1 ), p(s 2 ),..., p(s n )} è una distribuzione di probabilità sugli eventi di S, dove p(s i ) = p i, con 0 p i 1 e i p i = 1. Si definisce alfabeto di un codice l insieme finito di caratteri A = {a 1, a 2,, a r }, nel caso in cui il numero di simboli in A è r (cioè A = r) si dice che l alfabeto genera un codice r-ario, in questi appunti (soprattutto dal capitolo 2) saranno per lo più trattati casi in cui alfabeto è costituito da solo due caratteri e in particolare l alfabeto A = {0, 1}, tali codici sono detti binari. Una sequenza di caratteri u = a i1, a i2,..., a in è detta stringa e in essa possono esistere caratteri ripetuti. Il numero di caratteri presenti in una stringa u è detto lunghezza della stringa ed essa è rappresentata dalla simbologia l(u). Indichiamo con A l insieme di tutte le possibili stringhe che si possono formare con i caratteri dell alfabeto (indipendentemente dalla lunghezza). Se una stringa non ha caratteri si dice che essa è la stringa nulla. 1
7 1.2 Schema di codifica Si definisce codice C = {c 1, c 2,, c n } un particolare sottoinsieme finito di A, cioè C A, gli elementi c i di C sono detti parole del codice. È possibile avere codici con parole che hanno lunghezza differente oppure codici le cui parole hanno tutte la stessa lunghezza, in tal caso il codice è detto a blocchi. 1.2 Schema di codifica Se S 0 = (S, P ) è una sorgente di un codice, si definisce schema di codifica per S 0 la coppia ordinata (C, f), dove f : S C è un applicazione iniettiva detta funzione di assegnazione. Tale funzione definisce una corrispondenza uno a uno tra gli elementi di S con le parole del codice C. Si definisce lunghezza media l c di un codice C la quantità: n l c = p i l(f(s i )), (1.1) i=1 dove l(f(s i )) è la lunghezza della parola del codice f(s i ) che corrisponde all evento s i di probabilità p i, tale probabilità assume il valore della probabilità legata alla parola f(s i ). Un codice C 1 si dice più efficiente del codice C 2 se l C1 < l C2. Vediamo adesso di capire quando si usano codici a blocchi o codici a lunghezza variabile e in tal caso cerchiamo di stabilire un criterio di assegnazione che permetta di definire una funzione di assegnazione più conveniente. Esempio 1 Dato l insieme S = {a, b, c, d} con P definita nel seguente modo: p(a) = 2 17, p(b) = 2 17, p(c) = 9 17 e p(d) = Sia C 1 = {0, 11, 10, 100} il codice a lunghezza variabile e l applicazione f 1 : S C 1 così definita: f 1 (a) = 11, f 1 (b) = 0, f 1 (c) = 100 e f 1 (d) = 10. La lunghezza media di tale codice è: 2
8 1.2 Schema di codifica l1 = n 2 p i l(f(s i )) = = (1.2) i=1 Si consideri adesso un secondo codice C 2 = {00, 10, 11, 01010} e l applicazione f 2 : S C 2 così definita: f 2 (a) = 01010, f 2 (b) = 00, f 2 (c) = 10 e f 2 (d) = 11. Analogamente a quanto fatto per C 1 calcoliamo la sua lunghezza media: l2 = n 2 p i l(f(s i )) = = (1.3) i=1 Si vede facilmente che il codice C 2 è più efficiente del codice C 1. L esempio 1 mostra la particolarità che il codice C 2 che contiene la parola più lunga ha una lunghezza media minore, ciò è dovuto al fatto che in tale codice la funzione di assegnazione associa la parola più lunga del codice alla probabilità minore. Dall esempio precedente si evince inoltre che quando si ha una conoscenza più dettagliata del sistema mediante la distribuzione di probabilità P, allora è conveniente usare un codice a lunghezza variabile. L esempio che segue mostra maggiormente quando detto e in modo più generale. Esempio 2 Sia un codice non a blocchi definito dalla sorgente S = {s 1, s 2, s 3, s 4, s 5 } e p(s 1 ) = 1 ɛ e p({s 2, s 3, s 4, s 5 }) = ɛ. Se si utilizza un codice a blocchi binario con due caratteri non si riescono a rappresentare tutti gli eventi di S perchè esso può contenere al massimo 4 parole (2 2 = 4), quindi è necessario utilizzare un codice a blocchi di 3 caratteri che permette di rappresentare fino a 8 parole (2 3 = 8). È evidente che un codice a blocchi di lunghezza tre ha sempre lunghezza media tre e ciò è indipendente dalla distribuzione P. Se invece è utilizzato un codice a lunghezza variabile definito dalla seguente funzione di codifica: f(s 1 ) = 0 e f(s 2 ) = 111, f(s 3 ) = 101, f(s 4 ) = 001, f(s 5 ) = 110 si ha che la lunghezza media di tale codice è: l c = n i=1 p il(f(s i )) = 1 p(s 1 ) + 3 p(s 2 ) + 3 p(s 3 ) + 3 p(s 4 ) + 3 p(s 5 ) = 3
9 1.3 Codici univocamente decifrabile e istantanei 1 p(s 1 ) + 3 (p(s 2 ) + p(s 3 ) + p(s 4 ) + p(s 5 )) essendo ɛ < 1. l c = (1 ɛ) + 3 ɛ = ɛ < 3, (1.4) L esempio 2 mostra chiaramente che quando non si ha una distribuzione P uniforme è più conveniente usare un codice a lunghezza variabile perchè permette di realizzare un codice più efficiente, se invece P definisce una distribuzione uniforme allora in questo caso conviene utilizzare un codice a blocchi e sfruttare la teoria dei codici che verrà presentata nei capitoli seguenti che permette migliori possibilità di individuazione e correzione di errore. 1.3 Codici univocamente decifrabile e istantanei Prima di affrontare le problematiche inerenti alla correzione degli errori che possono accadere in una trasmissione di un codice in questa sessione si affronterà il problema della lettura di una stringa costituita dalle parole di un codice C. Consideriamo ad esempio il codice C = {0, 01, 001}, ci si accorge subito che la stringa 001 letta da sinistra verso destra può essere interpretata in due modi differenti: essa può contenere l unica parola del codice 001 oppure la sequenza delle due parole 0 e 01. L esempio precedente mostra un ambiguità che può essere risolta definendo dei codici particolari che permettono la lettura delle stringhe in maniera unica. È evidente che un codice a blocchi di lunghezza n non presenta tali problematiche in quanto la lettura di ogni singola parola viene effettuata con intervalli di n caratteri. Se un codice C è a lunghezza variabile si dice che esso è univocamente decifrabile se, date le due parole c 1, c 2,..., c k e d 1, d 2,..., d f, allora si ha che c 1, c 2,..., c k = d 1, d 2,..., d f se e solo se k = f e c l = d l per 1 l k. 4
10 1.3 Codici univocamente decifrabile e istantanei Da tale proprietà segue che un codice univocamente decifrabile è un codice che consente una lettura di una sua stringa da sinistra a destra senza generare ambiguità. Esempio 3 Il C = {1, 10, 100} è un codice decifrabile perchè qualunque stringa formata dalle sue parole è sempre leggibile in quanto il carattere 1 individua l inizio di ogni singola parola. Nella seguente stringa u = 1/10/100/1/1/1/1 si è posto il simbolo / per evidenziare meglio l inizio di ogni parola contenuta in essa. Un altra proprietà legata alla lettura delle stringhe di un codice C è quella legata alla necessità di riconoscere le parole del codice appena esse sono state ricevute, se un codice C ha questa proprietà esso è detto codice istantaneo. Esempio 4 Il codice C = {1, 01, 001} è un codice decifrabile e istantaneo, perchè al termine di ogni parola viene posto il carattere 1 che garantisce il termine di ogni singola parola, tale codice viene chiamato comma code. Il codice decifrabile descritto nell esempio 3 invece non ha le caratteristiche di essere istantaneo, infatti se ad esempio si è ricevuta la parola 10, non possiamo dire subito se siamo in presenza della parola 10 o se quello che abbiamo ricevuto è solo una parte della parola 100 ciò si può affermare solo alla ricezione del carattere successivo. Tutti i codici che sono istantanei sono chiaramente decifrabili, ma non è detto che un codice decifrabile sia istantaneo, ciò si deduce dalle considerazioni fatte nell esempio 4. NB: Tutti i codici a blocchi sono decifrabili e istantanei. I codici istantanei godono della proprietà del prefisso. Proprietà 1 (del prefisso) In un codice istantaneo C nessuna parola è prefisso (è posta all inizio) di un altra parola del codice, vale anche il viceversa. 5
11 1.3 Codici univocamente decifrabile e istantanei La dimostrazione della proprietà 1 è immediata ed essa è importante in quanto caratterizza i codici istantanei. Per i codici istantanei si ha il seguente teorema di Kraft. Teorema 1 (di Kraft) Se C è un codice r-ario istantaneo costituito da n parole di lunghezza l i, con 1 i n, allora deve essere verificata la disuguaglianza di Kraft: n 1 r l i i=1 1. (1.5) Se esistono n interi positivi l 1, l 2,..., l n e r che verificano la disuguaglianza di Kraft, allora esiste un codice istantaneo con n parole di lunghezza l 1, l 2,..., l n. Dim. Dimostriamo la prima parte del teorema. Sia C un codice costituito dalle parole {c 1, c 2,..., c n } aventi rispettivamente lunghezza l 1, l 2,..., l n. Sia L = max {l 1, l 2,..., l n }, consideriamo la parola c i di lunghezza l i dove c i = x 1 x 2...x li, costruiamo una stringa di lunghezza L, u i = x 1 x 2...x li y li +1y li +2...y L, dove i primi l i caratteri sono la parola c i mentre gli ultimi L l i caratteri y j con l i + 1 j L sono caratteri scelti tra gli r caratteri dell alfabeto del codice C senza restrizioni e con la possibilità di essere ripetuti. Il numero totale di differenti stringhe di tipo u i è r L l i (ciò perchè i primi l i caratteri in u i rimangono sempre invariati), inoltre si ha che tutte le stringhe u i formate non possono essere parole del codice C in quanto esso è istantaneo e gode della proprietà del prefisso. Ripetiamo tale procedura su ogni singola parola c i del codice per 1 i n, per ognuna di esse si formano r L l i stringhe differenti tutte di lunghezza L. Sommando su i si ottiene: 6
12 1.3 Codici univocamente decifrabile e istantanei n r L l i = i=1 n i=1 r L r l i (1.6) La quantità espressa dalla (1.6) esprime il numero totale di stringhe u i che si ottiene da ogni singola parola del codice c i con 1 i n ed esse sono tutte distinte e di lunghezza L. Il valore r L esprime il numero totale di stringhe differenti di lunghezza L che si possono formare con un alfabeto r-ario, ne segue che valgono le seguenti disuguaglianze. n i=1 r L r l i = r L n i=1 1 r l i r L n i=1 1 r l i 1. (1.7) La (1.7) verifica la disuguaglianza di Kraft e la prima parte del teorema è provata. Dimostriamo la seconda parte del teorema. Determiniamo un algoritmo che permette di determinare un codice istantaneo che abbia n parole rispettivamente di lunghezza l 1, l 2,..., l n. Se α 1 è il numero delle parole del nostro codice istantaneo C di lunghezza 1, allora è necessario che α 1 < r; se α 2 è il numero di parole di lunghezza 2 di C, allora tale valore deve essere minore del numero totale di parole distinte di lunghezza 2 che si possono formare con un alfabeto di r simboli, inoltre poichè C è un codice istantaneo per esso vale la proprietà del prefisso ed è quindi necessario eliminare tutte le parole di lunghezza 2 che hanno come prefisso le parole del codice di lunghezza 1, cioè deve valere la seguente diseguaglianza: α 2 < r 2 α 1 r. Analogamente se α 3 è il numero di parole del codice C con lunghezza 3 allora deve valere la seguente disuguaglianza: α 3 < r 3 α 1 r 2 α 2 r. (1.8) 7
13 1.3 Codici univocamente decifrabile e istantanei Dove il primo termine del secondo membro della (1.8) rappresenta il numero totale di parole distinte di lunghezza 3 che si possono formare con un alfabeto di r simboli a cui bisogna sottrarre le parole di lunghezza 3 che hanno come prefisso le parole del codice di lunghezza 2 (secondo termine del secondo membro nella disuguaglianza (1.8)) e le parole di lunghezza 3 che hanno come prefisso le parole del codice di lunghezza 1 (terzo termine del secondo membro nella disuguaglianza (1.8)). Se m è la massima lunghezza del codice C ( N.B. possono esistere lunghezze uguali cioè l i = l j ) e consideriamo tutti i possibili α i per 1 i m, il codice istantaneo esiste se ognuna delle seguenti disuguaglianze è vera. α 1 < r α 1 r + α 2 < r 2 α 1 r 2 + α 2 r + α 3 < r 3. (1.9). α 1 r m 1 + α 2 r m α m r m Vediamo cosa accade, ad esempio, se la terza disuguaglianza α 1 r 2 + α 2 r + α 3 < r 3 è vera. Tutti i suoi termini sono positivi, quindi si ha che vale anche la seguente disuguaglianza α 1 r 2 + α 2 r < r 3 ; è possibile dividere ambo i membri di quest ultima disuguaglianza per r, si ottiene α 1 r + α 2 < r 2, cioè anche la seconda disuguaglianza delle (1.9) è vera, seguendo un analogo procedimento è facile verificare che anche la prima disuguaglianza delle (1.9) è vera. Sfruttando la metodologia usata nel precedente caso particolare si può affermare che se una delle disuguaglianze della (1.9) è vera allora sono vere tutte le disuguaglianze che la precedono. Osserviamo l ultima disuguaglianza delle (1.9), se dividiamo ambo i membri per r m si ha: 8
14 1.3 Codici univocamente decifrabile e istantanei α 1 r + α 2 r α m r m 1, cioè m i=1 α i r i = n 1 r l i i=1 1. Tale disuguaglianza è la disuguaglianza di Kraft ed è vera per le ipotesi del teorema, quindi sono vere tutte le disuguaglianze che la precedono nella (1.9) e il teorema è provato. È importante notare che la seconda parte della dimostrazione del teorema precedente afferma che se un codice verifica la disuguaglianza di Kraft non è detto che esso sia istantaneo (vedi dall esempio 6), ma afferma che se è verificata la disuguaglianza di Kraft per i parametri l 1, l 2,..., l n e r, allora è possibile costruire un codice istantaneo r-ario con parole di lunghezza l 1, l 2,..., l n mediante l algoritmo presentato dalla dimostrazione del teorema di Kraft. Esempio 5 Consideriamo un codice 3-ario definito dall alfabeto A = {0, 1, 2} si vuole vedere se esiste un codice istantaneo con le seguenti lunghezze di parola: l 1 = l 2 = 1, l 3 = 2, l 4 = l 5 = 4, l 6 = 5. Come prima cosa verifichiamo se vale la disuguaglianza di Kraft: = (1.10) La disuguaglianza è verificata, cerchiamo un codice istantaneo che verifica le lunghezze l 1 = l 2 = 1, l 3 = 2, l 4 = l 5 = 4, l 6 = 5 seguendo l algoritmo definito nella seconda parte della dimostrazione del teorema di Kraft, le parole di lunghezza 1 sono c 1 = 0, c 2 = 1, la 9
15 1.3 Codici univocamente decifrabile e istantanei parola di lunghezza 2 è c 3 = 20, le parole di lunghezza 4 sono c 4 = 2100, c 5 = 2101, la parola di lunghezza 5 è c 6 = Il codice C = {0, 1, 20, 2100, 2101, 21100} è istantaneo perchè verifica la proprietà del prefisso. Esempio 6 Il codice C = {0, 11, 100, 110} verifica la diseguaglianza di Kraft infatti si ha che: = 1, ma tale codice non è istantaneo perchè non verifica la proprietà del prefisso. Un codice istantaneo è anche decifrabile e dal teorema di Kraft è immediato ottenere il seguente teorema. Teorema 2 Se esistono n interi positivi l 1, l 2,..., l n e r che verificano la disuguaglianza di Kraft, allora esiste un codice decifrabile con n parole di lunghezza l 1, l 2,..., l n. Resta da capire se per ogni codice decifrabile vale la disuguaglianza di Kraft, cioè se la prima parte del teorema di Kraft vale anche per i codici decifrabili. La risposta a tale quesito viene data dal seguente teorema di McMillan. Teorema 3 (di McMillan) Se C = {c 1, c 2,..., c n } è un codice decifrabile, allora vale la disuguaglianza di Kraft: n 1 r l i i=1 1. (1.11) Dim. Consideriamo α 1, α 2,..., α m il numero di parole del codice rispettivamente di lunghezza 1, 2,..., m. È facile verificare che il primo membro della disuguaglianza di Kraft può scriversi anche nel seguente modo: 10
16 1.3 Codici univocamente decifrabile e istantanei Eleviamo le due sommatorie ad un valore u, intero positivo: ( n i=1 ) u ( 1 m = r l i j=1 n i=1 α j r j 1 r l i = ) u = m j=1 α j r j. (1.12) ( α1 r + α 2 r α m r m ) u. (1.13) Per maggiore chiarezza l ultimo membro della (1.13) può essere scritto come il prodotto di u sommatorie che rappresentano lo stesso termine: ( α1 r + α 2 r + + α ) ( m α1 2 r m r + α 2 r + + α ) ( m α1 2 r m r + α 2 r + + α ) m. 2 r m (1.14) Lo svolgimento di tale prodotto può essere svolto ed espresso come la somma dei seguenti prodotti α i1α i2 α iu r i 1+i 2 + +i u. (1.15) i 1,i 2,,i u La sommatoria della (1.15) è estesa su tutti gli i 1, i 2,, i u con la limitazione 1 i j m con 1 j u. Posto k = i 1 + i i u la (1.15) può anche essere scritta nel seguente modo u m k=u i 1 +i i u =k α i1 α i2 α iu r k, (1.16) Nella (1.16) il valore minimo che può assumere k è u e il massimo è um e tale valore all interno della seconda sommatoria rimane sempre costante, quindi u m k=u 1 r k Consideriamo adesso la quantità: i 1 +i 2 + +i u=k α i1 α i2 α iu. (1.17) 11
17 1.3 Codici univocamente decifrabile e istantanei N k = α i1 α i2 α iu. (1.18) i 1 +i 2 + +i u=k Le quantità α i1, α i2,..., α iu rappresentano tutte le possibili parole di lunghezza k formate nel seguente modo: i primi i 1 caratteri individuano una parola del codice di lunghezza i 1, i successivi i 2 caratteri individuano una parola del codice di lunghezza i 2 fino ad arrivare agli ultimi i u che a loro volta sono una parola del codice di lunghezza i u. Figura 1.1: Stringhe della stessa lunghezza k, ma con sequenze di parole differenti e di differente lunghezza. Tutte queste stringhe essendo il codice decifrabile, quindi univocamente leggibile, sono tutte distinte tra di loro come si evince dalla (fig1.1), ricordiamo che se si ha un alfabeto r-ario il numero di tutte le possibili parole distinte di lunghezza k è r k, da cui segue che N k = α i1 α i2 α iu r k. (1.19) i 1 +i 2 + +i u=k Quindi la (1.17) può essere scritta nel seguente modo: u m k=u 1 r k In definitiva: i 1 +i i u =k α i1 α i1...α iu u m k=u 1 r k rk = u m k=u 1 = u m u u m. (1.20) 12
18 1.4 Codici ottimi ( n ) u 1 u m (1.21) r l i i=1 Elevando primo e secondo membro per 1 u si ha: n i=1 1 r l i (u) 1 u (m) 1 u (1.22) Per la scelta arbitraria di u si vede facilmente che per u vale la disuguaglianza di Kraft e il teorema è dimostrato. 1.4 Codici ottimi Data una sorgente S 0 consideriamo la famiglia C costituita da tutti i codici istantanei che si possono associare a S 0, chiaramente ad ogni codice di C è associata una sua lunghezza media, consideriamo la lunghezza media minima l min tra tutti i codici istantanei C ist associati a S 0, cioè lmin = min { lcist C ist C }. (1.23) Si definisce codice ottimo C un codice C ist istantaneo che ha lunghezza media l Cist uguale a l min. I codici ottimi godono delle seguenti tre proprietà. Proprietà 2 Se C è un codice ottimo associato alla sorgente S 0 = (S, P ) e c 1, c 2,..., c n sono le sue parole rispettivamente di lunghezza l 1, l 2,..., l n allora si ha che se p i > p j deve essere l i l j ( cioè alla probabilità maggiore si associa la parola di lunghezza minore) 13
19 1.4 Codici ottimi Dim. Supponiamo per assurdo che esiste un codice ottimo C per cui si ha che p i > p j e l i > l j. Costruiamo un codice C ottenuto da C in cui alla parola c i è associata la probabilità p j e alla parola c j è associata la probabilità p i mentre le altre parole c k sono legate alla stessa probabilità p k del codice C. Calcoliamo le lunghezze medie rispettivamente dei codici C e C e consideriamo la loro differenza. l C = l C = n k=1 i j n k=1 i j p k l k + p i l i + p j l j ; (1.24) p k l k + p i l j + p j l i ; (1.25) Dopo facili calcoli si ottiene. l C l C = p i l j + p j l i p i l i p j l j. (1.26) l C l C = p i (l j l i ) p j (l j l i ) = (p i p j ) (l j l i ) (1.27) Ricordando che l i > l j, (l j l i < 0) e p i > p j (p i p j > 0) ne segue che l C l C < 0 cioè l C < l C. Si è quindi determinato un codice C che è istantaneo, ma ha lunghezza media minore della lunghezza media del codice ottimo C e ciò è assurdo. Proprietà 3 Sia C un codice ottimo e sia l m la maggiore lunghezza tra le lunghezze delle parole del codice, allora esistono almeno due parole di lunghezza l m. Dim. Supponiamo per assurdo che esiste un codice ottimo C con una sola parola di lunghezza l m. Calcoliamo la sua lunghezza media m 1 l C = P k l k + P m l m (1.28) k=1 14
20 1.4 Codici ottimi Consideriamo l unica parola c m C di lunghezza l m e consideriamo il codice C ottenuto da C modificando soltanto c m mediante l eliminazione dell ultimo carattere. Il codice C è un codice istantaneo perchè gode della proprietà del prefisso e la sua lunghezza media è: m 1 l C = p k l k + p m (l m 1). (1.29) k=1 È evidente che l C < l C. Si è determinato ancora una volta un codice istantaneo con lunghezza media minore della lunghezza media del codice ottimo C e ciò è assurdo. Proprietà 4 Sia C un codice ottimo e c m una parola di lunghezza massima l m, allora esiste un altra parola c k di eguale lunghezza l m tale che i primi l m 1 caratteri di c m e c k sono uguali. Dim. Per la proprietà precedente in un codice ottimo C esistano almeno due parole di lunghezza massima l m. Supponiamo per assurdo che non esistono due parole di lunghezza l m i cui primi l m 1 caratteri sono uguali. Se consideriamo una di tali parole e cancelliamo il suo ultimo carattere otteniamo un nuovo codice istantaneo C che gode della proprietà del prefisso (nessuna sua parola è prefisso di un altra) e la sua lunghezza media è minore della lunghezza media del codice ottimo C Algoritmo di Huffman In questa sessione è presentato l Algoritmo di Huffman che consente di individuare un codice ottimo data una distribuzione di probabilità P. Tale algoritmo è valido per codici r-ari, ma qui sarà presentata la procedura che riguarda solo i codici binari. 15
21 1.4 Codici ottimi Algoritmo di Huffman 1. Si ordina la distribuzione di probabilità P 0 = {P 0 1, P 0 2,, P 0 n} in modo tale che le probabiltà hanno un ordine decrescente secondo gli indici, cioè P 0 i con i > j. P 0 j 2. Le due probabilità di valore inferiore, cioè P 0 n e P 0 n 1 si sommano, si ottiene il valore P 0 n 1 = P 0 n + P 0 n 1. Si considera la distribuzione di probabilità P 1 = { P 1 1, P 1 2,, P 1 n 1} in cui sono presenti tutte le probabilità di P 0 con esclusione dei valori P 0 n e P 0 n 1 al posto dei quali si è inserito il valore P 0 n 1. La distribuzione di probabilità P 1 è anch essa ordinata in ordine decrescente secondo gli indici e si ha che P 1 i = P 0 n 1 per qualche i con 1 i n Si ripete il passo precedente per altri n 2 passi. In ogni singolo passo j si determina una probabilità P j 1 n j valore minore. data dalla somma delle due probabilità di 4. Si ottiene la distribuzione di probabilità P n 2 costituita da soli due valori. 5. Si associano alle probabilità di P n 2 le parole 1 e 0 (la scelta è arbitraria), quindi alla distribuzione di probabilità P n 2 è associato il codice C n Una delle probabilità di P n 2 è del tipo P n 2 i i = 1, 2 (cioè del tipo P j 1 n j = P n 3 2 = P n P n 3 3 con con j = n 2), se ad essa nel passo precedente è stato associato il carattere k {0, 1}, allora nella distribuzione P n 3 alle probabilità P n 3 2 e P n 3 3 si associano le parole k1 e k0 (la scelta è arbitraria) e per essa si ottiene il codice C n Si ripete il procedimento precedente sino ad arrivare ad una assegnazione di parole alla distribuzione P 0. Tali parole associate alle probabilità di P 0 definiscono un codice ottimo binario C 0 e l algoritmo è concluso. 16
22 1.4 Codici ottimi Per maggiore chiarezza segue l esempio 7 che permette di esplicitare tutti i passi definiti nell algoritmo precedente. Esempio 7 Sia data la distribuzione di probabilità P 0 = {0.35, 0.20, 0.20, 0.15, 0.10}, le due probabilità di valore minore sono 0.10 e 0.15, la loro somma è 0.25, si ottiene nuova distribuzione di probabilità P 1 = {0.35, 0.25, 0.20, 0.20}. Seguendo lo stesso procedimento si sommano 0.20 e 0.20 si ottiene la distribuzione di probabilità P 2 = {0.40, 0.35, 0.25} e in seguito si sommano i valori0.35 e 0.25 si ottiene P 3 = {0.60, 0.40}. Definiamo adesso una codifica binaria seguendo i passi 5, 6 e 7 partendo dalla distribuzione P 3 fino ad arrivare alla distribuzione P 0. I passi dell algoritmo sono ben riassunti dalla tabella seguente * * * Tab.1 Il codice ottimo legato alla distribuzione di probabilità P 0 è C = {01, 11, 10, 001, 000}. È necessario adesso provare che il codice ottenuto dall algoritmo di Huffmann è un codice ottimo, ciò è ottenuto dal teorema seguente. Teorema 4 Se C i è un codice ottimo ottenuto dall algoritmo di Huffman, allora anche C i 1 è un codice ottimo. L algoritmo di Huffmann genera un codice ottimo. 17
23 1.4 Codici ottimi Dim. All ultima distribuzione di probabilità che si ottiene eseguendo l algoritmo di Huffman è associato il codice C n 2 = {0, 1} che è senz altro ottimo, quindi se in generale si prova che l algoritmo di Huffmann genera dal codice C i ottimo il codice C i 1 anch esso ottimo, allora si è provato il teorema. Consideriamo il codice ottimo C i = { c 1, c 2,..., cm 1}, sia L = l(cm 1 ). Applichiamo l algoritmo di Huffman al codice C i si ottiene il codice C i 1 = {c 1, c 2,..., c m 1 0, c m 1 1} e calcoliamo le lunghezze medie dei codici C i e C i 1 : li = m 2 k=1 p k l k + (p m 1 + p m ) L; (1.30) li 1 = m 2 k=1 p k l k + p m 1 (L + 1) + p m (L + 1). (1.31) Ricordiamo che nel codice C i 1 le ultime due parole hanno lunghezza L + 1. Sottraendo membro a membro la (1.30) dalla (1.31) si ha: li 1 l i = p m 1 + p m l i 1 = l i + p m 1 + p m. (1.32) Supponiamo per assurdo che C i 1 non sia un codice ottimo e quindi esiste un codice ottimo C i 1, associato alla distribuzione di probabilità di C i 1, tale che l i 1 < l i 1. Se C i 1 è ottimo, per le proprietà 2, 3 e 4, esisteranno due parole di lunghezza massima ed aventi i primi l m 1 caratteri uguali e associate alle probabilità p m e p m 1, cioè C i 1 = { c 1, c 2,..., c m 10, c m 11 }. Applicando l algoritmo di Huffman in senso opposto si determina un nuovo codice C i = { } c 1, c 2,..., c m 1. Anche per i due codici C i e C i 1 vale la relazione: l i 1 = l i + p m 1 + p m. (1.33) 18
24 1.5 La funzione entropia Poichè si è supposto che C i 1 è ottimo mentre per assurdo C i 1 non lo è allora deve valere la seguente disuguaglianza: l i 1 < l i 1 (1.34) Se ciò è vero confrontando le equazioni (1.32) e (1.33) si ha che vale la seguente disuguaglianza. l i < l i (1.35) Ciò implica che C i non è ottimo, questo è assurdo e il teorema è provato. 1.5 La funzione entropia Nell esempio 1 si è vista l importanza della conoscenza della distribuzione delle probabilità, da qui nasce l esigenza di determinare una funzione che permetta di misurare la conoscenza del sistema mediante la conoscenza della sua distribuzione di probabilità. Tale funzione H è la funzione entropia che è differente dalla grandezza fisica usata in termodinamica. Essa nasce dagli studi relativi alla conoscenza di informazioni di un sistema fatti da Shannon nel Consideriamo la variabile random X a cui associamo gli eventi X = {x 1, x 2,..., x q }. A ciascuno degli eventi x i è possibile associare una distribuzione di probabilità P = {p 1, p 2,..., p q }. La funzione entropia deve soddisfare le seguenti tre proprietà: 1. Se tutte le probabilità di P sono uguali cioè p i = 1 q allora H è una funzione crescente, cioè se q < q allora si ha: H ( 1 q, 1 q,..., 1 ) ( 1 < H q q, 1 q,..., 1 ) q 19
25 1.5 La funzione entropia. Nella realtà questa proprietà esprime che maggiore è il numero di eventi q maggiore è l incertezza legata agli eventi. 2. H è una funzione continua cioè a piccole variazioni di probabilità corrispondono piccole variazioni di H. 3. Vale il principio che un esperimento può essere scomposto in una successione di esperimenti successivi. Esempio 7 Diamo per quest ultima proprietà un esempio di un esperimento che è rappresentato graficamente nella seguente figura. Esso ha una distribuzione di probabilità P = { 1 2, 1 3, 1 6 } e può essere scomposto nella successione dei due esperimenti di probabilità P = { 1 2, 1 2 } e P = { 2 3, 1 3 }. Tale scomposizione può essere rappresentata mediante la funzione entropia nel seguente modo: H ( 1 2, 1 3, 1 ) ( 1 = H 6 2, 1 ) + 1 ( H 3, 1 ). 3 20
26 1.5 La funzione entropia Teorema 5 La sola funzione che verifica le tre proprietà 1, 2 e 3 è: H(p 1, p 2,, p q ) = c con c costante positiva. q p i log b p i (b > 1) (1.36) i=1 Dim. Poniamo H ( 1 q,, 1 ) = f(q). (1.37) q Supponiamo di avere s m eventi legati ad una determinata variabile random. Poichè deve valere la terza proprietà, s m può essere scomposto in m sequenze di s eventi, cioè: f(s m ) = mf(s). (1.38) Fissati t e n interi positivi è sempre possibile determinare un m tale che: 2 m t n < 2 m+1. (1.39) Passando ai logaritmi in base b e sfruttando le loro proprietà si ha: log b 2 m log b t n < log b 2 m+1, (1.40) m log b 2 n log b t < (m + 1) log b 2. (1.41) Dividendo per n log b 2 m n log b t }{{} log b {}}{ < m + 1 n. (1.42) 21
27 1.5 La funzione entropia Poichè f(q), per le proprietà 1 e 2, è una funzione continua e crescente si ha che applicandola alle disuguaglianze della (1.39) esse continuano a sussistere, cioè: dividendo per nf(2): f(2 m ) f(t n ) < f(2 m+1 ), (1.43) m n f(t) }{{} f(2) 1 2 {}}{ < m + 1 n Moltiplicando la 1 disuguaglianza della (1.44) per 1 si ottiene:. (1.44) f(t) f(2) m n. (1.45) Sommando la (1.45) con la 2 disuguaglianza della (1.42) si ha: log b t log b 2 f(t) f(2) < 1 n. (1.46) Allo stesso modo, moltiplicando la 2 disuguaglianza della (1.44) per 1 si ottiene: f(t) f(2) > m n 1 n. (1.47) Sommando la (1.47) con la 1 disuguaglianza della (1.42) si ha: log b t log b 2 f(t) f(2) > 1 n, (1.48) da cui si ricava: 1 n < log b t log b 2 f(t) f(2) < 1 n log b t log b 2 f(t) f(2) < 1 n (1.49) e per n si ha: lim log b t n log b 2 f(t) f(2) = 0 log b t log b 2 = f(t) f(2) f(t) = f(2) log b t log b 2 = c log b t. (1.50) Consideriamo adesso una distribuzione di probabilità con probabilità razionali: p i = k i j k j con k i intero i e i k i j k j = 1 (1.51) 22
28 1.5 La funzione entropia Scomponiamo l esperimento in una successione di due eventi mediante le distribuzioni di probabilità rappresentate nella figura seguente. È possibile allora scrivere: H ( 1 ki, 1 ki,, 1 ki ) = H (p 1, p 2,..., p m ) + p 1 c log b k 1 + p 2 c log b k p m c log b k m = H (p 1, p 2,..., p m ) + c p i log b k i. Dopo semplici calcoli si ha: H (p 1, p 2,..., p m ) = H ( 1 i k, i 1 i k,..., i c log b i k i c i p i log b k i = c log b j k j i c i p i log b k j c j i p i log b k i = c i ) 1 i k c i p i log b k i = i k i j k j p i log b La condizione necessaria del teorema è provata. k i i k j c i = c i p i log b k i = p i log p i. Il viceversa se H b (p 1, p 2,, p m ) = c m i=1 p i log b p i allora si ha che le proprietà sono tutte verificate e il teorema è provato. Dal teorema precedente si ha che per un sistema che ha una distribuzione di probabilità P = {p 1, p 2,, p m } la funzione entropia è definita come la quantità: m H b (p 1, p 2,, p m ) = p i log b p i. i=1 23
29 1.5 La funzione entropia Dove la costante c è stata normalizzata a 1. Se il valore di b in H è 2 allora l entropia prende il nome di entropia binaria Proprietà della funzione entropia Siano X e Y due variabili random e sia p(x i, y j ) la probabilità congiunta delle due variabili, allora l entropia congiunta a X e Y è definita come: H(X, Y ) = i,j p(x i, y j ) log 1 p(x i, y j ). (1.52) Enunciamo il seguente lemma omettendo la dimostrazione. Lemma 1 Sia {p 1, p 2,, p m } una distribuzione di probabilità e sia {q 1, q 2,..., q m } una sequenza di numeri reali con 0 q i 1 e q i 1, allora si ha che: pi log 1 p i p i log 1 q i (1.53) Consideriamo adesso una sequenza di teoremi che permettono di evidenziare alcune proprietà della funzione entropia. Teorema 6 Se X è una variabile aleatoria si ha che: 0 H(X) log q (1.54) Dim. Chiaramente H(X) 0. Per definizione di entropia si può scrivere: da cui: H(X) = q p i log 1 p i i=1 q i=1 p i log 1 1 q = q p i log q (1.55) i=1 H(X) log q (1.56) 24
30 1.5 La funzione entropia Teorema 7 Siano X e Y due variabili random, allora si ha: H(X, Y ) H(X) + H(Y ) (1.57) Dim. Se consideriamo la distribuzione di probabilità congiunta ad X e Y e sommo solo secondo l indice legato a una variabile random (cioè si varia i lasciando fissato j e viceversa) si ha: quindi: H(X) + H(Y ) = 1 p(x i ) log p(x i i ) + p(y j ) log j = i,j p(x 1 i, y j ) log p(x i ) + 1 p(x i, y j ) log p(y i,j j ) = = i,j p(x 1 i, y j ) log p(x i )p(y j ) p(x i, y j ) log i,j p(x i, y j ) = p(x i ), (1.58) j p(x i, y j ) = p(y j ). (1.59) i 1 p(y j ) = 1 p(x i, y j ) = H(X, Y ). Il teorema è provato. Siano X e Y due variabili random e p(y j x i ) la distribuzione di probabilità dell evento Y condizionato dall evento X, definiamo l entropia condizionata nel seguente modo: H(X Y ) = i,j 1 p(y j )p(x i y j ) log p(x i y j ) = j p(y j )H(X y j ) (1.60) Teorema 8 Se X e Y sono due variabili random, allora: H(X Y ) = H(X, Y ) H(Y ). (1.61) 25
31 1.5 La funzione entropia Dim. Dalla precedente definizione abbiamo: H(X Y ) = i,j p(y j )p(x i y j ) log 1 p(x i y j ). (1.62) Ricordando che: p(x i y j ) = p(x i, y j ) p(y j ). (1.63) possiamo scrivere: H(X Y ) = p(x i, y j ) log p(y j) p(x i,j i, y j ) = 1 p(x i, y j ) log p(x i,j i, y j ) 1 p(x i, y j ) log p(y i,j j ) = H(X, Y ) 1 p(y j ) log = H(X, Y ) H(Y ). p(y j j ) Il teorema è provato. Consideriamo l insieme dei possibili segnali che si presentano in ingresso ad un ricevitore E = {a 1,..., a m }, supponiamo di avere associata ad esso una distribuzione di probabilità p(a i ) con 1 i m. Possiamo allora scrivere l entropia in ingresso come: H(E) = i p(a i ) log p(a i ) = i p(a i ) log 1 p(a i ) (1.64) Siano U = {u 1,..., u m } l insieme dei segnali prodotti dalla sorgente in trasmissione, possiamo definire informazione la quantità: I(E, U) = H(E) H(E U). (1.65) Da essa è possibile definire capacità del canale come la quantità C = max E I(E, U). (1.66) Essa è legata alla determinazione di una distribuzione di probabilità E tale che rende massima I(E, U). 26
32 Capitolo 2 I Primi concetti 2.1 Introduzione In questo capitolo vengono presentati i primi concetti legati alla teoria dei codici. Le prime domande che si pongono sono legate alle motivazioni dell origine della teoria dei codici e alla sua utilità. Quando un sistema trasmissivo invia delle informazioni ad un sistema ricevente, possiamo pensare ad una comunicazione telefonica o trasmissioni via etere o anche trasmissioni che provengono dall esterno del nostro pianeta inviate da sonde, astronavi o shuttle, nella realtà fisica del nostro universo può accadere che tali trasmissioni vengano distorte e il segnale trasmesso ne risulti alterato nella sua ricezione. Il sistema su cui vengono inviate le informazioni viene chiamato canale. Esso può essere individuato dal mezzo trasmissivo su cui vengono inviate informazioni in una normale comunicazione telefonica o un in invio dati tra due sistemi informatici collegati, il canale può anche essere costituito dallo spazio in cui si propagano onde elettromagnetiche che trasportano informazioni. In ogni canale esiste sempre la presenza di rumore che compromette la trasmissione. Tale rumore si può legare a 27
33 2.1 Introduzione interferenze elettromagnetiche (disturbi radio, attività solare, ecc.), competizioni di trasmissione, fattori di disturbo random, e tanti altri fattori, ognuno legato al tipo di trasmissione che si sta effettuando. Un altro tipo di applicazione della teoria dei codici si ha quando si leggono informazioni su un supporto, in questo caso il rumore può essere legato alla non perfetta condizione del supporto (ad esmpio sporcizia, presenza di graffi in CD o DVD o invecchiamento del supporto) o a difficoltà del sistema di lettura. Per motivazioni legate al sistema hardware l informazione viaggia in sequenza di informazioni binarie e quindi essa viaggia mediante codici binari. In questi appunti a partire da questo capitolo saranno trattati codici a blocchi. La motivazione per cui nella maggior parte dei casi si usano codici a blocchi sta nel fatto che l esperienza fisica e quindi la rigorosa osservazione sperimentale, associa ai sistemi trasmissivi una distribuzione di probabilià costante. In particolare come detto precedentemente l alfabeto usato è del tipo A = {0, 1} e ogni suo carattere è chiamato bit. Ad ogni singolo bit, come rappresentato nella figura 2.1, può essere associata una probabilità p che esprime la probabilità che esso venga ricevuto correttamente, chiaramente la probabilità che un bit non sia trasmesso correttamente è 1 p. La probabilità p è chiaramente legata al sistema trasmissivo ed essa prende il nome di efficienza del canale, negli attuali sistemi trasmissivi essa supera il valore 0.97 cioè può assumere valori molto alti, ma è evidente che in un numero di bits molto alto la probabilità che l informazione venga inficiata da errore non è trascurabile. Un codice C 1, con efficienza p 1, si dice più efficiente del codice C 2, di efficienza p 2, se si ha che p 1 > p 2. Varie sono state nel tempo le tecniche di controllo e/o correzione di errore, alcune delle quali molto semplici come, ad esempio, l aggiunta di un bit ad ogni parola di un codice in modo tale che tutte le sue parole contengano un numero pari di bits 28
34 2.1 Introduzione 0 P 0 P - 1 P P 1 Figura 2.1: Efficienza di canale di valore 1. Il codice C = {111, 011, 001, 100, 110, 010} con l aggiunta del bit di parità diventa C = {1111, 0110, 0011, 1001, 1100, 0101}, si vede facilmente che se si riceve la parola 0010 avendo un numero di bits di valore 1 dispari non è una parola del codice. Un altra tecnica di controllo e correzione di errore, detta di ridondanza, è quella di trasmettere più volte la stessa parola e, in ricezione, di controllare se anche la sequenza di ricezione ha sempre la stessa ripetizione, se ciò non avviene allora si effettua la correzione scegliendo nella sequenza la parola del codice che è stata ripetuta più volte. Questa tecnica contrariamente alla precedente oltre ad individuare l errore permette anche di correggerlo, inoltre maggiore è il numero di ripetizioni di una stessa parola in una sequenza, maggiore è la probabilità che la correzione sia esatta. Esiste però un importante inconveniente in tale tecnica, essa infatti non permette un numero elevato di ripetizioni dato che maggiore è il loro numero, minore è la velocità di trasmissione di informazione. 29
35 2.2 Probabilità e distanza 2.2 Probabilità e distanza Il problema della correzione delle parole del codice è essenzialmente legato al concetto di probabilità. La probabilità che la parola v, avente lunghezza n e appartenente al codice a blocchi C di efficienza p, sia trasmessa correttamente è p n. Supponiamo adesso di trasmettere la parola v C, ma di ricevere la parola w / C, come risolvere il problema della correzione di w? È necessario definire una funzione che determini la probabilità che la parola v C sia trasmessa e la parola w / C sia ricevuta. In generale tale funzione può essere definita, indipendentemente dal concetto di parola inviata e ricevuta, nel seguente modo: φ : K n K n [0, 1], dove K n esprime l insieme di tutte le possibili parole di lunghezza n i cui caratteri appartengono all insieme K = {0, 1}, K rappresenta quindi l alfabeto del codice. Se Φ (v, w) è la probabilità che la parola v C è stata inviata e w ricevuta, allora si ha: Φ (v, w) = p n d (1 p) d, (2.1) dove d è il numero di bits differenti tra le parole v e w, n è la lunghezza delle parole del codice C, n d rappresenta il numero di bits trasmessi correttamente, d i bits trasmessi in maniera errata e 1 p è la probabilità che un singolo bit giunga in maniera errata. La quantità d è chiamata distanza tra le parole v e w e si indica con la simbologia d (v, w). Chiaramente non è difficile provare che tra due parole di lunghezza n vale la seguente uguaglianza d (v, w) = d (w, v). 30
36 2.2 Probabilità e distanza Esempio 1 Sia C un codice a blocchi di lunghezza 5. Per ogni parola v C la probabilità che v sia ricevuta correttamente (cioè w = v) è: Φ(v, v) = p 5 Se invece la parola inviata è v = e quella ricevuta è w = 11001, allora la distanza tra v e w è 2 e si ha che: Φ(v, w) = p 3 (1 p) 2 Individuiamo adesso una tecnica che permette di determinare la correzione di un errore in ricezione. Supponiamo di aver ricevuto la parola w e che essa non appartiene al codice C. Tale tecnica di correzione di errore è basata sull individuazione della parola v C tale che ad essa è associata la probabilità massima rispetto alla parola ricevuta w mediante la funzione Φ cioè: Φ (v, w) max = max {Φ (v, w) : v C}. (2.2) Quindi se si riceve una parola w non appartenente al codice a blocchi C si individua la parola del codice v tale che la funzione Φ è massima al variare di v in C, fissata w. Tale parola v si sostituisce a w. È possibile che in tale tecnica si abbia un insieme di parole del codice che hanno tutte la stessa probabilità massima, in tal caso si genera un ambiguità, in seguito vedremo come affrontare tale evenienza. Consideriamo adesso un risultato che permette di associare il concetto di probabilità definito dalla funzione Φ al concetto di distanza tra due parole. 31
37 2.2 Probabilità e distanza Teorema 9 Sia C un codice a blocchi di lunghezza n, con 1 2 < p < 1 e siano v 1 e v 2 due parole del codice C. Se d 1 è la distanza tra v 1 e la parola ricevuta w e d 2 è la distanza tra v 2 e w, allora si ha che: se e solo se d 1 > d 2, vale anche il viceversa. Φ(v 1, w) < Φ(v 2, w) (2.3) Dim. La disuguaglianza Φ(v 1, w) < Φ(v 2, w) vale se e solo se: p n d 1 (1 p) d 1 < p n d 2 (1 p) d 2 ; p n d 1 (1 p) d 1 p n d 2 (1 p) d 2 < 1; p n d 1 n+d 2 (1 p) d 1 d 2 < 1; p d 2 d 1 (1 p) (d 2 d 1 ) < 1; ( ) d2 d p 1 < 1. (2.4) 1 p Poichè per le ipotesi 1 2 < p < 1 si ha che p > 1 p ovvero: p 1 p > 1, 32
38 2.2 Probabilità e distanza allora la (2.4) è vera se e solo se l esponente è negativo cioè se: d 2 d 1 < 0 d 2 < d 1, (2.5) e il teorema è provato. Il teorema precedente assume una rilevanza fondamentale in quanto permette di abbandonare il concetto di probabilità e di sostituirlo con il concetto di distanza tra due parole. La tecnica di correzione di errore esposta precedentemente adesso cambia nel seguente modo: se si riceve una parola w non appartenente al codice C si individua la parola v C che ha distanza minima da w e si sostituisce a w, ciò equivale al fatto che la funzione Φ(v, w), fissata w, assume valore massimo per v C. L esempio seguente chiarisce meglio tale tecnica. Esempio 2 Sia il codice C = {01101, 01001, 10100, 10101} e supponiamo di ricevere la parola w = non appartenente al codice C. Esaminiamo la tabella seguente. C w distanza c c c c Tab.1 La parola del codice che ha distanza minima da w è c 3 = 10100, tale parola è quella che corregge w ed è quella che tra tutte le parole del codice C ha la massima probabilità di essere stata inviata in trasmissione. 33
39 2.3 Peso ed errore 2.3 Peso ed errore Si è precedentemente detto che l alfabeto dei codici a blocchi è K = {0, 1}, ma tale insieme di caratteri è anche un insieme numerico e su di esso possono essere definite due operazioni algebriche binarie, una di somma e l altra di prodotto definite dalla tabella seguente. Somma Prodotto = = = = = = = = 1 Tab.2 Le due operazioni di somma e prodotto danno all insieme K le proprietà di campo. L insieme K n, come precedentemente detto, è l insieme di tutte le possibili differenti parole binarie di lunghezza n, tale insieme è finito ed ha cardinalità uguale a 2 n, perchè ogni singola componente di una parola di K n può assumere valori 0 o 1. L insieme K n può anche assumere la struttura di spazio vettoriale se si interpretano le sue parole come vettori e su di esse si definiscono le operazioni di somma vettoriale e di prodotto esterno tra gli elementi di K e K n mediante i concetti di spazio vettoriale introdotti nei corsi base di algebra lineare. La somma tra le componenti corrispondenti di due parole è data dall operazione di somma definita su K. Un esempio di somma tra le due parole (101) e (111) è: (101) + (111) = (010). È importante notare che la somma di due parole uguali è uguale alla parola che possiede in tutte le sue componenti bits di valore 0, tale parola è detta nulla e si 34
40 2.3 Peso ed errore indica con il simbolo 0, cioè v K n si ha che v + v = 0. Tale proprietà permette di capire che la parola opposta di una qualunque parola v K n è la parola stessa. Si ha inoltre che vale la seguente proprietà. Proprietà 5 Se v + w = 0, allora si ha che v = w. Si è preferito evidenziare tale proprietà perchè molto spesso chi comincia a studiare questi argomenti commette l errore di scrivere v = w, ciò è sbagliato!!! Infatti se vale l eguaglianza v + w = 0, allora vale anche v + w + w = w che è equivalente a v + 0 = w ed infine si ha v = w. Diamo adesso l importante nozione di errore per un codice C a blocchi. Supponiamo che è stata inviata la parola v C e si sia ricevuta la differente parola w, allora si definisce errore tra v e w la parola u così definita: u = v + w. (2.6) Il concetto di errore legato alle parole v e w può per certi versi sembrare strano, infatti nella sua definizione si capisce facilmente che per determinare u non solo è necessaria la parola w conosciuta in ricezione, ma anche la parola trasmessa. Questo non deve sorprendere se si pensa che, come vedremo nel capitolo 3 e nei successivi, la teoria dei codici in correzione di errore ha come obiettivo principale quello di individuare, mediante tecniche matematiche, la parola u indipendentemente dalla conoscenza di v. Se si riesce in tale obiettivo, dopo aver verificato che w / C, per determinare v basta sommare le parole w + u e si ottiene la parola inviata. Se v K n, allora si definisce peso di v il numero di bits che hanno valore 1 in v. Tale valore si esprime secondo la simbologia wt(v). Ad esempio il peso della parola v = K 6 è uguale a tre, cioè wt (011001) = 3. 35
41 2.3 Peso ed errore Esiste una relazione tra il peso e la distanza dell errore. Infatti date due parole distinte v e w, la loro distanza d(v, w) rappresenta il numero di bits tra loro differenti. La somma u = v + w individua la parola u, diversa dalla parola nulla, che ha la caratteristica di possedere bits di valore 1 nelle componenti in cui v e w sono tra loro differenti, ciò comporta che la parola u ha peso uguale alla distanza tra v e w cioè: d(v, w) = wt(u). (2.7) Se d è la distanza tra le parole v e w, allora l equazione (2.1) si può anche scrivere nel seguente modo: Φ (v, w) = p n d (1 p) d = p n wt(u) (1 p) wt(u). (2.8) Esempio 3 Siano v = e w = parole di K 6, si ha che u = v + w = allora segue che: d(v, w) = wt(v + w) = 2. Di seguito sono enunciate una serie di proprietà legate ai concetti di distanza e di peso. Proprietà 6 Date due parole v e w di K n allora valgono le seguenti quattro proprietà. 1. d(v, u) + d(u, w) d(v, w); 2. wt(v + w) wt(v) + wt(w); 36
42 2.4 Prime tecniche di codifica 3. wt(av) = a wt(v) con a K; 4. d(av, aw) = a d(v, w) con a K. La prima disuguaglianza delle precedenti è la disuguaglianza triangolare. Diamo adesso un altra importante definizione. Si definisce distanza o distanza di Hamming di un codice binario C l intero d c così definito: d c = min {d(v, v ), v, v C} = min {wt(v + v ), v, v C}. (2.9) Tale parametro, se non vi è alcuna ambiguità legata al codice C, si denoterà con la semplice simbologia d. La distanza d è uno dei tre parametri che, in seguito, caratterizza un codice a blocchi. 2.4 Prime tecniche di codifica La tecnica di decodifica che è presentata in questa sessione è basata sulla ricerca tra tutte parole del codice C della parola che, in termini di distanza, è la più vicina alla parola che è stata ricevuta e che non appartiene al codice. Tale tecnica prende il nome di MLD dall inglese Maximum Likelihood Decoding cioè massima probabiltà di decodifica. Il seguente esempio mostra in maniera pratica l utilizzo di tale tecnica su un codice estremamente banale, ma utile a scopi didattici. 37
43 2.4 Prime tecniche di codifica Esempio 4 Sia il codice di lunghezza 3, C = {000, 111}. Consideriamo tutte le differenti parole di K 3, esse sono 2 3 e K 3 = {000, 001, 010, 011, 100, 101, 110, 111}. Parola ri- Errore Errore Decodifica cevuta w w Tab.3 La prima colonna della tabella precedente rappresenta tutte le possibili parole di lunghezza tre che possono essere ricevute, cioè w, la seconda e terza colonna rappresentano la somma della singola parola del codice C e la parola w cioè tali colonne rappresentano gli errori 000+ w e w. L ultima colonna individua la parola di C che correggerà w. Supponiamo che la parola 001 è ricevuta, nella terza riga della tabella si considerano gli errori 001 e 110, tra essi si determina la parola del codice che sommata a 001 ha errore di peso minore, cioè 000 corrispondente all errore 001. Nella tabella gli errori di peso minore su ogni riga vengono evidenziati mediante asterisco. Nell esempio 4 è importante notare che che la scelta della parola di peso minore è dovuta al fatto che d(v, w) = wt(v+w) e a quanto affermato dal teorema 9, date due 38
44 2.4 Prime tecniche di codifica parole del codice C v 1 e v 2 se si ha che d(v 1, w) = wt(v 1 +w) < d(v 2, w) = wt(v 2 +w) allora la parola v 1 ha maggiori probabilità di essere stata inviata rispetto alla parola v 2. Il codice dell esempio 4, come già detto, è estremamente semplice ed inoltre per ogni parola ricevuta non possiede alcuna ambiguità, cioè su ogni parola ricevuta w è sempre possibile fare una correzione. In codici più complessi può accadere che per una parola ricevuta si determina un insieme di errori dello stesso peso in tal caso la tecnica MLD si scinde in due strategie di correzione. CMLD (complete MLD): Ricevuta w / C, se vi sono più parole del codice con lo stesso errore minimo, allora tra tali parole se ne sceglie una arbitrariamente o mediante tecniche ponderate. IMLD(incomplete MLD): Ricevuta w / C, se vi sono più parole del codice con lo stesso errore minimo, allora si richiede la ritrasmissione del messaggio. La ritrasmissione del messaggio può essere anche chiesta quando si riceve una parola w troppo distante da tutte le parole del codice, il troppo è legato al tipo di strategia che si vuole adottare in correzione. 39
45 2.4 Prime tecniche di codifica Esempio 4 Parola ri- Errore Errore Errore Decodifica cevuta w w w Tab.4 La tabella 4 è legata al codice di lunghezza 4 C = {0000, 1010, 0111} e mostra che nelle righe 2 a, 4 a, 6 a e 8 a la tecnica IMLD chiede sempre la ritrasmissione. 40
46 2.5 Individuazione di errore 2.5 Individuazione di errore Un codice C individua un errore u se e solo se v + u / C v C. Esempio 5 Consideriamo il seguente codice C = {001, 101, 110}, vediamo se esso individua l errore u = 010. Per far ciò sommiamo tale errore ad ogni parola del codice e verifichiamo che tale parola non appartiene a C = 011 / C = 111 / C = 100 / C Il codice C individua l errore u = 010. Consideriamo adesso l errore u = = 101 C = 001 C = 010 / C Il codice C quindi individua l errore u ma non individua l errore u. Il risultato seguente individua un insieme di errori che possono essere individuati da un codice C. Teorema 10 Sia C codice a blocchi di lunghezza n e distanza d, allora C individua tutti gli errori diversi dalla parola nulla e con peso minore o uguale a d 1. Esiste almeno un errore di peso d che non può essere individuato da C. 41
47 2.6 Correzione di errore Dim. Consideriamo un errore u 0 il cui peso è wt(u) d 1 con d 1, v C si ha che: d(v, v + u) = wt(v + v + u) = wt(u) d 1 (2.10) Poichè C ha distanza d segue che prese due generiche parole v C e v C allora d(v, v ) d, quindi se v C e vale la (2.10) allora si ha che v + u / C. Vista l arbitrarietà della scelta di v la prima parte del teorema è provata. Se d è la distanza del codice allora esistono almeno due parole c C e c C tale che d(c, c ) = d. Sia u = c + c è evidente che wt(u) = d e c = u + c C. Si è trovato un errore u con peso d che non viene individuato da C e il teorema è provato. Se d è la distanza di un codice C, allora C si dirà d - 1 error-detecting. Esempio 6 Il codice C = {000, 111} ha distanza d = 3 ed è 2-error-detecting. Esempio 7 Il codice C = {001, 101, 110} ha distanza d = 1. Poichè d 1 = 0 non troveremo errori. 2.6 Correzione di errore In questa sessione è caratterizzato un particolare errore legato al codice C che oltre ad essere individuato permette una correzione della parola ricevuta. Si dice che un codice C corregge un errore u se e solo se, comunque si fissi w C e w v, vale la disuguaglianza: d(w, v + u) > d(v, v + u) (2.11) 42
48 2.6 Correzione di errore Esempio 8 Sia dato il codice C = {000, 111} e l errore u = 010. Supponiamo che la parola inviata sia v = 000. In questo caso u + v = (010) + (000) = 010, pertanto: d(000, u + v) = d(000, 010) = wt(010) = 1 d(111, u + v) = d(111, 010) = wt(101) = 2. Consideriamo adesso che la parola inviata è v = 111, in questo caso u+v = (010)+(111) = 101, pertanto: d(000, u + v) = d(000, 101) = wt(101) = 2 d(111, u + v) = d(111, 101) = wt(010) = 1. In entrambi i casi, se si effettuano le tecniche di codifica usate nella sessione 2.4 si vede che C corregge u = 010 in modo efficace sia nell ipotesi che sia inviata la parola 000 che la parola 111 ed inoltre verifica la (2.11). Consideriamo adesso l errore u = 110. Per v = 000 si ha: d(000, u + v) = d(000, 110) = wt(110) = 2 d(111, v + u) = d(111, 110) = wt(001) = 1. In questo caso C non corregge l errore u = 110 perchè la parola che ha distanza minore non è quella inviata. Dato x R, indichiamo con x il massimo intero minore o uguale a x. Ad esempio: 5 = 2; 3 = 3; 2 1 = 0. 2 Anche per questo tipo di errori cerchiamo di individuare gli errori che sono corretti da un codice C. 43
49 2.6 Correzione di errore Teorema 11 Sia C un codice di lunghezza n e distanza d. Allora esso corregge tutti d 1 gli errori di peso minore o uguale a. Esiste almeno un errore di peso pari 2 d 1 a 1 + che C non corregge. 2 Dim. d 1 Sia u un errore con peso wt(u) e due arbitrarie parole v e w in C con 2 v w, supposto di trasmettere v. Si vuole dimostrare che: Per la disuguaglianza triangolare si ha che: d(v, v + u) < d(w, v + u). (2.12) Per le ipotesi si ha anche che: d(w, v + u) + d(v + u, v) d(w, v) d. (2.13) quindi, d(v + u, v) = wt(v + u + v) = wt(u) d 1 2, (2.14) d 2wt(u) + 1. (2.15) Dalla (2.13) si ha: d(w, v + u) + wt(v + u + v) d(w, v) d 2wt(u) + 1 (2.16) d(w, v + u) + wt(u) 2wt(u) + 1 (2.17) d(w, v + u) wt(u) + 1 = d(v + u, v) + 1 (2.18) Dalla scelta arbitraria di v e w si ha che: 44
50 2.6 Correzione di errore La prima parte del teorema è provata. d(w, v + u) > d(v, v + u). (2.19) Poichè la distanza di C è d allora esistono almeno due parole v e w appartenenti a C tali che: d(v, w) = d (2.20) (d 1) Consideriamo la parola v + w ed in essa cambiamo un numero d 1 2 bits di valore 1 in 0 ; chiamiamo u la parola che si ottiene dopo aver cambiato tali bits. Il peso di tale parola sarà: d { d 1 Consideriamo adesso d(v, v + u) e d(w, v + u): } d 1 d 1 = d 1 d(v, v + u) = wt(u) = (2.21) { } d 1 d(w, v + u) = wt(w + v + u) = d(v + w, u) = d (2.22) Se la distanza d è dispari, allora si può scrivere come d = 2t + 1 e si ha che: e Pertanto: in contraddizione con la (2.19). d(v, v + u) = 1 + 2t 2 = 1 + t (2.23) d(w, v + u) = 2t + 1 (1 + t) = t (2.24) d(v, v + u) > d(w, v + u) (2.25) 45
51 2.6 Correzione di errore e Se la distanza d è pari essa può scriversi come d = 2t. In tal caso: Pertanto: 2t 1 d(v, v + u) = 1 + = t 1 = 1 + t 1 = t (2.26) 2 d(w, v + u) = 2t t = t (2.27) d(v, v + u) = d(w, v + u) (2.28) anch essa in contraddizione con la (2.19), quindi il codice C non corregge l errore u e il teorema è completamente provato. d 1 Se d è la distanza di un codice C, allora C si dirà -correttore, ad esempio 2 un codice di distanza sette è un codice 3-correttore. 46
52 Capitolo 3 Codici lineari 3.1 Introduzione In questa sessione è presentato un tipo di codice che permette l applicazione di molti concetti incontrati nei corsi base di algebra lineare. Un codice binario a blocchi C si definisce lineare se la somma di due parole v e w, appartenenti a C è ancora una parola di C, cioè: v, w C v + w C. Se K n è un insieme di parole di lunghezza n che ha le proprietà di spazio vettoriale sul campo K = {0, 1} mediante le operazioni di somma e prodotto definite nel capitolo precedente, allora un codice lineare C può intendersi come un sottospazio di K n, infatti la sua definizione implica la chiusura delle operazioni di somma e prodotto esterno in C. In un codice lineare molti parametri definiti nel capitolo precedente possono essere calcolati mediante degli algoritmi più semplici rispetto a quelli che si basano sulle definizioni. Nel teorema seguente si vede come è possibile calcolare la distanza di un 47
53 3.1 Introduzione codice senza effettuare il confronto diretto tra tutte le distinte coppie delle parole del codice. Teorema 12 La distanza di un codice lineare C è la più piccola distanza tra tutte le parole del codice, di peso maggiore di zero, e la parola nulla. Dim. Consideriamo la quantità t = min {d(0, c), c C}. Supponiamo per assurdo che la distanza del codice d < t, allora esistono almeno due parole v e v appartenenti a C per cui si ha: d(v, v ) = d. Consideriamo la parola c = v + v, essa apparterrà a C ed inoltre wt(c) = d > 0, quindi: Ciò vuol dire che: wt(c) = d(0, c) = d. d {d(0, c), c C} d t. Si è determinato un assurdo in quanto t è il minimo di tale insieme e contemporaneamente si ha che d < t. Esempio 1 C = {000, 111, 011, 100}, le distanze tra tutte le parole di C con peso maggiore di zero dalla parola 000 sono d(111, 000) = 3, d(011, 000) = 2, d(100, 000) = 1 quindi la distanza del codice è d = 1. 48
54 3.2 Prodotto scalare in K n 3.2 Prodotto scalare in K n In K n è possibile introdurre il prodotto scalare canonico definito nei corsi di algebra lineare. Se v e w sono due parole di K n, si intende come loro prodotto scalare la somma dei prodotti delle componenti corrispondenti, ad esempio se v = (111) e w = (010) si ha che v w = (111) (010) = = 1. Se il prodotto scalare di due parole è zero allora le due parole si dicono ortogonali, ad esempio se v = (111) e w = (101) allora v w = = 0 e tali parole sono ortogonali. Si definisce C (C ortogonale) l insieme delle parole: C = {v K n : v w = 0 w C}, cioè l insieme delle parole di K n che sono ortogonali ad ogni parola di C. Tale insieme è anch esso un codice lineare, infatti se c e c sono due arbitrarie parole di C e v è una generica parola di C, allora si ha che essa è ortogonale alla parola somma c + c, cioè: (c + c ) v = c v + c v = 0, ciò vuol dire che prese due parole arbitrarie di C allora la loro somma appartiene a C e C-ortogonale è un codice lineare. Un insieme di parole di C, B = {c 1, c 2,, c k }, è un insieme di generatori di C se per qualunque v C è possibile scrivere: È evidente che se l equazione vettoriale v = a 1 c 1 + a 2 c a k c k. a 1 c 1 + a 2 c a k c k = 0, 49
55 3.3 Matrice generatrice è vera se e solo se a i = 0, per 1 i k, allora gli elementi di B sono detti linearmente indipendenti ed essi formano una base di C. Il valore k, cioè il numero di elementi in B è detto essere la dimensione di C. Essa insieme ai parametri n (lunghezza), d (distanza) caratterizza un codice C. In algebra lineare vale il seguente risultato, che in questi appunti è soltanto enunciato. Teorema 13 Sia C un codice lineare di lunghezza n e dimensione k, allora si ha: dimc + dimc = n (3.1) Maggiori approfondimenti degli argomenti trattati in questa sessione possono facilmente essere trovati in qualunque testo di algebra lineare. 3.3 Matrice generatrice Sia C un codice lineare e B = {c 1, c 2,..., c k } un insieme di sue parole che costituiscono una sua base. Costruiamo la matrice G, posizionando per riga tutti gli elementi di B. G = c 1 c 2.. c k. (3.2) 50
56 3.3 Matrice generatrice La matrice (3.2) è detta matrice generatrice, essa si può ottenere anche da una matrice le cui righe sono costituite da parole del codice che formano un insieme di generatori di C mediante operazioni elementari. La riduzione di matrici mediante sequenza di operazioni elementari si rimanda ai corsi algebra lineare, qui invece sono presentate due particolari riduzioni che conducono alla matrice generatrice di un codice lineare. Sia A una matrice (k n) su K, un elemento 1 di A si dice 1-leading se esso è un elemento speciale (tutti gli elementi al di sotto sono 0 ) e nella riga in cui si trova tutti gli elementi alla sua sinistra assumono valore 0. Una colonna della matrice A si definisce colonna leading se essa contiene un 1-leading e tutti gli altri suoi elementi sono 0. Esempio 2 Nella matrice A i caratteri 1 sottosegnati sono degli 1-leading, in particolare, nella seconda riga l 1-leading non ha nessun zero a sinistra in quanto primo elemento della riga, ma rientra nella sua definizione perchè appartiene all ultima riga di A. La matrice B contiene due colonne leading corrispondenti ai caratteri 1 sottosegnati. A = ; B = Una matrice A è ridotta parzialmente (REF) se tutte le sue righe nulle sono poste al fondo di A e ogni riga non nulla ha un 1-leading che ha alla sua destra tutti gli 1-leadings delle righe sottostanti. Se una matrice non è ridotta parzialmente, allora essa può essere ridotta mediante le operazioni elementari: 1. R i R j ; 51
57 3.3 Matrice generatrice 2. R i R i + R j. Esempio 3 La matrice A è una matrice ridotta parzialmente. A = Esempio 4 La matrice B non è una matrice ridotta parzialmente, consideriamo le sue righe come generatori di un codice lineare C di lunghezza n = 4. B = Riduciamo B mediante una sequenza di operazioni elementari. {R 2 R 2 + R 1 R 3 R 3 + R 1 }. B =
58 3.3 Matrice generatrice {R 2 R 3 } ; B = La matrice B è ridotta parzialmente e le sue tre righe non nulle in cui compaiono gli 1- leading sono linearmente indipendenti quindi si è ottenuta una matrice generatrice del codice C le cui righe formano una base di C. Una matrice A si dice ridotta totalmente(rref) se essa è ridotta parzialmente e ogni suo 1-leading si trova in una leading colonna. Esempio 5 La precedente matrice B può essere ridotta totalmente mediante la seguente operazione elementare. {R 1 R 1 + R 3 } ; B = B è una matrice ridotta totalmente ed essa è anche una matrice generatrice. 53
59 3.4 Matrice di parità Se un codice C ha dimensione k, allora si ha che la sua cardinalità è C = 2 k. La cardinalità di C è quindi pari al numero totale delle differenti parole di lunghezza k. Ciò è dovuto al fatto che se una base di C è B = {c 1, c 2,, c k }, allora ogni parola c di C si può esprimere mediante un unica combinazione lineare degli elementi di B, cioè, v = a 1 c 1 + a 2 c a k c k ; (3.3) ci sono al più 2 k distinte possibili combinazioni lineari del tipo (3.3). Sia G una matrice generatrice di un codice C di lunghezza n e dimensione k, allora essa sarà una matrice k n. Una generica parola v di C si può ottenere dal seguente prodotto riga per colonna: v = u G = (a 1, a 2,, a k ) c 1 c 2. c k ; dove u = (a 1, a 2,, a k ) è una parola su K di lunghezza k (dimensione di C). La parola v di C adesso può essere individuata mediante la parola di lunghezza k (a 1, a 2,, a k ) G rispetto alla matrice G. 3.4 Matrice di parità Se C è un codice lineare, come precedentemente detto, anche il suo codice duale C è un codice lineare. In questa sessione si determina la matrice generatrice del codice duale di un codice lineare C, in particolare si chiama matrice di parità la trasposta della matrice generatrice del codice duale. 54
60 3.4 Matrice di parità Algoritmo di generazione di H La matrice di parità è indicata con il simbolo H ed essa è individuata dal codice lineare C, di parametri (n, k, d), mediante il seguente algoritmo. Algoritmo 1. Sia S è un insieme di generatori del codice C e A la matrice ottenuta ponendo per riga tutti gli elementi di S. 2. Si riduce totalmente la matrice A, si ottiene la matrice: A = G 0, dove G è una matrice generatrice di C, k n e 0 le righe nulle ottenute dopo la riduzione totale di A. 3. Sia X la matrice k (n k) ottenuta dalla matrice G eliminando tutte le colonne in cui sono presenti dei 1-leading. 4. Si costruisce la matrice H (n (n k)) nel modo seguente: Nelle righe di H corrispondenti alle colonne 1-leading di G, si posizionano, in sequenza, le righe di X. Le righe posizionate sono k. Nelle rimanenti n k righe di H si posizionano in sequenza le righe della matrice identità I (n k). 5. Fine. Teorema 14 La matrice di parità determinata dall algoritmo precedente è la trasposta della matrice generatrice del codice duale corrispondente al codice lineare C di parametri (n, k, d). 55
61 3.4 Matrice di parità Dim. La matrice H è una matrice (n (n k)). Per provare il teorema basta mostrare che il prodotto riga per colonna tra le matrici G e H è uguale ad una matrice nulla del tipo (k (n k)). Senza ledere la generalità della dimostrazione a meno di una permutazione delle colonne di G e delle righe di H si ha che è possibile scrivere G = [I k, X] e H = X. Il prodotto riga per colonna delle due matrici è: I (n k) [ G H = I k X ] X I n k = X + X = 0; (3.4) ciò prova il teorema e la correttezza dell algoritmo, inoltre si ha che: H T = G C. Esempio 6 Sia un codice C generato dalle parole S = {11101, 10110, 01011, 11010}, determiniamo per C la matrice generatrice e la matrice di parità. Riduciamo totalmente la matrice: A V I = ; {R 2 R 2 + R 1 R 4 R 4 + R 1 } ; 56
62 3.4 Matrice di parità A V = ; {R 3 R 3 + R 2 } ; A IV = ; {R 3 R 4 } ; A III = ; {R 1 R 1 + R 2 } ; 57
63 3.4 Matrice di parità A II = ; {R 1 R 1 + R 3 } ; A I = La matrice A I è totalmente ridotta e da essa si ricava la matrice G in cui sono presenti 3 colonne leading e quindi C ha dimensione k = 3. G = Da G eliminando le 3 leading colonne si ottiene la matrice X. 58
64 3.4 Matrice di parità X = Consideriamo adesso la matrice identità I n k = I 2, posizioniamo le righe di X nelle righe corrispondenti alle posizioni delle 1-leading colonne di G cioè nella 1 a, 2 a e 3 a riga e nelle rimanenti 4 e 5 riga poniamo le righe di I 2. Si ottiene la matrice la matrice di parità H. H = Per ottenere la matrice generatrice del codice duale basta fare la trasposta di H, ovvero: H T = [ = X T I n k ]. 59
65 3.4 Matrice di parità Esempio 7 Consideriamo un codice di lunghezza 8 generato dall insieme di parole S = {( ), ( ), ( ), ( )} Determiniamo la matrice generatrice G e la matrice di parità H. Riduciamo totalmente la matrice: A V I = ; {R 2 R 1 + R 2 R 3 R 3 + R 1 R 4 R 4 + R 1 } ; A V = ; {R 2 R 4 } ; A IV = ; 60
66 3.4 Matrice di parità {R 1 R 1 + R 2 } ; A III = ; {R 1 R 1 + R 3 } ; A II = ; {R 1 R 1 + R 4 } ; A I =
67 3.4 Matrice di parità La matrice A I è totalmente ridotta. Da essa si determina la matrice G. G = Costruiamo la matrice X eliminando le 4 colonne leading. La dimensione di C è k = 4. X = Consideriamo la matrice identità I n k = I 4 e aggiungiamo i suoi elementi nella righe corrispondenti alle colonne di G non eliminate. 62
68 3.4 Matrice di parità H = La matrice generatrice del codice duale di C è H T le cui n k = 4 righe formano una base per C. Nella dimostrazione del teorema 14 tramite una permutazione delle colonne si trasforma la matrice generatrice ridotta totalmente in una matrice del tipo G = [I, X]. Ci si pone la domanda se per un qualunque codice C, di parametri (n, k, d), è sempre possibile determinare una matrice del tipo G senza effettuare permutazioni delle sue colonne. Esistono codici che non possono avere matrici generatrici poste nella forma assunta dalla matrice G, tale affermazione è giustificata dall esempio seguente. Esempio 8 Sia il codice lineare C avente base B = {001, 100}. Tutte le sue possibili matrici generatrici sono: G = ; G = ; G = ; G = ; 63
69 3.4 Matrice di parità G IV = Nessuna di tale matrice ha la forma G = [I, X]. Se un codice C, di dimensione k, possiede una matrice generatrice che assume la forma [ ] G = X allora esso si chamerà sistematico e una sua qualunque parola v si può I k esprimere nel modo seguente: [ v = u I X ] [ = u ux ]. (3.5) I primi k bits di v, (cioè u), sono chiamati bits di ricezione, gli ultimi n k bits (cioè (ux)) bits di parità o di controllo. I codici che non sono sistematici possono essere riconducibili a codici sistematici mediante una o più permutazioni delle colonne di una delle matrici G. Ad esempio: G = G = Il codice sistematico ottenuto è detto equivalente al codice che lo ha generato in quanto esso mantiene la stessa dimensione, distanza e lunghezza. 64
70 3.4 Matrice di parità La matrice di parità di un codice lineare C permette di controllare se una parola w ricevuta è una parola del codice utilizzato, infatti se w C essa non può appartenere a C. Teorema 15 Condizione necessaria e sufficiente affinchè w C è che w H = 0. Dim. Se c 1, c 2,, c n k sono parole che individuano una base di C e t c i è la parola trasposta di c i, per 1 i n k, allora la matrice H si può scrivere nel seguente modo: [ H = t c 1, t c 2,, t c n k ]. Se w C poichè w c i = 0 per qualunque c i con 1 i n k, allora si ha: w H = 0, e il teorema è provato. Un altro importante risultato che lega la distanza con le righe della matrice di parità è dato dal seguente teorema. Teorema 16 Sia C un codice lineare e H la sua matrice di parità. Allora C ha distanza d se e solo se, comunque si considerino d 1 righe di H, esse sono linearmente indipendenti ed esistono almeno d righe di H linearmente dipendenti. Dim. Sia d la distanza del codice lineare C, ciò vuol dire che esiste una parola v C tale che wt(v) = d. Inoltre si ha v H = 0 si ha quindi che le d righe di H corrispondenti alle 65
71 3.5 Coset posizioni delle componenti di v in cui sono presenti bits di valore 1 sono linearmente dipendenti. Consideriamo adesso un arbitraria parola w con wt(w) d 1 (con peso minore di d) allora si ha che w H 0 perchè w / C, ne segue quindi che comunque si scelgono d 1 righe di H esse saranno sempre linearmente indipendenti e il teorema è provato. Il viceversa è banalmente dimostrabile. 3.5 Coset In questa sessione è presentato un sottoinsieme di K n che si lega al concetto presente in algebra di laterale o coset (termine inglese). Il laterale nella seguente trattazione è presentato come strumento di teoria dei codici. Se C K n è un codice lineare di lunghezza n e u una qualunque parola di K n che può anche non appartenere a C, allora si definisce coset di C, determinato da u, l insieme: C + u = {v + u K n v C}. Tale insieme contiene lo stesso numero di parole del codice cioè 2 k, in particolare se u è una parola di C chiaramente si ha che C + u = C, in caso contrario esso sarà diverso da C, ma non sarà un sottospazio di K n in quanto è evidente che non contiene la parola nulla. Esempio 9 Sia il codice C = (000, 111) K 3 e u = 101, l insieme coset sarà C + u = {101, 010} Se consideriamo u = 111: C + u = {111, 000}. Si nota che per u C si ha: C+u = C. Sia u = 010 si ha che C+u = {010, 101} = C+u, da ciò segue che ad ogni parola di K 3 non sempre corrispondono cosets differenti. 66
72 3.5 Coset Il seguente teorema mostrerà le principali proprietà dei cosets legati ad un codice lineare C. Teorema 17 Sia C un codice lineare di parametri (n, k, d) e siano u e v due parole di K n, allora valgono le seguenti otto proprietà: 1. Se u è nel coset C + v, allora C + u = C + v. 2. La parola u C + u. 3. Se u + v C allora u e v appartengono allo stesso coset. 4. Se u + v / C, allora u e v appartengono a coset differenti. 5. Ogni parola di K n è contenuta in uno ed un solo coset. 6. Tutti i coset hanno la stessa cardinalità: C + u = C. Da ciò la cardinalità di un coset è 2 k. 7. Se C ha dimensione k ci sono esattamente 2 n k coset diversi di C, e ogni coset contiene esattamente 2 k parole. 8. C è un coset. Dim. Dimostriamo in sequenza le proprietà del teorema. 1. Se u C + v deve esistere una w C tale che u = w + v. Sia t C + v, allora esiste un t C tale che t = t + v ed inoltre t = t + w + u. Poichè il codice è lineare si ha che t + w C, segue che t C + u. Data l arbitrarietà di t si ha che qualunque parola di C + u essa appartiene anche a C + v e si ha che C + v C + u. Sia p una generica parola appartenente a C +u, allora esiste un p tale che p = p +u, con p C, inoltre p = p + w + v, ma p + w C, essendo p e w parole del codice, ne segue che p C + v e C + u C + v, deve quindi essere C + u = C + v. 67
73 3.5 Coset 2. La dimostrazione è immediata perchè la parola nulla appartiene a C. 3. Se u + v C allora esiste una w C tale che w = u + v, ma poichè u = w + v, allora si ha che u C + v e per la prima proprietà del teorema si ha che C + u = C + v. 4. Supponiamo per assurdo che u e v appartengono allo stesso coset C+w, ciò comporta che esiste una parola t C tale che u = t + w e esiste una parola t C tale che v = t + w, sommando si ha u + v = t + t + w + w = t + t, ma C è lineare, quindi t + t C e conseguentemente u + v C il che è assurdo. 5. Supponiamo per assurdo che esiste una parola w che appartiene a due cosets C + u e C + v con C + u C + v. Ciò comporta che w C + u e per la prima proprietà w C + u = C + w, ma anche w C + v = C + w da ciò C + u = C + v il che è assurdo. Tale proprietà mostra che cosets distinti sono disgiunti. 6. La dimostrazione è immediata. 7. Le parole totali di K n sono 2 n mentre le parole di C sono 2 k. Da ciò il numero di coset sarà 2n 2 k = 2n k. 8. La dimostrazione è immediata. Esempio 10 Sia dato un codice C = {0000, 1011, 0101, 1110}. Una sua matrice generatrice è G = Il codice C è individuato dai parametri (4, 2, 2), quindi il numero di coset è 2 n k = 4 e sono: 68
74 3.5 Coset C = Per determinare il secondo coset consideriamo la parola u 1 = 1000 in K 4 non appartenente a C e aggiungiamo tale parola ogni parola di C. u 1 + C = C = Consideriamo adesso un altra parola, u 2 = 0100, non appartenente a C o a C +u 1. Il terzo coset sarà: u 2 + C = C = Ripetendo lo stesso procedimento con la parola u 3 = 0010, il quarto coset sarà: 69
75 3.5 Coset u 3 + C = C = Dei quattro coset, l unico che rappresenta un codice lineare è chiaramente il primo, essendo C stesso. Adesso sfruttando le proprietà dei cosets cerchiamo di individuare una tecnica utile alla correzione di errori. Consideriamo un codice lineare C e assumiamo che v sia la parola inviata e w la parola ricevuta, l errore associato è u = v + w, tale equazione è equivalente a u + w = v C. Per la proprietà 3 del teorema 17 si ha che l errore u e la parola ricevuta w appartengono a uno stesso coset di C. Poichè gli errori di minor peso sono quelli che hanno maggiore probabilità di verificarsi, vediamo adesso come la tecnica MLD può essere utilizzata per un codice lineare C di cui conosciamo i suoi coset. Ricevuta la parola w, se w H = 0 allora la parola ricevuta appartiene al codice. Se w H 0 allora ad essa è legato un errore che appartiene allo stesso coset cui appartiene w. Tra tutte le parole appartenente al coset C + w si sceglie la parola u di peso minore, cioè la più probabile, tale parola prende il nome di coset leader. Sommando u a w si ottiene la parola v = w + u, essa è la parola che ha la maggiore probabilità di essere stata inviata. Esempio 11 I coset leaders corrispondenti ad ogni singolo coset dell esempio 10 sono: 70
76 3.6 Sindrome 1. il coset leader di C è 0000; 2. il coset leader di C + u 1 è 1000; 3. il coset leader di C + u 2 è 0100; 4. il coset leader di C + u 3 è Se w = 1101 è la parola ricevuta si verifica facilmente che w C + u 1 = C e tale coset ha coset leader la parola (1000). La correzione della parola w è v = w + u = = Può accadere che in un coset vi sono più parole con uguale peso minimo, in tal caso si può adoperare la tecnica CMLD in cui si effettua una scelta tra le parole di peso minore e si definisce un coset leader o la tecnica IMLD dove se w appartiene a un coset dove vi sono più di una parola di minore peso allora si richiede la ritrasmissione. È importante sottolineare che per la prima volta si è riusciti a determinare l errore u soltanto tramite la conoscenza della parola trasmessa w e tramite esso si può effettuare la correzione. Il procedimento di correzione appena descritto, nel caso in cui il numero degli elementi di un codice C è elevato, può comportare notevoli problemi di immagazzinamento dati. 3.6 Sindrome Proprio per ovviare ai problemi di immagazzinamento dati legati alla tecnica di correzione di errore precedentemente illustrata in questa sessione viene introdotto il concetto di sindrome di una parola di K n. Sia w K n, si definisce sindrome di w la parola s = w H di K n k. 71
77 3.6 Sindrome Esempio 12 Consideriamo il codice presentato nell esempio 10 e sia la parola w = La matrice H di C è: H = La sindrome di w è: s = w H = = 11. Quindi essendo s = w H 0 per il teorema 15 si ha che w / C e w C Consideriamo una qualunque parola w del coset C+1000 è facile notare che la sua sindrome sarà sempre la stessa cioè: s = w H = w =
78 3.6 Sindrome Il teorema seguente spiega i risultati ottenuti nell ultima parte dell esempio 12. Teorema 18 Sia C un codice lineare di parametri (n, k, d). Siano u e w due parole di K n e H la sua matrice di parità, allora valgono le seguenti proprietà: 1. w H = 0 se e solo se w C. 2. u H = w H se e solo se w e u appartengono allo stesso coset. 3. Se u è l errore di una parola ricevuta w allora u H è la somma delle righe di H che corrispondono alla posizione dei bits alterati in trasmissione. Dim. 1. La proprieta è vera per il teorema Dalla relazione: w H = u H, si ha: w H + u H = 0, e quindi: (w + u) H = 0 w + u C, quindi w e u appartengono allo stesso coset. 3. Se u = w + v è l errore legato a w allora è evidente che u H individua le righe di H in cui è avvenuto un cambiamento di carattere nei bits corrispondenti della parola inviata. 73
79 3.6 Sindrome Dato che parole dello stesso coset hanno la stessa sindrome, mentre parole di coset differenti hanno sindromi differenti, allora è possibile identificare un coset con la sua sindrome corrispondente e a tale sindrome si può associare il coset leader corrispondente. Tale corrispondenza tra sindrome e coset leader permette di individuare una tabella, detta SDA ( Standard Decoding Array). Se C è un codice lineare di lunghezza n e dimensione k, allora 2 n k parole di lunghezza n k saranno ognuna la sindrome di ogni singolo coset. Nell esempio seguente vedremo una tabella SDA in cui il coset leader di ogni singolo coset viene posto come prima componente di ogni singola riga, mentre la sindrome corrispondente è posta come seconda componente della riga. Nel caso in cui più parole hanno stesso minor peso all interno di un coset, allora, in tale esempio, è utilizzata la tecnica CMLD. Esempio 13 Coset leaders Sindrome u H Riferendoci all esempio 10 in cui abbiamo calcolato i coset del codice: C = {0000, 1011, 0101, 1110} si è costruita la tabella SDA. Se w = 0101 allora w H = 00 che è la sindrome di Da ciò v = w +u = = Se w = 1100 allora w H = 10 che è la sindrome di Da ciò v = w + u = =
80 Capitolo 4 Codici perfetti 4.1 Cardinalità di un codice C In questa sessione sono presentate le relazioni esistenti tra i parametri che caratterizzano un codice C, cioè lunghezza, distanza e dimensione, e il numero di parole presenti nel codice. Inoltre sono presentati particolari codici che in seguito assumeranno notevole importanza. Facciamo prima alcune considerazioni legate alla distanza tra parole differenti di K n e la distanza d di un codice C. Sia v una parola di K n, consideriamo il numero di differenti t-uple (t < n) di bits distinte prese all interno di v. Tramite il calcolo combinatorio si ha che tale numero di t-uple è uguale a: n t = n! t!(n t)! n(n 1) (n t + 1) =. (4.1) t! Ci si pone la seguente domanda: qual è il numero di parole di K n che hanno distanza 1 da v? 75
81 4.1 Cardinalità di un codice C Il problema si può anche porre nel seguente modo: determinare il numero di parole di K n che differiscono da v soltanto per un bit. Chiaramente il numero di tali parole è n = n 1. In generale determinare il numero di parole di K n che hanno distanza t, con t < n, da v è equivalente a determinare il numero di tutte le possibili t-uple distinte di bits presenti in v, infatti se si individuano arbitrariamente in v t bits e si cambiano i valori di tali bits da 0 a 1 o da 1 a 0, si ottiene una nuova parola che ha distanza t da v. Il numero di parole che hanno distanza t da v è esattamente n t. Esempio 1 Sia v = una parola di K 9. Il numero di parole che hanno distanza 1 in K 9 da v è 9 = 9; Il numero di parole che hanno distanza 2 in K 9 da v è 9 = = 36; Il numero di parole che hanno distanza 3 in K 9 da v è 9 = = 84. Da quanto detto precedentemente e ricordando che n 0 = 1 si ha il seguente teorema. Teorema 19 Se 0 t n e v è una parola di lunghezza n, appartenente ad un codice C, allora il numero di parole di lunghezza n e distanza al più t da v è: N = n 0 + n 1 + n n t. (4.2) 76
82 4.1 Cardinalità di un codice C Il precedente teorema permette di determinare per ogni parola v di un codice C, avente distanza d e lunghezza n, una sfera in K n di centro v e raggio t tale che al suo interno si trovano esattamente N parole. Qui è usato il termine sfera per facilitare la comprensione del lettore, ma se consideriamo le parole di K n come punti di uno spazio a n dimensioni il concetto di sfera è molto più complesso e rientra nel campo della geometria finita che esula da un corso di teoria dei codici. Nel seguente teorema è mostrato che se la distanza di C è d = 2t + 1, allora le sfere che hanno come centro le parole del codice e raggio t sono tutte disgiunte. Teorema 20 Sia C un codice avente distanza d = 2t + 1 e lunghezza n, siano v e w due distinte parole di C, allora non esiste alcuna parola c K n tale che d(v, c) t e d(w, c) t. Dim. Supponiamo per assurdo che esista una c K n e due parole v, w C tali che d(v, c) t e d(w, c) t, per la disuguaglianza triangolare si ha: d(v, w) d(v, c) + d(c, w) t + t = 2t < 2t + 1 = d. Si sono determinate due parole di C, v e w che hanno distanza minore della distanza di C cioè d(v, w) < d, questo è assurdo. Il risultato precedente permette di ottenere un limite superiore alla cardinalità C di un codice, tale limite, è legato ai parametri n e d. Teorema 21 (Limite di Hamming) Se C è un codice di lunghezza n e distanza d = 2t + 1 allora si ha che: 77
83 4.1 Cardinalità di un codice C C n 0 + n 1 + n n t 2 n, (4.3) ovvero: C 2 n. (4.4) n 0 + n 1 + n n t Dim. Se si considera un arbitraria parola v C, per il teorema (19), le parole che distano al più t da v sono: N = n 0 + n 1 + n n t. Inoltre, per il teorema 20, nessuna di tali parole ha distanza minore o uguale a t da una qualsiasi altra parola presente in C. Il numero di parole distinte che hanno distanza minore o uguale a t da ogni singola parola di C è: C n 0 + n 1 + n n t. Il numero di parole distinte in K n è 2 n, si ha allora che: 78
84 4.1 Cardinalità di un codice C C n 0 + n 1 + n n t 2 n. (4.5) Il teorema è provato. Esempio 2 Sia un codice C con n = 6 e d = 3, quindi essendo d = 2t + 1 si ha che t = 1. Per il teorema di Hamming si ha: C n 0 2 n + n 1 = 26 = 9. (4.6) Poichè 9 non è una potenza del due e tutti i codici binari devono avere una cardinalità pari ad una potenza di 2, allora C 8. Questo significa che in un codice C avente distanza d = 3 e lunghezza n = 6 al massimo vi sono otto parole. Il teorema seguente mette in relazione le grandezze (n, k, d) che caratterizzano un codice lineare. Teorema 22 (Limite di Singleton) Per un codice lineare (n,k,d) si ha che d 1 n k. Dim. La matrice di parità H di un codice lineare C è definita come: 79
85 4.1 Cardinalità di un codice C H = X I n k. In essa non vi possono essere più di n k righe linearmente indipendenti, data la presenza di I n k, le cui righe costituiscono una base per K n k. Per il teorema 16 del capitolo 3, si ha che in H comunque si scelgono arbitrariamente d 1 righe esse sono linearmente indipendenti, quindi segue che: d 1 n k, (4.7) e il teorema è provato. Poniamoci adesso il seguente problema, dati i parametri (n, k, d) vediamo se è possibile determinare un codice lineare C le cui parole hanno lunghezza n, la sua dimensione è k e la sua distanza è d. Un codice lineare può essere individuato mediante la sua matrice di parità, cioè mediante una matrice H (n (n k)), essa ha la caratteristica di avere almeno d righe linearmente dipendenti e comunque si scelgono d 1 sue righe esse sono linearmente indipendenti. Se si riesce a determinare una tale matrice H, dato che essa è la matrice trasposta della matrice generatrice del codice duale G C = t H, da essa, mediante l algoritmo presentato nel capitolo 3, si può determinare la matrice di parità H C del codice duale che individua una matrice generatrice G = t H C (n (n k)) del codice C avente parametri (n, k, d). Nel seguente esempio è mostrato un metodo utile a determinare la matrice di parità di un codice lineare avente parametri (n, k, d), tale tecnica in seguito permetterà di formulare il 80
86 4.1 Cardinalità di un codice C Figura 4.1: teorema di Gilbert - Varshamov. Esempio 3 Vediamo se è possibile determinare un codice lineare C di parametri (15, 6, 5). Individuiamo la sua matrice di parità H (15 9). Essa può contenere la matrice I 9, costituita da righe linearmente indipendenti. Bisogna determinare altre sei righe di K 9 in modo tale che vi siano almeno 5 righe linearmente dipendenti e comunque si scelgono in essa 4 righe esse devono essere linearmente indipendenti. Cerchiamo di individuare la decima riga da aggiungere alle righe di I 9, iniziamo con escludere la parola nulla di K 9, in quanto essa stessa è linearmente dipendente, inoltre è necessario escludere qualsiasi parola contenuta in I 9 e tutte le parole di K 9 ottenute da combinazioni lineari di due o tre righe di I 9, quindi è possibile aggiungere una decima riga se il numero totale delle parole in K 9, cioè 2 9, è strettamente maggiore del numero di parole che necessariamente devono essere escluse. Quindi deve valere la seguente disuguaglianza <
87 4.1 Cardinalità di un codice C La disuguaglianza è valida in quanto < 2 9, quindi è possibile aggiungere una decima riga. Sia essa la riga che formerà la matrice, H 10 = I È importante notare come la matrice H 10 ha già d = 5 righe linearmente dipendenti, cioè la prima, la seconda, la terza, la quarta e la decima. Determiniamo adesso H 11 aggiungendo a H 10 un undicesima riga mantenendo le proprietà richieste precedentemente, cioè in H 11 non possono esistere 4 righe linearmente dipendenti. La seguente disuguaglianza, ottenuta dalle precedenti considerazioni, < 2 9, è ancora valida e quindi aggiungiamo la riga , otteniamo la matrice H 11. Iterando questa procedura otteniamo la matrice di parità di C di parametri (15, 6, 5). H 10 = I
88 4.1 Cardinalità di un codice C Teorema 23 (Limite di Gilbert-Varshamov) Un codice lineare C con parametri (n, k, d) esiste se: n n n 1 d 2 < 2 n k. Dim. Il codice C si può determinare mediante la sua matrice di parità H, cioè una matrice (n (n k)). Supponiamo di aver determinato una matrice H i, dove il primo valore che i può assumere è n k cioè H n k = I n k. In generale consideriamo un i, con n k i n 1, H i deve avere la proprietà che comunque si prendono in essa d 1 righe esse devono essere linearmente indipendenti. Cerchiamo di determinare una matrice del tipo H i+1 aggiungendo una riga a H i. Tale riga deve essere scelta in K n k e deve essere differente dalla parola nulla, è necessario poi escludere in K n k tutte le parole che sono righe in H i e tutte le parole che risultano combinazione lineare di j righe di H i con 2 j d 2. Il numero delle righe che non possono essere aggiunte in H i e che appartengono a K n k è dato da: N i = i 0 + i 1 + i i d 2. Se N i < 2 n k allora sarà possibile determinare una matrice H i+1. Se i + 1 < n, allora ripetiamo quanto fatto precedentemente per H i in modo da poter aggiungere una nuova riga a H i+1 e formare una matrice H i+2. Si ha che N i+1 è uguale a: 83
89 4.2 Codici MDS N i+1 = i i i i + 1 d 2. Ancora una volta se N i+1 < 2 n k allora sarà possibile determinare la matrice H i+2. È importante notare che la disuguaglianza N i < N i+1 è valida. Il procedimento descritto, se possibile, si può iterare fino a che i = n 1, in tal caso se è anche valida la diseguaglianza seguente, N n = n n n n 1 d 2 < 2 n k, (4.8) allora sarà possibile determinare la matrice H di C. Inoltre poichè in generale vale sempre la disuguaglianza N i < N i+1 per n k i n 1, è possibile determinare la matrice di parità H di C solo se è verificata la disuguaglianza (4.8) e il teorema è provato. 4.2 Codici MDS La diseguaglianza (4.7) mette in relazione tutti i parametri che caratterizzano un codice C. Se tale diseguaglianza, per un codice lineare C, vale come eguaglianza, allora essa caratterizza un insieme di codici in cui, fissati n e k, si ha che la loro distanza può assumere il suo valore massimo cioè d = n k + 1. Tali codici prendono il nome di codici MDS dall inglese Maximum Distance Separable. 84
90 4.2 Codici MDS I codici MDS assumono una notevole importanza in quanto a tutt oggi sono ampiamente utilizzati nella lettura dati (lettori CD o DVD), tra i più importanti si ricordano i codici Reed-Solomon che si rimandano ad un corso di teoria dei codici più avanzato. Il teorema seguente identifica una serie di proprietà che caratterizzano i codici MDS e che sono tra esse equivalenti. Teorema 24 Per ogni codice lineare C (n, k, d) le seguenti proposizioni sono equivalenti: 1. d = n k Comunque si scelgano n k righe di H esse sono linearmente indipendenti. 3. Comunque si scelgano k colonne della matrice generatrice G, esse sono linearmente indipendenti. 4. C è un MDS Dim. 1. Se d = n k + 1, dalla definizione, si ha che C è un codice MDS e vale il viceversa. 2. Supponiamo di avere una matrice di parità H avente la proprietà che comunque si individuano in essa n k righe esse sono linearmente indipendenti. Per il teorema 16 del capitolo 3, la matrice H ha la proprietà che comunque si scelgono d 1 righe esse sono linearmente indipendenti e ve ne sono d linearmente dipendenti, allora si ha che n k d 1, ma per il teorema 22 anche la disuguaglianza d 1 n k è valida, quindi deve essere d 1 = n k. È evidente che vale anche il viceversa. 3. Sia C un codice lineare MDS, allora si ha che n d = k 1. Se tale eguaglianza è valida allora si ha che in ogni parola di C non possono esistere più di k 1 zeri. Infatti una parola di minimo peso del codice ha esattamente n k + 1 bits di valore 1 ed esattamente k 1 bits di valore 0. Sia G la matrice generatrice di C, supponiamo 85
91 4.3 Codici estesi per assurdo che esistano k colonne linearmente dipendenti. Se si estraggono tali colonne, esse individuano una matrice quadrata A (k k) le cui k colonne sono linearmente dipendenti, per un teorema di algebra lineare, si ha che anche le k righe di A sono linearmente dipendenti (dimensione dello spazio delle righe è uguale a quello delle colonne). È possibile quindi determinare una parola u K k, diversa dalla parola nulla, tale che u A = 0 K k e segue anche che la parola del codice u G possiede k zeri, questo è un assurdo. 4. Se C è MDS allora banalmente valgono tutte le tre condizioni precedenti. 4.3 Codici estesi Consideriamo un codice lineare C di parametri (n, k, d) e ad ogni parola di C si aggiunge il bit di parità, cioè si aggiunge un bit in modo tale che ogni sua singola parola abbia peso pari. Il codice così ottenuto si denota con C, esso ha lunghezza n + 1 ed è detto codice esteso di C. La matrice generatrice di un codice esteso si può rappresentare nel seguente modo G = [G, b], dove la sottomatrice G è la matrice generatrice di C e b è un vettore colonna, con k componenti ciascuno dei quali assume valore 1 se il numero di bits di valore 1 della parola corrispondente in G è dispari e valore 0 in caso contrario. La matrice di parità H del codice esteso C può essere costruita tramite la matrice G mediante il noto algoritmo oppure in modo più semplice dalla matrice di parità H del codice originario C. La matrice di parità di C sarà: H = H J 0 1, (4.9) 86
92 4.3 Codici estesi dove J è un vettore colonna formato da bits che assumono tutti valore 1. Per provare che tale matrice è effettivamente la matrice di parità di C basta provare che il prodotto riga per colonna è G H = 0. [ G H = G, b ] H J 0 1 [ = GH, GJ + b ], il prodotto G H = 0, essendo G e H le matrici generatrice e di parità del codice C. Consideriamo adesso il temine GJ + b, osserviamo che se r i è la riga i-esima della matrice G allora si ha che: 1 se r i contiene un numero dispari di bits di valore 1 ; r i J = 0 se r i contiene un numero pari di bits di valore 1. Se indichiamo con b i la componente i-esima del vettore b, essa assumerà il valore: 1 se r i J = 1; b i = 0 se r i J = 0. Si ha dunque che GJ + b = 0 e quindi H è la matrice di parità di C. 87
93 4.4 Codici perfetti Esempio 4 Consideriamo un codice lineare C avente matrici generatrice e di parità: G = , H = Definiamo le matrici G e H del codice esteso di C aggiungendo il bit di parità ad ogni riga di G e utilizzando la (4.9). G = , H = Codici perfetti Un codice C di lunghezza n e distanza d = 2t + 1 si dice perfetto se si ha che: C = 2 n. (4.10) n 0 + n 1 + n n t 88
94 4.4 Codici perfetti Poichè la cardinalità di un codice binario deve essere uguale ad una potenza di 2 allora è immediata la seguente condizione necessaria. Teorema 25 Condizione necessaria per l esistenza di un codice perfetto è che: n 0 + n 1 + n n t, sia potenza di 2. Due codici perfetti che sono detti banali sono il codice C = {( ), ( )}, le cui parole appartengono a K n e il codice C = K n. Esempio 5 Verifichiamo che il codice con n = 7 e d = 3 è perfetto. d = 2t + 1 = 3 t = 1 e quindi si ha che: C = = = 24 =
95 4.4 Codici perfetti Il codice C è perfetto. Verifichiamo che il codice con n = 23 e d = 7 sia un codice perfetto. Se d = 2t+1 = 7, allora segue che t = 3 e si ha: C = = = 212 = Il secondo codice dell esempio individua un codice che in seguito sarà trattato in dettaglio, ma come codice esteso. Il seguente teorema fu provato da Van Lint nel 1963 e da precise indicazioni sullo spettro di esistenza, legato al parametro n, dei codici perfetti. In questi appunti è omessa la dimostrazione. Teorema 26 (Van Lint) Se C è un codice perfetto non banale di lunghezza n e distanza d = 2t + 1, allora o n = 23 e d = 7, oppure n = 2 r 1 (per r 2) e d = 3. Teorema 27 Se C è un codice perfetto di lunghezza n e distanza d = 2t + 1, allora C corregge tutti gli errori di peso minore o uguale a t. 90
96 4.4 Codici perfetti Codice di Hamming Un codice lineare di lunghezza n = 2 r 1, con r 2, avente una matrice di parità H le cui righe hanno lunghezza r è detto codice di Hamming. In un codice di Hamming la matrice H è del tipo ((2 r 1) r). Se consideriamo che le parole distinte di lunghezza r sono 2 r, allora, se si esclude la parola nulla, si ha che tutte le altre parole di lunghezza r sono tutte presenti nelle righe di H, quindi comunque si considerano due distinte righe di H esse sono linearmente indipendenti, inoltre in H sono presenti le righe , e , di lunghezza r, è chiaro che esse sono linearmente dipendenti, segue che i codici di Hamming hanno distanza d = 3 e per il teorema 26 essi sono dei codici perfetti. Esempio 6 La matrice di parità di un codice di Hamming con r = 3 (n = 2 r 1 = 7) è: La sua matrice generatrice è: 91
97 4.4 Codici perfetti G = Dato l intero positivo r e il suo codice di Hamming corrispondente C sappiamo che la relazione tra le dimensioni di C e il suo codice duale C è: dimc + dimc = n, Poichè dimc = r ed inoltre n = 2 r 1, allora si ha che: La cardinalità del codice di Hamming C è: k = dimc = 2 r 1 r. C = 2 k = 2 2r 1 r Gli stessi risultati precedentemente ottenuti si possono ricavare considerando che C è un codice perfetto con d = 2t + 1 = 3 e t = 1 allora si ha che: C = n 0 2 n + n 1 = 2 2r r 1 = 22r 1 r. 92
98 4.4 Codici perfetti Sia un codice di Hamming C di lunghezza n = 2 r 1, se si considera una parola v di K n di peso uno, essa certamente non appartiene a C, poichè d = 3, e la si somma ad un altra parola w distinta di peso uno, allora si ottiene una parola di peso due che non appartiene a C, quindi v e w sono due parole che appartengono a coset differenti. Il numero di coset di C è pari a 2 r, quindi le 2 r 1 parole di lunghezza n = 2 r 1 e peso uno più la parola nulla formano i coset leaders di un codice di Hamming C. In generale un codice di Hamming ha la seguente tabella SDA: COSET LEADER u SINDROME u H I 2 r 1 H Esempio 7 La tabella SDA del codice di Hamming dell esempio 6 è qui sotto rappresentata. COSET LEADER u SINDROME u H
99 4.4 Codici perfetti Codice di Golay esteso In questa sessione è presentato il codice perfetto esteso avente come parametri (24, 12, 8), esso è generato dal codice perfetto di parametri (23, 11, 7) e si chiama codice di Golay esteso. Il codice di Golay ha una notevole importanza perchè è stato ampiamente utilizzato dall ente spaziale NASA negli anni 80 soprattutto nelle trasmissioni delle sonde Voyager. Per definire tale codice è necessario costruire la matrice B 1 di tipo (11 11) ottenuta dalla riga di 11 caratteri , le successive righe di B 1 sono ottenute mediante lo spostamento ( shift ) del primo bit nell ultima posizione. B 1 = (4.11) Consideriamo adesso un estensione B (12 12) della matrice B 1 nel seguente modo: 94
100 4.4 Codici perfetti B = B 1 J J T 0 = (4.12) Definiamo inoltre la matrice generatrice del codice di Golay esteso: [ G = I 12, B ], Il codice di Golay esteso gode delle proprietà che sono enunciate nel seguente teorema. Teorema 28 Un codice di Golay esteso C ha le seguenti proprietà: 1. Il codice C ha una lunghezza n = 24, dimensione k = 12 e C = 2 12 = 4096 parole. 95
101 4.4 Codici perfetti 2. La matrice B è una matrice simmetrica, cioè B T = B. 3. Due qualunque righe r i e r j di B sono tra loro ortogonali, cioè r i r j = La matrice di parità di C è H = B I. 5. Esiste un altra matrice di parità per C cioè H = I B. 6. C è autoduale cioè C = C. 7. La distanza di C è d = 8 8. Il codice C è un codice 3-correttore, cioè corregge tutti gli errori u tali che wt(u) 3. Dim. Dimostriamo le proprietà del teorema in sequenza. 1. La dimostrazione è evidente osservando le caratteristiche della matrice generatrice. 2. La matrice B è evidentemente simmetrica, ciò è dovuto al metodo della sua costruzione. 3. Per provare tale proprietà basta eseguire i prodotti r i r j, con i j e 1 i, j 12, e constatare la loro ortogonalità. 4. Per dimostrare che H è una matrice di parità si procede nel modo seguente: [ G H = I, B ] B I = B + B = 0. 96
102 4.4 Codici perfetti 5. Per dimostrare che H è una matrice di parità si procede nel modo seguente: [ G H = I, B ] I B = I + BB T = I + I = Poichè H = G T, allora il codice di Golay è un codice autoduale, cioè il suo duale è esso stesso. 7. Consideriamo una parola v di C ottenuta dalla somma di due righe distinte di G v = r i + r j con i j. Poichè le due righe sono ortogonali, allora r i e r j hanno un numero pari di bits 1 posti nelle stesse componenti, pertanto: wt(v) = wt(r i ) + wt(r j ) 2(2x) = wt(r i ) + wt(r j ) 4x, dove 2x è il numero pari di bits di valore 1 posti nelle stesse componenti di r i e r j, inoltre tali righe hanno un peso uguale a 8 o 12, quindi il peso di v è un multiplo di 4. Consideriamo adesso la parola v = v + r k, dove r k è un altra qualunque riga di G e v = r i + r j. Osserviamo che: r k v = (r i + r j ) r k = r k r i + r k r j = = 0, quindi r k e v sono ortogonali, con analoghe considerazioni fatte in precedenza si ha che: wt(v ) = wt(r i + r j ) + wt(r k ) 4y, dove 2y è il numero pari di bits di valore 1 presenti nelle stesse componenti in v e r k. Una generica combinazione di righe di G permette di ottenere 97
103 4.4 Codici perfetti una generica parola w di C e anch essa, con analoghi ragionamenti fatti in precedenza, ha un peso che è un multiplo di 4. Nella matrice G sono presenti righe di peso 8 e 12, è necessario provare che non esistono parole di C di peso 4. Supponiamo per assurdo che la parola w di C ha peso 4. Il codice C è autoduale, allora ogni sua parola si può ottenere dalle due diverse matrici [ ] [ ] generatrici di G = I, B e G = B, I cioè si ha: w = u 1 [ I, B ] [ = u 1, u 1 B ], e w = u 2 [ B, I ] [ = u 2 B, u 2 ]. Dato che wt(w) = 4, supponendo che wt(u 1 ) 2 (cioè che i primi dodici bit di w contengano due o più bit di valore 1), allora deve essere necessariamente wt(u 1 B) 2 che equivale a dire wt(u 2 ) 2, ciò perchè w si può scrivere sia mediante l uso di G che di G ; nel caso contrario si ha che wt(u 1 ) 2. Facilmente si può calcolare che il peso della somma di due righe di B è maggiore o uguale a quattro, allora si ha: wt(w) = wt(u i ) + wt(u i B) = 5, dove il valore i può assumere il valore 1 o 2, ma ciò è assurdo in quanto wt(w) = 4 e la proprietà è provata. 8. Tale proprietà è evidende essendo d = 8. 98
104 4.4 Codici perfetti Abbiamo visto, dalla proprietà 8 del teorema precedente, che il codice di Golay esteso è un codice 3-correttore, cioè corregge tutti gli errori di peso minore o uguale a tre. Ci si propone adesso di definire un algoritmo per la correzione di tali errori. Se w è la parola ricevuta, e u l errore utilizzato per la correzione si ha che wt(u) 3. [ L errore u può essere denotato mediante la seguente scrittura u = u 1, u 2 ], dove u 1 e u 2 hanno lunghezza 12 (l (u i ) = 12 per i = 1 e 2). Poichè wt(u) 3, allora deve essere wt(u 1 ) 1 oppure wt(u 2 ) 1. Indichiamo con s 1 la sindrome di w, se si usa la matrice di parità H = I B, allora si ha che: [ s 1 = w H = u H = ] u 1, u 2 I B = u 1 + u 2 B. Consideriamo i seguenti due casi. Primo caso Se wt(u 2 ) 1, cioè esso può assumere i valori 0 e 1. Se wt(u 2 ) = 0 segue che u 2 B = 0 e quindi risulta s 1 = u 1 + 0, con wt(u 1 ) 3. In questo caso l errore è u = [s 1, 0]. È facile verificare che tale errore ha peso minore o uguale a tre e ha sindrome uguale a w H, quindi è un coset leader. Se wt(u 2 ) = 1 segue che u 2 B individua una riga b j di B e si ha s 1 = u 1 + b j e conseguentemente si ha che u 1 = s 1 + b j. Si cerca quindi di determinare una riga b j per cui si ha che wt(u 1 ) = wt(s 1 + b j ) 2 ( ricordiamo che wt(u) 3), se tale b j esiste, allora l errore è u = [s 1 + b j, e j ] ed esso ha la stessa sindrome di w infatti: 99
105 4.4 Codici perfetti. [ u H = ] s 1 + b j, e j I B = s 1 + b j + b j = s 1 Secondo caso Consideriamo adesso la sindrome di w usando la matrice di parità H = B [ ], allora s 2 = w H = u 1, u 2 B = u 1 B + u 2. I I Se wt(u 1 ) 1, allora wt(u 1 ) può assumere i valori 0 e 1. Se wt(u 1 ) = 0 segue che u 1 B = 0 e quindi risulta s 2 = 0 + u 2, con wt(u 2 ) 3. In questo caso l errore è u = [0, s 2 ]. Anche in questo caso si può verificare che tale errore ha peso minore o uguale a tre e ha sindrome uguale a w H, esso è quindi un coset leader. Se wt(u 1 ) = 1 segue che u 1 B individua una riga b i di B, quindi s 2 = u 2 + b i e conseguentemente u 2 = s 2 + b i. Si cerca quindi di determinare una riga b i per cui si ha che wt(u 2 ) = wt(s 2 + b i ) 2, se tale b i esiste, allora l errore è u = [e i, s 1 B + b i ], ed esso ha la stessa sindrome di w infatti: [ u H = ] e i, s 1 B + b i B I = b i + s 2 + b i = s 2. Da questa tecnica di decodifica è possibile determinare un algoritmo di decodifica per il codice di Golay esteso. 100
106 4.4 Codici perfetti Osserviamo che essendo B = B T, allora B 2 = B B T = I ed è lecito scrivere: s 1 B = (u 1 + u 2 B) B = u 1 B + u 2 B 2 = u 1 B + u 2 = s 2. (4.13) Ciò significa che, calcolata la sindrome s 1 si può facilmente determinare la sindrome s 2. Algoritmo di decodifica 1. Calcolo della sindrome s 1 = w H = u 1 + u 2 B. [ ] 2. Se wt(s 1 ) 3 allora u = s 1, 0 (caso in cui wt(u 2 ) = 0). [ 3. Se wt(s 1 + b j ) 2 per qualche riga b j di B, allora u = s 1 + b j, e j ], dove e j è la parola di lunghezza 12 con un bit di valore 1 nell j-esima posizione, tutti gli altri bits hanno valore Calcolo della sindrome s 2 = w H = s 1 B. [ 5. Se wt(s 1 B) 3 (caso in cui wt(u 1 ) = 0), allora u = 0, s 1 B [ 6. Se wt(s 1 B + b i ) 2 per qualche riga b i di B, allora u = e i, s 1 B + b i ]. 7. Se u non è determinato, allora si richiede la ritrasmissione. ]. 8. Fine. 101
107 4.4 Codici perfetti Esempio 8 Sia la parola ricevuta w = , Calcoliamo la sindrome: s = w H = w I B = = , osserviamo che wt(s) = 2 3. Pertanto: [ u = s, 0 ] = , La parola che con maggiore probabilità è stata inviata è: v = w + u = , Esempio 9 Sia la parola ricevuta w = , Calcoliamo la sindrome: s = w H = w I B = = , osserviamo che wt(s) = 5 > 3. Pertanto dal passo 3 dell algoritmo di decodifica si ha: s + b 1 = wt(s + b 1 ) = 4 > 3; s + b 2 = wt(s + b 2 ) = 6 > 3; s + b 3 = wt(s + b 3 ) = 8 > 3; s + b 4 = wt(s + b 4 ) = 4 > 3; s + b 5 = wt(s + b 5 ) = 2 < 3. Quindi: 102
108 4.4 Codici perfetti [ u = s + b 5, e 5 ] = , La parola che con maggiore probabilità è stata inviata è: v = w + u = ,
109 Capitolo 5 Codici ciclici 5.1 Polinomi su K In questo capitolo è mostrato come una parola di un codice C di lunghezza n può essere rappresentata mediante polinomi di grado n 1 su K, ma prima mostriamo alcune proprietà dei polinomi a coefficienti in K, cioè dell insieme K[x], i cui elementi sono denotati con la simbologia f(x), g(x), p(x) ecc. ecc. Consideriamo un generico polinomio di grado n di K[x]. f(x) = a 0 + a 1 x + a 2 x a n 2 x n 2 + a n 1 x n 1 + a n x n. In K[x] può essere considerata la classica operazione di somma tra polinomi. Poichè in K si ha che = 0, allora segue che x k + x k = 0, tutto ciò fa si che il grado della somma di due polinomi f(x) + g(x) non ha sempre il massimo tra i gradi dei polinomi f(x) e g(x). 104
110 5.1 Polinomi su K Esempio 1 Siano i polinomi di K[x] f(x) = 1 + x + x 4 e g(x) = x 2 + x 4, si ha che: f(x) + g(x) = 1 + x + x 2, è evidente che il polinomio somma ha grado 2 minore di 4 cioè il massimo grado dei polinomi f(x) e g(x). Siano adesso i polinomi l(x) = 1 + x 2 + x 3 e p(x) = x + x 2 + x 4, si ha: l(x) + p(x) = 1 + x + x 3 + x 4, in questo caso invece il polinomio somma ha grado uguale al massimo grado dei due polinomi. Dagli esempi precedenti si può affermare che nell operazione di somma tra due generici polinomi f(x) e g(x) di K[x] si ha che: deg(f(x) + g(x)) max {deg(f(x)), deg(g(x))}. Nell operazione di somma l elemento neutro è il polinomio nullo, inoltre considerato un generico polinomio g(x) di K[x], dato che g(x) + g(x) = 0, allora è evidente che l opposto di tale polinomio è il polinomio stesso. Consideriamo in K[x] la classica operazione di prodotto di cui si ha un applicazione nell esempio seguente. Esempio 2 Siano i polinomi f(x) = 1 + x + x 3 + x 4 e g(x) = x + x 2 + x 3 consideriamo il prodotto tra tali polinomi: 105
111 5.1 Polinomi su K f(x) g(x) = (x + x 2 + x 3 ) + x(x + x 2 + x 3 ) + x 3 (x + x 2 + x 3 ) + x 4 (x + x 2 + x 3 ) = x + x 7. Consideriamo adesso il quadrato della somma di due polinomi osserviamo che: [f(x) + g(x)] 2 = f 2 (x) + f(x)g(x) + f(x)g(x) + g 2 (x) = f 2 (x) + g 2 (x). Ciò significa che nel quadrato della somma di due polinomi di K[x] non si ha il doppio prodotto. Consideriamo adesso i polinomi f(x) e h(x) con h(x) 0, allora esiste un unico polinomio q(x) ed unico polinomio r(x), con deg(r(x)) < deg(h(x)), tali che: f(x) = h(x)q(x) + r(x). (5.1) Il polinomio q(x) è detto quoziente, mentre r(x) resto. Esempio 3 Sia f(x) = x + x 2 + x 6 + x 7 + x 8 e h(x) = 1 + x + x 2 + x 4, si ha che: 106
112 5.2 Parole di C e polinomi Quindi f(x) = h(x)(x 3 + x 4 ) + (x + x 2 + x 3 ) e in particolare il quoziente è q(x) = x 3 + x 4, il resto r(x) = x + x 2 + x 3, è possibile notare che deg(r(x)) < deg(h(x)) = Parole di C e polinomi In questa sessione viene messa in corrispondenza una parola di K n con un polinomio di grado n 1 su K, inoltre si fa vedere come si possono rappresentare tutte le parole di un codice C mediante i polinomi di K[x] n 1, cioè l insieme di polinomi su K con grado minore o uguale a n 1. Consideriamo il polinomio f(x) = a 0 +a 1 x+a 2 x a n 1 x n 1 che ha grado al più n 1, si ricorda che i coefficienti a i assumono valori su K e alcuni possono assumere valore 0. A f(x) facciamo corrispondere la parola di lunghezza n v = a 0 a 1 a 2...a n 1. Si è quindi definita una corrispondenza biunivoca tra i polinomi di K[x] n 1 e le parole di K n. Esempio 4 Sia n = 5, consideriamo il polinomio di K[x] 4 f(x) = 1+x 2 +x 4 ad esso si può associare la parola v = 10101, mentre al polinomio g(x) = 1 + x si può associare la parola w = Siano f(x) e h(x) due polinomi con h(x) 0, se si può scrivere f(x) = h(x)q(x) + r(x), allora diremo che f(x) in modulo h(x) è uguale a r(x) e scriveremo che f(x) mod h(x) = r(x). Si dice che due polinomi f(x) e g(x) sono equivalenti in modulo h(x) e scriveremo f(x) g(x) mod h(x), se e solo se entrambi divisi per h(x) 0 hanno lo stesso 107
113 5.2 Parole di C e polinomi resto cioè se: f(x) mod h(x) = r(x) = g(x) mod h(x) Esempio 5 Siano i polinomi f(x) = 1 + x 4 + x 9 + x 11, g(x) = 1 + x 6 e h(x) = 1 + x 5, si ha che: Quindi x 11 + x 9 + x = (x 5 + 1)(x 6 + x 4 + x) + x + 1 cioè f(x) in modulo h(x) è uguale a x + 1, inoltre si ha: Quindi x = (x 5 + 1)x + x + 1 e vale f(x) mod (h(x)) = x + 1 = g(x) mod (h(x)), allora si può scrivere che f(x) g(x) mod h(x) = x + 1. Fissato un polinomio h(x) di grado n, poichè per un qualunque polinomio f(x) di K[x] si ha che f(x) mod h(x) = r(x) e il deg(r(x)) < n, allora ad ogni polinomio 108
114 5.3 Codici ciclici f(x) di K[x] si può associare un polinomio r(x) di K[x] n 1 che identifica una parola binaria di lunghezza n. In particolare tutti i polinomi equivalenti in modulo h(x) individuano la stessa parola di K n. Esempio 6 Il polinomio f(x) = 1 + x 4 + x 9 + x 11 dell esercizio 5 essendo in modulo h(x) = 1 + x 5 uguale a x + 1 corrisponde alla parola di lunghezza 5 uguale a v = Proprietà 7 Se p(x) è un polinomio di K[x] e f(x) g(x) mod h(x), allora valgono le due seguenti proprietà. f(x) + p(x) g(x) + p(x) mod (h(x)); f(x)p(x) g(x)p(x) mod (h(x)). 5.3 Codici ciclici Prima di dare la definizione di codice ciclico in questa sessione è presentato un particolare operatore che agisce su K n e permette di ottenere ancora una parola di K n. Sia v una parola di K n, si definisce operatore shift ciclico l applicazione π : K n K n, esso agisce sulla parola v spostando il suo ultimo bit nella prima posizione. 109
115 5.3 Codici ciclici Esempio 7 Si elencano in sequenza una serie di applicazioni dell operatore π su diverse parole v di lunghezza n differente. Sia v = 1100 π(v) = Sia v = π(v) = Sia v = 101 π(v) = 110. Sia v = π(v) = È facile verificare che l operatore π è lineare, quindi segue la proprietà. Proprietà 8 L operatore π è lineare cioè valgono le due proprietà: v, w K n, π(v + w) = π(v) + π(w). a K = {0, 1}, π(av) = aπ(v). Un codice C si dice ciclico se per qualunque parola v C si ha che anche π(v) C, cioè se si effettua lo shift ciclico su una qualunque parola di C la parola ottenuta appartiene ancora a C. Esempio 8 Sia il codice C = {000, 110, 101, 011}, si ha che: π(v) = π(000) = 000 C; π(v) = π(110) = 011 C; π(v) = π(101) = 110 C; π(v) = π(011) = 101 C. 110
116 5.3 Codici ciclici Quindi il codice C è un codice ciclico. Si può notare che il codice C dell esempio 8 oltre ad essere ciclico è anche un codice lineare, infatti la somma di due sue parole è ancora una parola del codice. L esempio seguente però mostra che non tutti i codici lineari sono anche ciclici. Esempio 9 Sia il codice C = {000, 100, 011, 111}, si ha che: π(v) = π(100) = 010 / C; π(v) = π(011) = 101 / C. Il codice C è lineare ma non ciclico. Cerchiamo di determinare un codice ciclico e lineare; sia v K n e consideriamo l insieme S così definito: S = { v, π(v), π 2 (v),, π n 1 (v) }, dove con π i (v) si intende una sequenza di i applicazioni dell operatore π cioè π(π( (π(v)) ). Consideriamo l insieme di tutte le possibili combinazioni lineari delle parole di S, cioè L(v, π(v), π 2 (v),, π n 1 (v)), tale insieme definisce un codice C che è ciclico lineare, in quanto C = L(v, π(v), π 2 (v),, π n 1 (v)) e l operatore π è un applicazione lineare. È facile anche notare che un codice così ottenuto è il più piccolo codice ciclico lineare contenente v, infatti se v appartiene ad un codice ciclico lineare C, con C C, allora esso sempre contiene l insieme S e l insieme L(v, π(v), π 2 (v),, π n 1 (v)). L insieme S è un insieme di generatori per il codice lineare C. 111
117 5.4 Codice ciclico e polinomi di K n 1 Esempio 10 Sia la parola di K 3 v = 100, consideriamo l insieme S = {100, 010, 001}, allora si ha che C = K 3 = {000, 100, 010, 001, 110, 101, 011, 111}. Esempio 11 Sia la parola di K 4 v = 0101, π(v) = 1010 e π 2 (v) = 0101 = v, quindi S = {0101, 1010}. È importante notare che la ciclicità delle parole v negli esempi precedenti era n 1, adesso è 1 poichè π 2 (v) = v, il codice ottenuto è C = {0000, 0101, 1010, 1111}. 5.4 Codice ciclico e polinomi di K n 1 Come si è visto nella seconda sessione del capitolo una qualunque parola v può essere scritta in forma polinomiale. Facciamo quindi corrispondere ad ogni parola v di lunghezza n, un polinomio v(x) di grado minore o uguale a n 1. L operatore π sposta l ultimo bit di v nella prima posizione formando una nuova parola. In una visione polinomiale di v, l operatore π è equivalente al prodotto xv(x). Il concetto di shift ciclico, quindi, corrisponde al prodotto del fattore x per il polinomio v(x), procedendo in una successione di prodotti per x si può determinare un polinomio f(x) di grado maggiore di n 1 che è legato ad una parola binaria di lunghezza n + 1. Nasce la necessità di modulare il polinomio f(x) ottenuto tramite il polinomio h(x) = x n + 1, cioè si considera il polinomio f(x) mod h(x) che ha grado minore o uguale a n 1 e corrisponde ad una parola di lunghezza n. È importante notare che poichè x n mod (x n + 1) = 1, allora se in un polinomio è presente il termine x n esso si può sostituire con il termine
118 5.4 Codice ciclico e polinomi di K n 1 Quanto detto consente di generare un lineare da un punto di vista polinomiale. Sia v una parola di K n a cui è associato il polinomio v(x), costruiamo l insieme S così definito: S = { v(x), xv(v), x 2 v(x),, x n 1 v(x) }. (5.2) Nella (5.2) al polinomio x i v(x) corrisponde la parola π i (v). È evidente che in S possono essere presenti polinomi di grado maggiore di n 1, allora è necessario considerare ogni polinomio di S in modulo (x n +1), per far ciò si utilizza la scrittura: S = { v(x), xv(x),, x n 1 v(x) } mod (x n + 1). (5.3) L insieme di tutte le combinazioni lineari dei polinomi di S in modulo (x n + 1) costituisce un codice lineare ciclico ed esso è il più piccolo codice ciclico contenente la parola v. L insieme S definisce un insieme di polinomi generatori del codice ciclico lineare C, la tecnica di costruzione utilizzata è equivalente alla tecnica in cui si adopera l operatore π ed essa genera lo stesso codice. Esempio 12 Sia la parola v = di K 7 e sia h(x) = x Formiamo l insieme S costituito dai 7 polinomi. v = v(x) = 1 + x + x 3 ; π(v) = xv(x) = x + x 2 + x 4 ; π 2 (v) = x 2 v(x) = x 2 + x 3 + x 5 ; π 3 (v) = x 3 v(x) = x 3 + x 4 + x 6 π 4 (v) = x 4 v(x) = x 4 + x 5 + x 7 mod (x 7 + 1) = 1 + x 4 + x 5 ; π 5 (v) = x 5 v(x) = x 5 + x 6 + x 8 mod (x 7 + 1) = x + x 5 + x 6 ; 113
119 5.4 Codice ciclico e polinomi di K n 1 π 6 (v) = x 6 v(x) = x 6 + x 7 + x 9 mod (x 7 + 1) = 1 + x 2 + x 6. I sette polinomi ottenuti costituiscono l insieme S e sono i generatori del codice ciclico lineare C. Una qualunque parola c(x) di un codice ciclico C ottenuto da S può esprimersi mediante una combinazione lineare degli elementi di S, cioè: c(x) = [ a 0 v(x) + a 1 xv(x) + a 2 x 2 v(x) a n 1 x n 1 v(x) ] mod (x n + 1) = = (a 0 +a 1 x+a 2 x a n 1 x n 1 )v(x) mod (x n +1) = a(x)v(x) mod (x n +1). (5.4) Nella (5.4) si è determinato il polinomio a(x) = a 0 + a 1 x + a 2 x a n 1 x n 1 di grado n 1 che permette di enunciare il seguente lemma. Lemma 2 Se C è un codice ciclico lineare e v C, allora per ogni polinomio a(x) di grado n 1 si ha che c(x) = a(x)v(x) mod (x n + 1) C. (5.5) 114
120 5.5 Matrice generatrice 5.5 Matrice generatrice Consideriamo un codice ciclico e lineare C dove ogni sua parola ha una rappresentazione polinomiale, tra tutte le sue parole non nulle si consideri una parola a cui corrisponde un polinomio g(x) che ha grado minimo rispetto ad ogni altra parola di C. È facile provare che esiste una sola parola il cui polinomio corrispondente ha grado minimo. Supponiamo per assurdo che esistano due parole differenti in C a cui sono associati due polinomi di grado minimo uguale a k, siano essi g(x) e g (x). Se si considera la somma delle due parole, quindi anche dei due polinomi, si ottiene c(x) = g(x) + g (x) e per la linearità di C si ha che c(x) C, inoltre poichè la somma dei termini di grado k è zero (x k + x k = 0) segue che deg(c(x)) < k, ciò è assurdo in quanto per la scelta fatta, g(x) e g (x) sono due polinomi di grado minimo in C e non può esistere in C una parola di grado minore di k. Il polinomio di minimo grado in C è unico. Se C è un codice ciclico lineare si chiama polinomio generatore di C l unico polinomio non nullo di grado minimo corrispondente a una parola di C. Il polinomio generatore permette di generare tutte le parole di C. Teorema 29 Se C è un codice ciclico lineare, allora si ha che ogni parola c(x) di C si può esprimere nel modo seguente: c(x) = a(x)g(x). (5.6) 115
121 5.5 Matrice generatrice Dim. Per provare il teorema basta mostrare che il polinomio generatore divide ogni parola di C. Supponiamo per assurdo che esista una parola c(x) C che non è divisibile per g(x), allora si ha che: c(x) = a(x)g(x) + r(x), dalla quale è possibile ottenere: r(x) = a(x)g(x) + c(x). Per il lemma 2 si ha che a(x)g(x) è una parola di C ed inoltre per la linearità di C si ha che a(x)g(x) + c(x) C ne segue che anche r(x) C, ma questo è assurdo in quanto deg(r(x)) < deg(g(x)) e deve necessariamente essere r(x) = 0. Il seguente teorema permette di legare il polinomio generatore con i concetti di dimensione e base di un codice ciclico e lineare C. Teorema 30 Sia C un codice ciclico lineare di lunghezza n e g(x) il suo polinomio generatore di grado n k = deg(g(x)), allora si ha: 1. Il codice C ha dimensione k. 2. Le parole corrispondenti a g(x), xg(x),...,x k 1 g(x) formano una base di C. 3. La parola c(x) appartiene a C se e solo se c(x) = a(x)g(x) dove deg(a(x)) < k (cioè g(x) è un divisore per ogni parola c(x) in C). 116
122 5.5 Matrice generatrice Dim. Il polinomio g(x) ha grado n k, i polinomi g(x), xg(x),..., x k 1 g(x) hanno rispettivamente grado n k, n k +1,..., n 1, sono diversi dal polinomio nullo e nessuno di essi può essere espresso come combinazione lineare dei precedenti essendo questi tutti di grado inferiore, quindi, per un teorema di Algebra lineare, essi sono linearmente indipendenti. Per il teorema 29 si ha che ogni parola c(x) di C si può scrivere come c(x) = a(x)g(x), ciò prova il punto 3 del teorema ed inoltre i k polinomi g(x), xg(x),..., x k 1 g(x) formano una base di C. Esempio 13 Sia g(x) = 1 + x + x 3 il polinomio generatore per il codice ciclico C di lunghezza n = 7, si ha che deg(g(x)) = n k = 3, da cui k = n 3 = 4 e il codice C ha dimensione 4. Calcoliamo una base per C moltiplicando g(x) per i fattori x, x 2 e x 3 : g(x) = 1 + x + x ; xg(x) = x + x 2 + x ; x 2 g(x) = x 2 + x 3 + x ; x 3 g(x) = x 3 + x 4 + x Il teorema 30 definisce per un codice ciclico lineare C una sua base ottenuta dal polinomio generatore g(x), allora tramite i polinomi g(x), xg(x),..., x k 1 g(x), si può definire la matrice generatrice del codice C nella seguente forma: 117
123 5.5 Matrice generatrice G = g(x) xg(x) x 2 g(x).. x k 1 g(x). (5.7) Esempio 14 Sia C un codice ciclico lineare di lunghezza 4, avente polinomio generatore g(x) = 1 + x 2, allora si ha che n k = 2. Una base per C è individuata dai polinomi: g(x) = 1 + x xg(x) = x + x La matrice generatrice di C è: G = Uno dei problemi fondamentali per la determinazione di un codice ciclico lineare che ha parametri n e k è quello di individuare il suo polinomio generatore g(x). Diverse sono le tecniche utilizzate e i due teoremi seguenti danno indicazioni su alcune proprietà del polinomio generatore. Teorema 31 Se g(x) è il polinomio generatore di un codice lineare ciclico C di lunghezza n, allora g(x) divide 1 + x n cioè 1 + x n = g(x)f(x) e vale il viceversa. 118
124 5.5 Matrice generatrice Dim. Se dividiamo 1 + x n per g(x) si ha 1 + x n = g(x)f(x) + r(x), da cui si ottiene che r(x) = g(x)f(x)+(1+x n ). Poichè ogni polinomio deve essere considerato in modulo (1+x n ) è lecito scrivere r(x) = (g(x)f(x)+(1+x n )) mod (x n +1), tenendo presente che (1 + x n ) mod (x n + 1) ha resto zero, si ha che r(x) = g(x)f(x) mod (x n + 1), quindi r(x) C, ma deg(r(x)) < deg(g(x)) e poichè g(x) è il polinomio di grado minimo in C, allora r(x) deve essere il polinomio nullo. Teorema 32 Il polinomio generatore g(x) del più piccolo codice lineare ciclico C, di lunghezza n e contenente la parola corrispondente a v(x), è il massimo comune divisore di v(x) e di (1 + x n ). Dim. Per il lemma 2 si ha che ogni parola c(x) C si può esprimere come c(x) = v(x)a(x) mod (x n +1), allora in particolare per g(x) si ha g(x) = a(x)v(x) mod (x n + 1) o equivalentemente g(x) = a(x)v(x) + b(x)(x n + 1). Per i teoremi 31 e 29 si ha che g(x) è un divisore di (1 + x n ) e di v(x), quindi ogni comune divisore per v(x) e 1 + x n deve dividere anche g(x), pertanto esso è il massimo comune divisore fra v(x) e 1 + x n. Un metodo alternativo per cercare un polinomio generatore, di un codice ciclico C di dimensione k, consiste nel cercare di ridurre una sua matrice generatrice G in modo che le colonne leading siano le ultime colonne di G. La riga di G corrispondente al polinomio di minimo grado individua il polinomio generatore. 119
125 5.6 Sindrome e matrice di parità 5.6 Sindrome e matrice di parità Supponiamo sia stata ricevuta la parola w, corrispondente a w(x), e che sia stata inviata la parola v, associata a v(x), allora definiamo errore polinomiale il polinomio e(x) = v(x) + w(x). Si definisce sindrome polinomiale la quantità: s(x) = w(x) mod (g(x)). (5.8) Poichè g(x) ha grado n k, allora la sindrome s(x) ha grado minore di n k e ad essa corrisponde una parola di lunghezza n k. Supponiamo che w(x) C, allora dato che w(x) = a(x)g(x), segue che la sua sindrome è s(x) = 0. Se invece w(x) / C, allora, poichè w(x) = v(x) + e(x), si ha che s(x) = w(x) mod (g(x)) = [v(x) + e(x)] mod (g(x)) = e(x) mod (g(x)), dato che v(x) mod (g(x)) = 0. Ciò comporta che la sindrome della parola ricevuta w(x) corrisponde alla sindrome dell errore e(x) e la definizione di sindrome polinomiale corrisponde alla definizione di sindrome data nel capitolo 3. Si definisce matrice di parità H n n k la matrice la cui i-esima riga, r i, è la parola di lunghezza n k corrispondente al polinomio: r i (x) = x i mod (g(x)) per 0 i n 1. La matrice di parità è: 120
126 5.6 Sindrome e matrice di parità H = x 0 x x 2.. x n 1 mod (g(x)). (5.9) Se w è la parola ricevuta, poichè w(x) = v(x) + e(x) la sindrome polinomiale si può ottenere anche mediante la matrice H nel seguente modo: w H = (v + e) H n 1 i=0 (v i + e i )x i mod (g(x)) = = n 1 i=0 v ix i mod (g(x)) + n 1 i=0 e ix i mod (g(x)) = = n 1 i=0 e ix i mod (g(x)) = e(x)mod(g(x)). Ancora una volta la definizione precedente coincide con la definizione di sindrome ottenuta tramite la matrice di parità del capitolo 3. Esempio 15 Consideriamo un codice C di lunghezza 7 con polinomio generatore g(x) = 1 + x + x 3, si ha che n k = 3, quindi la dimensione di C è k = 4. Costruiamo la matrice di parità nel modo seguente: r 0 (x) = 1 mod (g(x)) = 1 100; r 1 (x) = x mod (g(x)) = x 010; 121
127 5.6 Sindrome e matrice di parità r 1 (x) = x 2 mod (g(x)) = x 2 001; r 1 (x) = x 3 mod (g(x)) = 1 + x 110; r 1 (x) = x 4 mod (g(x)) = x + x 2 011; r 1 (x) = x 5 mod (g(x)) = 1 + x + x 2 111; r 1 (x) = x 6 mod (g(x)) = 1 + x La matrice di parità è: H =
128 Capitolo 6 Campi finiti e codici 2 - BCH In questo capitolo è definita la nozione di campo finito. La trattazione non sarà rigorosa, ma mirata a dare quei concetti base utili ad un corso di Teoria dei Codici rivolto a studenti di ingegneria. Per maggiori approfondimenti si consiglia la visione di testi di Matematica Discreta e Campi Finiti. Quando si dice che un insieme numerico è un campo? Un campo è un insieme numerico C su cui sono definite due operazioni algebriche binarie di cui la prima, generalmente chiamata somma (+), risulta essere un gruppo commutativo e la seconda, chiamata prodotto ( ), risulta anch essa un gruppo commutativo sull insieme C {0}, cioè l insieme numerico C con l esclusione dell elemento neutro 0 rispetto alla somma. Esempi di insiemi numerici che sono dei campi possono essere quelli dei numeri reali e dei numeri complessi su cui sono definite le classiche operazioni di somma e prodotto. 123
129 6.1 Polinomio primitivo Nel capitolo precedente si è definita una corrispondenza tra le parole di K n e i polinomi di K[x] in modulo x n + 1, cioè i polinomi di K[x] n 1. È evidente che per tali polinomi vale la classica operazione di somma e rispetto a tale operazione si ha che K[x] n 1 è un gruppo abeliano con elemento neutro il polinomio nullo, l inverso di un qualunque polinomio g(x) è sè stesso. L operazione di somma di due polinomi di K[x] n 1 è equivalente all operazione di somma definita precedentemente in K n come si vede nell esempio seguente. Esempio 1 Siano in K 4 le due parole v = 0101 e w = 0111 corrispondenti ai polinomi v(x) = x + x 3 e w(x) = x + x 2 + x 3, allora si ha che: equivalentemente, v + w = = 0010, v(x) + w(x) = x 2. Tale polinomio somma in K 4 corrisponde alla parola Polinomio primitivo Un polinomio g(x) si dice irriducibile se esso è divisibile solo per 1 e per se stesso, in caso contrario è detto riducibile. Nell esempio seguente sono elencati una serie di polinomi che sono sia riducibili che irriducibili. 124
130 6.1 Polinomio primitivo Esempio 2 1. x è irriducibile. 2. x + 1 è irriducibile. 3. x 2 è evidentemente riducibile. 4. x è riducibile in quanto si può esprimere come (x + 1) x 2 +x+1 è irriducibile in quanto non si può esprimere come prodotto di due polinomi di primo grado. 6. x 3 +x+1 è irriducibile in quanto non si può esprimere come prodotto di un polinomio di primo grado e un polinomio di secondo grado. 7. x 4 + x + 1 è irriducibile. 8. x è riducibile in quanto può essere scritto come (x 2 + 1) 2. Diamo adesso una definizione che assume una fondamentale importanza nella definizione dei campi finiti. Un polinomio irriducibile di grado n > 1 è detto primitivo se esso non divide tutti i polinomi del tipo x m + 1 con m < 2 n 1 e divide il polinomio x m + 1 con m = 2 n 1. Esempio 3 Consideriamo il polinomio h(x) = 1 + x + x 2, n = 2, esso è irriducibile e m = = 3. Se si considerano i polinomi del tipo x m + 1, con m < 3, allora si ha che essi non sono divisibili per h(x), mentre è divisibile x
131 6.1 Polinomio primitivo Quindi h(x) è un polinomio primitivo. Esempio 4 Consideriamo il polinomio irriducibile h(x) = x 3 +x+1 e m = = 7. Tutti i polinomi x m + 1 con m < 7 non sono divisibili per h(x). Verifichiamo se esso divide il polinomio x 7 + 1: Quindi h(x) è un polinomio irriducibile e primitivo. 126
132 6.2 Campi finiti di Galois Esempio 5 Sia il polinomio h(x) = 1 + x + x 2 + x 3 + x 4, con m = = 15, esso, se primitivo, non divide tutti i polinomi x m + 1 con m < 15, ma poichè: x = (1 + x)(1 + x + x 2 + x 3 + x 4 ), allora h(x) divide x ed esso non è un polinomio primitivo. 6.2 Campi finiti di Galois Si considerino i polinomi di K[x] in modulo x n + 1 e definiamo in essi la classica operazione di prodotto tra polinomi, cioè se f(x) e g(x) sono due polinomi arbitrari non nulli di K[x] allora il loro prodotto è: f(x) g(x) mod x n + 1 e deve appartenere a K[x] n 1 {0}, cioè dati due polinomi f(x) e g(x) non nulli, il loro polinomio prodotto deve essere anch esso non nullo e appartenere a K[x] n 1 {0}. L esempio seguente mostrerà che il prodotto definito precedentemente non rispetta sempre tale proprietà. Esempio 6 Proviamo ad utilizzare l operazione di moltiplicazione sui polinomi in modulo 1 + x 4 cioè sui polinomi di K[x] 3 equivalenti alle parole di K 4. Sia la parola v = 0101 corrispondente al polinomio v(x) = x + x 3 e consideriamo il prodotto v(x) v(x): 127
133 6.2 Campi finiti di Galois (x + x 3 ) 2 = x 2 + x 6. Consideriamo adesso tale polinomio in modulo x cioè: quindi, (x + x 3 ) 2 = (x 2 + x 6 )mod(x 4 + 1) = 0. Il problema presentato nell esempio 7 è legato al fatto che 1 + x 4 non è irriducibile e tutti i polinomi riducibili divisibili per 1+x 4 sono equivalenti in modulo al polinomio nullo, quindi alla parola nulla. In base a quest ultima osservazione consideriamo i polinomi di K[x] in modulo h(x) con h(x) polinomio primitivo di grado n > 1. Se indichiamo il polinomio x con il simbolo β, allora è possibile usare la seguente scrittura: 128
134 6.2 Campi finiti di Galois β i = x i mod(h(x)). (6.1) Si noti che h(x), poichè è un polinomio primitivo, non divide i polinomi 1 + x m per m < 2 n 1 e quindi β m 1 per m < 2 n 1, ma divide 1 + x m, allora 1 = x m mod (h(x)) o equivalentemente β m = 1 se e solo se m = 2 n 1. Si definisce il seguente insieme: GF (2 n ) = { β i i = 0, 1,..., 2 n 2 } {0}. (6.2) L insieme GF (2 n ) contiene 2 n elementi distinti, infatti se supponiamo che due suoi elementi β i e β j, con i < j e 0 i, j 2 n 2 siano tali che β i = β j, allora si ha che β i = β j i β i, il che implica che β j i = 1, ciò accade solo se j i è un multiplo di 2 n 1, ma essendo 1 j i 2 n 2 < 2 n 1 questo è impossibile e si ha che β i β j. L insieme GF (2 n ) ha la struttura di campo con le operazioni di somma e prodotto, esso prende il nome di Campo di Galois. Ogni singolo elemento di GF (2 n ) si può mettere in corrispondenza con le parole di K n, come vedremo nell esempio seguente in cui viene mostrato come si costruisce il campo di Galois GF (2 4 ) in cui sono facilmente definite le operazioni di somma e prodotto. 129
135 6.2 Campi finiti di Galois Esempio 7 Dato il polinomio primitivo h(x) = 1 + x + x 4, costruiamo il campo GF (2 4 ) ricavando i suoi elementi come indicato nella tabella (6.1). parola polinomio campo x β 0010 x 2 β x 3 β x 4 = 1 + x β x 5 = x + x 2 β x 6 = x 2 + x 3 β x 7 = x 3 + x 4 = 1 + x + x 3 β x 8 = x + x 2 + x 4 = x + x x = 1 + x 2 β x 9 = x + x 3 β x 10 = x 2 + x 4 = x x β x 11 = x 3 + x 2 + x β x 12 = x 4 + x 3 + x 2 = x x 2 + x 3 β x 13 = x 2 + x + x 3 + x 4 = x 2 + x + x x = 1 + x 2 + x 3 β x 14 = x 3 + x 4 + x = x 3 + x x = x β 14 Tabella 6.1: GF (2 4 ) La somma tra gli elementi di GF(2 4 ) è estremamente semplice in quanto definita come somma algebrica degli elementi di GF (2 4 ). Calcoliamo il prodotto tra le due parole (0110) e (1101), corrispondenti alle parole β 5 e β 7 e ai polinomi x + x 2 e 1 + x + x 3, si ha che: 130
136 6.2 Campi finiti di Galois (0110) (1101) = β 5 β 7 = β 12 = Ciò è equivalente al prodotto dei polinomi corrispondenti in modulo h(x): (x + x 2 ) (1 + x + x 3 ) = x 5 x 7 = x 12 mod h(x). Un elemento α GF (2 n ) è detto primitivo se ogni sua potenza m, con 1 m < 2 n 1, è diversa da 1 (α m 1). Si definisce ordine di un elemento α 0 di GF (2 r ) il più piccolo intero positivo m per cui si ha che α m = 1. In particolare un elemento primitivo di GF (2 r ) ha ordine 2 n 1. Sia il polinomio p(x) K[x], si dice che p(x) ammette una radice α GF se p(α) = 0. Esempio 8 Sia il polinomio p(x) = 1 + x 3 + x 4, con h(x) = 1 + x + x 4 polinomio primitivo, vediamo se β è una sua soluzione in GF (2 4 ). p(β) = 1 + β 3 + β 4 = = 0101 = β , quindi β non è una radice di p(x). Consideriamo adesso l elemento β 7 GF e vediamo se esso è radice di p(x). Ricordando che β 15 = 1 si ha: p(β 7 ) = 1 + (β 7 ) 3 + (β 7 ) 4 = 1 + β 21 + β 28 = 1 + (β 15 β 6 ) + (β 15 β 13 ) = Quindi β 7 è soluzione di p(x). = =
137 6.3 Polinomio minimo 6.3 Polinomio minimo Se α è un arbitrario elemento di GF (2 n ), allora si definisce polinomio minimo di α il polinomio di minimo grado che ha come radice α. Il polinomio minimo di α è denotato mediante la simbologia m α (x), oppure, dato che α = β i, per un determinato i, con m i (x) e le due scritture sono equivalenti: m α (x) m i (x) Trovare il polinomio minimo di un elemento α di GF (2 n ) si riconduce a determinare una combinazione lineare non banale dei vettori {1, α, α 2,..., α n } che origini la parola nulla cioè in termini di elementi di GF (2 n ): a 0 + a 1 α + a 2 α 2 + a 3 α a r α n = 0. Tale combinazione lineare esiste poichè ogni elemento della combinazione lineare rappresentata nell equazione precedente corrisponde a una parola di K n in cui n + 1 elementi sono sempre linearmente dipendenti. Esempio 9 Cerchiamo di determinare il polinomio minimo dell elemento α = β 3 GF (2 4 ), dove si utilizza come polinomio primitivo h(x) = 1 + x + x 4. Consideriamo l equazione m α (x) = m 3 (x) = a a 1 α + a 2 α 2 + a 3 α 3 + a 4 α 4 = a 0 β 0 + a 1 β 3 + a 2 β 6 + a 3 β 9 + a 4 β 12 = = a a 1 x 3 + a 2 (x 2 + x 3 ) + a 3 (x + x 3 ) + a 4 (1 + x + x 2 + x 3 ). (6.3) Bisogna determinare i valori a 0, a 1,.., a 4 {0, 1}, vista la corrispondenza tra gli elementi di GF (2 4 ) e le parole di K 4 si ha: 132
138 6.3 Polinomio minimo 0000 = a 0 (1000) + a 1 (0001) + a 2 (0011) + a 3 (0101) + a 4 (1111) (6.4) Risolvendo per componenti rispetto a a 0, a 1, a 2, a 3, a 4 si determina: a 0 + a 4 = 0 a 3 + a 4 = 0 a 2 + a 4 = 0 a 1 + a 2 + a 3 + a 4 = 0 quindi: a 0 = a 4 a 3 = a 4 a 2 = a 4 a 1 = a 4 Per determinare una combinazione non banale è necessario porre a 4 = 1 e quindi si ha che a 0 = a 1 = a 2 = a 3 = a 4 = 1 e il polinomio minimo è: m 3 (x) = 1 + x + x 2 + x 3 + x 4. Il teorema seguente mostra le principali proprietà dei polinomi minimi. Teorema 33 Sia α 0 un elemento di GF (2 n ) e sia m α (x) il suo minimo polinomio si ha: 1. Il polinomio minimo m α (x) è irriducibile. 2. Se f(x) è un polinomio tale che f(α) = 0, allora m α (x) divide f(x). 133
139 6.3 Polinomio minimo 3. Il polinomio minimo m α (x) è unico. 4. Il polinomio minimo m α (x) divide x 2n Dim. 1. Supponiamo per assurdo che m α (x) è riducibile, in tal caso esso può essere scritto come m α (x) = q(x)p(x), poichè m α (α) = 0, allora si ha che q(α)p(α) = 0 e quindi q(α) = 0 oppure p(α) = 0, ma deg(q(x)) < deg(m α (x)) e deg(p(x)) < deg(m α (x)), questo è assurdo in quanto m α (x) è il polinomio di grado minore che ha α come radice. 2. Supponiamo che m α (x) non divide f(x), allora si può scrivere: f(x) = m α (x)q(x) + r(x), dove deg(r(x)) < deg(m α (x)), per ipotesi f(α) = 0 quindi: f(α) = m α (α)q(α) + r(α) = 0 q(α) + r(α) = r(α) = 0, ciò è assurdo perchè il polinomio r(x) ha α come radice ed ha grado inferiore di m α (x). 3. Se esistono due polinomi minimi m α(x) e m α (x), per la parte seconda del teorema si ha che m α (x) divide m α(x) e m α(x) divide m α (x), ciò vuol dire che m α (x) = m α(x) e il polinomio minimo è unico. 4. Poichè α è un elemento di GF (2 n ), allora esiste un i per cui α = β i ed inoltre: α 2n = (β i ) 2n = (β 2n 1 ) i + 1 = 1 i + 1 = = 0. Pertanto, m α (x) divide x 2n
140 6.3 Polinomio minimo La seguente proprietà permette di ottenere informazioni sulle radici dei polinomi minimi. Proprietà 9 Sia f(x) un polinomio in K allora si ha che: f(x) 2 = f(x 2 ). (6.5) Dim. La proprietà è dimostrata dalle seguenti eguaglianze: ( n ) 2 f(x) 2 = a i x i = i=0 n a i (x i ) 2 = i=0 n a i (x 2 ) i = f(x 2 ). i=0 La proprietà (9) permette di affermare che se α è una radice del polinomio f(x) cioè f(α) = 0, allora anche f(α 2 ) = 0, quindi α 2 è una radice di f(x), così come lo è anche α 4 e in generale α 2n 1. Teorema 34 Le radici del polinomio minimo m α (x) sono α, α 2, α 4,, α 2n 1, in particolare i polinomi m 1 (x) e m 3 (x) hanno n radici distinte e rispettivamente sono: {β, β 2, β 4,..., β 2n 1 }, (6.6) {β 3, β 6,..., β 3(2n 1) }. 135
141 6.3 Polinomio minimo Dim. La prima parte della proprietà segue dalla proprietà 9. Sia il polinomio minimo m 1 (x), consideriamo due soluzioni β 2i e β 2j della (6.6) e supponiamo per assurdo che β 2i = β 2j con i > j e 0 i, j n 1, allora si ha: β 2j β 2i 2 j = β 2j, equivalente all equazione: β 2i 2 j = 1. (6.7) La (6.7) vale se 2 i 2 j = k(2 n 1), cioè 2 i 2 j è un multiplo di 2 n 1, ma poichè i e j variano tra 0 e n 1, allora si ha: 2 i 2 j 2 n 1 1 < 2 n 1. Ciò mostra che 2 i 2 j non è un multiplo di 2 n 1 e tutte le n soluzioni di m 1 (x) sono tutte distinte. Con uguale procedura si dimostra che anche tutte le soluzioni di m 3 (x) sono tutte distinte. elemento di GF(2 4 ) polinomoio minimo 0 x x β, β 2, β 4, β x + x 4 β 3, β 6, β 9, β x + x 2 + x 3 + x 4 β 5, β x + x 2 β 7, β 11, β 13, β x 3 + x 4 Tabella 6.2: Radici e polinomi minimi in GF(2 4 ) 136
142 6.4 Codici di Hamming La precedente tabella individua le soluzioni di tutti i polinomi minimi di GF (2 4 ). 6.4 Codici di Hamming I codici di Hamming sono codici perfetti 1-correttori che hanno lunghezza l = 2 n 1 e le righe della loro matrice di parità hanno lunghezza n. In questa sezione è mostrato che le 2 n 1 righe della matrice di parità di un codice di Hamming possono essere rappresentate mediante gli elementi non nulli di un campo di Galois GF (2 n ), infatti essendo β un elemento primitivo di GF (2 n ) allora per definizione le sue potenze sono tutte distinte e individuano i 2 n 1 elementi non nulli di GF corrispondenti alle parole non nulle di K n. La matrice di parità di un codice di Hamming di lunghezza l = 2 n 1 può essere espressa nel seguente modo: H (2 n 1) r = 1 β β 2. β i. β 2n 2. (6.8) Esempio 10 Se n = 3, allora l = = 7. Definiamo GF (2 3 ) mediante il polinomio primitivo p(x) = 1 + x + x 3, l elemento β corrispondente al polinomio x e alla parola di K 3 010, ricordando poi che x i mod p(x), si ottiene: 137
143 6.4 Codici di Hamming H = 1 β β 2 β 3 β 4 β 5 β 6 H = Quanto detto precedentemente si può riassumere mediante il seguente teorema. Teorema 35 Un polinomio primitivo di grado n è il generatore polinomiale di un codice ciclico di Hamming di lunghezza 2 n 1. Sia C un codice ciclico di lunghezza n con polinomio generatore g(x) e supponiamo che α GF (2 n ) sia una radice di g(x), allora chiaramente si ha che g(α) = 0. Poichè tutte le parole c(x) di C possono essere scritte come c(x) = a(x) g(x) allora segue che c(α) = g(α) x(α) = 0. Per i teoremi 37 e 38 si ha che m α (x) è divisore di ogni parola c(x) appartenente a C ed inoltre è possibile scrivere g(x) come prodotto di polinomi minimi. Teorema 36 Sia g(x) il polinomio generatore di un codice ciclico di lunghezza n, allora g(x) sarà il prodotto dei minimi polinomi di α 1, α 2,..., α k GF (2 n ), se e solo se c(x) C c(α 1 ) = c(α 2 ) =... = c(α k ) = 0. (6.9) 138
144 6.4 Codici di Hamming Cerchiamo di individuare una tecnica utile all individuazione e alla correzione degli errori per i codici di Hamming. Se c(x) è la parola che è stata inviata e w(x) la parola ricevuta, allora l errore e(x) è definito nel seguente modo: w(x) = c(x) + e(x). Se il polinomio generatore g(x) = m α (x) è il polinomio primitivo, allora α è radice di tale polinomio (g(α) = 0) e si ha che: w(α) = c(α) + e(α) = 0 + e(α) = α j, dove α j è un elemento del campo GF. Pertanto il polinomio che rappresenta l errore è e(x) = x j e la correzione della parola ricevuta si può scrivere come: c(x) = w(x) + x j. Poichè si ha che: c(α) = w(α) + α j = α j + α j = 0. Quindi la parola ottenuta adoperando questa tecnica è una parola del codice. È importante notare che l aggiunta del polinomio x j a w(x) corrisponde in termini di parole di K n al cambio del valore della componente j-esima nella parola ricevuta. Esempio 11 Consideriamo il polinomio m 1 (x) = 1 + x + x 3 (primitivo con soluzione β) e il campo di Galois GF (2 3 ). Supponiamo di ricevere w(x) = 1 + x 2 + x 3 + x 6, allora: 139
145 6.5 Codici 2-BCH w(β) = 1 + β 2 + β 3 + β 6 = = 110 = β 3 L errore in questo caso è dato dal polinomio e(x) = x 3, quindi la correzione della parola ricevuta è: c(x) = w(x) + e(x) = 1 + x 2 + x 3 + x 6 + x 3 = 1 + x 2 + x Codici 2-BCH Una importante classe di codici correttori multipli è la classe dei codici BCH ( dai nomi di Bose, Chaudhuri e Hocquengham ). Essi sono definiti da due interi positivi r e t, con t < 2 r 1 1, e la loro lunghezza è n = 2 r 1, essi sono codici t-correttori di dimensione k n rt. In questa sessione sono considerati solo codici BCH 2-correttori di lunghezza 2 r 1. Essi hanno come polinomio generatore il polinomio g(x) = m β (x)m β 3(x), dove β appartiene a GF (2 r ) con r 4. Poichè n = 2 r 1 e g(x) divide 1 + x n, allora g(x) è il polinomio generatore di un codice ciclico. Si consideri un campo GF (2 r ) e il codice BCH avente come polinomio generatore g(x) = m 1 (x)m 3 (x), dove m 1 (x) e m 3 (x) sono due polinomi minimi aventi ciascuno r soluzioni distinte. La matrice di parità H di tali codici è definita nel modo seguente: 140
146 6.6 Schema di codifica per codici 2-BCH β 0 β 0 β β 3 β 2 β 6.. β i β 3i.. β 2r 2 β 3(2r 2) (6.10) Poichè β i è un elemento di GF (2 r ), esso rappresenta una parola di lunghezza r, quindi H è una matrice (2 r 1) (2r). Inoltre, poichè il deg(m 1 (x)) = r = deg(m 3 (x)) ne segue che il grado di g(x) = m 1 (x)m 3 (x) è n k = 2r, pertanto il codice ha dimensione k = n 2r = 2 r 1 2r. Si può dimostrare (ma non verrà fatto in tale trattazione) che la distanza di tali codici è d = Schema di codifica per codici 2-BCH Consideriamo che w è la parola ricevuta e w(x) il polinomio ad essa associato in una trasmissione che utilizza un codice 2-BCH. Ricordando che tale codice è un codice 2- correttore, allora la sindrome di w è: [ w H = w(β), w(β 3 ) ] [ = s 1, s 3 ] (6.11) dove s 1 e s 3 sono due parole di lunghezza r. Nella sequenza successiva è illustrato la tecnica che permette di individuare l algoritmo di decodifica dei codici 2-BCH. Se non vi sono errori nella trasmissione di w, cioè se w C, allora si ha che w H = 0 e quindi s 1 = s 3 = 0. Se si è nel caso in cui vi è solo un errore nella trasmissione della parola w, allora l errore utilizzato per correggere w(x) è e(x) = x i dato che tale errore, 141
147 6.6 Schema di codifica per codici 2-BCH se esso è nella i-esima componente di w, individua la i-esima riga di H nel calcolo della sindrome di w: [ w H = e H = ] [ β i, β 3i = s 1, s 3 ] (6.12) Tale caso si verifica se calcolando la sindrome si ha che s 3 1 = s 3. Se si è nel caso in cui vi sono due errori nella trasmissione di w ed essi sono nelle posizioni i-sima e j-esima, con i j, allora l errore utilizzato per correggere w(x) è e(x) = x i +x j. Infatti la sindrome di w, per il teorema 18 del capitolo 3, è la combinazione lineare delle righe i-esima e j-esima di H, cioè: [ w H = e H = ] [ β i + β j, β 3i + β 3j = s 1, s 3 ]. (6.13) Consideriamo il seguente sistema di equazioni risultante: β i + β j = s 1 β 3i + β 3j = s 3. Poichè: β 3i + β 3j = (β i + β j )(β 2i + β i+j + β 2j ), ed inoltre: s 2 1 = (β i + β j ) 2 = β 2i + β 2j, allora è possibile scrivere: s 3 = β 3i + β 3j = (β i + β j )(β 2i + β 2j + β i+j ) = s 1 (s β i+j ), 142
148 6.6 Schema di codifica per codici 2-BCH Da cui si ottiene: s 3 s 1 + s 2 1 = β i+j. È possibile pensare β i e β j come radici dell equazione di secondo grado: x 2 + (β i + β j )x + β i+j = 0. Tale polinomio prende il nome di Polinomio di individuazione di errore ed esso può essere anche scritto mediante s 1 e s 3, cioè: x 2 + s 1 x + ( s 3 s 1 + s 2 1) = 0 (6.14) Pertanto nel caso di un errore di peso due calcolata la sindrome nelle sue parti s 1 e s 3, mediante sostituzione si determinano le radici dell equazione (6.14) e si individua e(x). Se la tecnica mostrata precedentemente non permette di determinare e(x), cioè non si trovano soluzioni della (6.14), allora vuol dire che è accaduto un errore con peso maggiore di due ed è necessario richiedere la ritrasmissione. Esempio 12 Sia w la parola ricevuta la cui sindrome è composta da s 1 = 0111 = w(β) e da s 3 = 1010 = w(β 3 ). Dalla tabella 6.1 si deduce che s 1 = β 11 e s 3 = β 8, quindi: s 3 s 1 + s 2 1 = β8 β 11 + β22 = β 8 β 11 β 15 + β 7 β 15 = β 12 + β 7 = = 0010 = β 2, e polinomio di individuazione di errore è: x 2 + β 11 x + β 2 = 0, le cui soluzioni numeriche, determinate mediante sostituzione, sono β i = β 4 e β j = β
149 Capitolo 7 Codici Reed Solomon 7.1 Introduzione In questo capitolo sono presentati i codici BCH, ma prima di trattare tali codici consideriamo l insieme dei polinomi appartenenti a GF (2 r )[x], cioè i polinomi del tipo a 0 + a 1 x + a 2 x a m x m, (7.1) dove i coefficienti a i GF (2 r ) per 0 i m. È chiaro che il polinomio della (7.1), se ha grado minore di 2 r 1, può essere messo in corrispondenza biunivoca con la parola di lunghezza n = 2 r 1 a 0 a 1 a 2 a n. Esempio 1 Il polinomio f(x) = 1 + β 2 x + β 4 x 3 + x 5 a coefficienti in GF (2 3 ) è messo in corrispondenza biunivoca con la parola di lunghezza n = = 7 1β 2 0β
150 7.1 Introduzione Sia un α GF (2 r ), è evidente che il polinomio minimo di α in GF (2 r )[x] è m α = x + α. Se α 1, α 2, α 3,..., α t sono t elementi distinti, diversi da zero e appartenenti a GF (2 r ) e se C è un codice ciclico lineare di lunghezza n = 2 r 1, avente la proprietà che ogni sua parola c(x) C ha α i, per 1 i t, come radice, cioè c(α i ) = 0, allora, per quanto detto nei capitoli precedenti, si ha che il polinomio generatore di C è g(x) = (x + α 1 )(x + α 2 )...(x + α t ) e tale polinomio ha grado t = n k. Ogni parola di c(x) C, inoltre, può essere rappresentata mediante il prodotto c(x) = a(x)g(x) dove a(x) è un polinomio di grado minore di n deg(g(x)), si lascia poi al lettore la prova che g(x) divide il polinomio x n + 1. Teorema 37 Se il polinomio generatore g(x) di un codice ciclico lineare, di lunghezza n = 2 r 1, ha grado deg(g(x)) = n k, allora la dimensione di tale codice è k, le sue parole hanno caratteri in GF (2 r ), la sua cardinalità è C = 2 rk e la sua matrice generatrice è: g(x) xg(x) G =. (7.2)... x k 1 g(x) Dim. Tutte le implicazioni del teorema, ad eccezione della cardinalità del codice C, seguono dal teorema 30. La cardinalità di C è 2 rk perchè ogni parola del codice può essere espressa mediante una combinazione lineare delle k parole presenti in G nel seguente modo 145
151 7.1 Introduzione c(x) = a 0 g(x) + a 1 xg(x) + a 2 x 2 g(x) + + a k 1 x k 1 g(x), (7.3) e ogni a i GF (2 r ) per 0 i k 1, quindi si ha che C = 2 rk. Esempio 2 Sia il campo GF (2 3 ) generato dal polinomio primitivo 1 + x + x 3 consideriamo il codice ciclico di lunghezza n = 7 e polinomio generatore: g(x) = (β + x)(β + x 2 ) = β 3 + β 4 x + x 2. (7.4) Tale codice ha matrice generatrice: β 3 β β 3 β G = 0 0 β 3 β β 3 β β 3 β 4 1 Il seguente lemma è in questo corso ritenuto uno strumento tecnico che sarà utilizzato in seguito sia per ricavare la distanza dei codici BCH, che negli algoritmi di decodifica utilizzati da tali codici. Lemma 3 Se α 1, α 2, α 3,..., α t sono t elementi diversi da zero appartenenti a GF (2 r ), allora si ha che: 146
152 7.1 Introduzione 1 α 1 α α1 t 1 1 α 2 α α t 1 2 det = α t αt 2... αt t 1 1 j<i t (α i + α j ). (7.5) Esempio 2 Sia il campo di Galois GF (2 4 ) generato dal polinomio generatore x 4 + x + 1, allora la seguente matrice ha determinante: 1 β 2 β 4 det 1 β 7 β 14 = (β2 + β 7 )(β 2 + β 10 )(β 7 + β 10 ) = β 12 β 4 β 6 = β 7 1 β 10 β 5 Il seguente teorema permette di individuare un importante disuguaglianza tra la distanza di un codice BCH e il numero delle radici del polinomio generatore. Teorema 38 Se g(x) = (β m+1 + x)(β m+2 + x)(β m+3 + x)... (β m+δ 1 + x), con β i GF (2 r ), m + 1 i m + δ 1, è il polinomio generatore di un codice BCH di lunghezza n = 2 r 1, allora si ha che d δ Dim. La matrice di parità per tale codice è: 147
153 7.1 Introduzione β m+1 β m+2... β m+δ 1 H = β (m+1)2 β (m+2)2... β (m+δ 1)2, (7.6) β (m+1)n 1 β (m+2)n 1... β (m+δ 1)n 1 dove la matrice di parità H è una matrice n (δ 1). Per provare il teorema è necessario provare che comunque si determinano δ 1 righe in H esse sono linearmente indipendenti. Si determinino in H δ 1 righe arbitrarie, esse permettono di determinare una matrice quadrata A di dimensione (δ 1) (δ 1) (β m+1 ) j 1 (β m+2 ) j 1... (β m+δ 1 ) j 1 (β m+1 ) j 2 (β m+2 ) j 2... (β m+δ 1 ) j 2 A =. (7.7) (β m+1 ) j δ 1 (β m+2 ) j δ 1... (β m+δ 1 ) j δ 1 Se si calcola il determinante di A e si tengono conto delle proprietà dei determinanti, si ha che il determinante di A è uguale al determinante della matrice B moltiplicato per la quantità (β m+1 ) j 1+j j δ 1, dove B è ottenuta da A dividendo le sue righe rispettivamente per le quantità (β m+1 ) j 1, (β m+1 ) j δ 1. 1 β j 1 (β j 1 ) 2... (β j 1 ) δ 2 (β m+1 ) j 1+j j δ 1 1 β j 2 (β j 2 ) 2... (β j 2 ) δ 2 det. (7.8) β j δ 1 (β j δ 1 ) 2... (β j δ 1 ) δ 2 148
154 7.2 Codici Reed Solomon Si ha che il determinante di A è uguale a (β m+1 ) j 1+j j δ 1 (β j i + βj k ) ed è certamente diverso da zero, infatti (β m+1 ) j 1+j j δ 1 e B sono rispettivamente diversi da zero, il primo perchè è un elemento diverso da zero di GF (2 r ), mentre il secondo per il lemma 3 perchè gli elementi β j, con m + 1 j m + δ 1 sono a due a due distinti e diversi da zero, quindi d δ. 7.2 Codici Reed Solomon I codici BCH definiti dal teorema 38 individuano i codici di Reed - Solomon indicati anche con la simbologia RS(2 r, δ) e per tali codici vale il seguente teorema utile a definire i parametri n, k e d. Teorema 39 Se C è un codice di Reed-Solomon RS(2 r, δ), allora si ha che: 1. n = 2 r 1 2. k = 2 r δ 3. d = δ 4. C = 2 rk 149
155 7.2 Codici Reed Solomon Dim. 1. La dimostrazione è banale. 2. Il grado di g(x) è n k = δ 1, quindi segue che k = 2 r δ. 3. Per il teorema 38 si ha che d δ, ma per il teorema del limite di Singleton si ha che d 1 n k, sostituendo i valori di n e k in tale disuguaglianza si ha che d δ e quindi d = δ. 4. La dimostrazione è banale. Poichè d = δ si ha che n k = δ 1 = d 1 e ciò vuol dire che i codici Reed-Solomon sono dei codici MDS. La problematica legata alla rappresentazione delle parole di un codice RS(2 r, δ) all interno di una struttura hardware che utilizza simbologie binarie impone una nuova rappresentazione di tali parole con parole binarie equivalenti. Tale rappresentazione binaria può essere ottenuta sostituendo i caratteri appartenenti a GF (2 r ) nelle parole del codice RS(2 r, δ) con corrispondenti parole binarie di lunghezza r, quindi una parola di lunghezza 2 r 1 del codice RS(2 r, δ), dopo tale sostituzione avrà lunghezza r(2 r 1). Esempio 2 Sia il campo GF (2 2 ) generato dal polinomio primitivo h(x) = 1 + x + x 2, tale campo ha quattro parole la cui rappresentazione binaria è GF (2 2 ) = {0 = 00; 1 = 10; β = 01; β 2 = 11}. (7.9) 150
156 7.2 Codici Reed Solomon β β0 β 2 β β 2 0 1β β ββ β1 β β β 0β 2 β β βββ ββ β 2 1β β 2 β 10β β 2 01β β 2 β0β ββ 2 β 2 β 2 β β 2 β 2 1ββ Tabella 7.1: Parole binarie di un codice RS(4, 2) 151
157 7.2 Codici Reed Solomon Sia g(x) = β + x il polinomio minimo che genera il codice RS(4, 2) avente lunghezza n = 3, dimensione k = 2 e distanza d = 2, inoltre C = 16. La matrice generatrice di tale codice è G = β β 1 La tabella 7.1 da una rappresentazione delle parole di RS(4, 2). In essa nella prima colonna sono rappresentate tutte le possibili combinazioni lineari delle righe di G, nella seconda colonna le parole di RS(4, 2) sono espresse mediante l alfabeto individuato dagli elementi di GF (2 2 ) e nella terza colonna le parole sono espresse mediante l alfabeto binario. In quest ultima colonna gli elementi di GF (2 2 ) sono sono stati sostituiti da parole binarie di lunghezza due secondo le corrispondenze in GF (2 2 ) (7.9). Consideriamo adesso in un codice RS(2 r, δ) tutte le sue parole che hanno gli ultimi s caratteri uguali a zero. Una qualunque combinazione lineare di queste parole deve generare una parola avente gli ultimi s caratteri uguali a zero, allora è possibile eliminare in tali parole gli ultimi s caratteri ottenendo così un sotto codice C(s) di RS(2 r, δ), detto codice s-ridotto, avente lunghezza n = 2 r 1 s. Dalla tabella 7.1 si può vedere che le uniche parole del codice RS(4, 2) che hanno l ultimo carattere uguale a zero sono {000; β10; β 2 β0; 1β 2 0}, da esse si ricava il codice 1-ridotto: C(1) = {00; β1; β 2 β; 1β 2 }. Teorema 40 Sia un codice RS(2 r, δ) e sia C(s) un suo codice s-ridotto avente parametri (n, k, d ), allora si ha che 1. La lunghezza n è 2 r 1 s; 152
158 7.3 Correzione di un codice RS(2 r, δ) 2. La matrice generatrice di C(s) è g(x) G xg(x) =... x k s 1 g(x) (7.10) 3. La dimensione k è 2 r δ s 4. La distanza d è δ 5. C(s) = 2 rk Dim. Per provare tale teorema è solo necessario provare che la distanza di C(s) è uguale a δ. È chiaro che essendo C(s) un sotto codice di RS(2 r, δ), allora si ha che d d = δ. Per il teorema 22 si ha che d 1 n k, utilizzando i valori di n e k, si ha che d n k + 1 = δ, quindi d = δ. Il teorema precedente permette di determinare un codice di minore lunghezza del codice RS(2 r, δ), che ha una dimensione minore, ma che mantiene la distanza di RS(2 r, δ), inoltre poichè d 1 = n k = δ 1, allora si ha che tale codice è anche un codice MDS. 7.3 Correzione di un codice RS(2 r, δ) Il problema dell algoritmo di correzione dei codici 2-BCH era legato all individuazione dei bits che erano stati alterati in trasmissione. Tale problema permetteva di 153
159 7.3 Correzione di un codice RS(2 r, δ) correggere la parola ricevuta modificando i bits alterati da 0 a 1 oppure da 1 a 0. Con i codici BCH non solo è necessario individuare la posizione dei caratteri alterati, ma è anche necessario determinare gli elementi di GF (2 r ) che devono essere sommati a tali caratteri per ottenere la correzione della parola. Nella correzione degli errori di un codice BCH si ha quindi la necessità non solo di individuare la posizione dell errore mediante una quantità detta localizzatore di errore, ma anche la grandezza necessaria per effettuare la correzione, ad esempio il localizzatore di errore che assume valore β i individua la posizione i + 1, mentre la grandezza β m è la quantità che bisogna aggiungere al carattere i + 1-esimo della parola ricevuta che non appartiene al codice Esempio 3 Sia il campo di Galois GF (2 3 ) avente polinomio primitivo 1+x+x 3 e sia v(x) = β 3 β 4 β la parola inviata e w(x) = β 3 β 4 β È evidente che è stato alterato il terzo carattere della parola v(x) cioè il localizzatore di errore è β 2, mentre la quantità che bisogna aggiungere al terzo carattere è la grandezza β 4 = β 0 + β 5 quindi la parola errore che deve essere sommata a w(x) è e(x) = 00β Sia un codice Reed-Solomon RS(2 r, δ), poichè ha distanza d = δ esso è un codice t = δ 1 correttore. Sia w(x) una parola ricevuta non appartenente al codice e 2 siano a 1 a 2... a e i localizzatori di errore e b 1 b 2... b e le grandezze ad essi legati, dove e t è il numero di caratteri che sono stati alterati in w(x), cioè poniamo a i = 0 per e + 1 i t. La sindrome di w(x) è s = s m+1 s m+2... s m+δ 1 dove s j = w(β j ), m + 1 j m + δ 1 e con β j radici del polinomio generatore g(x). Per quanto detto precedentemente otteniamo 154
160 7.3 Correzione di un codice RS(2 r, δ) w(β j ) = v(β j ) + e(β j ) = e(β j ) = i (b i a j i ), (7.11) un sistema non lineare avente 2e incognite e δ 1 equazioni. Tale sistema essendo non lineare è di difficile soluzione. Cerchiamo di risolvere il problema individuando un polinomio che permette di individuare i localizzatori di errore. Tale polinomio sarà del tipo: σ A (x) = (a 1 + x)(a 2 + x)... (a e + x), (7.12) che può anche essere scritto nel seguente modo σ A (x) = σ 0 + σ 1 x σ e 1 x e 1 + x e. (7.13) È possibile moltiplicare ambo i membri del polinomio (7.13) per le quantità b i a j i, con 1 i e, si ottengono le seguenti equazioni: b i a j i σ A(x) = σ 0 b i a j i + σ 1b i a j i x σ e 1b i a j i xe 1 + b i a j i xe. (7.14) Se in σ A si pone x = a i, allora si ha che σ(a i ) = 0, per 1 i e, e dall equazione (7.14) si ha che 0 = σ 0 b i a j i + σ 1b i a j+1 i σ e 1 b i a j+e 1 i + b i a j+e i. (7.15) Sommando le (7.15) rispetto a i si ottiene 155
161 7.3 Correzione di un codice RS(2 r, δ) t 0 = σ 0 b i a j i + σ 1 i=1 t i=1 b i a j+1 i σ e 1 t i=1 b i a j+e 1 i + t i=1 b i a j+e i ; 0 = σ 0 s j + σ 1 s j σ e 1 s j+e 1 + s j+e ; s j+e = σ 0 s j + σ 1 s j σ e 1 s j+e 1. (7.16) L ultima equazione delle (7.16) definisce, per m + 1 j m + e, un sistema di equazioni lineari nell incognite σ i, con 1 i e 1, che si può rappresentare in forma matriciale nel seguente modo: s m+1 s m+2... s m+e s m+2 s m+3... s m+e s m+e s m+e+1... s m+2e σ 0 σ 1. σ e 1 = s m+e+1 s m+2+e. s m+2e. (7.17) Tale sistema è un sistema di e equazioni in e incognite e la sua matrice incompleta può essere scritta nel seguente modo: a 1... a e b 1 a m a M = a a 2. b 2 a m a e 1 1 e ,... 1 a e... a e b e a m+1 e a e a e 1 e }{{} e }{{} 0,a i a j,i j }{{} 0, 0,det 0 (a i +a j ) tale matrice ha determinante diverso da zero, quindi per il teorema di Cramer si ha che esiste un unica soluzione σ 0, σ 1,..., σ e 1 del sistema (7.17), tale soluzione 156
162 7.3 Correzione di un codice RS(2 r, δ) permette di individuare il polinomio (7.13) e quindi i localizzatori ā 1, ā 2,..., ā e. Il sistema (7.11) adesso è un sistema di equazioni lineari nelle incognite b 1 b 2... b e come è rappresentato sotto. ā m+1 1 ā m+1 ā m+2 1 ā m+2. ā m+e 1 ā m+e 2... ā m+1 e b 1 s m ā m+2 e b 2 s m+2 = ā m+e b e s m+e } {{ } M e Tale sistema è un sistema che ha e equazioni e e incognite e, per il lemma 3, si ha che il determinante della sua matrice incompleta è diverso da zero, quindi per il teorema di Cramer si ha che tale sistema ammette un unica soluzione b 1, b 2,..., b e individuata dalle grandezze legate ai localizzatori ā 1, ā 2,..., ā e. I localizzatori e le grandezze determinate permettono di correggere la parola ricevuta w(x). 157
163 7.3 Correzione di un codice RS(2 r, δ) PUBBLICATO IN PROPRIO PRESSO IL DIPARTIMENTO DI MA- TEMATICA E INFORMATICA, FACOLTA DI INGEGNERIA, UNI- VERSITA DI CATANIA, IL 06/02/
164 Indice analitico alfabeto, 1 Algoritmo di Huffman, 15 BCH, 140 BCH 2-correttori, 140 bits di parità, 64 Campi di Galois, 127 Campo di Galois, 129 capacità del canale, 26 caratteri, 1 CMLD, 39 codice, 2 codice s-ridotto, 152 codice ciclico, 109, 113 codice di Golay esteso, 94 codice di Hamming, 91 codice equivalente, 64 codice esteso, 86 codice istantaneo, 5 codice lineare, 47 codice ortogonale, 49 codice ottimo, 13 codice perfetto, 89 codice sistematico, 64 codice univocamente decifrabile, 4 codici 2-BCH, 141 codici di Hamming, 137 codici MDS, 84, 150 codici Reed Solomon, 149 colonna leading, 51 coset, 66 coset leader, 70 dimensione, 50 distanza, 30, 31, 37, 48 distanza di Hamming, 37 disuguaglianza triangolare, 37 efficienza del canale, 28 entropia condizionata, 25 entropia congiunta, 24 errore, 35, 41, 42 errore polinomiale, 120 funzione di assegnazione, 2 funzione entropia, 19 generatori,
165 INDICE ANALITICO grandezza, 154 IMLD, 39 leading, 51 Limite di Gilbert-Varshamov, 83 Limite di Hamming, 77 Limite di Singleton, 79 shift ciclico, 109 sindrome, 71 sindrome polinomiale, 120 sorgente di un codice, 1 teorema di Kraft, 6 teorema di McMillan, 10 localizzatore di errore, 154 lunghezza media, 2 matrice di parità, 54 matrice generatrice, 53, 117 MLD, 37 ordine di un elemento, 131 peso, 35 Polinomio di individuazione di errore, 143 polinomio generatore, 115 polinomio irriducibile, 124 polinomio minimo, 132, 135 polinomio primitivo, 125, 126 proprietà del prefisso, 5 radice, 131 ridotta parzialmente, 51 ridotta totalmente, 53 schema di codifica, 2 SDA,
1) Hamming bound, coset, codici equivalenti
Argomenti della Lezione ) Hamming bound, coset, codici equivalenti 2) Esercizi sui codici lineari a blocchi Osservazione () Per effettuare la decodifica a rivelazione di errore si può seguire una delle
11. Misure con segno.
11. Misure con segno. 11.1. Misure con segno. Sia Ω un insieme non vuoto e sia A una σ-algebra in Ω. Definizione 11.1.1. (Misura con segno). Si chiama misura con segno su A ogni funzione ϕ : A R verificante
Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.
Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo
LEZIONE 3. a + b + 2c + e = 1 b + d + g = 0 3b + f + 3g = 2. a b c d e f g
LEZIONE 3 3.. Matrici fortemente ridotte per righe. Nella precedente lezione abbiamo introdotto la nozione di soluzione di un sistema di equazioni lineari. In questa lezione ci poniamo il problema di descrivere
Teoria dell informazione
Corso di Laurea a Distanza in Ingegneria Elettrica Corso di Comunicazioni Elettriche Teoria dell informazione A.A. 2008-09 Alberto Perotti DELEN-DAUIN Modello di sistema di comunicazione Il modello di
02 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 0 - Logica delle dimostrazioni Anno Accademico 015/016
NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n
NOTE DI ALGEBRA LINEARE 2- MM 9 NOVEMBRE 2 Combinazioni lineari e generatori Sia K un campo e V uno spazio vettoriale su K Siano v,, v n vettori in V Definizione Un vettore v V si dice combinazione lineare
Insiemi numerici. Teoria in sintesi NUMERI NATURALI
Insiemi numerici Teoria in sintesi NUMERI NATURALI Una delle prime attività matematiche che viene esercitata è il contare gli elementi di un dato insieme. I numeri con cui si conta 0,,,. sono i numeri
04 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero Il teorema degli zeri è fondamentale per determinare se una funzione continua in un intervallo chiuso [ a ; b ] si annulla in almeno un punto interno
CODICI CORRETTORI E RIVELATORI DI ERRORE
CODICI CORRETTORI E RIVELATORI DI ERRORE Una problematica che va affrontata quando si tratta di codificare informazioni è la gestione degli errori. Infatti, per quanto la tecnologia sia avanzata, può sempre
SERIE NUMERICHE FAUSTO FERRARI
SERIE NUMERICHE FAUSTO FERRARI Materiale propedeutico alle lezioni di Analisi Matematica per i corsi di Laurea in Ingegneria Energetica e Meccanica N-Z dell Università di Bologna. Anno Accademico 2003/2004.
La codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
Appunti sui Codici di Reed Muller. Giovanni Barbarino
Appunti sui Codici di Reed Muller Giovanni Barbarino Capitolo 1 Codici di Reed-Muller I codici di Reed-Muller sono codici lineari su F q legati alle valutazioni dei polinomi sullo spazio affine. Per semplicità
TEORIA DELL INFORMAZIONE ED ENTROPIA FEDERICO MARINI
TEORIA DELL INFORMAZIONE ED ENTROPIA DI FEDERICO MARINI 1 OBIETTIVO DELLA TEORIA DELL INFORMAZIONE Dato un messaggio prodotto da una sorgente, l OBIETTIVO è capire come si deve rappresentare tale messaggio
LEZIONE 2. ( ) a 1 x 1 + a 2 x a n x n = b, ove a j, b R sono fissati.
LEZIONE 2 2 Sistemi di equazioni lineari Definizione 2 Un equazione lineare nelle n incognite x, x 2,, x n a coefficienti reali, è un equazione della forma (2 a x + a 2 x 2 + + a n x n = b, ove a j, b
Insiemi di numeri reali
Capitolo 1 1.1 Elementi di teoria degli insiemi Se S è una totalità di oggetti x, si dice che S è uno spazio avente gli elementi x. Se si considerano alcuni elementi di S si dice che essi costituiscono
Precorso di Matematica
UNIVERSITÀ DEGLI STUDI ROMA TRE FACOLTA DI ARCHITETTURA Precorso di Matematica Anna Scaramuzza Anno Accademico 2005-2006 4-10 Ottobre 2005 INDICE 1. ALGEBRA................................. 3 1.1 Equazioni
LEZIONE 12. v = α 1 v α n v n =
LEZIONE 12 12.1. Combinazioni lineari. Definizione 12.1.1. Sia V uno spazio vettoriale su k = R, C e v 1,..., v n V vettori fissati. Un vettore v V si dice combinazione lineare di v 1,..., v n se esistono
0.1 Spazi Euclidei in generale
0.1. SPAZI EUCLIDEI IN GENERALE 1 0.1 Spazi Euclidei in generale Sia V uno spazio vettoriale definito su R. Diremo, estendendo una definizione data in precedenza, che V è uno spazio vettoriale euclideo
Parte Seconda. Prova di selezione culturale
Parte Seconda Prova di selezione culturale TEORIA DEGLI INSIEMI MATEMATICA ARITMETICA Insieme = gruppo di elementi di cui si può stabilire inequivocabilmente almeno una caratteristica in comune. Esempi:
Equazioni lineari con due o più incognite
Equazioni lineari con due o più incognite Siano date le uguaglianze: k 0; x + y = 6; 3a + b c = 8. La prima ha un termine incognito rappresentato dal simbolo letterale k; la seconda ha due termini incogniti
04 - Numeri Complessi
Università degli Studi di Palermo Facoltà di Economia CdS Statistica per l Analisi dei Dati Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2013/2014 M. Tumminello, V. Lacagnina e
Esistenza ed unicità per equazioni differenziali
Esistenza ed unicità per equazioni differenziali Per concludere queste lezioni sulle equazioni differenziali vogliamo dimostrare il teorema esistenza ed unicità per il problema di Cauchy. Faremo la dimostrazione
NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE
NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE ROBERTO GIAMBÒ 1. DEFINIZIONI E PRIME PROPRIETÀ In queste note saranno presentate alcune proprietà principali delle funzioni convesse di una variabile
Limiti di successioni
Capitolo 5 Limiti di successioni 5.1 Successioni Quando l insieme di definizione di una funzione coincide con l insieme N costituito dagli infiniti numeri naturali 1, 2, 3,... talvolta si considera anche
non solo otteniamo il valore cercato per la validità della (1.4), ma anche che tale valore non dipende da
NOTE INTEGRATIVE PER IL CORSO DI ANALISI MATEMATICA 2 ANNO ACCADEMICO 2012/13 NOTE SULLA CONTINUITÀ UNIFORME D.BARTOLUCCI, D.GUIDO Sia f(x) = x 3, x [ 1, 1]. Si ha 1. La continuità uniforme x 3 y 3 = x
8. Completamento di uno spazio di misura.
8. Completamento di uno spazio di misura. 8.1. Spazi di misura. Spazi di misura completi. Definizione 8.1.1. (Spazio misurabile). Si chiama spazio misurabile ogni coppia ordinata (Ω, A), dove Ω è un insieme
Appunti di matematica per le Scienze Sociali Parte 1
Appunti di matematica per le Scienze Sociali Parte 1 1 Equazioni 1.1 Definizioni preliminari 1.1.1 Monomi Si definisce monomio ogni prodotto indicato di fattori qualsiasi, cioè uguali o diseguali, numerici
Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n
Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica
Alcune nozioni di calcolo differenziale
Alcune nozioni di calcolo differenziale G. Mastroeni, M. Pappalardo 1 Limiti per funzioni di piu variabili Supporremo noti i principali concetti algebrici e topologici relativi alla struttura dello spazio
ANALISI 1 - Teoremi e dimostrazioni vari
ANALISI 1 - Teoremi e dimostrazioni vari Sommario Proprietà dell estremo superiore per R... 2 Definitivamente... 2 Successioni convergenti... 2 Successioni monotone... 2 Teorema di esistenza del limite
Frazioni algebriche. Osserviamo che un espressione di questo tipo si ottiene talvolta quando ci si propone di ottenere il quoziente di due monomi.
Frazioni algebriche 14 14.1 Definizione di frazione algebrica Diamo la seguente definizione: Definizione 14.1. Si definisce frazione algebrica un espressione del tipo A B polinomi. dove A e B sono Osserviamo
Università degli Studi di Palermo Facoltà di Economia. Dipartimento di Scienze Economiche, Aziendali e Statistiche. Appunti del corso di Matematica
Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 03 - I Numeri Reali Anno Accademico 2015/2016 M. Tumminello,
a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre gli zeri di f e studiarne il segno.
1 ESERCIZI CON SOLUZIONE DETTAGLIATA Esercizio 1. Si consideri la funzione f(x) = e x 3e x +. a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre
Pagine di Algebra lineare. di premessa al testo Pagine di Geometria di Sara Dragotti. Parte terza: SISTEMI LINEARI
Pagine di Algebra lineare di premessa al testo Pagine di Geometria di Sara Dragotti Parte terza: SISTEMI LINEARI 1. Definizioni Dato un campo K ed m 1 polinomi su K in n indeterminate di grado non superiore
SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n
SPAZI E SOTTOSPAZI 1 SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n Spazi di matrici. Spazi di polinomi. Generatori, dipendenza e indipendenza lineare, basi e dimensione. Intersezione e somma di sottospazi,
Condizione di allineamento di tre punti
LA RETTA L equazione lineare in x e y L equazione: 0 con,,, e non contemporaneamente nulli, si dice equazione lineare nelle due variabili e. Ogni coppia ; tale che: 0 si dice soluzione dell equazione.
M.P. Cavaliere ELEMENTI DI MATEMATICA E LOGICA MATEMATICA DISCRETA INSIEMI
M.P. Cavaliere ELEMENTI DI MATEMATICA E LOGICA MATEMATICA DISCRETA INSIEMI Assumiamo come primitivo il concetto di insieme e quello di appartenenza di un elemento a un insieme. La notazione x A indica
1 Successioni di funzioni
Analisi Matematica 2 Successioni di funzioni CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 6 SERIE DI POTENZE Supponiamo di associare ad ogni n N (rispettivamente ad ogni n p, per qualche
ESAME DI MATEMATICA I parte Vicenza, 05/06/2017. x log 2 x?
A. Peretti Svolgimento dei temi d esame di Matematica A.A. 6/7 ESAME DI MATEMATICA I parte Vicenza, 5/6/7 log? Domanda. Per quali valori di è definita l espressione L espressione è definita se l argomento
Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi
Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un
Equazioni di primo grado
Equazioni di primo grado 15 15.1 Identità ed equazioni Analizziamo le seguenti proposizioni: a ) cinque è uguale alla differenza tra sette e due ; b ) la somma di quattro e due è uguale a otto ; c ) il
1. Funzioni implicite
1. Funzioni implicite 1.1 Il caso scalare Sia X R 2 e sia f : X R. Una funzione y : (a, b) R si dice definita implicitamente dall equazione f(x, y) = 0 in (a, b) quando: 1. (x, y(x)) X x (a, b); 2. f(x,
LEZIONE 4. { x + y + z = 1 x y + 2z = 3
LEZIONE 4 4.. Operazioni elementari di riga. Abbiamo visto, nella precedente lezione, quanto sia semplice risolvere sistemi di equazioni lineari aventi matrice incompleta fortemente ridotta per righe.
TEN Radici quadrate modulo p e modulo p k. Radici quadrate modulo p, con p > 2.
TEN 2008. Radici quadrate modulo p e modulo p k. Radici quadrate modulo p, con p > 2. Lemma 1. Sia n Z. Sia p > 2 un numero primo. (a) n è un quadrato modulo p se e solo se n p 1 2 1 mod p; (b) Sia n 0
Introduzione ai grafi
TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale
1 Funzioni reali di una variabile reale
1 Funzioni reali di una variabile reale Qualche definizione e qualche esempio che risulteranno utili più avanti Durante tutto questo corso studieremo funzioni reali di una variabile reale, cioè Si ha f
Geometria analitica del piano pag 12 Adolfo Scimone
Geometria analitica del piano pag 12 Adolfo Scimone Fasci di rette Siano r e r' due rette distinte di equazioni r: ax + by + c r': a' x + b' y + c' Consideriamo la retta combinazione lineare delle due
Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara
Sistemi lineari Lorenzo Pareschi Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara http://utenti.unife.it/lorenzo.pareschi/ [email protected] Lorenzo Pareschi (Univ. Ferrara)
La forma normale di Schur
La forma normale di Schur Dario A Bini, Università di Pisa 30 ottobre 2013 Sommario Questo modulo didattico contiene risultati relativi alla forma normale di Schur, alle sue proprietà e alle sue applicazioni
CORSO DI ANALISI MATEMATICA 2 SOLUZIONI ESERCIZI PROPOSTI 18/03/2013
CORSO DI ANALISI MATEMATICA SOLUZIONI ESERCIZI PROPOSTI 8/03/03 D.BARTOLUCCI, D.GUIDO. La continuità uniforme I ESERCIZIO: Dimostrare che la funzione f(x) = x 3, x A = (, ] non è uniformemente continua
ESERCITAZIONE SUI PUNTI STAZIONARI DI FUNZIONI LIBERE E SULLE FUNZIONI OMOGENEE
ESERCITAZIONE SUI PUNTI STAZIONARI DI FUNZIONI LIBERE E SULLE FUNZIONI OMOGENEE 1 Funzioni libere I punti stazionari di una funzione libera di più variabili si ottengono risolvendo il sistema di equazioni
04 - Numeri Complessi
Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2015/2016 M. Tumminello,
10 - Applicazioni del calcolo differenziale
Università degli Studi di Palermo Facoltà di Economia CdS Sviuppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 10 - Applicazioni del calcolo differenziale Anno Accademico 2015/2016
A Analisi Matematica 1 (Corso di Laurea in Informatica e Bioinformatica) Simulazione compito d esame
COGNOME NOME Matr. A Analisi Matematica (Corso di Laurea in Informatica e Bioinformatica) Firma dello studente Tempo: 3 ore. Prima parte: test a risposta multipla. Una ed una sola delle 4 affermazioni
Università degli Studi di Palermo Facoltà di Medicina e Chirurgia Anno Accademico 2011/12. Corso di Fisica(0) per il recupero dell OFA
Università degli Studi di Palermo Facoltà di Medicina e Chirurgia Anno Accademico 2011/12 Corso di Fisica(0) per il recupero dell OFA Tutor: Dott. Stefano Panepinto Simbologia matematica Simbologia matematica
Disequazioni di secondo grado
Disequazioni di secondo grado. Disequazioni Definizione: una disequazione è una relazione di disuguaglianza tra due espressioni. Detti p() e g() due polinomi definiti in un insieme A, una disequazione
FUNZIONI ELEMENTARI, DISEQUAZIONI, NUMERI REALI, PRINCIPIO DI INDUZIONE Esercizi risolti
FUNZIONI ELEMENTARI, DISEQUAZIONI, NUMERI REALI, PRINCIPIO DI INDUZIONE Esercizi risolti Discutendo graficamente la disequazione x > 3 + x, verificare che l insieme delle soluzioni è un intervallo e trovarne
MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI. Anna TORRE
MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI Anna TORRE Dipartimento di Matematica, Università di Pavia, Via Ferrata 1, 27100, Pavia, Italy. E-mail: [email protected] 1 SOLUZIONI:
Prontuario degli argomenti di Algebra
Prontuario degli argomenti di Algebra NUMERI RELATIVI Un numero relativo è un numero preceduto da un segno + o - indicante la posizione rispetto ad un punto di riferimento a cui si associa il valore 0.
Rappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
Monomi L insieme dei monomi
Monomi 10 10.1 L insieme dei monomi Definizione 10.1. Un espressione letterale in cui numeri e lettere sono legati dalla sola moltiplicazione si chiama monomio. Esempio 10.1. L espressione nelle due variabili
1) Codici ciclici. 2) Esempi di codici ciclici. 3) Algoritmi di codifica e decodifica. 4) Circuiti di codifica
Argomenti della Lezione ) Codici ciclici 2) Esempi di codici ciclici 3) Algoritmi di codifica e decodifica 4) Circuiti di codifica Codici ciclici Un codice lineare a blocchi (n,k) è ciclico se e solo se
Sistemi di 1 grado in due incognite
Sistemi di 1 grado in due incognite Problema In un cortile ci sono polli e conigli: in totale le teste sono 7 e zampe 18. Quanti polli e quanti conigli ci sono nel cortile? Soluzione Indichiamo con e con
1 IL LINGUAGGIO MATEMATICO
1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti
FUNZIONI. y Y. Def. L insieme Y è detto codominio di f. Es. Siano X = R, Y = R e f : x y = 1 x associo il suo inverso). (ad un numero reale
FUNZIONI Siano X e Y due insiemi. Def. Una funzione f definita in X a valori in Y è una corrispondenza (una legge) che associa ad ogni elemento X al più un elemento in Y. X Y Def. L insieme Y è detto codominio
FUNZIONI. y Y. Def. L insieme Y è detto codominio di f. Es. Siano X = R, Y = R e f : x y = 1 x associo il suo inverso). (ad un numero reale
FUNZIONI Siano X e Y due insiemi. Def. Una funzione f definita in X a valori in Y è una corrispondenza (una legge) che associa ad ogni elemento X al piú un elemento in Y. X Y Def. L insieme Y è detto codominio
Precorsi di matematica
Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono
Corso di Laurea in Fisica. Geometria. a.a Canale 3 Prof. P. Piazza Magiche notazioni
Corso di Laurea in Fisica. Geometria. a.a. 23-4. Canale 3 Prof. P. Piazza Magiche notazioni Siano V e W due spazi vettoriali e sia T : V W un applicazione lineare. Fissiamo una base B per V ed una base
Frazioni e numeri decimali
Frazioni e numeri decimali Sappiamo che uno stesso numero razionale può essere rappresentato sia sotto forma di frazione (in infiniti modi tra loro equivalenti) che sotto forma di numero decimale. Precisiamo
LOGARITMI. Corso di laurea: BIOLOGIA Tutor: Floris Marta; Max Artizzu PRECORSI DI MATEMATICA. L uguaglianza: a x = b
Corso di laurea: BIOLOGIA Tutor: Floris Marta; Max Artizzu PRECORSI DI MATEMATICA LOGARITMI L uguaglianza: a x = b nella quale a e b rappresentano due numeri reali noti ed x un incognita, è un equazione
Argomento 2 IIparte Funzioni elementari e disequazioni
Argomento IIparte Funzioni elementari e disequazioni Applicazioni alla risoluzione di disequazioni Disequazioni di I grado Per la risoluzione delle disequazioni di primo grado per via algebrica, si veda
1) Probabilità di errore di trasmissione. 2) Capacità di canale. 3) Esempi di calcolo della capacità. 4) Disuguaglianza di Fano
Argomenti della Lezione 1) Probabilità di errore di trasmissione ) Capacità di canale 3) Esempi di calcolo della capacità 4) Disuguaglianza di Fano 5) Teorema inverso della codifica di canale 1 Probabilità
Alcune nozioni preliminari di teoria elementare di insiemi e funzioni
Alcune nozioni preliminari di teoria elementare di insiemi e funzioni Alberto Pinto Corso Propedeutico - METS A.A. 2013/2014 1 Insiemi 1.1 Generalità Diamo la definizione di insieme secondo Georg Cantor,
Rappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica
10.. Codici correttori d errore. Modulo TLC:TRASMISSIONI Codici correttori d errore
10.. Codici correttori d errore Codici correttori d errore 2 Obiettivi: correggere o rivelare errori nella trasmissione di sequenze numeriche (sequenze di simboli, usualmente binari) Correzione di errore
Cap. 2 - Rappresentazione in base 2 dei numeri interi
Cap. 2 - Rappresentazione in base 2 dei numeri interi 2.1 I NUMERI INTERI RELATIVI I numeri relativi sono numeri con il segno: essi possono essere quindi positivi e negativi. Si dividono in due categorie:
1.1 Coordinate sulla retta e nel piano; rette nel piano
1 Sistemi lineari 11 Coordinate sulla retta e nel piano; rette nel piano Coordinate sulla retta Scelti su una retta un primo punto O (origine) ed un diverso secondo punto U (unita ), l identificazione
Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di
DEFINIZIONE Espressione algebrica costituita dal prodotto tra una parte numerica (coefficiente) e una o più variabili e/o costanti (parte letterale). Variabili e costanti possono comparire elevate a potenza
ESERCIZI SUI PUNTI DI NON DERIVABILITÀ TRATTI DA TEMI D ESAME
ESERCIZI SUI PUNTI DI NON DERIVABILITÀ TRATTI DA TEMI D ESAME a cura di Michele Scaglia FUNZIONI DERIVABILI Sia f : domf R una funzione e sia 0 domf di accumulazione per domf Chiamiamo derivata prima di
Capitolo IV SPAZI VETTORIALI EUCLIDEI
Capitolo IV SPAZI VETTORIALI EUCLIDEI È ben noto che in VO 3 si possono considerare strutture più ricche di quella di spazio vettoriale; si pensi in particolare all operazioni di prodotto scalare di vettori.
Corso di Calcolo Numerico
Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Risoluzione di Equazioni Algebriche Le equazioni
Corso di Analisi Matematica I numeri reali
Corso di Analisi Matematica I numeri reali Laurea in Informatica e Comunicazione Digitale A.A. 2013/2014 Università di Bari ICD (Bari) Analisi Matematica 1 / 57 1 Insiemi e logica 2 Campi ordinati 3 Estremo
Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1
Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1 Esercizio 1.12 Per dimostrare che per ogni funzione esiste una formula in cui compaiono le variabili tale che la corrispondente
Introduciamo ora un altro campo, formato da un numero finito di elementi; il campo delle classi resto modulo n, con n numero primo.
Capitolo 3 Il campo Z n 31 Introduzione Introduciamo ora un altro campo, formato da un numero finito di elementi; il campo delle classi resto modulo n, con n numero primo 32 Le classi resto Definizione
CLASSE LIMITE DI UNA SUCCESSIONE DI NUMERI REALI C. MADERNA, G. MOLTENI, M. VIGNATI
CLASSE LIMITE DI UNA SUCCESSIONE DI NUMERI REALI C. MADERNA, G. MOLTENI, M. VIGNATI Consideriamo l insieme R = R {, + } ottenuto aggiungendo all insieme dei numeri reali i simboli e +. Introduciamo in
