informatique (MP2I/MPI) · Chapitre 31 · Exercice de TD
L'arrêt sur l'entrée vide
Décidabilité et classes de complexité · niveau 2
Énoncé
On note arrêt-vide le problème : « étant donné le texte d'un programme , l'exécution de sur l'entrée vide se termine-t-elle ? ». Démontrer qu'il est indécidable.
Corrigé
On réduit arrêt à arrêt-vide — dans ce sens, puisque l'on veut transporter la difficulté de arrêt vers arrêt-vide.
La transformation. À un couple , on associe le texte du programme
(* q ignore son entree, se donne x, et lance p dessus. *)
let q () =
let x = "..." in (* la chaine x, ECRITE EN DUR dans le texte de q *)
executer p x
Fabriquer ce texte est un simple travail de chaîne de caractères : on colle et dans un patron. C'est calculable, et en temps linéaire en — donc polynomial, ce qui est bien plus que nécessaire ici.
L'équivalence. Par construction, ne fait rien d'autre que lancer sur . Donc
La conclusion. Supposons arrêt-vide décidable par un programme . Alors le programme suivant déciderait arrêt : recevant , il fabrique le texte de , appelle sur ce texte, et rend sa réponse. Or arrêt est indécidable. Contradiction : n'existe pas.
Ce que la démonstration illustre. On n'a pas refait de diagonale — on a réutilisé l'indécidabilité de arrêt. C'est le même mouvement que la np-difficulté à partir de sat : un premier résultat difficile, obtenu par un argument propre (la diagonale pour arrêt, Cook-Levin pour sat), puis une cascade de réductions.
Et un point de vocabulaire. La réduction employée ici transporte l'indécidabilité et n'a pas besoin d'être polynomiale — seulement calculable. C'est la même idée, à une exigence de ressources près : pour la complexité on borne le coût de la traduction, pour la calculabilité on ne le borne pas.
Exercices semblables
- Le certificat vide corrigé
- Du seuil à l'optimum corrigé
- Lire une réduction dans le bon sens corrigé
- Deux problèmes, une réduction d'une ligne corrigé
- Problème — Une réduction depuis SAT corrigé