Variant de boucle : démontrer qu'une boucle se termine

Théorème : une suite strictement décroissante d'entiers relatifs prend nécessairement des valeurs négatives.

Variant de boucle

Pour montrer qu'une boucle se termine, on peut montrer l’existence d’un variant de boucle.

Un variant de boucle est une quantité, associée à une boucle et permettant de prouver sa terminaison.

C'est souvent un entier positif tout au long de l’algorithme et qui décroît strictement après chaque itération .

Exemples

$n$ est un variant de boucle.

En notant $n_k$ et $p_k$ les valeurs de $n$ et $p$ après la $k$ème itération de la boucle, on a $\forall k\in\mathbb{N}$, $n_{k+1}=n_k-1$.

$(n_k)_{k\in\mathbb{N}}$ est donc une suite strictement décroissante d'entiers et donc la boucle se termine bien.

Cette suite est appelée la suite de Syracuse.

On ne sait pas démontrer si la boucle se termine pour toute valeur de $u_0$ ou pas

Une boucle for bien écrite se termine toujours.

La boucle se termine

Mal écrite mais elle se termine quand même

Exemple d'une boucle for qui ne se termine pas :

 Les boucles qui suivent se terminent-elles ? Pourquoi ?

$n$ est un variant de boucle.

On note $n_k$ la valeur de $n$ après $k$ itérations de la boucle, si pour tout $k$, $n_k>0$, la suite $(n_k)$ est une suite strictement décroissante d'entiers : $n_{k+1}\leqslant \frac12 n_k<n_k$ ce qui n'est pas possible.

Il existe donc un entier $k$ tel que $n_k=0$ et la boucle se termine.

$b$ est un variant de boucle. La boucle se termine.