Machine de Turing
modèle abstrait du fonctionnement des appareils mécaniques de calcul, tel un ordinateur et sa mémoire
Pour les articles homonymes, voir Turing.
En informatique théorique, une machine de Turing est un modèle abstrait du fonctionnement
des appareils mécaniques de calcul, tel un ordinateur. Ce modèle a été imaginé par Alan
Turing en 1936, en vue de donner une définition précise au concept d’algorithme ou de
« procédure mécanique ». Il est toujours largement utilisé en informatique théorique, en
particulier dans les domaines de la complexité algorithmique et de la calculabilité.
Fig. 1 : Une hiérarchie d'automates.
Fig. 2 : Vue d’artiste d’une machine
de Turing : un ruban infini muni
d'une tête de lecture/écriture. La
machine dispose également d'une
table de transition, non représentée
sur l'image.
À l'origine, le concept de machine de Turing, inventé avant l'ordinateur, était censé représenter
une personne virtuelle exécutant une procédure bien définie, en changeant le contenu des
cases d'un ruban infini, en choisissant ce contenu parmi un ensemble fini de symboles. D'autre
part, à chaque étape de la procédure, la personne doit se placer dans un état particulier parmi
un ensemble fini d'états. La procédure est formulée en termes d'étapes élémentaires du type :
« si vous êtes dans l'état 42 et que le symbole contenu sur la case que vous regardez est « 0 »,
alors remplacer ce symbole par un « 1 », passer dans l'état 17, et regarder maintenant la case
adjacente à droite ».
La thèse de Church postule que tout problème de calcul fondé sur une procédure
algorithmique peut être résolu par une machine de Turing. Cette thèse n'est pas un énoncé
mathématique, puisqu'elle ne suppose pas une définition précise des procédures
algorithmiques. En revanche, il est possible de définir une notion de « système acceptable de
programmation » et de démontrer que le pouvoir de tels systèmes est équivalent à celui des
machines de Turing (ils sont Turing-complets).
Définition
Quoique son nom de « machine » puisse conduire à croire le contraire, une machine de Turing
est un concept abstrait, c'est-à-dire un objet mathématique. Une machine de Turing comporte
les éléments suivants :
1. Un ruban infini divisé en cases consécutives. Chaque case contient un symbole d'un
alphabet fini donné. L'alphabet contient un symbole spécial appelé « symbole blanc » ('0'
dans les exemples qui suivent), et un ou plusieurs autres symboles. Le ruban est supposé
être de longueur illimitée vers la gauche et vers la droite, en d'autres termes la machine
doit toujours avoir assez de longueur de ruban pour son exécution. On considère que les
cases du ruban contiennent par défaut le « symbole blanc » ;
2. Une tête de lecture/écriture qui peut lire et écrire les symboles sur le ruban, et se
déplacer vers la gauche ou vers la droite du ruban ;
3. Un registre d'état qui mémorise l'état courant de la machine de Turing. Le nombre
d'états possibles est toujours fini, et il existe un état spécial appelé « état de départ » qui
est l'état initial de la machine avant son exécution ;
4. Une table d'actions qui indique à la machine quel symbole écrire sur le ruban, comment
déplacer la tête de lecture (par exemple « » pour une case vers la gauche, « » pour
une case vers la droite), et quel est le nouvel état, en fonction du symbole lu sur le ruban
et de l'état courant de la machine. Si aucune action n'existe pour une combinaison
donnée d'un symbole lu et d'un état courant, la machine s'arrête.
Définition formelle
Plusieurs définitions formelles proches les unes des autres peuvent être données d'une
machine de Turing. L'une d'elles1, relativement courante, est choisie ici. Une machine de Turing
est un quintuplet où :
est un ensemble fini d'états ;
est l'alphabet de travail des symboles de la bande, contenant un symbole particulier
(dit blanc), ;
est l'état initial, ;
est la fonction de transition ;
est l'ensemble des états acceptants (ou finals2, terminaux), .
Il s'agit d'un modèle de machine de Turing complète et déterministe ; i.e
est définie et unique3.
Les flèches dans la définition de représentent les deux déplacements possibles de la tête de
lecture/écriture, à savoir le déplacement à gauche et le déplacement à droite. La signification
de cette fonction de transition peut être expliquée sur l'exemple suivant :
signifie que si la machine de Turing est dans l'état et qu'elle lit le
symbole , alors elle écrit à la place de , va dans l'état , puis déplace sa tête de lecture
vers la gauche.
Le fonctionnement de la machine de Turing est alors le suivant : à chaque étape de son calcul,
la machine évolue en fonction de l'état dans lequel elle se trouve et du symbole inscrit dans la
case du ruban où se trouve la tête de lecture. Ces deux informations permettent la mise à jour
de l'état de la machine grâce à la fonction de transition. À l'instant initial, la machine se trouve
dans l'état , et le premier symbole du ruban est l'entrée du programme. La machine s'arrête
lorsqu'elle rentre dans un état terminal. Le résultat du calcul est alors le mot formé par les
symboles successivement lus par la machine.
On peut contraindre un alphabet des entrées possibles dans la définition. On peut ainsi
travailler plus précisément sur cet alphabet en réservant certains symboles de l'alphabet
complet pour les étapes de calcul de la machine. En particulier, le symbole blanc ne doit
pas faire partie de l'entrée et peut donc définir la fin de cette dernière [pas clair].
Le premier exemple ci-dessous utilise une version très légèrement différente de machine de
Turing dans laquelle une machine s'arrête si elle est dans un état terminal et qu'elle lit un
certain caractère sur le ruban (ici le symbole blanc). Le deuxième exemple ci-dessous est le
premier exemple historique donné par Turing dans son article de 1936 : c'est une machine qui
ne s'arrête pas.
Exemples
Doubler le nombre de ‘1’
La machine de Turing qui suit possède un alphabet {‘0’, ‘1’}, ‘0’ étant le « symbole blanc ». On
suppose que le ruban contient une série de ‘1’, et que la tête de lecture/écriture se trouve
initialement au-dessus du ‘1’ le plus à gauche. Cette machine a pour effet de doubler le
nombre de ‘1’, en intercalant un ‘0’ entre les deux séries. Par exemple, « 111 » devient
« 1110111 ».
L’ensemble d’états possibles de la machine est {e1, e2, e3, e4, e5} et l’état initial est e1.
La table d’actions est la suivante :
Exemple de table de transition
Ancien état Symbole lu Symbole écrit Mouvement Nouvel état
0 (Arrêt)
e1
1 0 Droite e2
1 1 Droite e2
e2
0 0 Droite e3
1 1 Droite e3
e3
0 1 Gauche e4
1 1 Gauche e4
e4
0 0 Gauche e5
1 1 Gauche e5
e5
0 1 Droite e1
L’exécution de cette machine pour une série de deux '1' serait (la position de la tête de
lecture/écriture sur le ruban est inscrite en caractères gras et rouges) :
Exécution (1) Exécution (2) Exécution (3) Exécution (4)
Étape État Ruban Étape État Ruban Étape État Ruban Étape État Ruban
1 e1 11 5 e4 0101 9 e2 1001 13 e4 10011
2 e2 01 6 e5 0101 10 e3 1001 14 e5 10011
3 e2 010 7 e5 0101 11 e3 10010 15 e1 11011
4 e3 0100 8 e1 1101 12 e4 10011 (Arrêt)
Le comportement de cette machine peut être décrit comme une boucle :
Elle démarre son exécution dans l’état e1, remplace le premier 1 par un 0.
Puis elle utilise l’état e2 pour se déplacer vers la droite, en sautant les 1 (un seul dans cet
exemple) jusqu'à rencontrer un 0 (ou un blanc), et passer dans l'état e3.
L’état e3 est alors utilisé pour sauter la séquence suivante de 1 (initialement aucun) et
remplacer le premier 0 rencontré par un 1.
L'état e4 permet de revenir vers la gauche jusqu’à trouver un 0, et passer dans l’état e5.
L'état e5 permet ensuite à nouveau de se déplacer vers la gauche jusqu’à trouver un 0, écrit
au départ par l’état e1.
La machine remplace alors ce 0 par un 1, se déplace d’une case vers la droite et passe à
nouveau dans l’état e1 pour une nouvelle itération de la boucle.
Ce processus se répète jusqu’à ce que e1 tombe sur un 0 (c’est le 0 du milieu entre les deux
séquences de 1) ; à ce moment, la machine s’arrête.
Calculer un tiers en binaire
Dans l'exemple qui suit, la machine de Turing possède un ruban vide et permet de construire
la suite 01010101010101...
Exemple de table infinie
Ancien état Symbole écrit Mouvement Nouvel état
a 0 Droite b
b 1 Droite a
L’exécution de cette machine serait (la position de la tête de lecture/écriture sur le ruban est
inscrite en caractères gras et magenta) :
Exécution de la
Machine infinie
Étape État Ruban
1 a 0
2 b 01
3 a 010
4 b 0101
5 a 01010
6 b 010101
7 a 0101010
8 b 01010101
... ... 01010101...
Le comportement de cette machine peut être décrit comme une boucle infinie :
Elle démarre son exécution dans l’état a, ajoute un 0 et se déplace à droite.
Puis elle passe à l'état b, ajoute un 1 et se déplace à droite.
Elle revient dans l'état a et réitère la première étape.
Cette machine est la contrepartie du calcul de un tiers dont l'écriture en binaire est
0,010101010101...; en effet dans le système binaire et
soit un tiers écrit dans le système
binaire.
Deux exemples de machines de Turing donnés sous forme de schémas
Calcul du PGCD de deux entiers X et Y écrits en unaire, avec
l'algorithme d'Euclide4.
Établir une bijection entre les entiers naturels et les points du
plan de coordonnées entières et positives4.
Machines de Turing universelles
Article détaillé : Machine de Turing universelle.
Un modèle de la machine de Turing.
Comme Alan Turing le montre dans son article fondateur, il est possible de créer une machine
de Turing qu'on appelle « machine de Turing universelle » et qui est capable de « simuler » le
comportement de n'importe quelle autre machine de Turing. « Simuler » signifie que si la
machine de Turing universelle reçoit en entrée un codage d'une machine T et des données D,
elle produit le même résultat que la machine T à laquelle on donnerait en entrée les données
D.
Une machine de Turing universelle a la capacité de calculer tout ce qui est calculable : on dit
alors qu'elle est Turing-complète. En lui fournissant le codage adéquat, elle peut simuler toute
fonction récursive, analyser tout langage récursif, et accepter tout langage partiellement
décidable. Selon la thèse de Church-Turing, les problèmes résolubles par une machine de
Turing universelle sont exactement les problèmes résolubles par un algorithme ou par une
méthode concrète de calcul.
Réalisation d'une machine de Turing
La machine de Turing de Marc
Raynaud.
Une machine de Turing est un objet de pensée : son ruban est infini, et donc la mémoire d'une
machine de Turing est infinie. Une machine de Turing n'engendre jamais de débordement de
mémoire, contrairement à un ordinateur dont la mémoire est finie. En oubliant ce problème de
mémoire, on peut simuler une machine de Turing sur un ordinateur moderne.
Il est aussi possible de construire des machines de Turing purement mécaniques. La machine
de Turing, objet de pensée, a pu ainsi être réifiée à de nombreuses reprises en utilisant des
techniques parfois assez originales, dont voici quelques exemples.
La machine de Turing en Lego créée
à l’occasion du projet Rubens de
l'ENS-Lyon.
En avril 2011, Jim MacArthur a réalisé une machine de Turing mécanique compacte, à 5
symboles, avec des billes comme support d'informations sur le ruban5.
En mars 2012, à l’occasion de l’année Turing (en), une équipe d'étudiants de l'École normale
supérieure de Lyon a réalisé une machine de Turing entièrement faite de pièces Lego sans
électronique6,7.
En novembre 2013, Marc Raynaud élabore un prototype électromécanique de la machine de
Turing à 3 symboles, 12 états et 100 cases sur le ruban. Il fonctionne à la fréquence de 1
Hertz8. Facilement transportable, ce prototype est utilisé régulièrement , dans le cadre de
recherches algorithmiques, par des professeurs, des étudiants et des lycéens.
Machine de Turing programmable
avec 3 symboles et au plus 12 états.
En octobre 2020, une machine de Turing pédagogique conçue par Thierry Delattre
(Dunkerque), programmable pour des algorithmes ayant au maximum 12 états et avec un
alphabet de 3 symboles. 50 algorithmes peuvent être stockés en mémoire. Une version
ayant 22 états et 8 symboles date de février 20219.
Références et bibliographie
Références
1. (en) Harry R. Lewis et Christos Papadimitriou, Elements of the Theory of Computation.
Prentice-Hall, 1982; second edition September 1997.
2. « FINAL » (http://www.cnrtl.fr/definition/final) [archive], CNRTL : « En fait, il y a
flottement entre finals et finaux : le 1er semble être le plur. de la lang. cour. et des
écrivains, le second celui des linguistes et des économistes ».
3. Kévin Perrot, « Calculabilité. Cours 1 : machines de Turing (http://pageperso.lif.univ-mrs.f
r/~kevin.perrot/documents/2018/calculabilite/Cours01_18.pdf) [archive] », sur univ-
mrs.fr, printemps 2019 (consulté en novembre 2020)
4. Explications sur math.cnrs.fr (https://images-archive.math.cnrs.fr/La-machine-de-Turing-
4.html) [archive]
5. (en) Jim MacArthur, « Turing machine (http://srimech.blogspot.fr/search/label/turingmach
ine) [archive] », sur srimech.blogspot.fr, 8 juin 2012 (consulté le 20 février 2018).
6. « Projet RUBENS (http://rubens.ens-lyon.fr/fr/) [archive] », sur rubens.ens-lyon.fr,
mars 2012 (consulté le 20 février 2018).
7. David Larousserie, Le Monde, « Une machine entièrement mécanique qui ne manque pas
d'air (https://www.lemonde.fr/sciences/article/2012/06/22/l-ordinateur-en-lego-inspire-
par-alan-turing_1723058_1650684.html) [archive] », sur lemonde.fr, 22 juin 2012 (consulté
le 20 février 2018).
8. « Images des mathématiques (https://images-archive.math.cnrs.fr/La-machine-de-Turing
-1.html) [archive] », sur images-archive.math.cnrs.fr (consulté le 3 juillet 2024)
9. « Machine de Turing – Codez puis faites exécuter des animations lumineuses attrayantes,
des calculs mathématiques sur des nombres binaires, des séries de nombres, ou tout
autre application que vous inventerez à loisir ! (https://machine-de-turing.fr/) [archive] »
(consulté le 19 mars 2021).
Bibliographie
: document utilisé comme source pour la rédaction de cet article.
Manuels
Olivier Carton, Langages formels, calculabilité et complexité : licence et master de
mathématiques ou d'informatique, option informatique de l'agrégation de mathématiques ,
Paris, Vuibert, 2008, 237 p. (ISBN 978-2-7117-2077-4,
SUDOC 128299258 (https://www.sudoc.fr/128299258)).
Jean-Michel Autebert, Calculabilité et décidabilité, Paris, Masson, 1992, 118 p.
(ISBN 978-2-225-82632-0, SUDOC 002676494 (https://www.sudoc.fr/002676494)).
Éric Jacopin, Les machines de Turing : Introduction à la caractérisation de la complexité d'un
problème, Toulouse, Éditions Cépaduès, 2009, 264 p. (ISBN 978-2-85428-865-0,
SUDOC 132323214 (https://www.sudoc.fr/132323214)).
Turing
Alan Turing et Jean-Yves Girard, La machine de Turing, Paris, Éditions du Seuil, 1995, 192 p.
[détail de l’édition] (ISBN 9782020369282) ; cet ouvrage comprend notamment une traduction en
français (par Julien Basch et Patrice Blanchard) de l'article original, ainsi qu'une correction
par Emil Post des erreurs y figurant ;
(en) Alan Turing, « On Computable Numbers, with an Application to the
Entscheidungsproblem », Proceedings of the London Mathematical Society, série 2, vol. 45,
1936, p. 230-265 (lire en ligne (https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf) [archive]) ;
(fr) Alan Turing, Précis of ‘Computable Numbers’ (lire en ligne (http://www.turingarchive.org/browse.
php/K/4) [archive]). — Un brouillon pour une Note aux Comptes-Rendus de l’académie des Sciences de
Paris.
Kleene
Stephen Cole Kleene, Introduction to Metamathematics, Amsterdam, North-Holland, 1952,
x+550 (SUDOC 005505526 (https://www.sudoc.fr/005505526), présentation en ligne (https://books.google.co
m/books?id=HZAjPwAACAAJ) [archive]) — Nombreuses réimpressions, en 1957, 1959, 1962, 1964,
1967, 1971, 1974, 1980, 1988, 1991, 1996, 2000, 2009 notamment par Wolters-Noordhoff
(Groningen) (ISBN 0720421039), d'après la notice Sudoc. Nombreuses traductions.
(en + fr) Stephen Cole Kleene, Mathematical Logic, Dover, 1967 — Réimpression Dover
reprint, 2001, (ISBN 0-486-42533-9). Traduction française par Jean Largeault, Logique
mathématique, Armand Colin, 1971 et Gabay 1987 (ISBN 2-87647-005-5).
Voir aussi
Articles connexes
Machine de Turing non déterministe
Machine de Turing probabiliste
Machine de Turing alternante
Machine de Turing symétrique
Machine de Blum-Shub-Smale : une généralisation à des machines calculant sur
Problème de la décision
Expérience de pensée
Oracle (machine de Turing)
Imitation Game, film sur la vie d'Alan Turing avec Benedict Cumberbatch
Fonction constructible
Liens externes
Le film « La Machine de Turing réalisée » (http://videotheque.cnrs.fr/doc=3001) [archive] de
Christophe Gombert et Hugo Deboise à visionner en ligne gratuitement.
Le génie interrompu d'Alan Turing (http://smf.emath.fr/content/conf%C3%A9rence-bnf-2014
-b-chazelle) [archive] : présentation et bibliographie d'une conférence BnF de Bernard
Chazelle, programmée pour le 19 mars 2014
Hamdi Ben Abdallah, « Comment fonctionne une machine de Turing ? », Interstices,
22 mars 2013 (lire en ligne (https://interstices.info/comment-fonctionne-une-machine-de-turin
g/) [archive]), article permettant d’essayer une machine de Turing.
Portail de l'informatique théorique