SlideShare a Scribd company logo
1 of 10
Download to read offline
Codici di Reed-Solomon
Filippo Ragazzo
26 Novembre 2013
Sommario
Approfondimento per il corso di Reti di Calcolatori del Corso di
Laurea in Informatica, Ca' Foscari, A.A. 2013-2014.
1
Indice
1 Generalità 3
2 Campi di Galois 4
3 Codica (generalità) 6
4 Codica (esecuzione) 7
5 Decodica 7
6 Calcolo della sindrome 8
7 Implementazione 9
2
1 Generalità
Nel 1960 Irving Reed e Gus Solomon pubblicarono un articolo sul Journal of
the Society for Industrial and Applied Mathematics[3]. Tale articolo descri-
veva una nuova classe di codici a correzione d'errore che sono oggi conosciuti
come Codici di Reed-Solomon (R-S). Questi codici sono molto potenti e tro-
vano molte applicazioni, come nei sistemi di archiviazione di massa, nella
lettura di informazioni dai codici a barre e anche nelle trasmissioni spaziali.
I codici di Reed-Solomon sono codici ciclici non binari con simboli com-
posti di sequenze di m bit, ove m è un qualsiasi intero positivo maggiore o
uguale a 2. Codici R-S(n, k) su simboli di m bit esistono per ogni n e k tali
che
0  k  n  2m + 2
ove k è il numero di simboli del dato da codicare e n è il numero totale
di simboli di codice nel blocco codicato.
La convenzione più utilizzata è R-S(n, k) con
(n, k) = (2m − 1, 2m − 1 − 2t)
ove t rappresenta il numero massimo di errori correggibili del codice e
n − k = 2t è il numero di bit di parità.
Esempio: Un codice R-S spesso utilizzato è R-S(255, 223) con simboli di
8 bit. Ogni parola di codice ha dimensione 255 byte, dei quali 223 byte sono
di dati e 32 byte sono di parità. Dunque
n = 255, k = 223, 2t = 32 ⇒ t = 16
In questo caso si possono correggere no a 16 simboli errati, nella fattispecie
no a 16 byte con errore in qualsiasi punto della parola di codice.
Parleremo di errore sul simbolo quando accade che anche un solo bit che
compone il simbolo risulta errato. Dunque un codice R-S può correggere, nel
caso peggiore, no a t bit errati (ogni simbolo errato presenta un solo bit di
errore) e, nel caso migliore, no a t·m bit errati (se i t simboli sono totalmen-
te errati). Appare chiaro, dunque, che i codici R-S risultano particolarmente
ecaci nel correggere errori a raca (o burst).
3
In fase di decodica vedremo che gli algoritmi utilizzati permettono la
correzione di un massimo di t simboli errati e la correzione di un massimo di
2t cancellazioni.
In fase di decodica si possono vericare tre casi:
Se il numero di errori e cancellazioni è minore o uguale a 2t la parola di
codice verrà corretta.
Se il numero di errori e cancellazioni è maggiore a 2t il decoder rileverà
la presenza di errori, oppure vi sarà un errore di decodica nel caso in cui la
sequenza di errori abbia trasformato la codeword trasmessa in una codeword
dierente, ma valida.
2 Campi di Galois
Per comprendere i principi di codica e decodica dei codici non binari, come
quelli di Reed-Solomon, è necessario conoscere la teoria dei campi niti di
Galois.
Un campo di Galois K è in eetti un insieme nito di elementi sul quale
sono denite le operazioni di somma e prodotto che godono delle seguenti
proprietà:
• Associatività:
(a + b) + c = a + (b + c), ∀a, b, c ∈ K
(a ∗ b) ∗ c = a ∗ (b ∗ c), ∀a, b, c ∈ K
• Commutatività:
a + b = b + a, ∀a, b ∈ K
a ∗ b = b ∗ a, ∀a, b ∈ K
• Esistenza dell'elemento neutro:
∃0 ∈ K, a + 0 = 0 + a = a, ∀a ∈ K
∃1 ∈ K, a ∗ 1 = 1 ∗ a = a, ∀a ∈ K
• Esistenza dell'opposto:
∀a ∈ K, ∃(−a) ∈ K | a + (−a) = 0
∀a ∈ K, ∃a−1
∈ K | a ∗ a−1
= 1
4
• Distributività del prodotto rispetto alla somma:
a ∗ (b + c) = a ∗ b + a ∗ c, ∀a, b, c ∈ K
Per ogni numero primo p, esiste un campo di Galois che denoteremo
GF(p), che contiene p elementi. È possibile estendere GF(p) ad un campo
di pm
elementi: tale campo verrà detto un campo di estensione di GF(p) e
denotato con GF(pm
), con m intero positivo. Notare che GF(pm
) contiene
gli elementi di GF(p) come sottoinsieme.
Nella costruzione di un codice R-S vengono tipicamente utilizzati simboli
del campo di estensione GF(pm
), con p = 2.
Oltre agli elementi 0 e 1, che esistono per denizione, il campo GF(2m
)
contiene un elemento α, detto elemento primitivo, tale che
∀e ∈ GF(pm
), ∃k ≥ 0 | e = αk
In questo modo è possibile denire un insieme innito di elementi a par-
tire da { 0, 1, α } moltiplicando progressivamente l'ultimo elemento per α. Si
otterrà
F = { 0, 1, α, α2
, . . . , αj
, . . . } = { 0, α0
, α1
, α2
, . . . , αj
, . . . }
Per costruire un insieme nito di cardinalità 2m
chiuso rispetto alla mol-
tiplicazione è necessario imporre la seguente condizione di chiusura:
α2m−1
+ 1 = 0
o, equivalentemente
α2m−1
= 1 = α0
In questo modo ogni elemento del campo risultante da una potenza di
α  2m−1
sarà equivalente ad un elemento pari ad una potenza di α  2m−1
.
Ad esempio:
α2m+n
= α2m−1
∗ αn+1
= αn+1
e dunque avremo
F = { 0, 1, α, α2
, . . . , α2m−2
, α2m−1
, α2m
, . . . } =
= { 0, α0
, α1
, α2
, . . . , α2m−2
, α0
, α1
, . . . } =
= { 0, α0
, α1
, α2
, . . . , α2m−2
}
5
Le operazioni aritmetiche su GF(2m
) sono denite come segue:
L'addizione è equivalente all'OR esclusivo (XOR) eettuato bit-a-bit sulle
due m-ple che rappresentano gli addendi.
La sottrazione, per come è denito lo XOR, risulta analoga.
Il prodotto risulta leggermente più complesso: si utilizza la cosiddetta
index form, per la quale il risultato è dato dalla somma degli elementi presi
in rappresentazione logaritmica.
Tali operazioni aritmetiche sono fondamentali poiché gli algoritmi di co-
dica e decodica si basano su queste operazioni compiute sui simboli rap-
presentanti le parole di codice, visti come elementi di un opportuno campo
di Galois.
3 Codica (generalità)
Come abbiamo detto, la forma più utilizzata per i codici R-S è R-S(2m −
1, 2m−1−2t) ove n−k = 2t rappresenta il numero di simboli di ridondanza
e t è la capacità di correzione del codice.
Il polinomio generatore di un codice R-S di questo tipo è della forma
g(x) = g0 + g1x + g2x2
+ . . . + g2t−1x2t−1
+ x2t
Il grado del polinomio generatore è uguale al numero di simboli di ridon-
danza e questo è vero per tutti i codici BHC, dei quali i codici R-S sono una
sottoclasse. Dato che 2t è il grado del polinomio, esso ammetterà esattamen-
te 2t potenze successive di α che sono radici del polinomio. Indicheremo tali
radici con
α, α2
, ..., α2t
Notare che non è vincolante la scelta della radice α di partenza; è possi-
bile partire da una qualsiasi potenza di α.
Esempio: Consideriamo R-S(7, 3). Possiamo ottenere il polinomio genera-
tore nei termini delle sue n − k = 4 radici come segue:
g(x) = (x − α)(x − α2
)(x − α3
)(x − α4
) =
= (x2
− (α + α2
)x + α3
)(x2
− (α3
+ α4
)x + α7
) =
= (x2
− α4
x + α3
)(x2
− α6
x + α0
) =
= x4
− (α4
+ α6
)x3
+ (α3
+ α10
+ α0
)x2
− (α4
+ α9
)x + α3
=
= x4
− α3
x3
+ α0
x2
− α1
x + α3
6
che riscritto in ordine crescente di grado delle x e cambiando segno ai
termini negativi, risulta:
g(x) = α3
+ α1
x + α0
x2
+ α3
x3
+ x4
4 Codica (esecuzione)
Sia (d1, d2, . . . , dk) la dataword da codicare, con ogni di composto da m
bit, rappresentabile dunque da un elemento del campo GF(2m
). A questi k
simboli ordinati possiamo associare un polinomio della forma
d(x) = d0 + d1x + d2x2 + ... + dk−1xk−1
Il passo successivo è quello di ottenere una codeword rappresentata da
un polinomio c(x) di grado n − 1 divisibile per il polinomio generatore g(x)
denito precedentemente. Un metodo semplice per ottenere questo sarebbe
denire c(x) come c(x) = d(x) · g(x). Tale metodo, però, porta ad un codice
non sistematico, ragion per cui si considera come codeword
c(x) = x2t
d(x) + p(x)
con
p(x) = x2t
d(x) mod g(x)
Operando in questo modo il polinomio c(x) presenta come coecienti
dei termini di grado 0, ..., 2t i simboli di ridondanza e come coecienti dei
termini di grado maggiore di 2t i simboli dell'informazione da trasmettere.
Inoltre c(x) risulta divisibile per il polinomio generatore g(x), dunque
nel caso di errori di trasmissione che modichino i simboli della codeword,
il decoder potrà valutare la validità della stessa andando ad eseguire una
divisione per g(x). La presenza di un resto non nullo indicherà la sicura
presenza di un errore.
5 Decodica
Assumiamo che in fase di trasmissione siano stati introdotti degli errori sul-
la codeword inviata. Rappresentiamo polinomialmente il pattern d'errore in
questo modo:
e(x) = r(x) − c(x)
ove r(x) è la codeword ricevuta. In generale e(x) sarà del tipo
e(x) = e0 + e1x + e2x2
+ ... + en−1xn−1
7
con gli ei appartenenti al campo GF(2m
).
A dierenza dei codici binari, per i quali risulta suciente la sola posizione
del bit errato per procedere alla correzione mediante negazione del bit stesso,
nei codici non binari come i codici R-S risulta necessario conoscere non solo
la posizione del bit errato, ma anche il suo valore originario. Tale necessità
si traduce nel dover avere una condizione aggiuntiva per poter correggere la
codeword.
6 Calcolo della sindrome
In primo luogo è necessario rilevare la presenza di errori. Per fare ciò intro-
durremo il concetto di sindrome di una codeword, intendendo un vettore che
risulta nullo solo se non sono stati introdotti errori di trasmissione.
La sindrome S è composta da n − k simboli, { Si }(i=1,...,n−k). Dunque, ad
esempio, per un codice R-S(7, 3) ci sono 4 simboli in ogni vettore sindrome.
I loro valori possono essere calcolati a partire dal polinomio risultante dalla
ricezione r(x).
Per come è stato strutturato il codice, il calcolo degli elementi della sin-
drome sarà facilitato, infatti ogni codeword valida deve essere proporzionale
al polinomio generatore g(x). Essendo, dunque, α, α2
, ..., α2t
le radici di g(x),
il polinomio rappresentante una codeword valida deve avere le stesse radici.
I simboli della sindrome S associata alla codeword ricevuta r(x) si calco-
leranno come
Si = r(αi
), ∀i = 1, 2, ..., 2t.
Essendo che
r(x) = c(x) + e(x)
e che
c(αi
) = 0, ∀i = 1, 2, . . . , 2t
di fatto la sindrome sarà data dal polinomio e(x) che rappresenta il pattern
di errori calcolato sulle radici del polinomio generatore g(x).
Se, ad esempio, viene ricevuta una codeword r(x) con k errori nelle
posizioni xj1
, xj2
, ..., xjk avremo
e(x) = ej1 xj1
+ ej2 xj2
+ ... + ejk
xjk
ove i = 1, ..., k indica il numero di sequenza dell'errore e j la posizione nella
codeword. Allora scriveremo
Si = r(αi
) = e(αi
) = ej1 bi
1 + ej2 bi
2 + ... + ejk
bi
k, ∀i = 1, 2, ..., 2t
8
ove bl = ajl , l = 1, ..., k.
Non essendo note le posizioni dei simboli con errore, la forma vista non
può essere utilizzata per il calcolo della sindrome, la quale sarà determinata
a partire da r(x) e gli Si ottenuti verranno utilizzati come termini noti nel
sistema descritto sopra che avrà, come detto, 2t relazioni. Risulta ora evidente
il limite di correzione di t errori, in quanto il sistema sarà compatibile solo se
k non eccede t, caso in cui il sistema è di 2t incognite. Con ogni probabilità
il sistema ottenuto sarà non lineare, dunque devono essere utilizzate tecniche
più ranate delle usuali tecniche di risoluzione di sistemi lineari.
7 Implementazione
Per permettere un'implementazione più agevole sono utilizzati diversi algo-
ritmi per risolvere questo problema. In generale, si seguono due passi:
• Costruire un polinomio di locazione degli errori
Può essere fatto utilizzando l'algoritmo di Berlekamp-Massey o iteran-
do l'algoritmo di Euclide. Quest'ultimo viene utilizzato spesso per la sua
facilità di implementazione, sebbene l'algoritmo di Berlekamp-Massey
risulti più ecace. Ha complessità (O(n2
)), si basa sulla rappresenta-
zione polinomiale delle sequenze di byte e fornisce come risultato un
polinomio (Λ) le cui radici sono le posizioni degli errori.
Quindi si vanno a trovare le radici del polinomio costruito utilizzando
l'algoritmo della Chien search, algoritmo veloce di ricerca (O(n − k))
delle radici di polinomi su campi niti.
• Trovare i valori di errore
Note le posizioni degli errori, si possono ricavare i valori degli stessi
risolvendo il sistema di 2t equazioni dato dalle relazioni tra gli elementi
della sindrome e il polinomio e(x) calcolato nelle radici di g(x).
Nella pratica, si utilizza l'algoritmo di Forney che permette, al termi-
ne dell'algoritmo di Berlekamp-Massey, di ottenere, oltre al polinomio
Λ, anche un polinomio specico (Ω) che, valutato per le radici di Λ,
restituisce i valori degli errori. La complessità è di (O(n − k)).
9
Riferimenti bibliograci
[1] L. Giuzzi: Codici correttori: Un'introduzione. Springer-Verlag Italia,
Milano 2006.
[2] G.M. Piacentini Cattaneo: Algebra. Un approccio algoritmico. Decibel-
Zanichelli, 1996.
[3] I.S. Reed and G. Solomon: Polynomial Codes Over Certain Finite Fields.
SIAM Journal of Applied Math., vol. 8, 1960, pp. 300-304.
[4] B. Sklar: Reed-Solomon Codes.
[5] Wen Xu: Implementation and Performance Evaluation of Reed-Solomon
Codes. Cornell University, 2001.
10

More Related Content

What's hot

Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe SportelliSistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe SportelliI.S.I.S. "Antonio Serra" - Napoli
 
I logaritmi e la funzione logaritmica
I logaritmi e la funzione logaritmicaI logaritmi e la funzione logaritmica
I logaritmi e la funzione logaritmicaRosangela Mapelli
 
2 Rappresentazione Dei Dati
2   Rappresentazione Dei Dati2   Rappresentazione Dei Dati
2 Rappresentazione Dei Datiguest60e9511
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
La crittografia frattale in Perl
La crittografia frattale in PerlLa crittografia frattale in Perl
La crittografia frattale in PerlMario Rossano
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...Michele Maffucci
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteSTELITANO
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matriciguest60e9511
 
Contare gli interi, i razionali e i reali (e altre amenità)
Contare gli interi, i razionali e i reali (e altre amenità)Contare gli interi, i razionali e i reali (e altre amenità)
Contare gli interi, i razionali e i reali (e altre amenità)Cristian Consonni
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteSTELITANO
 
Alle 23.16
Alle 23.16Alle 23.16
Alle 23.16chiara1c
 
Vari metodi per lascomposizione
Vari metodi per lascomposizioneVari metodi per lascomposizione
Vari metodi per lascomposizionechiara1c
 

What's hot (20)

Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe SportelliSistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
Sistemi numerazione - Unità Didattica 1 a cura del prof. Giuseppe Sportelli
 
I logaritmi e la funzione logaritmica
I logaritmi e la funzione logaritmicaI logaritmi e la funzione logaritmica
I logaritmi e la funzione logaritmica
 
2 Rappresentazione Dei Dati
2   Rappresentazione Dei Dati2   Rappresentazione Dei Dati
2 Rappresentazione Dei Dati
 
1.01 Algoritmi
1.01 Algoritmi1.01 Algoritmi
1.01 Algoritmi
 
Crittografia
CrittografiaCrittografia
Crittografia
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
1 matematica binaria
1 matematica binaria1 matematica binaria
1 matematica binaria
 
Codifica
CodificaCodifica
Codifica
 
La crittografia frattale in Perl
La crittografia frattale in PerlLa crittografia frattale in Perl
La crittografia frattale in Perl
 
Diagrammi di Bode
Diagrammi di BodeDiagrammi di Bode
Diagrammi di Bode
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...
Sistemi numerici - corso di recupero classe 1 ITIS Informatica - biennio inte...
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parte
 
Problemi difficili
Problemi difficiliProblemi difficili
Problemi difficili
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
R sim rank
R sim rank  R sim rank
R sim rank
 
Contare gli interi, i razionali e i reali (e altre amenità)
Contare gli interi, i razionali e i reali (e altre amenità)Contare gli interi, i razionali e i reali (e altre amenità)
Contare gli interi, i razionali e i reali (e altre amenità)
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parte
 
Alle 23.16
Alle 23.16Alle 23.16
Alle 23.16
 
Vari metodi per lascomposizione
Vari metodi per lascomposizioneVari metodi per lascomposizione
Vari metodi per lascomposizione
 

Viewers also liked

Rise against – give it all
Rise against – give it allRise against – give it all
Rise against – give it allCharLilyMay
 
Training in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaTraining in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaArjit Nigam
 
Content and-customer-journeys lavacon2014-final
Content and-customer-journeys lavacon2014-finalContent and-customer-journeys lavacon2014-final
Content and-customer-journeys lavacon2014-finalContent Strategy Inc.
 
Heidi Beachler UDL Presentation
Heidi Beachler UDL PresentationHeidi Beachler UDL Presentation
Heidi Beachler UDL PresentationBeachlhm
 
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...Bitácora semana dos institución educativa colegio loyola para la ciencia y la...
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...Orianitha Arboleda
 
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...businessup
 
Dasar kompetensi keahlian multimedia 2
Dasar kompetensi keahlian multimedia 2Dasar kompetensi keahlian multimedia 2
Dasar kompetensi keahlian multimedia 2Roring Ever
 
Usability Testing: Interviews
Usability Testing: InterviewsUsability Testing: Interviews
Usability Testing: InterviewsJackie Wolf
 
Jovin Retail Lampshade Catalog
Jovin Retail Lampshade CatalogJovin Retail Lampshade Catalog
Jovin Retail Lampshade CatalogJovin
 
Optimum nutrition serious mass
Optimum nutrition serious massOptimum nutrition serious mass
Optimum nutrition serious massPaul Davidson
 
See andrew week2_ignite_presentation_slidesow
See andrew week2_ignite_presentation_slidesowSee andrew week2_ignite_presentation_slidesow
See andrew week2_ignite_presentation_slidesowandyfullsail
 
ο συνήγορος του πολίτη
ο συνήγορος του πολίτηο συνήγορος του πολίτη
ο συνήγορος του πολίτηanlio
 
Presentazione dsa gen 2013 (3)corretta
Presentazione dsa gen 2013 (3)correttaPresentazione dsa gen 2013 (3)corretta
Presentazione dsa gen 2013 (3)correttaloryRo
 
JAVA Business Application
JAVA Business ApplicationJAVA Business Application
JAVA Business ApplicationJackie Wolf
 

Viewers also liked (20)

Rise against – give it all
Rise against – give it allRise against – give it all
Rise against – give it all
 
Training in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaTraining in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noida
 
Content and-customer-journeys lavacon2014-final
Content and-customer-journeys lavacon2014-finalContent and-customer-journeys lavacon2014-final
Content and-customer-journeys lavacon2014-final
 
Heidi Beachler UDL Presentation
Heidi Beachler UDL PresentationHeidi Beachler UDL Presentation
Heidi Beachler UDL Presentation
 
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...Bitácora semana dos institución educativa colegio loyola para la ciencia y la...
Bitácora semana dos institución educativa colegio loyola para la ciencia y la...
 
Team 6
Team 6Team 6
Team 6
 
Rica Belna _ Art for Interior Design: Abstractions PDF
Rica Belna _ Art for Interior Design: Abstractions PDFRica Belna _ Art for Interior Design: Abstractions PDF
Rica Belna _ Art for Interior Design: Abstractions PDF
 
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
 
Dasar kompetensi keahlian multimedia 2
Dasar kompetensi keahlian multimedia 2Dasar kompetensi keahlian multimedia 2
Dasar kompetensi keahlian multimedia 2
 
Botacora de tecnologia
Botacora de tecnologiaBotacora de tecnologia
Botacora de tecnologia
 
Usability Testing: Interviews
Usability Testing: InterviewsUsability Testing: Interviews
Usability Testing: Interviews
 
Team 2
Team 2Team 2
Team 2
 
Jovin Retail Lampshade Catalog
Jovin Retail Lampshade CatalogJovin Retail Lampshade Catalog
Jovin Retail Lampshade Catalog
 
fisika Gerak
fisika Gerakfisika Gerak
fisika Gerak
 
Optimum nutrition serious mass
Optimum nutrition serious massOptimum nutrition serious mass
Optimum nutrition serious mass
 
See andrew week2_ignite_presentation_slidesow
See andrew week2_ignite_presentation_slidesowSee andrew week2_ignite_presentation_slidesow
See andrew week2_ignite_presentation_slidesow
 
ο συνήγορος του πολίτη
ο συνήγορος του πολίτηο συνήγορος του πολίτη
ο συνήγορος του πολίτη
 
Jetfuel superburn
Jetfuel superburnJetfuel superburn
Jetfuel superburn
 
Presentazione dsa gen 2013 (3)corretta
Presentazione dsa gen 2013 (3)correttaPresentazione dsa gen 2013 (3)corretta
Presentazione dsa gen 2013 (3)corretta
 
JAVA Business Application
JAVA Business ApplicationJAVA Business Application
JAVA Business Application
 

Similar to Codici di Reed-Solomon

Rsa -gauss jordan
Rsa -gauss jordanRsa -gauss jordan
Rsa -gauss jordanchiara1990
 
Vari metodi di scomposizione
Vari metodi di scomposizioneVari metodi di scomposizione
Vari metodi di scomposizionechiara1c
 
quello finale
quello finalequello finale
quello finalechiara1c
 
Esposizione al rischio di controparte
Esposizione al rischio di controparteEsposizione al rischio di controparte
Esposizione al rischio di controparteLucia Schiavon
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 
Lezione 2 alberi e differenze finite
Lezione 2   alberi e differenze finiteLezione 2   alberi e differenze finite
Lezione 2 alberi e differenze finiteGiovanni Della Lunga
 
Calcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei NumeriCalcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei NumeriMajong DevJfu
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingdanielenicassio
 
Sistema elaboratore in multiprogrammazione
Sistema elaboratore in multiprogrammazioneSistema elaboratore in multiprogrammazione
Sistema elaboratore in multiprogrammazioneDavide Ciambelli
 
Capitolo 6a elementi di valutazione dei prodotti derivati
Capitolo 6a   elementi di valutazione dei prodotti derivatiCapitolo 6a   elementi di valutazione dei prodotti derivati
Capitolo 6a elementi di valutazione dei prodotti derivatiGiovanni Della Lunga
 
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...MatteoZarot
 
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...Pasquale Alba
 

Similar to Codici di Reed-Solomon (20)

Reti Logic
Reti LogicReti Logic
Reti Logic
 
Rsa -gauss jordan
Rsa -gauss jordanRsa -gauss jordan
Rsa -gauss jordan
 
Vari metodi di scomposizione
Vari metodi di scomposizioneVari metodi di scomposizione
Vari metodi di scomposizione
 
quello finale
quello finalequello finale
quello finale
 
Visual Basic, Equazioni Sec Grado
Visual Basic, Equazioni Sec GradoVisual Basic, Equazioni Sec Grado
Visual Basic, Equazioni Sec Grado
 
Esposizione al rischio di controparte
Esposizione al rischio di controparteEsposizione al rischio di controparte
Esposizione al rischio di controparte
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
Lezione 2 alberi e differenze finite
Lezione 2   alberi e differenze finiteLezione 2   alberi e differenze finite
Lezione 2 alberi e differenze finite
 
Calcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei NumeriCalcolo Numerico - 2 - Rappresentazione Dei Numeri
Calcolo Numerico - 2 - Rappresentazione Dei Numeri
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
To infinity and beyond
To infinity and beyondTo infinity and beyond
To infinity and beyond
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decoding
 
Sistema elaboratore in multiprogrammazione
Sistema elaboratore in multiprogrammazioneSistema elaboratore in multiprogrammazione
Sistema elaboratore in multiprogrammazione
 
Capitolo 6a elementi di valutazione dei prodotti derivati
Capitolo 6a   elementi di valutazione dei prodotti derivatiCapitolo 6a   elementi di valutazione dei prodotti derivati
Capitolo 6a elementi di valutazione dei prodotti derivati
 
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
 
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...
Calcoli reti lineari stazionarie in regime periodico mediante numeri compless...
 
Algebra E Matematica Generale
Algebra E Matematica GeneraleAlgebra E Matematica Generale
Algebra E Matematica Generale
 
Gli insiemi q e r
Gli insiemi q e rGli insiemi q e r
Gli insiemi q e r
 
07 2 ricorsione
07 2 ricorsione07 2 ricorsione
07 2 ricorsione
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 

Codici di Reed-Solomon

  • 1. Codici di Reed-Solomon Filippo Ragazzo 26 Novembre 2013 Sommario Approfondimento per il corso di Reti di Calcolatori del Corso di Laurea in Informatica, Ca' Foscari, A.A. 2013-2014. 1
  • 2. Indice 1 Generalità 3 2 Campi di Galois 4 3 Codica (generalità) 6 4 Codica (esecuzione) 7 5 Decodica 7 6 Calcolo della sindrome 8 7 Implementazione 9 2
  • 3. 1 Generalità Nel 1960 Irving Reed e Gus Solomon pubblicarono un articolo sul Journal of the Society for Industrial and Applied Mathematics[3]. Tale articolo descri- veva una nuova classe di codici a correzione d'errore che sono oggi conosciuti come Codici di Reed-Solomon (R-S). Questi codici sono molto potenti e tro- vano molte applicazioni, come nei sistemi di archiviazione di massa, nella lettura di informazioni dai codici a barre e anche nelle trasmissioni spaziali. I codici di Reed-Solomon sono codici ciclici non binari con simboli com- posti di sequenze di m bit, ove m è un qualsiasi intero positivo maggiore o uguale a 2. Codici R-S(n, k) su simboli di m bit esistono per ogni n e k tali che 0 k n 2m + 2 ove k è il numero di simboli del dato da codicare e n è il numero totale di simboli di codice nel blocco codicato. La convenzione più utilizzata è R-S(n, k) con (n, k) = (2m − 1, 2m − 1 − 2t) ove t rappresenta il numero massimo di errori correggibili del codice e n − k = 2t è il numero di bit di parità. Esempio: Un codice R-S spesso utilizzato è R-S(255, 223) con simboli di 8 bit. Ogni parola di codice ha dimensione 255 byte, dei quali 223 byte sono di dati e 32 byte sono di parità. Dunque n = 255, k = 223, 2t = 32 ⇒ t = 16 In questo caso si possono correggere no a 16 simboli errati, nella fattispecie no a 16 byte con errore in qualsiasi punto della parola di codice. Parleremo di errore sul simbolo quando accade che anche un solo bit che compone il simbolo risulta errato. Dunque un codice R-S può correggere, nel caso peggiore, no a t bit errati (ogni simbolo errato presenta un solo bit di errore) e, nel caso migliore, no a t·m bit errati (se i t simboli sono totalmen- te errati). Appare chiaro, dunque, che i codici R-S risultano particolarmente ecaci nel correggere errori a raca (o burst). 3
  • 4. In fase di decodica vedremo che gli algoritmi utilizzati permettono la correzione di un massimo di t simboli errati e la correzione di un massimo di 2t cancellazioni. In fase di decodica si possono vericare tre casi: Se il numero di errori e cancellazioni è minore o uguale a 2t la parola di codice verrà corretta. Se il numero di errori e cancellazioni è maggiore a 2t il decoder rileverà la presenza di errori, oppure vi sarà un errore di decodica nel caso in cui la sequenza di errori abbia trasformato la codeword trasmessa in una codeword dierente, ma valida. 2 Campi di Galois Per comprendere i principi di codica e decodica dei codici non binari, come quelli di Reed-Solomon, è necessario conoscere la teoria dei campi niti di Galois. Un campo di Galois K è in eetti un insieme nito di elementi sul quale sono denite le operazioni di somma e prodotto che godono delle seguenti proprietà: • Associatività: (a + b) + c = a + (b + c), ∀a, b, c ∈ K (a ∗ b) ∗ c = a ∗ (b ∗ c), ∀a, b, c ∈ K • Commutatività: a + b = b + a, ∀a, b ∈ K a ∗ b = b ∗ a, ∀a, b ∈ K • Esistenza dell'elemento neutro: ∃0 ∈ K, a + 0 = 0 + a = a, ∀a ∈ K ∃1 ∈ K, a ∗ 1 = 1 ∗ a = a, ∀a ∈ K • Esistenza dell'opposto: ∀a ∈ K, ∃(−a) ∈ K | a + (−a) = 0 ∀a ∈ K, ∃a−1 ∈ K | a ∗ a−1 = 1 4
  • 5. • Distributività del prodotto rispetto alla somma: a ∗ (b + c) = a ∗ b + a ∗ c, ∀a, b, c ∈ K Per ogni numero primo p, esiste un campo di Galois che denoteremo GF(p), che contiene p elementi. È possibile estendere GF(p) ad un campo di pm elementi: tale campo verrà detto un campo di estensione di GF(p) e denotato con GF(pm ), con m intero positivo. Notare che GF(pm ) contiene gli elementi di GF(p) come sottoinsieme. Nella costruzione di un codice R-S vengono tipicamente utilizzati simboli del campo di estensione GF(pm ), con p = 2. Oltre agli elementi 0 e 1, che esistono per denizione, il campo GF(2m ) contiene un elemento α, detto elemento primitivo, tale che ∀e ∈ GF(pm ), ∃k ≥ 0 | e = αk In questo modo è possibile denire un insieme innito di elementi a par- tire da { 0, 1, α } moltiplicando progressivamente l'ultimo elemento per α. Si otterrà F = { 0, 1, α, α2 , . . . , αj , . . . } = { 0, α0 , α1 , α2 , . . . , αj , . . . } Per costruire un insieme nito di cardinalità 2m chiuso rispetto alla mol- tiplicazione è necessario imporre la seguente condizione di chiusura: α2m−1 + 1 = 0 o, equivalentemente α2m−1 = 1 = α0 In questo modo ogni elemento del campo risultante da una potenza di α 2m−1 sarà equivalente ad un elemento pari ad una potenza di α 2m−1 . Ad esempio: α2m+n = α2m−1 ∗ αn+1 = αn+1 e dunque avremo F = { 0, 1, α, α2 , . . . , α2m−2 , α2m−1 , α2m , . . . } = = { 0, α0 , α1 , α2 , . . . , α2m−2 , α0 , α1 , . . . } = = { 0, α0 , α1 , α2 , . . . , α2m−2 } 5
  • 6. Le operazioni aritmetiche su GF(2m ) sono denite come segue: L'addizione è equivalente all'OR esclusivo (XOR) eettuato bit-a-bit sulle due m-ple che rappresentano gli addendi. La sottrazione, per come è denito lo XOR, risulta analoga. Il prodotto risulta leggermente più complesso: si utilizza la cosiddetta index form, per la quale il risultato è dato dalla somma degli elementi presi in rappresentazione logaritmica. Tali operazioni aritmetiche sono fondamentali poiché gli algoritmi di co- dica e decodica si basano su queste operazioni compiute sui simboli rap- presentanti le parole di codice, visti come elementi di un opportuno campo di Galois. 3 Codica (generalità) Come abbiamo detto, la forma più utilizzata per i codici R-S è R-S(2m − 1, 2m−1−2t) ove n−k = 2t rappresenta il numero di simboli di ridondanza e t è la capacità di correzione del codice. Il polinomio generatore di un codice R-S di questo tipo è della forma g(x) = g0 + g1x + g2x2 + . . . + g2t−1x2t−1 + x2t Il grado del polinomio generatore è uguale al numero di simboli di ridon- danza e questo è vero per tutti i codici BHC, dei quali i codici R-S sono una sottoclasse. Dato che 2t è il grado del polinomio, esso ammetterà esattamen- te 2t potenze successive di α che sono radici del polinomio. Indicheremo tali radici con α, α2 , ..., α2t Notare che non è vincolante la scelta della radice α di partenza; è possi- bile partire da una qualsiasi potenza di α. Esempio: Consideriamo R-S(7, 3). Possiamo ottenere il polinomio genera- tore nei termini delle sue n − k = 4 radici come segue: g(x) = (x − α)(x − α2 )(x − α3 )(x − α4 ) = = (x2 − (α + α2 )x + α3 )(x2 − (α3 + α4 )x + α7 ) = = (x2 − α4 x + α3 )(x2 − α6 x + α0 ) = = x4 − (α4 + α6 )x3 + (α3 + α10 + α0 )x2 − (α4 + α9 )x + α3 = = x4 − α3 x3 + α0 x2 − α1 x + α3 6
  • 7. che riscritto in ordine crescente di grado delle x e cambiando segno ai termini negativi, risulta: g(x) = α3 + α1 x + α0 x2 + α3 x3 + x4 4 Codica (esecuzione) Sia (d1, d2, . . . , dk) la dataword da codicare, con ogni di composto da m bit, rappresentabile dunque da un elemento del campo GF(2m ). A questi k simboli ordinati possiamo associare un polinomio della forma d(x) = d0 + d1x + d2x2 + ... + dk−1xk−1 Il passo successivo è quello di ottenere una codeword rappresentata da un polinomio c(x) di grado n − 1 divisibile per il polinomio generatore g(x) denito precedentemente. Un metodo semplice per ottenere questo sarebbe denire c(x) come c(x) = d(x) · g(x). Tale metodo, però, porta ad un codice non sistematico, ragion per cui si considera come codeword c(x) = x2t d(x) + p(x) con p(x) = x2t d(x) mod g(x) Operando in questo modo il polinomio c(x) presenta come coecienti dei termini di grado 0, ..., 2t i simboli di ridondanza e come coecienti dei termini di grado maggiore di 2t i simboli dell'informazione da trasmettere. Inoltre c(x) risulta divisibile per il polinomio generatore g(x), dunque nel caso di errori di trasmissione che modichino i simboli della codeword, il decoder potrà valutare la validità della stessa andando ad eseguire una divisione per g(x). La presenza di un resto non nullo indicherà la sicura presenza di un errore. 5 Decodica Assumiamo che in fase di trasmissione siano stati introdotti degli errori sul- la codeword inviata. Rappresentiamo polinomialmente il pattern d'errore in questo modo: e(x) = r(x) − c(x) ove r(x) è la codeword ricevuta. In generale e(x) sarà del tipo e(x) = e0 + e1x + e2x2 + ... + en−1xn−1 7
  • 8. con gli ei appartenenti al campo GF(2m ). A dierenza dei codici binari, per i quali risulta suciente la sola posizione del bit errato per procedere alla correzione mediante negazione del bit stesso, nei codici non binari come i codici R-S risulta necessario conoscere non solo la posizione del bit errato, ma anche il suo valore originario. Tale necessità si traduce nel dover avere una condizione aggiuntiva per poter correggere la codeword. 6 Calcolo della sindrome In primo luogo è necessario rilevare la presenza di errori. Per fare ciò intro- durremo il concetto di sindrome di una codeword, intendendo un vettore che risulta nullo solo se non sono stati introdotti errori di trasmissione. La sindrome S è composta da n − k simboli, { Si }(i=1,...,n−k). Dunque, ad esempio, per un codice R-S(7, 3) ci sono 4 simboli in ogni vettore sindrome. I loro valori possono essere calcolati a partire dal polinomio risultante dalla ricezione r(x). Per come è stato strutturato il codice, il calcolo degli elementi della sin- drome sarà facilitato, infatti ogni codeword valida deve essere proporzionale al polinomio generatore g(x). Essendo, dunque, α, α2 , ..., α2t le radici di g(x), il polinomio rappresentante una codeword valida deve avere le stesse radici. I simboli della sindrome S associata alla codeword ricevuta r(x) si calco- leranno come Si = r(αi ), ∀i = 1, 2, ..., 2t. Essendo che r(x) = c(x) + e(x) e che c(αi ) = 0, ∀i = 1, 2, . . . , 2t di fatto la sindrome sarà data dal polinomio e(x) che rappresenta il pattern di errori calcolato sulle radici del polinomio generatore g(x). Se, ad esempio, viene ricevuta una codeword r(x) con k errori nelle posizioni xj1 , xj2 , ..., xjk avremo e(x) = ej1 xj1 + ej2 xj2 + ... + ejk xjk ove i = 1, ..., k indica il numero di sequenza dell'errore e j la posizione nella codeword. Allora scriveremo Si = r(αi ) = e(αi ) = ej1 bi 1 + ej2 bi 2 + ... + ejk bi k, ∀i = 1, 2, ..., 2t 8
  • 9. ove bl = ajl , l = 1, ..., k. Non essendo note le posizioni dei simboli con errore, la forma vista non può essere utilizzata per il calcolo della sindrome, la quale sarà determinata a partire da r(x) e gli Si ottenuti verranno utilizzati come termini noti nel sistema descritto sopra che avrà, come detto, 2t relazioni. Risulta ora evidente il limite di correzione di t errori, in quanto il sistema sarà compatibile solo se k non eccede t, caso in cui il sistema è di 2t incognite. Con ogni probabilità il sistema ottenuto sarà non lineare, dunque devono essere utilizzate tecniche più ranate delle usuali tecniche di risoluzione di sistemi lineari. 7 Implementazione Per permettere un'implementazione più agevole sono utilizzati diversi algo- ritmi per risolvere questo problema. In generale, si seguono due passi: • Costruire un polinomio di locazione degli errori Può essere fatto utilizzando l'algoritmo di Berlekamp-Massey o iteran- do l'algoritmo di Euclide. Quest'ultimo viene utilizzato spesso per la sua facilità di implementazione, sebbene l'algoritmo di Berlekamp-Massey risulti più ecace. Ha complessità (O(n2 )), si basa sulla rappresenta- zione polinomiale delle sequenze di byte e fornisce come risultato un polinomio (Λ) le cui radici sono le posizioni degli errori. Quindi si vanno a trovare le radici del polinomio costruito utilizzando l'algoritmo della Chien search, algoritmo veloce di ricerca (O(n − k)) delle radici di polinomi su campi niti. • Trovare i valori di errore Note le posizioni degli errori, si possono ricavare i valori degli stessi risolvendo il sistema di 2t equazioni dato dalle relazioni tra gli elementi della sindrome e il polinomio e(x) calcolato nelle radici di g(x). Nella pratica, si utilizza l'algoritmo di Forney che permette, al termi- ne dell'algoritmo di Berlekamp-Massey, di ottenere, oltre al polinomio Λ, anche un polinomio specico (Ω) che, valutato per le radici di Λ, restituisce i valori degli errori. La complessità è di (O(n − k)). 9
  • 10. Riferimenti bibliograci [1] L. Giuzzi: Codici correttori: Un'introduzione. Springer-Verlag Italia, Milano 2006. [2] G.M. Piacentini Cattaneo: Algebra. Un approccio algoritmico. Decibel- Zanichelli, 1996. [3] I.S. Reed and G. Solomon: Polynomial Codes Over Certain Finite Fields. SIAM Journal of Applied Math., vol. 8, 1960, pp. 300-304. [4] B. Sklar: Reed-Solomon Codes. [5] Wen Xu: Implementation and Performance Evaluation of Reed-Solomon Codes. Cornell University, 2001. 10