Adloun

Semi-décider l'arrêt

Exercice · OCaml (option informatique), chapitre 20 — Calculabilité et décidabilité

Énoncé

Écrire (en idéalisant l'exécution d'un programme) un semi-décideur de l'arrêt, et expliquer sa limite.

Corrigé

(* execute_n_etapes p x k : exécute p sur x pendant au plus k étapes,
   renvoie true si p s'est arrêté dans ce délai (fonction idéalisée). *)
let semi_arrete p x =
  let k = ref 0 in
  while not (execute_n_etapes p x !k) do k := !k + 1 done;
  true

On simule p de plus en plus longtemps. Si p s'arrête (en k0 étapes), on le détecte dès k = k0 et l'on renvoie true. Mais si p boucle, la recherche sur k ne s'arrête jamais : aucune réponse non. Semi-décideur, pas décideur.

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.