Maths●●●●●Difficulty 4 of 5

Pourquoi aucune machine ne pourra-t-elle jamais trancher toutes les questions des mathématiques ?

En 1936, Alan Turing a prouvé qu'une question toute simple, « ce programme va-t-il s'arrêter ? », est une question à laquelle aucun ordinateur ne peut toujours répondre.

▶ Lancer l'histoire

Parce que certaines questions piègent toute machine qui essaie d'y répondre. En 1928, David Hilbert et Wilhelm Ackermann ont demandé un algorithme capable de prendre n'importe quel énoncé logique et de répondre « oui » ou « non » : est-il valide ? C'était l'Entscheidungsproblem, le « problème de la décision ». En 1936, Alonzo Church et Alan Turing ont chacun prouvé qu'un tel algorithme ne peut pas exister.

C'est la voie de Turing qui est restée, parce qu'elle parle de machines. Il a montré qu'une machine parfaite à décider les maths permettrait aussi de répondre à une question en apparence plus simple : pour n'importe quel programme et ses données, va-t-il finir par s'arrêter, ou tourner pour toujours ? On l'appelle aujourd'hui le problème de l'arrêt. Puis il a montré que cette question n'a pas de réponse générale.

La preuve est un piège magnifique. Imagine qu'on te donne un programme qui prédit toujours correctement si un programme s'arrête. Construis un programme contrariant qui interroge le prédicteur à son propre sujet, puis fait l'inverse : si le prédicteur dit « tu vas t'arrêter », il boucle pour toujours ; s'il dit « tu vas boucler », il s'arrête aussitôt. Demande maintenant au prédicteur ce que fera le contrariant. Quoi qu'il réponde, il a tort. Le prédicteur parfait ne peut donc pas exister. L'astuce est cousine de l'argument diagonal de Cantor sur les infinis.

Une maquette physique de machine de Turing : un long ruban enroulé entre deux bobines, qui passe sous une tête de lecture-écriture sur un socle en bois.
Une maquette de machine de Turing construite par Mike Davey : un ruban, une tête qui lit et écrit, une table de règles. Turing l'avait imaginée pour prouver ce que les machines ne peuvent pas faire.Photo: Rocky Acosta · CC BY 3.0

Ce fut un coup dur pour Hilbert, qui croyait encore en 1930 qu'aucun problème n'était insoluble et dont la devise était « nous devons savoir, nous saurons ». Cela ne veut pas dire qu'on ne peut jamais savoir si un programme s'arrête : les cas simples sont faciles, et de vrais outils prouvent que des programmes précis se terminent. Cela veut dire qu'aucune méthode unique ne marche dans tous les cas.

Le piège qui fait tomber tout prédicteur d'arrêt
  1. Étape 1: Supposer un prédicteur parfait H

    Il dit si n'importe quel programme s'arrête sur n'importe quelles données.

  2. Étape 2: Construire Contrariant

    Il interroge H sur un programme lancé sur son propre code, puis fait l'inverse.

  3. Étape 3: Donner Contrariant à lui-même

    Si H dit « s'arrête », il boucle ; si H dit « boucle », il s'arrête.

  4. Étape 4: Contradiction

    H se trompe dans tous les cas : H ne peut pas exister.

Quiz

0/3

  1. 1.Comment Turing a-t-il montré que le problème de la décision de Hilbert n'a pas de solution ?
  2. 2.Dans la preuve, que fait le programme « contrariant » ?
  3. 3.Qu'est-ce que l'indécidabilité du problème de l'arrêt NE veut PAS dire ?

Récap

Tout prédicteur d'arrêt peut être piégé par un programme qui l'interroge sur lui-même et fait l'inverse.

Le fait surprenant · Turing n'a jamais employé le mot « halting » : le nom « problème de l'arrêt » est apparu vers 1952.

Sources (6)

Pas de source, pas d'affirmation. Chacun des 26 faits de cette leçon renvoie à au moins une de ces sources.

  1. [1]Entscheidungsproblem · Wikipedia
  2. [2]Halting problem · Wikipedia
  3. [3]Alan Turing · Wikipedia
  4. [4]Ignoramus et ignorabimus · Wikipedia
  5. [5]David Hilbert · Wikipedia
  6. [6]Turing machine · Wikipedia
D'autres leçons · ➗ Maths (3) Toutes les leçons « Maths » →

Une lumière de plus sur ta carte.

Reçois une leçon comme celle-ci chaque jour, sur les sujets que tu aimes. Gratuit, en deux ou cinq minutes.

Récupère la carte à partager de cette leçon ↗