canal de transmission, erreurs, détection et correction
espace de Hamming, code, erreurs détectables, corrigeables, distance minimale
codes linéaires, poids, base et matrice génératrice, équations et matrice vérificatrice, code orthogonal
distance minimale et matrice vérificatrice, syndrome
bornes de Hamming et de Singleton, taux d’information et de correction
codes de Hamming
codes cycliques = idéaux de \(\F_q[x]/x^n-1\), polynôme générateur, vérificateur. Générateur de l’orthogonal.
factorisation de \(x^n-1\) dans \(\F_q[x]\).
Note
Si \(q\wedge n=1\) et \(\alpha\) est une racine \(n\)-ième primitive de l’unité, \(x^n-1=\prod_{i\in\Z/n\Z}(x-\alpha^i)\) se factorise sur \(\F_q\) en \(\prod_I f_I(x)\) où \(I\) parcourt les \(q\)-orbites de \(\Z/n\Z\) et \(f_I(x)=\prod_{i\in I}(x-\alpha^i)\).
codes BCH (distance prévue)
Écrire une fonction VHamming(r)
qui calcule une matrice vérificatrice
du code de Hamming \([2^r-1,2^r-r-1,3]\) sur \(\F_2\).
VHamming(r)=matrix(r,2^r-1,(k,l)->(bitand(l+1,2^r)?1:0));
\(G_{23}\) est un \([23,12]\) code cyclique binaire. Montrer qu’il existe deux tels codes.
qorbites(23,2)
Calculer un polynôme générateur de \(G_{23}\).
factor(x^23-1%2)
Le polynôme
>>> g := x^11 + x^9 + x^7 + x^6 + x^5 + x + 1
convient.
Écrire une matrice génératrice \(G\) de \(G_{23}\)
G := matrix(12, 23, (l,c)->coeff(g*x^l,c))
Montrer que \(d(G_{23})\geq 5\) (utiliser la borne BCH).
On veut déterminer les racines de \(g\). En notant \(x\mod g\) une racine, on voit que les autres sont les \(x^j\) pour \(j\in\set{1, 2, 4, 8, 16, 9, 18, 13, 3, 6, 12}\).
Calculer une matrice génératrice \(\overline G\) du code étendu \(\overline{G_{23}}\), obtenu en ajoutant un bit de parité (\(\sum x_i=0\)).
Le code étendu consiste à rajouter le bit de parité, ou à partir du polynôme \((x-1)g(x)\)
GE := matrix(12, 24, (l,c)->coeff(rem(g*(x-1%2)*x^l,x^23-1),c))%0
Vérifier que \(\overline{G_{23}}\) est auto-orthogonal.
GE * transpose(GE)
Montrer que les mots de \(\overline{G_{23}}\) ont un poids divisible par \(4\).
C’est vrai sur chacun des vecteurs de base
Montrer que \(\overline{G_{23}}\) est de distance \(8\).
Montrer que \(G_{23}\) est un code parfait.
Écrire une fonction qorbites(n,q)
qui calcule la liste des \(q\)-orbites
de \(\Z/n\Z\).
Combien y a-t-il de codes binaires cycliques de longueur 15 ?
qorbites(15,2) [[0], [1, 2, 4, 8], [3, 6, 12, 9], [5, 10], [7, 14, 13, 11]]
Le code de Golay ternaire \(G_{11}\) est un code cyclique de dimension \(k=6\) et de longueur \(n=11\).
On considère la construction de code gloutonne suivante :