Utiliser les invariants pour corriger un algorithme
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
- Comprendre la nécessité de corriger un algorithme.
- Savoir démontrer qu’un algorithme est correct.
- Coder et tester un algorithme ne prouve pas qu’il est correct.
- Trouver, puis utiliser un ou des invariants de boucle d’un algorithme (propositions qui doivent être vraies à chaque itération de l’algorithme) permet de prouver qu’il est correct.
- Utiliser des boucles (for et while).
- Utiliser une instruction conditionnelle.
- Écrire un algorithme.
En informatique, il est d’usage de déterminer une suite finie d’instructions pour résoudre un problème. On détermine ainsi un algorithme de résolution du problème.
En pratique, il est courant de coder cet algorithme dans un langage de programmation et de le tester pour vérifier qu’il fonctionne.
Tester un code qui implémente (traduit) un algorithme ne prouve toutefois pas qu’il est correct, qu’il fait ce que l’on attend de lui. Des exemples, même en grand nombre, ne constituent pas une démonstration.
C’est pourquoi il est nécessaire d’avoir une méthodologie pour démontrer qu’un algorithme est correct.
Pour démontrer qu’un algorithme est correct, on utilise les invariants de boucle.
En pratique, il faut démontrer que les propriétés choisies sont bien des invariants de boucle.
Pour chaque invariant, il y a quatre étapes, qui sont données ci-dessous.
- Initialisation : on montre que la propriété est vraie au début de la boucle.
- Hypothèse : on suppose que la propriété est vraie à la i-ème itération.
- Hérédité : à partir de l’hypothèse, on montre que la propriété est vraie à la (i+1)-ième itération.
- Conclusion : on montre qu’en sortie de boucle, le résultat obtenu est celui attendu.
Ce type de démonstration ressemble aux démonstrations par récurrence rencontrées en mathématiques.
Voici ci-dessous un algorithme de recherche du minimum dans un tableau Tab de nombres de taille n.
mini ← Tab[0] | Tab[0] est affecté à la variable mini. |
Pour i allant de 0 à n−1 | i = 0, puis i = 1, puis i = 2, puis… i = n−1 |
Si Tab[i] < mini, alors | Si Tab[i] est inférieur à mini, alors |
mini ← Tab[i] | on affecte Tab[i] à la variable mini. |
FinSi | Fin de l’instruction « Si ». |
FinPour | Fin de l’instruction « Pour ». |
- mini = Tab[0] = 2
- Pour i = 0, Tab[0] = mini (0 = 0). mini ne change pas.
- Pour i = 1, Tab[1] > mini (3 > 2). mini ne change pas.
- Pour i = 2, Tab[2] < mini (1 < 2). mini = Tab[2] = 1.
Pour démontrer que cet algorithme est correct, on a trouvé l’invariant de boucle suivant :
P(i) : « Après la i-ème itération de la boucle Pour, mini référence le minimum de Tab[0], Tab[1], …, Tab[i]. »
Démonstration de la correction
|
Voici ci-dessous un algorithme de détermination du quotient et du reste de a par b (des entiers naturels vérifiant a > b).
r ← a | a est affecté à la variable r |
q ← 0 | 0 est affecté à la variable q |
Tant que r >= b, | Tant que r est supérieur ou égal à b, |
q ← q+1 | on incrémente q de 1 |
r ← r−b | et on décrémente r de b. |
FinTantque | Fin de la boucle « Tant que ». |
Retourner q et r | On retourne q et r. |
a = 25 et b = 7
r = 25 et q = 0
- Pour q = 0, r = 25
25 > 7 - Pour q = 1,
r = 25 − 7 = 18
18 > 7 - Pour q = 2, r = 18 − 7 = 11
11 > 7 - Pour q = 3, r = 11 − 7 = 4
4 < 7 - On stoppe la boucle : q = 3 et r = 4.
On a bien 25 = 3 × 7 + 4.
Pour démontrer que cet algorithme est correct, on a trouvé l’invariant de boucle suivant :
P(i) : « Après la i-ème itération de la boucle Tant que, on a l’égalité a = bq + r. »
Démonstration de la correction
|
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !