You are on page 1of 26

Machine de Turing

Nous avons vu quun programme peut tre considr comme la dcomposition de la tche raliser en une squence dinstructions lmentaires (manipulant des donnes lmentaires) comprhensibles par lautomate programmable que lon dsire utiliser.
Cependant, chaque automate programmable (en pratique chaque processeur) se caractrise par un jeu dinstructions lmentaires qui lui est propre. Dans la pratique, cette diversit est rsolue par lexistence de compilateurs ou dinterprteurs qui traduisent les instructions du langage (volu) mis disposition des programmeurs en les instructions lmentaires (langage machine) du processeur utilis. Cependant, cette solution nest pas suffisante pour les besoins de linformatique thorique, qui require une reprsentation unifie de la notion dautomate programmable, permettant de dmontrer des rsultats gnraux (dcidabilit, complexit, ...) vrais pour lensemble des automates programmables concrets que lon peut envisager.

A cette fin a t dveloppe la notion de machine de Turing, qui constitue une abstraction (et une formalisation) de la notion dautomate programmable.

Informatique II

Algorithmique

Machine de Turing: dfinition


Une machine de Turing est un automate abstrait, constitu des lments suivants:
une bande infinie, dcompose en cellules au sein desquelles peuvent tre stocks des caractres (issus dun ensemble fini). une tte de lecture/criture, pouvant: - lire et modifier le caractre stock dans la cellule correspondant la position courante de la tte (le caractre courant) - se dplacer dune cellule vers la gauche ou vers la droite (modifier la position courante) un ensemble fini dtats internes permettant de conditionner le fonctionnement de la machine une table de transitions indiquant, pour chaque couple (tat interne, caractre courant) les nouvelles valeurs pour ce couple, ainsi que le dplacement de la tte de lecture/criture. Dans la table de transisitions, chaque couple est donc associ un triplet: (tat interne [nouveau] , caractre [nouveau] , dplacement)
Informatique II Algorithmique

...

...

caractre tat courant courant

0
(1,0,+) (2,0,-)

1
(1,0,+) (2,0,-)

(2,,-) (3,,+)

1 2

avec + respect. - indiquant un dplacement vers la droite, respect. vers la gauche.

Machine de Turing: fonctionnement


Une machine de Turing fonctionne selon le principe suivant:
1) la bande est initialise avec la squence de caractres correspondant aux donnes dentres; 2) la tte de lecture/criture est positionnes sur la premire cellule de la bande, et ltat interne est positionn sa valeur initiale (par exemple 1) 3) tant que le couple courant (tat interne, caractre courant) est prsent dans la table de transitions, le triplet (tat interne [nouveau] , caractre [nouveau] , dplacement) est utilis pour mettre jour ltat interne, le caractre courant, puis le dplacement de la tte de lecture/criture est effectu. 4) lorsquest rencontr un couple (tat interne, caractre courant) non recens dans la table de transitions, la machine sarrte et la squence de caractres stocke ce moment-l sur la bande est considre comme le rsultat du traitement.

Informatique II

Algorithmique

Machine de Turing: exemple


Exemple: une machine de Turing dterminant si un nombre est pair
Entre:

le nombre tester, sous forme binaire Sortie: 1 si le nombre est pair, 0 sinon
dplace droite jusqu la n dtecte la n droite, revient sur le dernier caractre

Exemple pour lentre 2

1 0

efface et gauche

caractre tat

0
(1,0,+) (3,,-) (3,,-) (4,,-) x

1
(1,1,+) (4,,-) (3,,-) (4,,-) x

(2,,-) x (5,1,+) (5,0,+) (6,,-)


revient sur le dernier caractre dplace droite
dplace droite

1 2 3 4 5

0 1

rsultat et droite

0 2

repositionne au dbut et termine


1
5

revient au dbut en effaant tout

Informatique II

Algorithmique

Machine de Turing: forme canonique


On voit quune machine de Turing est caractrise par
1. sa logique de fonctionnement; 2. le codage de ses entres et sorties, sous forme de squences de caractres; 3. la table de transitions dcrivant son fonctionnement.

Si lon impose de coder les entres et les sorties sous forme binaire et dindiquer labsence de caractre dans une cellule par le caractre , on obtient une reprsentation uniforme des machines de Turing, appele reprsentation canonique.

Dautres choix sont possibles pour la dfinition des machines de Turing (plusieurs bandes, autres oprations lmentaires, autres alphabets de caractres, ...) mais on peut montrer que les rsultats thoriques obtenus avec de telles machines sont quivalents ceux obtenus laide dune machine de Turing canonique.

Informatique II

Algorithmique

Machine de Turing universelle (1)


Le fonctionnement dune machine de Turing est conditionn par sa table de transition.
une machine de Turing constitue donc une abstraction pour la notion dautomate modifiable... ... mais pas encore pour celle dautomate programmable, pour laquelle le programme doit faire partie des donnes dentre de la machine, et non pas reprsenter un lment constitutif de lautomate (comme cest le cas pour la table de transitions dune machine de Turing)

Si lon dsire quune machine de Turing constitue une abstraction pour la notion dautomate programmable, il faut donc que sa table de transitions soit fixe, et que le conditionnement de son fonctionnement soit entirement impos par ses donnes dentres.
mais comment construire une telle machine, alors appele machine de Turing universelle ?

Informatique II

Algorithmique

Machine de Turing universelle (2)


On peut montrer que lon peut effectivement construire une machine de Turing universelle permettant de simuler le fonctionnement dune machine de Turing quelconque, i.e. davoir le mme comportement, pour ce qui est des entres et des sorties, tout en ayant une table de transitions fixe.
Lide permettant de construire une telle machine To est la suivante:
1. la table de transitions de la machine T simuler est code sous la forme dune squence binaire; la bande de la machine universelle est spare en deux zones distinctes, lune permettant de stocker la squence binaire reprsentant la table de la machine T, ainsi que sa configuration (tat interne, caractre courant), et lautre permettant de grer les vritables entres/sorties.

2.

Informatique II

Algorithmique

Machine de Turing universelle (3)

Le fonctionnement de la machine universelle peut alors tre schmatis ainsi:

Zone rserve la mmorisation de la conguration courante de T


...

Zone rserve la mmorisation de la table de T


... tat nouvel nouv. caract. tat caract. depl ...

Zone de la bande rserve la gestion des E/S


...

tat courant de T

caractre de T

(1) transfert du caractre courant (2) recherche de la conguration courante de T dans sa table (3) transfert du nouvel tat courant de T position courante de To

(4) transfert du nouveau caractre et dplacement de la tte

Informatique II

Algorithmique

Machine de Turing universelle (4)


La notion de machine de Turing universelle To permet dintroduire les notations utiles suivantes:
Soit T une machine de Turing, on noterai (T) la valeur entire correspondant la squence binaire codant la table de transitions de T Si i est une valeur entire correspondant au codage dune table de transitions, on notera Ti la machine de Turing universelle correspondante. On a donc: T = Ti(T) Si i est une valeur entire correspondant au codage dune squence dentre pour une machine de Turing T, on notera T(i) la squence de sortie produite par lapplication de T la squence dentre i (attention: T(i) peut ne pas tre dfinie, si T ne termine pas sur i) Si To est la machine de Turing universelle, T une machine de Turing et j une squence dentre pour T, on notera To(i(T),j) le rsultat de la simulation de T sur j par To On a donc: To(i(T),j) = T(j) (lorsque ces valeurs sont dfinies)

Informatique II

Algorithmique

Intrt des machines de Turing

Les machines de Turing constituent une notion centrale en informatique, car:

elles permettent de donner une base thorique solide aux notions importantes de dcidabilit et de complexit (notions voques plus en dtails plus loin dans ce cours);

elles permettent de donner un contenu prcis la notion informelle dalgorithme

Informatique II

Algorithmique

10

Algorithme: dfinition (1)

Algorithme: (dnition informelle) un algorithme, pour une tche donne, est la dcomposition de cette tche en une squence finies dtapes lmentaires permettant de la raliser.

Si la tche peut tre formalise sous la forme dune association entre des entres et des sorties, alors produire une machine de Turing permettant de raliser cette association peut tre vu comme une faon possible de rsoudre la tche.

La table de transitions de la machine produite est donc une reprsentation particulire possible de lalgorithme de rsolution associ.

Informatique II

Algorithmique

11

Algorithme: dfinition (2)


Les machines de Turing fournissent donc, par dfinition, une reprsentation possible pour les algorithmes de rsolution des tches pouvant tre traites par des machines de Turing.
De plus, lexprience acquise dans le domaine de linformatique invite penser que les machines de Turing constituent en fait un outil encore plus puissant: Thse de Church:
tout algorithme peut tre reprsent sous la forme dune table de transitions dune machine de Turing.

Lide sous-jacente est que les machines de Turing, malgr leur apparente simplicit, possdent en fait une puissance suffisante pour permettre de rsoudre tout problme pouvant tre trait de faon automatique. une formulation savante de la thse de Church est doc:

tout problme calculable est Turing calculable

Informatique II

Algorithmique

12

Algorithmique

Un algorithme est: une suite finie de rgles appliquer, dans un ordre dtermin, un nombre fini de donnes, pour arriver, en un nombre fini dtapes, un rsultat, et cela quelque soit les donnes traites. [Encyclopedia Universalis]

Un algorithme correspond donc la partie conceptuelle dun programme, indpendante du langage de programmation. Le programme est alors limplmentation de lalgorithme, dans un langage de programmation (et sur un systme) particulier.

Informatique II

Algorithmique

13

Approche descendante
Mthode de rsolution: (laboration de solutions algorithmiques)

On rsoud gnralement un problme par une analyse descendante, cest--dire une analyse du plus gnral au plus spcifique. Cette analyse se fait laide de blocs imbriqus, 1 correspondant des traitements de plus en plus spcifiques, eux aussi dcrits laide dalgorithmes. 2

1. Notons le parallle vident avec limplmentation du programme dcompos en fonctions 2. La mthode de rsolution est donc itrative: on rsoud par analyses successives, des niveaux de dtails de plus en plus prcis.

Informatique II

Algorithmique

14

Exemple: tri par insertion


Un algorithme: tri (dun tableau) par insertion

le principe du tri par insertion est extrmement simple:


tout lment mal plac dans le tableau va tre dplac vers (insr ) sa bonne place
Par lment mal plac, on entend ici un lment pour lequel la relation dordre (utilise pour le tri) avec llment prdcesseur nest pas satisfaite... par exemple, un lment strictement plus petit que son prdcesseur, pour un tri suivant lordre croissant. Par sa bonne place, on entend ici une position parmis les lments dj tris pour laquelle la relation dordre entre le prdcesseur et llment est satisfaite, ainsi quentre llment et son successeur.
1 3 4 2 6 5 1 3 4 2 6 5 2 1 2 3 4 6 5 1 2 3 4 5 5 6

1 2 3 4 6 5

Informatique II

Algorithmique

15

tri par insertion: rsolution globale


Le schma gnral de lalgorithme de tri par insertion est le suivant:

tri insertion
entre: un tableau dentiers quelconque sortie: un tableau dentiers tri (mmes lments que lentre)

chercher un lment mal plac tant quun tel lment existe: chercher sa bonne place dplacer llment vers sa bonne place chercher un lment mal plac n tant que
Informatique II Algorithmique 16

tri par insertion: rsolution dtaille (1)

Le bloc mal plac prend en entre un tableau tab, et donne en sortie lindice du premier lment de tab de prdcesseur strictement plus grand. Par convention, siil nexiste pas dlment admettant un tel sucesseur, la sortie sera MAX, la taille du tableau.

Comme le 1 er lment de tab ne peut tre mal plac (puisque sans prdcesseur), le bloc mal plac doit donc parcourir les lments de tab, la recherche dun lment mal plac, en partant du second lment.

Le bloc mal plac correspond donc une itration sur les lments de tab, du deuxime lment au dernier (dindice MAX-1).

Informatique II

Algorithmique

17

tris par insertion: rsolution dtaille (2)


Un algorithme pour le bloc mal plac sera:

mal plac
entre: un tableau dentiers sortie: lindice du premier lment mal plac pour chaque lment du tableau, partir du deuxime: comparer cet lment au prcdent sil est plus petit, alors il est mal plac: retourner lindice de cet lment (et terminer) n si n pour retourner MAX, la taille du tableau (et terminer)
Informatique II Algorithmique 18

tri par insertion: rsolution dtaille (3)

Le bloc bonne place prend en entre un tableau tab et lindice pos dun lment mal plac, et donne en sortie lindice newpos de la bonne place de llement dans le tableau.

La bonne place correspond la position dindice newpos ( <pos) le plus grand tel que tab[newpos-1] <= tab[pos], o 0 si cette relation nest pas satisfaite pour newpos = 1.

Le bloc bonne place doit donc parcourir les positions de tab, entre le premier lment et (au maximum) pos, la recherche de la bonne position

Le bloc bonne place correspond donc une itration sur les lments de tab, du premier lment celui dindice pos.

Informatique II

Algorithmique

19

tri par insertion: rsolution dtaille (4)


Un algorithme pour le bloc bonne place sera: 3

bonne place
entre: un tableau dentiers tab, lindice pos dun lment mal plac sortie: lindice de la bonne place de llment pour chaque lment du tableau, de 0 pos: si llment est plus grand que tab[pos]: retourner lindice de cet lment (et terminer) n si n pour
3. Lalgorithme correspond une interprtation (quivalente en terme de rsultat) de la description du transparent prcdent !

Informatique II

Algorithmique

20

tri par insertion: rsolution dtaille (5)

Le bloc dplacer prend en entre un tableau tab, lindice pos dorigine dun lment, et lindice newpos de destination de cet lment, et doit dplacer ledit lment de sa position dorigine sa positition de destination.

On peut effectuer cette opration par dcalages successifs (en utilisant un stockage temporaire tmp)

tmp

tab

...
newpos newpos+1

...
pos

...

Informatique II

Algorithmique

21

tri par insertion: rsolution dtaille (6)


Un algorithme pour le bloc dplacer sera

dplacer
entre: un tableau, un indice dorigine pos, un indice nal newpos sortie: le tableau dans lequel llement dindice dorigine t dplac et
possde maintenant lindice nal (lordre des autres lments est conserv)

mmoriser llment dindice pos pour chaque lment du tableau entre pos-1 et newpos copier cet lment la position dindice courant+1 n pour copier llment mmoris la position dindice newpos

Informatique II

Algorithmique

22

Paradigme diviser pour rsoudre (1)

Il nexiste pas de mthode miracle pour fabriquer les solutions algorithmiques requises pour les problmes auxquels linformaticien peut tre confront.

Cependant, un certain nombre de schmas gnraux de rsolution peuvent tre utiliss.

Parmi ces schmas, on peut citer le paradigme diviser pour rsoudre (divide and conquer), qui est frquemment utilis.

Informatique II

Algorithmique

23

Diviser pour rsoudre (2)

Le schma gnral dune approche diviser pour rsoudre de rsolution dun problme P appliqu des donnes X est le suivant:
P(X): si X est suffisement simple ou petit, appliquer adhoc(X), sinon: dcomposer X en instances plus petites, x 1 , ..., x n puis pour tout x i (1 <= i <= n): rsoudre P(x i ) pour obtenir une solution partielle y i recombiner les y i pour obtenir une solution globale Y pour P(X) adhoc(X) est un algorithme permettant de rsoudre P pour des donnes X simples.

Informatique II

Algorithmique

24

Diviser pour rsoudre: exemple (1)


Un premier exemple dapplication du paradigme diviser pour rsoudre dj t prsent, loccasion de ltude des fonctions rcursives, avec le tri rcursif par insertion:
tri(X): si X est vide ou rduit 1 seul lment, X est solution sinon: dcomposer X en: x 1 = {X[1]} o X[1] est le 1 er lement de X, x 2 = X \ X[1] rsoudre tri(x 1 ) (cas trivial) -> y 1 rsoudre tri(x 2 ) (appel rcursif) -> y 2 produire une solution pour X en insrant y 1 sa bonne place dans y 2 , et retourner la combinaison obtenue.

Informatique II

Algorithmique

25

Diviser pour rsoudre: exemple (2)


Recherche par dichotomie:
Objectif: dterminer si un lment x appartient un ensemble E dlments E = {x 1 , ..., x n } Entre: x et E (sous la forme dun tableau tri) Sortie: vrai ou faux selon que x appartient ou non E. Schma de rsolution: appartient(x,E): si E est vide, la solution est faux sinon si E = {x 1 }, la solution est vrai si x=x 1 , faux sinon sinon (E = {x 1, ..., x n }) dcomposer E en: E 1 = {x n/2 } avec n/2 la division entire de n par 2 ! E 2 = {x 1 , ..., x (n/2)-1 } E 3 = {x (n/2)+1 , ..., x n } si y 1 = appartient(x,E 1 ) est vrai, alors Y est vrai sinon si x < x n/2 alors Y = y 2 = appartient(x, E 2 ) sinon Y = y 3 = appartient(x, E 3 ) (la solution est Y)

Informatique II

Algorithmique

26

You might also like