2. La machine de Turing

2.1. Présentation

En 1936, Alan Turing (1912-1954), dans [Turing36], présente sa machine (appelée depuis machine de Turing). Elle est composée :

Schéma structureMachine de Turing
Structure d'une machine de Turing

Le rôle du programme consiste à déterminer, pour un état qi de la machine et pour un symbole aj situé devant la tête de lecture-écriture, le nouvel état dans lequel passe la machine ainsi que l'opération effectuée sur le ruban. On représente un programme par un ensemble fini de quintuplets, appelé fonction de transition. Celle-ci définit les règles d'évolution, appelées règles de transition, de la forme (qi,aj, qk, al, dm) ou μ(qi,aj) = (qk, al, dm) où :

Parmi les états de la machine, il en existe un particulier : l'état initial (qI). C'est le premier état pris par la machine. Il existe aussi un ensemble d'états appelés états finaux.


Configuration
Configuration initiale
Configuration finale (terminale)

On appelle configuration tout couple symbole / état. Une règle détermine donc pour une configuration courante, l'action à effectuer et donc la prochaine configuration.

On appelle configuration initiale tout couple symbole / état où l'état est un état initial.

On appelle configuration finale tout couple symbole / état où l'état est un état final.

Si la machine de Turing est telle qu'il n'existe pas de règle μ(qi,aj)=(x,y,z) pour l'état qi et le symbole aj de la configuration courante alors le ruban est dit terminal. Si l'état courant est un état final alors l'exécution est réussie et le programme s'est déroulé normalement. Le cas contraire est une situation d'échec.

La suite de symboles S du ruban terminal est une chaîne dite terminale (la disposition de départ étant appelée chaîne initiale). Dans cette configuration S(q), la machine de Turing s'arrête. Par ailleurs, le symbole ε permet aussi souvent d'arrêter la machine, c'est-à-dire qu'il n'existe pas de transition de la forme μ(q,ε).


Machine de Turing déterministe

La machine de Turing est dite déterministe si pour toute configuration, il n'existe qu'une seule fonction de transition applicable, c'est-à-dire si et seulement si pour μ(x,y)=(z1,t1) et μ(x,y)=(z2,t2) deux règles, alors z1=z2 et t1=t2. Dans le cas contraire, la machine est dite non déterministe (pour une configuration donnée, plusieurs règles sont applicables).

 


Machine de Turing

Une machine de Turing est définie par un quintruplet (A, Q, I, F, μ) tel que :

  • A est l'alphabet (fini, non vide) ;
  • Q est l'ensemble des états possibles pour la machine (fini et non vide) ;
  • I ∈ Q l'état initial ;
  • F ⊆ Q l'ensemble des états finaux ;
  • μ la fonction de transition telle que μ : Q × A → Q × A × {D, G, C}. μ(qi,aj)=(qk,al,dm) signifie qu'on effectue les actions de remplacement, de déplacement et de changement d'état en qk pour la configuration courante d'état et de symbole.

La suite S1(q1), ..., Sn(qm) d'états (configurations) successifs du ruban et du programme lors de l'exécution d'une machine de Turing Tμ, est appelée calcul. Si S1 est la chaîne initiale et Sn une chaîne terminale alors Sn est aussi appelée résultat du calcul de S1 par la machine Tμ.

2.2. Cas particuliers de machine de Turing

Les différents types d'automates sont des cas particuliers de la machine de Turing. Parmi ceux-ci, on trouve les automates : linéairement bornés, à pile, finis...

Les automates finis sont des machines de Turing très spécifiques. Leurs caractéristiques, leur manipulation et leurs applications sont présentés en détail dans la suite du chapitre.

2.3. Machine de Turing et la théorie des langages

La machine de Turing manipule des symboles. Ceci n'est pas restrictif car tous les problèmes calculables (pour lesquels il existe un algorithme permettant de les résoudre dans un temps fini) peuvent se ramener à la manipulation de symboles et donc peuvent être programmés sur une machine de Turing.

Dans le cadre de la théorie des langages, la correspondance est évidente. Les machines de Turing sont alors appelées accepteurs ou reconnaisseurs [Aho et al. 91] [Ginzburg 68].

Soit A un alphabet et A* l'ensemble des mots que l'on peut construire avec les symboles de A. Une chaîne (mot) awb (a et b ∈ A et w ∈ A*), écrite sur le ruban et entourée de caractères ε, est acceptée si la machine part de la position gauche (i.e. dans la configuration initiale (I,a)) et s'arrête avec la tête de lecture placée après le caractère le plus à droite différent de ε dans un état final (i.e. dans la configuration finale (qf,b) avec qf ∈ F). Si elle s'arrête dans un état n'étant pas final alors la chaîne est refusée.

Le langage défini par un accepteur est l'ensemble des chaînes (mots) qu'il accepte. Il existe donc une correspondance entre les grammaires (et les langages) et les machines de Turing (cette correspondance sera étudiée en détail plus loin). Une machine de Turing (ou un automate) est donc alors vue comme l'implémentation d'une fonction f telle que :
f : A* → {Accepté, Refusé}.


vendredi, 19/09/03 21:42