Terminaison d'un algorithme
La terminaison est une propriĂ©tĂ© fondamentale des algorithmes. Elle stipule que les calculs dĂ©crits par l'algorithme s'arrĂȘteront. En gĂ©nĂ©ral cet arrĂȘt doit avoir lieu quelles que soient les donnĂ©es initiales que l'on fournit Ă l'algorithme. Si l'on veut insister sur ce point on parle alors souvent de terminaison uniforme, mais le plus gĂ©nĂ©ralement « terminaison » couvre aussi bien l'arrĂȘt sur une donnĂ©e que l'arrĂȘt sur toutes les donnĂ©es et c'est le contexte qui dĂ©cide. La terminaison forme avec la correction partielle un des aspects de la correction des algorithmes, la correction partielle et la terminaison forment ce que l'on appelle la correction totale.
Dans le cas spĂ©cifique des machines de Turing, la terminaison s'appelle l'arrĂȘt (halting en anglais dans le vocabulaire de Turing). Un cas particulier d'Ă©tude de la terminaison est la terminaison d'un systĂšme de rĂ©Ă©criture.
Notion de terminaison
Ătant donnĂ© un algorithme et des valeurs, la question de sa terminaison est de savoir s'il va s'arrĂȘter s'il prend en entrĂ©e ces valeurs. Par exemple l'algorithme de pseudo-code :
- tant que i est supérieur à 0 remplacer i par i+1,
ne sâarrĂȘtera sur aucune entrĂ©e positive.
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 muni d'un ordre bien fondé, typiquement l'ensemble des entiers ou l'ensemble des couples d'entiers ou l'ensemble des multiensembles sur un ensemble déjà muni d'un ordre bien fondé. Par exemple, on choisira une fonction qui, pour un algorithme itératif décroßt à chaque boucle, et pour un programme 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 s'il termine ou pas. Ce problĂšme est indĂ©cidable, au sens algorithmique du terme.
Un concept dual: la sûreté
Dans le cas des processus non dĂ©terministes, la sĂ»retĂ© est un concept dual de la terminaison. En effet, au lieu de garantir que tous les calculs s'arrĂȘteront, la sĂ»retĂ© garantit qu'aucun des calculs ne s'arrĂȘtera, si on admet que l'arrĂȘt est un Ă©tat que l'on cherche Ă Ă©viter. En revanche si l'arrĂȘt est un Ă©tat que l'on recherche comme bon, la vivacitĂ© est apparentĂ©e Ă la terminaison.
Notes et références
- « Terminaison des algorithmes », sur CPGE du lycée Montesquieu.
- Paul Gastin, « Algorithmique : Terminaison », sur ENS de Cachan, .
Voir aussi
- Complexité en temps, une autre caractéristique importante pour les programmes qui terminent : le temps de calcul en fonction de la taille de l'entrée