Travaux pratiques
8. Écrire une procédure Syndrome:=proc(R,beta,delta) calculant le polynôme
syndrôme S(x) en fonction du message reçu m = R, de β et δ.
Écrire ensuite une procédure Localisateur:=proc(S,delta) calculant u(x) à
partir de S et δ. On implémentera l’algorithme de Berlekamp-Massey exposé
plus haut. Pour soigner l’affichage, utiliser la commande
collect(Normal(P) mod 2,x).
Tester ces procédures sur l’exemple de la question 7, en rajoutant un polynôme
d’erreur de votre choix au mot du code généré.
9. Écrire une procédure Erreur:=proc(u,n,beta) renvoyant le polynôme d’erreur e(x), dans le cadre des codes BCH binaires, en fonction du polynôme
localisateur d’erreur u(x), de n et β (remarquer que la valeur des erreurs est
connue !).
Écrire enfin une procédure Decode:=proc(R,n,g,beta,deta), utilisant les
trois procédures précédentes et renvoyant le message décodé, c’est-à-dire un
élément de F k
q . Si tout se passe bien, on retrouve M . Tester sur l’exemple
en cours de traitement. On pourra utiliser la commande evalb(M1=M2) pour
vérifier l’égalité de deux mots.
10. On désire maintenant tester le codage/décodage en « vraie grandeur ».
Écrire une procédure Bruit:=proc(NE,n) générant un bruit, c’est-à-dire le
polynôme d’erreur e(x), sous l’hypothèse w(e) = NE (nombre d’erreurs). On
choisira les positions d’erreurs aléatoirement.
Prendre C = BCH(2, 2 7 − 1, 19). Quelle est la dimension k du code ? Calculer
le rapport k/n. Combien d’erreurs peut-on corriger ? (Essayer de dépasser le
seuil t = E((δ − 1)/2).)
397
Précédent

- 419/479

Suivant