Vous êtes sur la page 1sur 24

Index

10

15

20

25

1. 1.1 1.2 1.3 2. 2.1 2.2 2.2.1 2.2.2 3. 3.1 4. 4.1 4.2 4.3 4.4 4.5 4.6 5. 5.1 5.2 6. A.1 A.2

Codes de Reed-Solomon . . . . . . . . . . . . . . . . . . . 2 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Corps de Galois . . . . . . . . . . . . . . . . . . . . . . . . . 3 Proprits dun corps fini . . . . . . . . . . . . . . . . . . . 3 Construction dun corps fini . . . . . . . . . . . . . . . . . 4 Reprsentation des lments . . . . . . . . . . . . . . . . 4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Technique de codage . . . . . . . . . . . . . . . . . . . . . 8 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Technique de dcodage . . . . . . . . . . . . . . . . . . . 11 Equation fondamentale . . . . . . . . . . . . . . . . . . . . 12 Algorithme dEuclide . . . . . . . . . . . . . . . . . . . . . . 13 Reed-Solomon algorithme . . . . . . . . . . . . . . . . . . . 14 Schma dHorner . . . . . . . . . . . . . . . . . . . . . . . . 15 Exemple de dcodage . . . . . . . . . . . . . . . . . . . . . 16 dtection derreurs > t . . . . . . . . . . . . . . . . . . . . 18 Prsentation du programme . . . . . . . . . . . . . . . . 19 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Liste de fichiers . . . . . . . . . . . . . . . . . . . . . . . . 20 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Rfrences . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Page 1

1. Codes de Reed-Solomon 1.1 Dfinition


5

Les codes de Reed-Solomon RS(k,t) sont forms de n symboles, avec n = q - 1 au maximum et q = 2 , chaque symbole appartenant GF(q) qui est le corps de Galois (Galois Field) q lments, k reprsente donc le nombre de bits par symbole. Le nombre t reprsente le nombre de symboles derreurs que ce code sera capable de corriger.
k

10

1.2 Information
15

Le nombre de symboles de contrle est de 2t. Par consquent, le nombre de symboles dinformation que lon peut transmettre est de m = n - 2t.

1.3 Exemple
20

Soit le code RS(4,3) form de n = 15 symboles, chaque symbole tant contenu dans GF(16), donc 4 bits par symbole. Soit sous forme polynmiale : w(x) = w14 . x14 + w13 . x13 + ... + w1 . x1 + w0

25

avec wi contenu dans GF(16) pour i = 0,..,14.

Les coefficients w0,w1,...,w5 sont les symboles du contrle de parit symboles dinformation transmettre.

(parity check), et les coefficients w 6,w7,...,w14 reprsente les

Page 2

2. Corps de Galois
La notation pour la suite, sera la suivante :
5

- F reprsente un corps fini (Field). - Fp reprsente le corps fini p lments. - F reprsente le groupe multiplicatif du corps F.
*

2.1 Proprits dun corps fini


10

On rappelle ici, quelques proprits utiles des corps finis. Soit F un corps fini de caractristique p ayant q lments. Alors, a) F est un Fp-espace vectoriel de dimension k, avec q = p .
15 k

b) Le groupe additif de F est isomorphe au groupe (Z/pZ,+) . c) F* est cyclique dordre q - 1 = p - 1. d) Tout lment x de F* vrifie x
q-1 k

= 1.

20

Commentaire : Le point c) nous affirme quil existe un lment , dit primitif, qui engendre le groupe multiplicatif F *. Le point a) nous dit que F est un espace vectoriel de dimension k sur le corps F p, le choix dune base sera gnralement les puissance enti re de llment primitif, soit 1, , , , ..., scrira alors de la manire suivante :
2 3 k-1

. Un lment c de F

25

c = ck-1 .

k-1

avec ci appartenant Fp pour i = 0,..,k-1.

+ ... + c1 . 1 + c0 . 1

Page 3

2.2 Construction dun corps fini


La construction dun corps fini est base sur le thor me suivant :
5

Thor me : Soit un nombre algbrique sur F. Soit k le degr de son polynme irrductible sur F. Lespace vectoriel engendr sur F par 1, , , ..., vectoriel est k.
2 k-1

est alors un corps, et la dimension de cet espace

10

Ce thorme nous donne une mthode pour construire un corps avec une base donne, mais ne nous donne pas de mthode pour trouver un lment primitif, nest pas forcment un lment primitif.

15

2.2.1 Reprsentation des lments


Il existe principalement deux mthodes pour reprsenter les lments dun corps fini, soit :
20

i) F est un Fp-espace vectoriel de dimension k, on choisit une certaine base {b ,...,b } de cet espace et on repre chaque
1 k q

lment de F par ses composantes sur cette base.


q 25

ii) On prend un lment de F* qui engendre ce groupe et tout lment non nul de F scrit dune manire, et dune seule,
q

sous la forme , avec m = 0,...,q-1.


30

35

Pour dcrire un lment du corps, on utilisera exclusivement la premire reprsentation, car elle permet dassocier un nombre chaque lment du corps. Mais on prendra soin de tabuler ces deux reprsentations, la raison en est que la reprsentation i) se pr te trs bien pour laddition et que la reprsentation ii) est bien adapte pour la multiplication. Comme on a besoin de ces deux oprations, on travaillera avec ces deux reprsentations qui seront tabules une fois pour toute.

Page 4

Avertissement : On ne sintressera, par la suite, que de corps finis de caractristique 2, qui sont les seuls utiliss pour les codes de Reed-Solomon.
5

2.2.2 Exemple
Soit F = {0,1} le corps deux lments. On vrifie que le
2

polynme P(x) = x + x + 1 est bien irrductible sur F . Soit une


2

racine de P(x), on aura alors


10

P() = + + 1 = 0 donc = + 1 ce qui veut dire que lespace vectoriel engendr sur F par 1, est
2 15

alors un corps, et la dimension de cet espace vectoriel est de 2. Le corps 4 lments sera alors F = {0,1, , + 1}. Si lon choisit
4

{1,} comme base, la reprsentation i) sera la suivante : 0 1 +1 = = = = 0. 0. 1. 1. + + + + 0.1 1.1 0.1 1.1 = = = = (0,0) (0,1) (1,0) (1,1) = = = = 0 1 2 3

20

25

Cette reprsentation est trs pratique, car elle permet dassocier un nombre chaque lment. Si lon avait choisit {1, + 1} comme base, on aurait alors la reprsentation suivante : 0 1 +1 = = = = 0.( 0.( 1.( 1.( + + + + 1) 1) 1) 1) + + + + 0.1 1.1 0.1 1.1 = = = = (0,0) (0,1) (1,0) (1,1) = = = = 0 1 2 3

30

On comprend facilement que le choix de la base est fondamental pour savoir de quoi lon parle.

Page 5

Pour effectuer une addition sur ce corps, il faut voir que lon additionne en fait deux vecteurs, et donc que lon effectue laddition composante par composante, et ceci sur F . Soit par
2

exemple,
5

10

(0,1) (1,1) (1,1) (0,1)

+ + + +

(0,1) (1,0) (0,1) (1,0)

= = = =

(0 (1 (1 (0

+ + + +

0,1 1,1 0,1 1,1

+ + + +

1) 0) 1) 0)

= = = =

(0,0) (0,1) (1,0) (1,1)

-> -> -> ->

1 3 3 1

+ + + +

1 2 1 2

= = = =

0 1 2 3

Sur un corps de caractristique 2, laddition revient faire un OU EXCLUSIF (notation ^) entre deux nombres. Soit par exemple,
15

3 + 2 = 11 ^ 10 = 01 = 1 3 + 1 = 11 ^ 01 = 10 = 2
20

Cela nous donne une opration assez simple raliser et implmenter dans un programme. Pour la multiplication, il nous faut trouver un lment primitif qui
25 * 4

gnre le groupe F . Dans notre exemple, est un lment primitif, en effet


0 1 2

= = =

1 +1

30

ce qui nous donne les trois lments de notre groupe.

Page 6

Si lon prend {1,} comme base, on aura alors la table de multiplication suivante :
5

1 1 1 2

* * * *

1 2 3 1

= = = =

1 1*==2 1 * ( + 1) = + 1 = 3 1*2=2
2 2

2*2=*= =+1=3
10

2 * 3 = * ( + 1) = + = + 1 + = 1 3*1=1*3=3 3*2=2*3=1 3 * 3 = ( + 1) * ( + 1) = + + + 1 = + 1 = = 2
2 2

15

ce qui termine notre exemple.

Page 7

3. Technique de codage
Considrons un code de Reed-Solomon avec ses symboles dans GF(2 ), o k est le nombre de bits par symbole. Soit
5 k

i(x) = cm-1 . xm-1 + ... + c1 . x1 + c0 le polynme dinformation, et soit


10

p(x) = c2t-1 . x2t-1 + ... + c1 . x1 + c0 le polynme de contrle, le code de Reed-Solomon sous sa forme polynmiale sera alors

15

c(x) = i(x) . x2t + p(x) = cn-1 . xn-1 + ... + c1 . x1 + c0 avec ci appartenant GF(2 ) pour i = 0,..,n-1. Un vecteur n symboles, (cn-1, ..., c1, c0) est un code de Reedk

20

Solomon si et seulement si son polynme correspondant c(x) est un multiple du polynme gnrateur g(x). La mthode courante pour construire un tel polynme, est de diviser i(x) . x 2t par g(x) et dadditionner le reste c(x). En effet, i(x) . x2t = q(x) . g(x) + r(x) o r(x) est le reste de la division de i(x) par g(x), c(x) = i(x) . x2t + p(x) = q(x) . g(x) + r(x) + p(x) = q(x) . g(x)

25

30

pour que c(x) soit un multiple de g(x), soit c(x) = q(x) . g(x), il faut que p(x) = r(x). Comme on travaille toujours sur des corps de caractristique 2, lopration de soustraction sera toujours gale lopration daddition, soit de manire algbrique -1 = +1.

Page 8

Cela nous donne une mthode pour construire le polynme de contrle, il suffit de prendre le reste de la division du polynme i(x) . x2t par g(x).
5

Il nous reste encore construire le polynme gnrateur g(x). Il est dfinit de la manire suivante : g(x) = (x + )(x + )...(x + ) = x2t + g2t-1 . x2t-1 + ... + g1 . x1 + g0
2 2t

10

o les coefficients g appartiennent GF(2 ), et est un lment


i

primitif de GF(2 ).

Page 9

3.1 Exemple de codage


Soit le code RS(4,3), avec n = 15, et soit un polynme P(x)
5

irrductible sur F2, avec P(x) = x + x + 1. Soit une racine de P(x), qui est galement un lment primitif, et sera utilis pour construire GF(16). La base utilise sera alors { , ,,1} = {8,4,2,1}, il y aura donc 16 symboles, qui vont de 0 15. Maintenant, on dsire coder les 9 symboles dinformations suivants :
3 2

10

i = [9, 8, 7, 6, 5, 4, 3, 2, 1] (matrice 1 x 9) soit sous forme polynmiale :


15

i(x) = 9x8 + 8x7 + 7x6 + 6x5 + 5x4 + 4x3 + 3x2 + 2x + 1 g(x) = (x + 2)(x + 4)(x + 8)(x + 9)(x + 11)(x + 15) = x6 + 3x5 + x4 + 4x3 + 7x2 + 13x + 15

20

c(x) = = = =

q(x) . g(x) (9x8 + 10x7 + 9x6 + x5 + x4 + 12x3 + 3x2 + 11x + 4) . g(x) i(x) . x2t + r(x) i(x) . x2t + 6x5 + 15x4 + 15x3 + 15x2 + 11x + 14

Page 10

4. Technique de dcodage
5

Considrons un code de Reed-Solomon c(x) correspondant au code transmis, et soit d(x) le code que lon re oit. Le code derreur est dfinit par e(x) = d(x) - c(x) = d(x) + c(x) car - et + sont quivalent dans GF(2 ).
k

10

La premire opration a faire, est de calculer les syndromes, qui sont dfinis de la manire suivante : S = e( ) = d( ) + c( ) = d( ) avec i = 1, ..., 2t i
i i i i

15

car c( ) = q( ) . g( ) = 0 puisque g( ) = 0 pour i = 1, ..., 2t par dfinition de g(x). Le syndrome sous forme polynmiale sera s(x) = S2t . x2t-1 + ... + S3 . x2 + S2 . x + S1
20

Soit M lensemble des positions derreurs, on dfinit le polynme de localisation (locator polynomial) par l(x) = (1 -
25 i p1

.x)(1 -

p2

.x) ... (1 - .x) avec p1, ..., pj dans M

pj

Si b = est une racine de l(x), donc l(b) = 0, on aura alors un des monme qui sannule, soit (1 - .b) = 0. Ce qui nous donne la relation suivante b = = . = = ( = 1), la position de lerreur sera alors donn par p = q-1-i qui est positif et
30 -p q-1 -p q-p-1 i i q-1 p

que lon connait, puisque lon connait b = , racine de l(x). Il nous faudra donc chercher toutes les racines de l(x). Il ne faut pas oublier k * que est un lment primitif, et que tout lment de GF(2 ) sexprime comme une puissance de llment primitif, qui est un k * gnrateur du groupe GF(2 ) .

Page 11

4.1 Equation fondamentale


Il nous reste encore calculer l(x). Pour cela, on fait usage de la relation fondamentale suivante :
5

l(x) . s(x) = w(x) + u(x) . x


k

2t

Comme lon travaille dans GF(2 ), on peut lcrire sous la forme


10

l(x) . s(x) + u(x) . x

2t

= w(x)

On peut voir cette quation comme la relation de Bezout avec des nombres, soit
15

v.b+u.a=w o a et b sont des nombres donns, et w est le plus grand diviseur commun des nombres a et b. u et v sont deux nombres qui satisfont cette relation. Notre quation ci-dessus est identique, sauf quelle sapplique des polynme. On pose b = s(x), a = x 2t et on applique lalgorithme dEuclide pour trouver u(x),l(x),w(x), et les racines de l(x) sont utilises pour trouver la position de lerreur. Soit b i une racine de l(x), la valeur de lerreur la position pi se calcule de la manire suivante :

20

25

ei = w(bi) / l(bi) o l(x) est la drive du polynme l(x). En fait, lalgorithme dEuclide ne donne pas l(x),v(x),w(x) mais K.l(x), K.v(x), K.w(x), cest--dire une constante K pr s. Mais pour trouver les racines de l(x), quon aie l(x) ou K.l(x) cela nous donne le mme rsultat, et comme la valeur de lerreur est calcule par le rapport K.w(bi) / K.l(bi), on obtient le bon rsultat.

30

Page 12

4.2 Algorithme dEuclide


On rappelle ici, le principe de lalgorithme dEuclide appliqu lquation v . b + u . a = w.
5

I)

Initialisation q0 = r0 = a r1 = b u0=1 u1=0 v0=0 v1=1

10

q1 = II) Calcul de q

On divise ri-1 par ri, ce qui nous donne un quotient q et un reste


15

r, soit ri-1 = q . ri + r et on pose qi+1 = q. III) Calculs ri+1 = ri-1 - qi+1 . ri

20

ui+1 = ui-1 - qi+1 . ui vi+1 = vi-1 - qi+1 . vi IV) Test

25

Si ri+1 est diffrent de 0, on incrmente i et on retourne au point II, et si ri+1 = 0 lagorithme est termin. On a alors,

30

a) ri est le plus grand diviseur commun entre a et b. b) ri = vi . b + ui . a. En fait, la relation b) est valable pour tout i.

Page 13

4.3 Reed-Solomon algorithme


Lalgorithme de dcodage des codes de Reed-Solomon sera le suivant :
5

1) Calcul du polynme syndrome s(x). Si s(x) = 0, il ny a pas derreurs : STOP.


10

2) On applique lalgorithme dEuclide avec a(x) = x


2t

et b(x) = s(x).

Lalgorithme se termine ds que le degr de r i(x) est < t.


15

Si ri(x) = 0, il y a plus que t erreurs : STOP. 3) On pose L(x) = K . l(x) = vi(x).

On cherche toutes les racines de L(x) : b1, ..., br.


j

20

4) Pour chaque racine bi = , la position pi de lerreur est pi = q - j - 1 = 2 - j - 1. 5) On pose W(x) = K . w(x) = ri(x).
k

25

La valeur de lerreur la position pi est donne par ei = W(bi) / L(bi) = K . w(bi) / K . l(bi) = w(bi) / l(bi). La nouvelle valeur la position pi sera alors ci = di + ei.

30

On value toujours un polynme ainsi que sa drive laide dun schma dHorner, et ceci afin de minimiser le nombre de calculs.

Page 14

4.4 Schma dHorner


On donne ici, le schma dHorner pour valuer un polynme et sa drive une valeur donne.
5

Soit p(x) = an . xn + an-1 . xn-1 + ... + a1 . x + a0, on dsire valuer notre polynme et sa drive x = , soit p() et p().
10

I)

Initialisation bn = a n a n = bn k = n

15

II)

Itration bk = ak + . bk+1 si k > 0 alors ck = bk + . ck+1

20

III) Contrle Si k est diffrent de 0, on dcrmente k et on retourne au point II, sinon lagorithme est termin.
25

On aura alors p() = b0 et p() = c1.

Page 15

4.5 Exemple de dcodage


Reprenons notre exemple 3.1 ci-dessus, soit notre code de Reed-Solomon :
5

c(x) = 9x14 + 8x13 + 7x12 + 6x11 + 5x10 + 4x9 + 3x8 + 2x7 + 1x6 + 6x5 + 15x4 + 15x3 + 15x2 + 11x + 14
10

Choisissons un polynme derreur, soit e(x) = 7x11 + 10x2 Notre code reu sera alors,

15

d(x) = c(x) + e(x) d(x) = 9x14 + 8x13 + 7x12 + 1x11 + 5x10 + 4x9 + 3x8 + 2x7 + 1x6 + 6x5 + 15x4 + 15x3 + 5x2 + 11x + 14
20

On calcule les syndromes, soit S = d( ) = d(2 ) avec i = 1, ..., 6, ce i qui nous donne le syndrome sous forme polynmiale : s(x) = 1x5 + 15x4 + 7x3 + 8x2 + 11
25

On pose a(x) = x et b(x) = s(x), et on applique lalgorithme dEuclide, cela nous donne : L(x) = W(x) = U(x) = 6x2 + 9x + 1 5x + 11 6x

30

On cherche les 2 racines pour l(x), on trouve :


35

b1 = 9 = 4 et b2 = 6 = 13 do lon tire : p1 = 15 - 4 = 11 et p2 = 15 - 13 = 2.

Page 16

Il nous reste trouver la valeur de lerreur ces positions. Pour cela, on calcule e1 = W(9) / L(9) = 13 / 9 = 7
5

e2 = W(6) / L(6) = 12 / 9 = 10 Ce qui nous donne un polynme de correction : v(x) = 7x11 + 10x2

10

On remarquera que lon a v(x) = e(x), et que si lon effectue la correction, cela nous donne c(x) = d(x) + v(x) = c(x) + e(x) + v(x) = c(x)
15

et que lon retrouve notre code de dpart, ce qui bien le but recherch.

Page 17

4.6 Dtection derreurs > t


Voici les principaux contrles quils faut effectuer afin de dtecter un nombres derreurs > t.
5

Aprs avoir terminer lalgorithme dEuclide, deux cas peuvent se prsenter : A1) x | s(x) => W(x) = 0. A2) s(x) = w(x) => l(x) = 1 et donc pas de racine. Lors de la recherche des racines de l(x), trois cas peuvent se prsenter :
t

10

15

B1) 0 est racine de l(x). B2) l(x) a des racines multiples. B3) l(x) ne se dcompose pas en produit de facteur linaire. On trouve donc moins de racine quil ne devrait y en avoir. Lors de la recherche de la position de lerreur, un cas peu se prsenter : C1) p < 0 ou p >= n.

20

25

Il est clair que lorsque lon a un nombre derreurs > t, tous ces cas peuvent se prsenter. Il faut donc absolument faire ces contrles afin de dtecter cette situation qui peut d s lors se prsenter.

Page 18

5. Prsentation du programme 5.1 Classes


5

Voici les diffrentes classes utilises pour le programme :

10

15

20

RSApplet | | | | | | RSFrame fieldFrame | | | | | | | | | | RSAlgorithme | | | | | | | | | | | | | polynomial field

25

30

RSApplet RSFrame RSAlgorithme polynomial fieldFrame field

: : : : : :

Applet du programme reed-solomon simulator. Frame de la partie codage/dcodage RS. Algorithmes de codage/dcodage RS. Dfinition de la classe polynme. Frame de la partie corps de Galois. Dfinition et algorithmes de la classe field.

Page 19

5.2 Liste des fichiers


Voici la liste de tous les fichiers qui accompagnent ce programme.
5

10

15

20

25

RSApplet.html RSApplet.java RSApplet.class RSFrame.java RSFrame.class RSAlgorithm.java RSAlgorithm.class fieldFrame.java fieldFrame.class field.java field.class polynomial.java polynomial.class AppletViewer.bat Javac.bat Java.bat fond.jpg rs.html rs.cwk rs.ps

: : : : : : : : : : : : : : : : : : : :

pour lancer lapplet. applet java. version compile. pour les codes de Reed-Solomon. version compile. algorithmes pour les codes RS. version compile. pour les corps de Galois GF(2^k). version compile. algorithmes pour GF(2^k). version compile. dfinition de lobjet polynomial. version compile. pour lancer lapplet sous Win95. pour compiler un prog. sous Win95. pour lancer une appli. sous Win95. background pour lapplet. documentation en version html. documentation en version ClarisWorks. documentation en version PostScript.

Page 20

6. Conclusions
5

10

Me voil arriv au bout de mon effort, je dois dire que jai eu beaucoup de plaisir faire ce travail et que je lai trouv tr s intressant. Cela ma permis de travailler fond sur les corps de Galois et de faire connaissance avec les codes de Reed-Solomon. Lorsque jai commenc ce travaille, je navais aucune connaissance du langage Java, et grce ce projet, jai acquis de bonnes connaissances dans ce langage. Je souhaiterais rajouter une partie ce programme, cest la visualisation dune image graphique que lon code et dcode avec adjonction de perturbations avant dcodage, ou pourrait voir graphiquement la trs grande efficacit de ces codes pour la transmission dinformations.

Page 21

A.1 Tables
On donne ici, les tables daddition et de multiplication du corps de Galois GF(2 ) avec P(x) = x + x + 1.
5 4 4 3

Table daddition
10

15

20

25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 22

Table de multiplication

10

15

20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 23

A.2 Rfrences
[OP]
5

Error-Correcting Codes and Finite Fields. Oliver Pretzel. Clarendon Press, Oxford. Error control coding. S.Lin & D.Costello. Prentice-Hall.

[LC]

Page 24