Les modèles du calculable: la machine de Turing

Définition

Un alphabet fini S={s0,s1,...}, contenant au moins 2 symboles.

Un ensemble fini d'états caractérisés par des symboles {q0,q1,...qn}.

Une bande infinie, sur laquelle peuvent être écrits des symboles appartenant à l'alphabet.

Une tête de lecture-écriture pouvant se déplacer sur la bande d'une position à la fois, dans un sens (G) ou dans l'autre (D).

 

La figure en donne une représentation schématique.

Un programme pour une machine de Turing est un ensemble fini de quadruplets de la forme (s,qi,a,qf):

  1. un symbole de l'alphabet s
  2. un état de la machine qi
  3. une action de déplacement (G ou D) ou d'écriture sur la bande d'un symbole de l'alphabet.
  4. un état interne qf

Quand la machine lit le symbole s, et qu'elle est dans l'état qi, elle réalise l'action a et passe dans l'état qf. Le symbole s et l'état qi constituent le préfixe du quadruplet, l'action a et l'état qf constituent le suffixe.

Une machine de Turing est dite déterministe quand les préfixes des quadruplets d'un programme sont tous différents.

Exemple:

Question: que fait ce programme? Prendre comme bande initiale BaaaBaaaaaB.

Remarquer que (q3 a B q3) est nécessairement terminal. Mais ce n'est pas le seul moyen d'arrêter une machine de Turing.

Résultats:

Toute machine non déterministe peut être, par un programme de machine de Turing, ramenée à une machine déterministe. Il suffit de "répliquer" le graphe des états.

L'arrêt d'un programme est indécidable:

Autre exemple (plus simple):

Question: que fait ce programme? Prendre comme bande initiale BBBBaaaB.

Autre exemple (plus difficile, qui montre la notion de "symbole non terminal"):

Question: que fait ce programme? Prendre comme bande initiale BBBBBaaB.