![](//s1.studylibfr.com/store/data-gzf/e51b0375f201e047af07e9872bb8f521/1/003123065.htmlex.zip/bg1.jpg)
TP sur les codes correcteurs d’erreurs
Agr´egation, option calcul formel
Delphine Boucher
29 Janvier 2008
1 Codes de Hamming
1.1 Matrice de contrˆole.
Ecrire un programme qui prend en entr´ee un entier naturel rnon nul et qui calcule la matrice de
contrˆole d’un code de Hamming de longueur n= 2r−1.
Indications :
with(linalg):
r:=4;
H:=[];
colH:=convert(1,base,2):
ncolH:=nops(colH):
colH:=[op(colH),seq(0,j=1..r-ncolH)]:
colH:=[seq(colH[r+1-i],i=1..r)];
H:=augment(op(H),colH);
1.2 Matrice g´en´eratrice.
Ecrire une proc´edure qui prend en entr´ee un entier rnon nul et rend en sortie une matrice g´en´eratrice
d’un code de Hamming de longueur n= 2r−1.
Indications :
H := matrix([[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]]);
Ker:=Nullspace(H) mod 2;
G:=[]:
for v in Ker do G:=stackmatrix(op(G),v): od:
evalm(G);
#Construction d’un mot du code :
m:=vector([1,1,1,1,1,0,1,0,1,0,0]);
c:=evalm(m&*G);
c:=evalm(m&*G) mod 2;
c:=map(X->X mod 2,evalm(m&*G));
1.3 Canal de transmission.
Ecrire un programme qui simule l’erreur produite dans le canal de transmission. Il prendra en entr´ee
un mot de code cet ressortira le mot re¸cu xapr`es passage dans le canal de transmission. Vous perturberez
al´eatoirement le mot de code cen lui ajoutant un vecteur ede mˆeme longueur ayant des 0 partout sauf
1