Skip to content
Snippets Groups Projects
Commit 3f7a6377 authored by Florian Burgener's avatar Florian Burgener
Browse files

Update README

parent 2126fb22
No related branches found
No related tags found
No related merge requests found
# TP numéro 1 : Polynômes et Reed-Solomon (modulo un nombre premier) # TP numéro 1 : Polynômes et Reed-Solomon (modulo un nombre premier)
Cours : IT 122 – 2021-2022 Cours : ISC 122 – 2021-2022
Groupe : Florian BURGENER, Gawen ACKERMANN, Quentin FASLER, Dario GENGA Groupe : Gawen ACKERMANN, Florian BURGENER, Quentin FASLER, Dario GENGA
## Structure du projet ## Structure du projet
Afin de réaliser ce travail pratique, nous avons créé une classe `Polynomial`, contenant des méthodes permettant Afin de réaliser ce travail pratique, nous avons créé une classe `Polynomial`, contenant des méthodes permettant
d'ajouter, multiplier et faire une division modulaire sur des polynômes. Cette classe peut également afficher le d'ajouter, multiplier et d'appliquer un modulo sur un polynôme. Cette classe peut également afficher le
polynôme dans la console et calculer le résultat du polynôme en passant une valeur à x. polynôme dans la console et d'obtenir y en passant x par le polynôme (faire P(x) = y).
En plus de cette classe le programme contient les méthodes suivantes : En plus de cette classe le programme contient les fonctions suivantes :
- `get_bezout_coefficients(a, b)` : Calcule les coefficients de bézout pour les valeurs `a` et `b` - `get_bezout_coefficients(a, b)` : Calcule les coefficients de bézout pour les valeurs `a` et `b` ;
- `modular_inverse(a, n)` : Calcule l'inverse modulaire de `a` par `n` - `modular_inverse(a, n)` : Calcule l'inverse modulaire de `a` dans les modulos `n` ;
- `compute_lagrange_polynomial(points, prime_number)` : Calcule le polynôme de lagrange à partir des `points` en - `compute_lagrange_polynomial(points, prime_number)` : Calcule le polynôme de Lagrange dans un modulo `prime_number` passsant par tous les `points` ;
utilisant un inverse modulaire obtenu avec le `prime_number`. - `reed_solomon(...)` : Corrige le message en appliquant la méthode de Reed-Solomon.
- `reed_solomon(...)` : Décode le message via reed solomon.
## Démarche de décodage ## Explication de notre démarche pour corriger le message
Afin de décoder le message, nous utilisons la méthode `reed_solomon` qui fonctionne de la manière suivante : 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 de points possiblement juste. 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 une combinaison de points avec tous les points justes que l'on connait. 2) On crée une liste qui regroupe la combinaison avec les points de index à longueur de la liste - 1 ;
3) On ajoute x points qui sont probablement juste. (Dans notre cas 2 car la longueur du message (25) - le nombre de points juste a partir de l'index fournis (23) = 2) 3) On construit le polynôme de Lagrange avec la méthode `compute_lagrange_polynomial` ;
4) 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 ;
5) 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 ;
1) 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.
6) Si on a suffisamment de points justes (m+n points) , alors on a trouvé le bon et unique polynôme qui passe par tous les points du message sans erreur si que nous permet de corriger notre message.
## Résultat
## Message décodé Message corrigé : Ce message vaut 18 points
"Ce message vaut 18 points"
Polynôme passant par tous les points du message : Polynôme passant par tous les points du message :
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment