Les codes en détail


Le code C1

Il s'agit d'un code (28,24,5) sur le corps à 256 éléments.

Si x est un mot de 24 octets le mot de code de C1 qui lui correspond est le mot de 28 octets égal à (x,x R1t), où lamatrice de dimension (4,24) R1  est définie par
R1 =
[
[
[
[
a6 a192 a142 a159 a99 a88 a104 a144 a55 a180 a174 a101 a111 a118 a169 a107 a132 a25 a167 a239 a168 a188 a111 a9
a45 a108 a248 a131 a64 a221 a100 a235 a147 a45 a198 a21 a228 a186 a231 a56 a68 a81 a46 a32 a60 a225 a134 a226
a50 a52 a59 a132 a186 a81 a128 a126 a133 a32 a213 a195 a43 a198 a194 a13 a167 a167 a252 a61 a3 a12 a66 a144
a42 a136 a153 a93 a82 a98 a138 a49 a174 a168 a95 a105 a112 a163 a101 a126 a19 a161 a233 a162 a182 a105 a3 a226
]
]
]
]








Le code C2

Il s'agit d'un code (32,28,5) sur le corps à 256 éléments.

Si x est un mot de 28 octets le mot de code de C2 qui lui correspond est le mot de 32 octets égal à (x,x R2tr), où la matrice (4,28)R2 est : 
R2 = ( R1 | R' ) où R' = [
[
[
[

a232 a98 a54 a174
a167 a211 a180 a143
a24 a41 a188 a164
a92 a48 a168 a67

]
]
]
]


Correction d'une erreur dans C2

Le code C2 a une distance minimale égale à 5. Il peut en théorie soit corriger 2 erreurs, soit en détecter 4. Il peut également, et c'est ce qu'on utilise ici corriger 1 erreur et en détecter 3.

On pose H2=(R2|I), où est la matrice identité 4× 4, et pour tout vecteur v de longueur 32, S2(v) = H2 vtr.
H2 =




a6 a192 a142 a159 a99 a88 a104 a144 a55 a180 a174 a101 a111 a118 a169 a107 a132 a25 a167 a239 a168 a188 a111 a9 a232 a98 a54 a174 1 0 0 0
a45 a108 a248 a131 a64 a221 a100 a235 a147 a45 a198 a21 a228 a186 a231 a56 a68 a81 a46 a32 a60 a225 a134 a226 a167 a211 a180 a143 0 1 0 0
a50 a52 a59 a132 a186 a81 a128 a126 a133 a32 a213 a195 a43 a198 a194 a13 a167 a167 a252 a61 a3 a12 a66 a144 a24 a41 a188 a164 0 0 1 0
a42 a136 a153 a93 a82 a98 a138 a49 a174 a168 a95 a105 a112 a163 a101 a126 a19 a161 a233 a162 a182 a105 a3 a226 a92 a48 a168 a67 0 0 0 1






On vérifie facilement que tout mot de code y de C2 vérifieS2(y)=0 (si on oublie pas que F256 est un corps de caractéristique 2). Si y a été modifié en une position, par exemplez=y+e, où e est un vecteur de longueur 32 possédant une seule coordonnée non nulle. Alors S2(z)=S2(y)+S2(e)=S2(e). Donc si S2(z) est proportionnel à la i-ème colonne de H2, alors l'erreur se situe dans la i-ème position et sa valeur est le coefficient de proportionnalité avec S2(z).

Par exemple, si on trouve
S2(z) = [
[
[
[

a6
a46
a51
a43

]
]
]
]
on peut remarquer que S2(z) est égal à a fois la première colonne de R2 (donc de H2). On en déduit quey=z+(a,0,...,0) est dans C2. En ajoutant a à la première coordonnée de z, on vient de corriger une erreur.



Correction de quatre effacements dans C1

Le code C1 a une distance minimale égale à 5. Il peut corriger 4 effacements. Un effacement est une erreur dont on connait la position.

On pose H1=(R1|I), où est la matrice identité 4× 4, et pour tout vecteur v de longueur 28, S1(v) = H1 vtr.
H1 = [
[
[
[

a6 a192 a142 a159 a99 a88 a104 a144 a55 a180 a174 a101 a111 a118 a169 a107 a132 a25 a167 a239 a168 a188 a111 a9 1 0 0 0
a45 a108 a248 a131 a64 a221 a100 a235 a147 a45 a198 a21 a228 a186 a231 a56 a68 a81 a46 a32 a60 a225 a134 a226 0 1 0 0
a50 a52 a59 a132 a186 a81 a128 a126 a133 a32 a213 a195 a43 a198 a194 a13 a167 a167 a252 a61 a3 a12 a66 a144 0 0 1 0
a42 a136 a153 a93 a82 a98 a138 a49 a174 a168 a95 a105 a112 a163 a101 a126 a19 a161 a233 a162 a182 a105 a3 a226 0 0 0 1

]
]
]
]
On suppose que l'on connait un vecteur z de longueur 28 dont les coordonnées 3, 8, 16 et 25 (et aucune autre) sont susceptibles d'être fausses. On considère la matrice 4× 4 composées des colonnes correspondantes de H1
U = [
[
[
[

a159 a55 a132 0
a131 a147 a68 1
a132 a133 a167 0
a93 a174 a19 0

]
]
]
]
Soit e=(e0,e1,...,e27) le vecteur de longueur 28 tel queei=0 si iÏ{3,8,16,25} et

[
[
[
[

e3
e8
e16
e25

]
]
]
]
= U-1 S1(z)
On a S1(e)=S1(z) et donc y=z+e est un élément de C1. On vient de corriger 4 effacements aux positions 3, 8, 16 et 25.