From d20b23ad3ae1bfb06abcb8bd2f8919da126d4a85 Mon Sep 17 00:00:00 2001 From: Spectre Date: Wed, 27 Nov 2024 08:59:28 +0100 Subject: [PATCH] correction prof --- preuve.md | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/preuve.md b/preuve.md index df9a0a9..6906e43 100644 --- a/preuve.md +++ b/preuve.md @@ -5,12 +5,46 @@ precondition: |liste| > 0 index <- 1 while index < |liste| if liste[index] > Resultat - resultat <- liste[index] + Resultat <- liste[index] index <- index + 1 Resultat ``` # Preuve de terminaison La terminaison est assuré par la présence d'un variant de boucle (séquence d'entier naturel). *ici* ```plaintext -|liste| - index -```est un variant de boucles +|liste| - index ``` +est un variant de boucles + + +# Preuve de correction partielle +La correction partielle est assuré par *l'invariant de boucle* ici Resultat contient la valeur du plus grand élément de la liste entre les indices 0 et index - 1 inclus. +- Avant que le premier passage dans la boucle +Resultat contient liste[0] +index contient 1 +q est le plus grand élément de la liste sur [0; index-1 = 0] + +- Si à l'entrée dans la boucle invariant OK +resultat contient le maximum de la tranche de liste sur [0; index - 1] + +## 1) Cas si liste[index] > Resultat +alors Resultat <- liste[index] +donc Resultat = max(liste[i]) +i € [0; index] + + +## 2) Cas sinon liste[index]<= Resultat = max liste[i], i € [0;index - 1] +resultat = max(liste[i]) = Resultat +i € [0; index] +----- +index = index + 1 + +donc +index = index - 1 +----- +et +-------- ----- +Resultat contient le maxi de liste sur [0; index -1] +d'ou l'invariance +# Conclusion +l'algo se termine et, à la sortie, index = |liste| +et resultat contient le maxi de liste entre les index et |liste| - 1