Machine de Turing
![Vue d’artiste d’une Machine de Turing (sans la table de transition)](https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Maquina.png/220px-Maquina.png)
Eninformatique théorique,unemachine de Turingest un modèle abstrait du fonctionnement desappareils mécaniques de calcul,tel unordinateur.Ce modèle a été imaginé parAlan Turingen 1936, en vue de donner une définition précise au concept d’algorithmeou de « procédure mécanique ». Il est toujours largement utilisé eninformatique théorique,en particulier dans les domaines de lacomplexité algorithmiqueet de lacalculabilité.
À 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 unensemble finidesymboles.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 dansl'état 42et que le symbole contenu sur la case que vous regardez est « 0 », alors remplacer ce symbole par un « 1 », passer dansl'état 17,et regarder maintenant la case adjacente à droite ».
Lathèse de Churchpostule 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 sontTuring-complets).
Définition
[modifier|modifier le code]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:
- Unruban infinidivisé en cases consécutives. Chaque case contient un symbole d'unalphabetfini 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 ou 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 »;
- Unetête de lecture/écriturequi peut lire et écrire les symboles sur le ruban, et se déplacer vers la gauche ou vers la droite du ruban;
- Unregistre d'étatqui 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;
- Unetable d'actionsqui 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
[modifier|modifier le code]Plusieurs définitions formelles proches les unes des autres peuvent être données d'une machine de Turing. L'une d'elles[1],relativement courante, est choisie ici. Une machine de Turing est un quintupletoù:
- est un ensemble fini d'états;
- est l'alphabet de travaildes symboles de la bande, contenantun symbole particulier (ditblanc),;
- est l'état initial,;
- est lafonction de transition;
- est l'ensemble desétats acceptants(ou finals[2],terminaux),.
Il s'agit d'un modèle de machine de Turing complète et déterministe; i.eest définie et unique[3].
Les flèches dans la définition derepré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'étatet 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 possiblesdans la définition. On peut ainsi travailler plus précisément sur cet alphabet en réservant certains symboles de l'alphabet completpour les étapes de calcul de la machine. En particulier,le symbole blancne 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
[modifier|modifier le code]Doubler le nombre de ‘1’
[modifier|modifier le code]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:
Ancien état | Symbole lu | Symbole écrit | Mouvement | Nouvel état |
---|---|---|---|---|
e1 | 0 | (Arrêt) | ||
1 | 0 | Droite | e2 | |
e2 | 1 | 1 | Droite | e2 |
0 | 0 | Droite | e3 | |
e3 | 1 | 1 | Droite | e3 |
0 | 1 | Gauche | e4 | |
e4 | 1 | 1 | Gauche | e4 |
0 | 0 | Gauche | e5 | |
e5 | 1 | 1 | Gauche | 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):
|
|
|
|
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
[modifier|modifier le code]Dans l'exemple qui suit, la machine de Turing possède un ruban vide et permet de construire la suite 01010101010101...
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 etmagenta):
É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 binaireet
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'Euclide[4].
-
Établir une bijection entre les entiers naturels et les points du plan de coordonnées entières et positives[4].
Machines de Turing universelles
[modifier|modifier le code]![](https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Model_of_a_Turing_machine.jpg/220px-Model_of_a_Turing_machine.jpg)
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 machineTet des donnéesD,elle produit le même résultat que la machineTà laquelle on donnerait en entrée les donnéesD.
Une machine de Turing universelle a la capacité de calculer tout ce qui est calculable: on dit alors qu'elle estTuring-complète.En lui fournissant le codage adéquat, elle peut simuler toutefonction récursive,analyser toutlangage récursif,et accepter toutlangage partiellement décidable.Selon lathèse de Church-Turing,les problèmes résolubles par une machine de Turing universelle sont exactement les problèmes résolubles par unalgorithmeou par uneméthode concrète de calcul.
Réalisation d'une machine de Turing
[modifier|modifier le code]![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Machine_de_turing.jpg/220px-Machine_de_turing.jpg)
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 dedébordement de mémoire,contrairement à un ordinateur dont la mémoire est finie. En oubliant ce problème de mémoire, on peutsimulerune 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 êtreréifiéeà de nombreuses reprises en utilisant des techniques parfois assez originales, dont voici quelques exemples.
![Illustration d’une réalisation de machine de Turing en Lego créée pour l’année Turing](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Lego_Turing_Machine.jpg/220px-Lego_Turing_Machine.jpg)
- En,Jim MacArthur a réalisé une machine de Turing mécanique compacte, à 5 symboles, avec des billes comme support d'informations sur le ruban[5].
- En,à l’occasion de l’année Turing(en),une équipe d'étudiants de l'École normale supérieure de Lyona réalisé une machine de Turing entièrement faite de piècesLegosans électronique[6],[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 Hertz[8].Facilement transportable, ce prototype est utilisé régulièrement, dans le cadre de recherches algorithmiques, par des professeurs, des étudiants et des lycéens.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Machine_de_Turing_p%C3%A9dagogique.jpg/220px-Machine_de_Turing_p%C3%A9dagogique.jpg)
- 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 2021[9].
Références et bibliographie
[modifier|modifier le code]Références
[modifier|modifier le code]- (en)Harry R. LewisetChristos Papadimitriou,Elements of the Theory of Computation.Prentice-Hall,1982; second edition September 1997.
- « FINAL »,CNRTL:« En fait, il y a flottement entrefinalsetfinaux:le1ersemble être le plur. de la lang. cour. et des écrivains, le second celui des linguistes et des économistes ».
- Kévin Perrot, «Calculabilité. Cours 1: machines de Turing», suruniv-mrs.fr,(consulté en)
- Explications sur math.cnrs.fr
- (en)Jim MacArthur, «Turing machine», sursrimech.blogspot.fr,(consulté le).
- «Projet RUBENS», surrubens.ens-lyon.fr,(consulté le).
- David Larousserie,Le Monde,«Une machine entièrement mécanique qui ne manque pas d'air», surlemonde.fr,(consulté le).
- «Images des mathématiques», surimages-archive.math.cnrs.fr(consulté le)
- «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!»(consulté le).
Bibliographie
[modifier|modifier le code]: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,,237p.(ISBN978-2-7117-2077-4,SUDOC128299258).
- Jean-Michel Autebert,Calculabilité et décidabilité,Paris, Masson,,118p.(ISBN978-2-225-82632-0,SUDOC002676494).
- Éric Jacopin,Les machines de Turing: Introduction à la caractérisation de la complexité d'un problème,Toulouse,Éditions Cépaduès,,264p.(ISBN978-2-85428-865-0,SUDOC132323214).
- Turing
- Alan TuringetJean-Yves Girard,La machine de Turing,Paris, Éditions du Seuil,,192p.[détail de l’édition](ISBN9782020369282);cet ouvrage comprend notamment une traduction en français (par Julien Basch et Patrice Blanchard) de l'article original, ainsi qu'une correction parEmil Postdes 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,,p.230-265(lire en ligne);
- (fr)Alan Turing,Précis of ‘Computable Numbers’(lire en ligne).—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,,x+550(SUDOC005505526,présentation en ligne)— Nombreuses réimpressions, en 1957, 1959, 1962, 1964, 1967, 1971, 1974, 1980, 1988, 1991, 1996, 2000, 2009 notamment par Wolters-Noordhoff (Groningen)(ISBN0720421039),d'après la notice Sudoc. Nombreuses traductions.
- (en + fr)Stephen Cole Kleene,Mathematical Logic,Dover,— Réimpression Dover reprint, 2001,(ISBN0-486-42533-9).Traduction française parJean Largeault,Logique mathématique,Armand Colin, 1971 et Gabay 1987(ISBN2-87647-005-5).
Voir aussi
[modifier|modifier le code]Articles connexes
[modifier|modifier le code]- 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 TuringavecBenedict Cumberbatch
- Fonction constructible
Liens externes
[modifier|modifier le code]- Le film« La Machine de Turing réalisée »de Christophe Gombert et Hugo Deboise à visionner en ligne gratuitement.
- Le génie interrompu d'Alan Turing:présentation et bibliographie d'une conférenceBnFdeBernard Chazelle,programmée pour le
- Hamdi Ben Abdallah, «Comment fonctionne une machine de Turing?»,Interstices,(lire en ligne),article permettant d’essayer une machine de Turing.