Machines de Turing
Ce modèle de calcul date de 1936 et est du à Turing. Historiquement, c'est le premier modèle "plutôt nformatique", et sûrement le modèle le plus connu. Une machine de Turing est constituée d'une ou plusieurs bandes de lecture/écriture et d'une unité de contrôle finie (une sorte d'automate fini). Chaque bande est divisée en cases, chaque case contenant un symbole d'un alphabet fini, fixé à priori. Les bandes sont infinies des deux côtés, dans le sens où il y a un nombre infini de cases à gauche et à droite de toute case. 0n dispose des têtes de lecture et écriture, permettant comme leur nom l'indique de lire le contenu d'une case et écrire des symboles de l'alphabet dans cette case.
La machine obtenue est une sorte d'automate, mais disposant de mérnoire infinie (par écriture sur les bandes). Donnons une définition formelle des machines de Turing:
Définition: une machine de Turing à k bandes est
décrite par un septuplet (Q,T,I,,b,qO,qf). Les composantes de ce septuplet sont:
Notes:
Avant de continuer, nous donnons un exemple de machine de Turing. Il s'agit d'une machine à 3 bandes, ayant deux nombres sur les bandes 1 et 2 et écrivant leur somme sur la troisième bande (pour raison de simplicité, tout sera en base 2). On aura
La table de transitions est comme suit:
Etat | lecture | écriture | déplacement | nouvel état | remarques | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
q0 |
|
|
|
|
sans retenue | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
q1 |
|
|
|
|
avec retenue |
On n'a pas précisé la lecture sur la troisième bande, car il s'agit de la bande résultat, supposée vide (que des blancs) au départ.
Pour finir de décrire le fonctionnement de cette machine, il faut préciser qu'au début les têtes se trouvent sur le bit le plus à droite (la moins significative) des deux nombres, et qu'après l'exécution, les deux bandes sont vidés et la troisième bande contient le résultat, avec la tête de lecture/écrirure à gauche du résultat.
En ce qui conceme la complexité de cette rnachine, T(n),
elle est en (n). En
effet il suffit de lire les données pour finir l'exécution.
On peut remarquer que cette complexité est optimale, car on ne peut
pas avoir une complexité inférieure.
Variante de la machine de Turing
Dans la littérature on trouve plusieurs variantes de la machine de Turing. Ces modèles sont équivalents du point de vue de leur puissance de calcul. Les différents modèles se distinguent surtout selon les trois critères suivants:
Le nombre de bandes: on distingue les machines selon le nombre de bandes utilisés. Principalement on distinguera entre les rnachines à une bande et celles à plusieurs bandes.
La nature des bandes: on distingue les machines utilisant des bandes infinies des deux côtés et celles utilisant une bande infinie d'une côté seulement.
Le déterminisme ou non-déterminisme de la machine: le déterminisme de la machine est défini par le nombre de choix qu'on peut avoir dans la table de transitions. Dans le cas déterministe il s'agit bien sûr d'un choix unique. En ce qui concerne le cas non-déterministe divers auteurs considèrent plusieurs modèles, en permettant plusieurs transitions. Il existe une différence entre ces modèles, selon que l'on permet d'avoir plusieurs transitions sans aucune relation entre elles ou si on impose (dans le cas le plus restrictif) que deux transactions peuvent différer seulement en ce qui concerne le nouvel état. Nous adopterons cette version comme définition d'une machine non-deterministe. Cette version est aussi puissante que les autres, car en introduisant un nombre suffisant de nouveaux états, on peut transformer toute autre machine non-déterministe en une de ce type.
Dans la littérature on trouve d'autres distinctions aussi. Ainsi par exemple il existe un modèle de machine à plusieurs bandes, où les déplacements sont les mêmes sur toutes les bandes. Ce modèle encore a la mêrne puissance que les autres, car de façon évidente il est au moins aussi puissant que le modèle de la machine à une bande, et au plus aussi puissant que le modèle avec les déplacements indépendants et comme on prouver que ces deux modèles sont équivalent.
Une autre différence entre les modèles concerne le résultat. Comme on a vu au début de ce cours, on a plusieurs manières de définir des fonctions et en conséquence on a plusieurs modèles de machine. Ainsi on peut parler de machines qui "calculent", comme celle de l'exemple précédent. On peut aussi parler de machines qui reconaissent un langage. Comme ces deux approches sont fondamentalement équivalentes, on utilisera les deux en alternance.
Exercice:
Philippe Rolland : 21/03/98