Preuve de correction d'une boucle par invariant : correction d'un exercice
Bonjour à toutes et à tous!
Je me tourne vers vous pour la correction d'un exercice dont voici l'énoncé:
"Considérez le problème de la recherche:
Entrée: Une suite n de nombres A={a1,a2,...,an} et une valeur v,
Sortie: Un indice i tel que v=A[i], ou bien la valeur spéciale NIL si v ne figure pas dans A.
Ecrire le pseudo-code pour recherche linéaire, qui parcourt la suite en recherchant v.
En utilisant un invariant de boucle, montrer la validité de l'algorithme.
Vérifier que l'invariant possède les trois propriétés requises."
Voici ce que j'ai rédigé pour la première question:
Code:
1 2 3 4 5 6 7
| Pour j=1 de longueursuite
A[j]=v // Valeur à rechercher
i=j
Pour i>0
Si A[i]=v alors retourner i
Sinon retourner valeur v=NIL
A[i+1]=A[i] |
Si je ne me trompe pas, l'invariant ici est "i=j"...? Il possède ainsi les trois propriétés requises:
1: à l'initialisation, i=j puisque la l'indice de la valeur cherchée correspond à l'indice du tableau
2: i=j avant l'itération suivante
3: A la terminaison: Bon bah là je ne sais pas quoi répondre...
Est-ce que quelqu'un pourrait me corriger?
D'avance merci
Titom