Aller au contenu

Terminaison d'un algorithme

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 8 mai 2015 à 12:23 et modifiée en dernier par Roll-Morton (discuter | contributions) (voir aussi complexité). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

La terminaison d'un algorithme désigne le fait qu'il termine ou pas, c'est-à-dire qu'il existe un moment où le calcul s'arrête ou pas. Le plus souvent on souhaite qu'un algorithme s'arrête et donne une sortie, on doit alors s'assurer de sa terminaison.

Un cas particulier est la terminaison d'un système de réécriture.

Notion de terminaison

Étant donné un algorithme, ou un programme, une question importante est de savoir si, une fois lancé, il va s'arrêter. Par exemple un algorithme prenant un entier i en entrée, et ayant comme code :

tant que i est supérieur à 0, remplacer i par i+1,

ne s’arrêtera pas sur l'entrée 1.

Preuve de terminaison

L'une des méthodes classiques pour prouver la terminaison d'un algorithme, est de définir une fonction, parfois appelée fonction de terminaison[1], qui satisfait les conditions suivantes. Elle a pour variables, les variables du programme, elle décroît pendant l'exécution et elle est à valeur dans un ensemble bien ordonné, typiquement l'ensemble des entiers. Par exemple, on choisira une fonction qui, pour un algorithme itératif décroît à chaque boucle, et pour un programment récursif décroît à chaque appel[2].

Problème de l'arrêt

Le problème de l'arrêt consiste, étant donné un algorithme, à décider si il termine ou pas. Ce problème est indécidable, au sens algorithmique du terme.

Notes et références

Voir aussi

  • Complexité en temps, une autre caractéristique importante pour les programme qui terminent : le temps de calcul en fonction de la taille de l'entrée