GitLab now enforces expiry dates on tokens that originally had no set expiration date. Those tokens were given an expiration date of one year later. Please review your personal access tokens, project access tokens, and group access tokens to ensure you are aware of upcoming expirations. Administrators of GitLab can find more information on how to identify and mitigate interruption in our documentation.
printf("Message encodé (sans erreur) : %s\nSyndrome : %s\n\n",encode(msg),decode(encode(msg)));// Le syndrome doit être 0000
printf("Message encodé (avec une erreur) : %s\nSyndrome : %s\n\n",set_error(encode(msg),0),decode(set_error(encode(msg),0)));// Le syndrome doit être 1000
printf("-- Q4 --\n\n");
printf("La distance de Hamming entre les codewords %s et %s est : %d\n\n","10011000","10001011",hamming_distance("10011000","10001011"));
char*c1="10011000",*c2="10001011";
printf("La distance de Hamming entre les codewords %s et %s est : %d\n\n",c1,c2,hamming_distance(c1,c2));
printf("----- IV. Restaurez la gloire matricielle de P -----\n\n");
printf("-- Q1 --\n\n");
printf("Message : %s\n\tMessage encodé avec la matrice : %s\n\tMessage encodé avec le polynôme : %s\n\t%s\n\n","1001",encode("1001"),polynomial_encode("1001"),strcmp(encode("1001"),polynomial_encode("1001"))==0?"Bon résultat":"Mauvais résultat");
printf("Message : %s\n\tMessage encodé avec la matrice : %s\n\tMessage encodé avec le polynôme : %s\n\t%s\n\n",msg,encode(msg),polynomial_encode(msg),strcmp(encode(msg),polynomial_encode(msg))==0?"Bon résultat":"Mauvais résultat");
printf("Message encodé (sans erreur) : %s\nSyndrome : %s\n\n",polynomial_encode(msg),polynomial_decode(polynomial_encode(msg)));// Le syndrome doit être 0000
printf("Message encodé (avec une erreur) : %s\nSyndrome : %s\n\n",set_error(polynomial_encode(msg),0),polynomial_decode(set_error(polynomial_encode(msg),0)));// Le syndrome doit être 1000
printf("-- Q2 --\n\n");
// printf("Codeword : %s\t\tCodeword avec une erreur à la position %d : %s\n\n","10101101", 2, set_error("10101101", 2));
printf("Codeword : %s\t\tCodeword avec une erreur à la position %d : %s\n\n",encode(msg),2,set_error(encode(msg),2));
printf("-- Q3 --\n\n");
// char* codeword = polynomial_encode("1010");
// printf("Codeword : %s\n", codeword);
// for(int i = 0; i < 8; i++)
// {
// char* false_codeword = set_error(codeword, i);
// printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
// }
// printf("\n");
// codeword = polynomial_encode("1101");
// printf("\nCodeword : %s\n", codeword);
// for (int i = 0; i < 8; i++)
// {
// char *false_codeword = set_error(codeword, i);
// printf("Erreur à la position %d : %s\t\tC mod P : %s\n", i, false_codeword, polynomial_decode(false_codeword));
// }
// printf("\n");
// codeword = polynomial_encode("0111");
// printf("\nCodeword : %s\n", codeword);
// for (int i = 0; i < 8; i++)
// {
// char *false_codeword = set_error(codeword, i);
// printf("Erreur à la position %d : %s\t\tC mod P: %s\n", i, false_codeword, polynomial_decode(false_codeword));
// }
char*codeword=polynomial_encode(msg);
printf("Codeword : %s\n",codeword);
for(inti=0;i<8;i++)
{
char*false_codeword=set_error(codeword,i);
printf("Erreur à la position %d : %s\t\tC mod P : %s\n",i,false_codeword,polynomial_decode(false_codeword));
}
printf("\n");
codeword=polynomial_encode("1101");
printf("\nCodeword : %s\n",codeword);
for(inti=0;i<8;i++)
{
char*false_codeword=set_error(codeword,i);
printf("Erreur à la position %d : %s\t\tC mod P : %s\n",i,false_codeword,polynomial_decode(false_codeword));
}
printf("\n");
codeword=polynomial_encode("0111");
printf("\nCodeword : %s\n",codeword);
for(inti=0;i<8;i++)
{
char*false_codeword=set_error(codeword,i);
printf("Erreur à la position %d : %s\t\tC mod P: %s\n",i,false_codeword,polynomial_decode(false_codeword));
2.*Au vu de la distance de Hamming de C, quelles sont ses capacités de correction et de détection d’erreur(s) ?*
1.*Au vu de la distance de Hamming de C, quelles sont ses capacités de correction et de détection d’erreur(s) ?*
Pour un Hamming code de distance d, on peut détecter $d-1$ erreurs et corriger $[d-1]/2$ erreurs. Pour le code C on peut donc détecter 3 erreurs et en corriger une.
Pour un Hamming code de distance d, on peut détecter $d-1$ erreurs et corriger $\frac{d-1}{2}$ erreurs. Pour le code C on peut donc détecter 3 erreurs et en corriger une.
## III - ...se cachent des polynômes générateurs équivalents.
...
...
@@ -59,51 +60,56 @@ On remarque le même motif qui se répéte en décalant à droite d'un bit sur c
*Répétez l’opération sur au moins deux autres mots Mb et Mc. Qu’observez-vous ?*
On remarque que le syndrome est le même pour une postion i peu importe le message de base.
On remarque que le résultat de C mod P est le même pour une postion i peu importe le message de base. Donc C mod P renvoit le syndrome et donc la position de l'erreur dans le codeword C.
1.*Soit le vecteur vi à 9 bits tel que seul le i eme bit est à 1. Pour tout $vi|i ∈$ {0,9}, calculez vi mod P. Que constatez-vous ? Que pouvez-vous en conclure ?*
4.*Soit le vecteur vi à 9 bits tel que seul le i eme bit est à 1. Pour tout $vi|i ∈$ {0,9}, calculez vi mod P. Que constatez-vous ? Que pouvez-vous en conclure ?*
On constate qu'en rajoutant un 9ème bit au vecteur, le syndrome se retrouve décalé d'un bit à gauche par rapport au syndrome qu'on obtient avec un vecteur de 8 bits.
5.*À l’aide de vos observations, implémentez un mécanisme efficace permettant de corriger des erreurs uniques. Justifier vos choix d’implémentation et tester votre implémentation.*
## V - Tests sur un Médium peu fiable
2.*À l’aide de vos observations, implémentez un mécanisme efficace permettant de corriger des erreurs uniques. Justifier vos choix d’implémentation et tester votre implémentation.*