AccueilđŸ‡«đŸ‡·Chercher

Machine de 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Ă©.

Vue d’artiste d’une Machine de Turing (sans la table de transition)
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 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 » ;
  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'elles[1], 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 finals[2], terminaux), .

Il s'agit d'un modÚle de machine de Turing complÚte et déterministe ; i.e est définie et unique[3].

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.

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 Ă©tatSymbole luSymbole Ă©critMouvementNouvel Ă©tat
e10 (ArrĂȘt)
1 0Droitee2
e21 1Droitee2
0 0Droitee3
e31 1Droitee3
0 1Gauchee4
e41 1Gauchee4
0 0Gauchee5
e51 1Gauchee5
0 1Droitee1

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)
ÉtapeÉtatRuban
1 e111
2 e201
3 e2010
4 e30100
Exécution (2)
ÉtapeÉtatRuban
5 e40101
6 e50101
7 e50101
8 e11101
Exécution (3)
ÉtapeÉtatRuban
9 e21001
10 e31001
11 e310010
12 e410011
Exécution (4)
ÉtapeÉtatRuban
13 e410011
14 e510011
15 e111011
(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 Ă©tatSymbole Ă©critMouvementNouvel Ă©tat
a 0Droiteb
b 1Droitea

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ÉtatRuban
1 a0
2 b01
3 a010
4 b0101
5 a01010
6 b010101
7 a0101010
8 b01010101
... ...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...

Machines de Turing universelles

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

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.

Illustration d’une rĂ©alisation de machine de Turing en Lego crĂ©Ă©e pour l’annĂ©e Turing
La machine de Turing en Lego crĂ©Ă©e Ă  l’occasion de l’annĂ©e Turing par Elie Gedeon, Etienne Py-Circan, Anael Grandjean, Florent Robic, Robin Perrotin, Thomas Lambert, Yannick LĂ©o, Kevin Perrot et Eddy Caron.

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.

  • 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[4].
  • En , Ă  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 Ă©lectronique[5] - [6].
Machine de Turing avec ruban circulaire.
  • En , un prototype expĂ©rimental pour concrĂ©tiser des machines de Turing (Ă©lectro-mĂ©canique : rĂ©alisĂ©e avec les technologies de l'Ă©poque de Turing) avec un ruban circulaire et relativement facilement programmable. Conçue en deux parties transportables, elle peut ĂȘtre utilisĂ©e pour des prĂ©sentations et des cours[7] - [8].
  • 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 2021[9].

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 », 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 », sur univ-mrs.fr, (consulté en )
  4. (en) Jim MacArthur, « Turing machine », sur srimech.blogspot.fr, (consulté le ).
  5. « Projet RUBENS », sur rubens.ens-lyon.fr, (consulté le ).
  6. David Larousserie, Le Monde, « Une machine entiÚrement mécanique qui ne manque pas d'air », sur lemonde.fr, (consulté le ).
  7. Marc Raynaud, « Un prototype programmable pour concrétiser la machine de Turing », sur machinedeturing.com (consulté le ).
  8. Ouest-France, « Marc Raynaud, un mathématicien savant inventeur », sur ouest-france.fr, (consulté le ).
  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 ! » (consultĂ© le ).

Bibliographie

Document utilisĂ© pour la rĂ©daction de l’article : 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, , 237 p. (ISBN 978-2-7117-2077-4, SUDOC 128299258). Ouvrage utilisĂ© pour la rĂ©daction de l'article
  • Jean-Michel Autebert, CalculabilitĂ© et dĂ©cidabilitĂ©, Paris, Masson, , 118 p. (ISBN 978-2-225-82632-0, SUDOC 002676494). Ouvrage utilisĂ© pour la rĂ©daction de l'article
  • Éric Jacopin, Les machines de Turing : Introduction Ă  la caractĂ©risation de la complexitĂ© d'un problĂšme, Toulouse, Éditions CĂ©paduĂšs, , 264 p. (ISBN 978-2-85428-865-0, SUDOC 132323214). Ouvrage utilisĂ© pour la rĂ©daction de l'article
Turing
  • Alan Turing et Jean-Yves Girard, La machine de Turing, Paris, Éditions du Seuil, , 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,‎ , 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 (SUDOC 005505526, 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) (ISBN 0720421039), d'aprĂšs la notice Sudoc. Nombreuses traductions.
  • (en), (fr) Stephen Cole Kleene, Mathematical Logic, Dover, — 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

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.