Adloun

« Il suffit de l'exécuter »

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 31 — Décidabilité et classes de complexité

Énoncé

Un élève propose : « pour savoir si s'arrête sur , il suffit de l'exécuter. S'il s'arrête, on répond oui ; s'il tourne encore au bout d'une heure, on répond non. » Que vaut cet algorithme ? Que décide-t-il exactement ?

Corrigé

Il ne décide rien, mais il fait quelque chose, et c'est ce quelque chose qu'il faut nommer.

Ce qu'il fait de correct. Si s'arrête sur , l'exécution le révèle — au bout d'un temps fini. La procédure « exécuter et attendre » répond donc oui sur toutes les instances positives. On dit que arrêt est semi-décidable : il existe un procédé qui reconnaît les « oui », et qui sur les « non » ne s'arrête jamais.

Ce qu'il fait de faux. Le seuil d'une heure. Répondre « non » parce qu'on n'a pas fini est un pari, et rien ne le justifie.

Une mesure qui rend la chose concrète. Prenons le programme de Syracuse : tant que n <> 1 faire n <– si n impair alors 3n+1 sinon n/2. Il termine sur tous les entiers essayés, mais on ignore s'il termine sur tous. Voici le plus long temps d'arrêt observé, par tranche :

Entrées essayéesArrêt le plus longAtteint en
étapes
étapes
étapes
étapes
étapes

Aucun seuil ne tient : pour chaque budget fixé, une entrée le dépasse. Avec un budget de étapes, le dépasse ; avec , c'est . Et , qui a l'air minuscule, demande étapes en montant jusqu'à — soit fois sa propre valeur.

La distinction à retenir.

Décidableun programme répond oui ou non, et s'arrête toujours
Semi-décidableun programme répond oui quand c'est oui, et boucle sinon

arrêt est semi-décidable et non décidable. Son complémentaire — « ne s'arrête pas sur » — n'est même pas semi-décidable : si les deux l'étaient, on obtiendrait un décideur en lançant les deux procédures en parallèle et en gardant celle qui répond.

Et voilà pourquoi les outils réels répondent « je ne sais pas » : c'est la seule troisième réponse qui permette à un programme de toujours s'arrêter.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.