diff --git a/README.md b/README.md index 0347e6ed30d8584aaa81b576a6834ff24e0f579b..20cffea391933e64dca59044f76f0b25eb9b9671 100644 --- a/README.md +++ b/README.md @@ -19,19 +19,20 @@ En plus de cette classe le programme contient les fonctions suivantes : ## Explication de notre algorithme pour corriger le message -Afin de corriger le message, nous utilisons la méthode `reed_solomon` qui fonctionne de la manière suivante : -1) On parcourt toutes les combinaisons dans la liste 0 à index - 1 (de longueur 2 = 25 - 23 (le nombre de points juste a partir de l'index fournis)) ; -2) On crée une liste qui regroupe la combinaison avec les points de index à longueur de la liste - 1 ; -3) On construit le polynôme de Lagrange avec la méthode `compute_lagrange_polynomial` ; -4) On parcourt l'intégralité des points afin de vérifier si le polynôme est correct ; - 4.A) On injecte x dans le polynôme et on regarde que le résultat soit égale à y ; -5) Si on a suffisamment de points justes (m + n points), alors on a trouvé le seul et unique polynôme qui passe par tous les points du message sans erreur ce qui nous permet de corriger le message. +Afin de corriger le message, nous utilisons la fonction `reed_solomon` qui fonctionne de la manière suivante : +1) On parcourt toutes les combinaisons (de longueur 2 car 25 (longueur du message) - 23 (le nombre de points sans erreur à partir de l'index donné)) dans la sous-liste de points : 0 à index donnée (pas inclus) ; + 2) On crée une liste qui unie la combinaison i avec la sous-liste de points : index donnée à longueur de la liste de points (pas inclus) ; + 3) On construit le polynôme de Lagrange avec la fonction `compute_lagrange_polynomial` ; + 4) On parcourt l'intégralité des points afin de vérifier si on a trouvé le bon polynôme ; + 4.A) On injecte x dans le polynôme et on regarde que le résultat soit égale à y, si le résultat est égal à y, on incrémente un compteur ; + 5) Si le compteur est >= m + n (m = longueur du message, n = nombre d'erreurs maximales), alors on a trouvé le seul et unique polynôme qui passe par tous les points du message originel ; + 5.A) Si le compteur est < m + n on retourne au point 2 et on recommence avec une autre combinaison ; +6) On corrige le message avec le polynôme. ## Résultat Message corrigé : Ce message vaut 18 points -Polynôme passant par tous les points du message : -229x²⁴ + 361x²³ + 51x²² + 312x²¹ + 36x²⁰ + 293x¹⁹ + 99x¹⁸ + 266x¹⁷ + 169x¹⁶ + 273x¹⁵ + 8x¹⁴ + 294x¹³ + 204x¹² + 35x¹¹ + 225x¹⁰ + 48x⁹ + 265x⁸ + 113x⁷ + 102x⁶ + 43x⁵ + 101x⁴ + 349x³ + 30x² + 138x + 67 +Polynôme passant par tous les points du message : 229x²⁴ + 361x²³ + 51x²² + 312x²¹ + 36x²⁰ + 293x¹⁹ + 99x¹⁸ + 266x¹⁷ + 169x¹⁶ + 273x¹⁵ + 8x¹⁴ + 294x¹³ + 204x¹² + 35x¹¹ + 225x¹⁰ + 48x⁹ + 265x⁸ + 113x⁷ + 102x⁶ + 43x⁵ + 101x⁴ + 349x³ + 30x² + 138x + 67