La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre 3 Machines de Turing.

Présentations similaires


Présentation au sujet: "Chapitre 3 Machines de Turing."— Transcription de la présentation:

1 Chapitre 3 Machines de Turing

2 Qu’est-ce qu’un algorithme?
Quelque chose qui peut être à l’examen de IFT Quelque chose qui peut être programmé. (Mais que veut dire “programmer”?) Un ensemble fini d’instructions permettant d’effectuer une tâche donnée. Une recette finie que l’on peut suivre pour obtenir en temps fini une réponse à une question donnée. Je ne sais pas ce que c’est mais je sais faire la différence entre un algorithme et une vache.

3 Quelques algorithmes Comment additionner/multiplier deux entiers avec plus que 1 chiffre. Algorithme d’Euclide (300 av. J.C) pour calculer le plus grand diviseur commun de deux entiers. Algorithme pour déterminer si une équation ax2 + bx + c = 0 admet une solution. Historiquement, les algorithmes ont d’abord été des façons systématiques d’effectuer une série de calculs afin de résoudre une question mathématique.

4 Comment formaliser la notion?
Une notion formelle d’algorithme devrait répondre aux critères suivants: La description d’un algorithme est finie. On peut également désirer que cette description soit une liste d’instructions. Chaque étape d’exécution peut être effectuée en temps fini. Un algorithme reçoit une entrée finie et retourne une réponse de longueur finie. L’exécution d’un algorithme se termine toujours après un nombre fini d’étapes.

5 Essais de définition Algorithme: programme C de longueur finie.
Pas si mal. Quelques problèmes quand même: Pourquoi pas en Java, en COBOL, en Lisp? Où est la garantie que l’algorithme termine toujours son éxécution après un nombre fini d’étapes?

6 Espoirs mathématiques fin XIXe
Existe-t-il un algorithme qui étant donné un énoncé logique permet de décider si cet énoncé est vrai ou pas. Énoncé de Fermat n  3  x, y, z > 0: xn + yn  zn vrai Subtil algorithme faux

7 Bref historique Gödel a démontré qu’il existe des vérités mathématiques qu’on ne peut pas démontrer: théorème d’incomplétude. Alan Turing définit en 1934 un processus précis qui est assez général pour représenter toute méthode bien définie pour résoudre des problèmes de façon méthodique et automatisable. De là est né le concept de la machine de Turing. Machines de Turing  formalisation minimaliste de la notion d’algorithme. Thèse de Turing ou Church-Turing : toute notion « raisonnable » d’algorithme est équivalente à la notion de machine de Turing.

8 Voici une représentation schématique d’une machine de Turing:
ruban Mécanisme de contrôle et indicateur d’état Comme pour les automates finis, le ruban est infini vers la droite.

9 Différences avec les automates finis
La tête peut se déplacer dans les deux sens. C’est une tête de lecture/écriture. Il y a un seul état final, qui est un état d’arrêt (aussitôt que la machine l’atteint, elle s’arrête).

10 À chaque étape, la machine de Turing
lit un symbole ; fait une transition d’état (elle peut rester dans le même état) ; fait l’une des trois actions suivantes : écriture d’un symbole ; déplacement de la tête vers la droite ; déplacement de la tête vers la gauche.

11 Exemple Voici un diagramme de transitions d’une machine de Turing: a/R
h a/R b/R /a  est l’état initial. h est l’état final (état d’arrêt). /a signifie lire , puis écrire a. a/R signifie lire a, puis déplacer la tête vers la droite. b/R signifie lire b, puis déplacer la tête vers la droite

12 Définition Une machine de Turing est un sixtuplet ( S, , , , , h) où S est un ensemble fini d’états.  est l’alphabet de la machine ou alphabet d’entrée (les séquences d’entrée sont formées avec cet alphabet). L’espace libre (ou blanc), symbolisé par , ne fait pas partie de , i.e. qu’on a   .

13  est l’alphabet du ruban. On a    et   .
 est la fonction de transition  : (S - {h})   S  ({L,R}) où L, R . La signification de  est la suivante: (p, x) = (q, y) (où y ) : si dans l’état p le symbole sous la tête est x, remplacer x par y et passer dans l’état q. (p, x) = (q, L) : si dans l’état p le symbole sous la tête est x, déplacer la tête d’une case vers la gauche et passer dans l’état q. (p, x) = (q, R) : si dans l’état p le symbole sous la tête est x, déplacer la tête d’une case vers la droite et passer dans l’état q.

14 Puisque  est une fonction, la définition précédente est celle d’une machine déterministe, i.e. non ambiguë et totalement définie (l’état h, d’où n’origine aucune transition, a été enlevé de S avant de former le produit cartésien qui est le domaine de .)  est l’état initial. Dans les diagrammes de transitions, il sera indiqué de la même manière que pour les automates finis. h est l’état final (état d’arrêt). Dans les diagrammes de transitions, il sera indiqué par un double cercle, comme d’habitude.

15 Remarque Une machine de Turing peut :
se rendre à l’état final et arrêter; boucler indéfiniment; terminer anormalement en déplaçant la tête à gauche du ruban.

16 Remarques On suppose que  représente une case inoccupée du ruban : initialement, toutes les cases autres que celles qui contiennent la séquence d’entrée contiennent un . Notez aussi qu’il y a un seul état final.

17 Exemple Avec la machine suivante on a: a/R /a  h b/R
S = {, h}  = {a, b}  = {a, b, } (, a) = (, R) (, b) = (, R) (, ) = (h, a) Tant que cette machine rencontre des a et des b, elle déplace la tête vers la droite. Lorsqu’elle rencontre un blanc, elle passe dans l’état final, en remplaçant ce blanc par un a.

18 Définition Une configuration d’une machine de Turing, c’est la donnée d’un état et une description du contenu du ruban avec une indication de la position de la tête de lecture. La description du ruban se fait en donnant la séquence de symboles du ruban en commençant par la première case. Le symbole sous la tête de lecture/écriture est souligné. Des … à droite de cette séquence indiquent que le reste du ruban contient des blancs.

19 Exemple Une configuration possible de la machine suivante est a/R /a
h a/R b/R /a  abba… L’état est . Le premier symbole du ruban est le a de gauche; il est suivi d ’un b,puis d ’un autre b sur lequel se trouve la tête de lecture de la machine.

20 Supposons que la configuration initiale soit  abba…
Les configurations successives sont alors: h a/R b/R /a État Ruban  abba…  abba…  abba…  abba… h abbaa… arrêt

21 Exercice Supposons que la configuration initiale de la machine de Turing suivante soit 1 aaa… Donnez les configurations successives à cette configuration initiale. 1 3 a/R  /R a /R /  2

22 Solution État Ruban 1 aaa… 2 aaa… 3 aaa… 1 3 a/R  /R a /R / 

23 Exercice Construisez une machine de Turing M = (S, {a, b}, {a, b, }, , , h) qui arrête si et seulement si le patron abab se trouve sur le ruban à droite de la position initiale de la tête de lecture. Donnez la suite de configurations si la configuration initiale est  aabab… Que se passe-t-il si la configuration initiale est  ab ?

24 Solution 1 5 2 3 4 b/R /R a/R /R b/R  = 1, h = 5

25 État Ruban 1 aabab… 2 aabab… 1 aabab… 3 aabab… 4 aabab… 5 aabab… arrêt

26 État Ruban 1 ab… 2 ab… 3 ab… 1 ab… boucle infinie

27 Avantages et désavantages
Simplicité du modèle. Chaque instruction est vraiment réduite à sa plus simple expression. Malgré la simplicité, possède une très grande puissance de calcul. Défaut résultant: pour décrire avec une machine de Turing un processus compliqué, la machine est forcément très complexe.

28 Machines de Turing calculant une fonction
Les machines de Turing que l’on a présentées sont apparemment conçu pour simplement répondre “oui” ou “non”. On peut considérer plus généralement des MT qui calculent des fonctions, c’est à dire que leur sortie est une chaîne de caractères. Plusieurs façons possibles de formaliser cette notion. Par exemple, on peut considérer le contenu du ruban (jusqu’au premier ) après l’arrêt comme étant la valeur calculée par la machine.

29 Voici une représentation schématique d’une machine de Turing:
ruban Mécanisme de contrôle et indicateur d’état Comme pour les automates finis, le ruban est infini vers la droite.

30 Thèse de Church-Turing
Facile à croire: tout programme en C peut être réécrit comme un programme en Java qui fait la même tâche. Facile à croire: tout programme en C peut-être réécrit comme un programme en assembleur qui fait la même tâche. Facile à croire: tout calcul effectué par une machine de Turing peut-être effectué par un programme en C.

31 Thèse de Church-Turing
N’importe quel calcul automatique peut-être effectué à l’aide d’une machine de Turing. En d’autres mots: la notion intuitive d’algorithme correspond exactement à la notion de machine de Turing.

32 À cause de la thèse de Church-Turing, nous ne détaillerons pas les constructions de machines de Turing. Pour montrer qu’une tâche de calcul peut-être effectué à l’aide d’une machine de Turing M, on se contentera soit d’une description informelle du fonctionnement de M, soit d’une description de haut niveau d’un algorithme pour effectuer la tâche de calcul.

33 Exemples Nous avons construit une MT qui acceptait le langage {anbncn: n  N}. On aurait pu simplement écrire cette description informelle. M = “entrée w; Vérifier que w  a*b*c*; replacer la tête à l’extrème gauche et effacer un a, trouver le prochain b et l’effacer, trouver le prochain c et l’effacer. Si on ne peut trouver de b ou de c, arrêter et rejeter; Recommencer 2 tant qu’il reste des a. S’il reste un b ou un c après l’effacement des a, arrêter et rejeter. Sinon, arrêter et accepter.”

34 ... ou cette description “haut-niveau” d’un algorithme pour cette tâche.
M = “Entrée w; Vérifier que w  a*b*c*; Compter le nombre de a, de b et de c dans w. Si ces trois nombres sont égaux arrêter et accepter, sinon arrêter et rejeter.

35 On peut aussi imaginer un langage de programmation très primitif qui correspond presque parfaitement aux machines de Turing. Un pointeur vers la mémoire, initialisé à 1. Mémoire constitué d’un nombre infini de blocs indexés 1, 2, 3, ... Chaque bloc contient un symbole de . Initialement, les k premières cases de mémoire contiennent les k symboles de l’entrée. Les autres contiennent .

36 Le résultat des différents cas est
Un programme est une liste finie d’instructions numérotées de 1 à t. Chaque instruction est un switch qui considère les valeurs possibles de l’instruction courante et du symbole sous le pointeur. Le résultat des différents cas est L’écriture d’un symbole de  dans le bloc sous le pointeur. Possiblement pointeur:= pointeur + 1 ou pointeur := pointeur – 1. Goto instruction ou Halt & accept ou Halt & reject. Les instructions sont simplement les états de la machine et le pointeur la tête de lecture.

37 Définition de la reconnaissance
Soit L un langage sur  et w  *. La séquence w est acceptée (ou reconnue) par la machine de Turing M = (S, , , , , h) si et seulement si M s’arrête normalement (dans l’état final) à la suite d’une exécution commençant dans la configuration  w … Par exemple, avec w = abaa, la configuration initiale est   abaa  … c’est-à-dire a b État initial

38 Comme d’habitude, L(M) = {w : M accepte w } est le langage accepté (ou reconnu) par M. Si L = L(M) pour une machine de Turing M, on dit que L est Turing-acceptable ou récursivement énumérable. Ce dernier terme est le terme usuel; il reflète le fait que les séquences d’un tel langage peuvent être énumérées (listées) par une machine de Turing.

39 Définition équivalente de reconnaissance
Voici une définition équivalente de reconnaissance par machine de Turing. Cette définition est plus utile pour faire certaines preuves. Acceptation avec message. Soit M une machine de Turing. M accepte une séquence w avec message si Elle s’arrête dans la configuration O…lorsque w  L(M); Elle ne s’arrête pas ou s’arrête anormalement ou s’arrête dans une configuration autre que O… lorsque w  L(M).

40 Théorème L’acceptation par arrêt (i.e. la première définition d’acceptation) est équivalente à l’acceptation avec message. Soit M = (S, , , , , h) une machine de Turing qui accepte par arrêt. Il existe une machine de Turing M’ = (S’, , ’, ’, ’, h’) qui accepte avec message et telle que L(M) = L(M’). Soit M = (S, , , , , h) qui accepte avec message. Il existe une M’ = (S’, , ’, ’, ’, h’) qui accepte par arrêt telle que L(M) = L(M’).

41 Démonstration (aperçu)
Soit M = (S, , , , , h) une machine de Turing qui accepte par arrêt. Il existe une machine de Turing M’ = (S’, , ’, ’, ’, h’) qui accepte avec message et telle que L(M) = L(M’). Description informelle de M’: M’ = “Entrée w; Suivre les mêmes étapes que M en marquant la case la plus à gauche du ruban et la case la plus à droite visitée lors du calcul. Si M atteint l’état d’arrêt alors aller à la case la plus à droite et, de droite à gauche, remplacer tout les symboles du ruban par , écrire O sur la seconde case, revenir à la première case et arrêter.”

42 Démonstration (aperçu)
Soit M = (S, , , , , h) une machine de Turing qui accepte avec message. Il existe une machine de Turing M’ = (S’, , ’, ’, ’, h’) qui accepte avec arrêt et telle que L(M) = L(M’). Description informelle de M’: M’ = “Entrée w; Suivre les mêmes étapes que M en marquant la case la plus à gauche du ruban et la case la plus à droite visitée lors du calcul. Si M atteint l’état d’arrêt alors vérifier que la configuration est bien O ... . Si oui, arrêter. Sinon, rentrer dans une boucle infinie.”

43 Note: contrairement aux notes de cours, j’utiliserai plutôt la notion d’acceptation par message.
Dans mes descriptions informelles j’utiliserai les mots clés: “arrêter et accepter” et “arrêter et rejeter”.

44 Machines de Turing à plusieurs rubans
Considérons une machine de Turing à 2 rubans (la notion se généralise facilement à un nombre arbitraire de rubans). x y x  x y

45 Une transition d’une telle machine dépend de l’état courant et de l’ensemble des symboles sous les têtes. Une transition consiste en un changement d’état et une écriture ou un déplacement sur un seul ruban. La configuration initiale est w1  … pour le ruban 1 et   … pour le ruban 2.

46 Théorème Pour toute machine de Turing M avec k rubans (k  N+), il y a une machine de Turing M’ à un ruban telle que L(M) = L(M’).

47 Démonstration Donnons un aperçu de la preuve. Supposons que M a deux rubans. L’idée de la preuve est que M’ utilise des quadruplets pour encoder la même information sur un ruban unique.

48 x y x  x y Par exemple, ces deux rubans seraient représentés par le ruban suivant. # x y 1 La ligne 1 est le contenu du ruban 1; la ligne 2 indique la position de la tête de lecture/écriture du ruban 1; la ligne 3 est le contenu du ruban 2; la ligne 4 indique la position de la tête du ruban 2.

49 M’ considère que chaque case de ce ruban contient un seul symbole
M’ considère que chaque case de ce ruban contient un seul symbole. Le ruban contient le symbole # dans la première cellule. M’ s’en sert comme marqueur afin de simuler M. # x y 1 Donc on ne gagne pas de puissance en utilisant des machines à plusieurs rubans.

50 Machines de Turing non déterministes
Soit  = {0, 1, }. Considérons la machine suivante. 2 1 / R 3 1 0 / L 1 / L  / L 4 1 / 0  / 0 0 / R

51 Cette machine n’est pas déterministe:
2 1 / R 3 1 0 / L 1 / L  / L 4 1 / 0  / 0 0 / R Cette machine n’est pas déterministe: Elle n’est pas totalement définie car Il n’y a pas de transitions pour 0 et  dans l’état 1; Il n’y a pas de transitions pour 1 et  dans l’état 4.

52 4 2 1 / R 3 1 0 / L 1 / L  / L 1 / 0  / 0 0 / R Elle est ambiguë car Il y a deux transitions possibles si le symbole courant est 1 dans l’état 1; Il y a deux transitions possibles si le symboles courant est  dans l’état 2;

53 Définition Tout comme une machine de Turing déterministe, une machine de Turing non déterministe est un sixtuplet (S, , , , , h); cependant la quatrième composante est une relation plutôt qu’une fonction; c’est-à-dire qu’on a   ( S – {h})    S  (  {L, R}) plutôt que  : ( S – {h})    S  (  {L, R}).

54 Définition (suite) Le langage accepté par une machine de Turing non déterministe M est L(M) = {w : M peut atteindre l’état final à partir de la configuration initiale  w…}.

55 Théorème Pour chaque machine de Turing non déterministe M, il existe une machine de Turing déterministe D telle que L(M) = L(D).

56 Démonstration Voici un aperçu de la preuve.
La machine D a trois rubans. Le ruban 1 contient la séquence d’entrée w. Le ruban 2 est un ruban de travail sur lequel E copie w et essaie chacune des séquences d’exécution possibles. Le ruban 3 contient une séquence d’exécution (séquence de transitions). Après l’essai d’une séquence, la séquence suivante est générée en ordre lexicographique.

57 2 1 / R 3 1 0 / L 1 / L  / L 4 1 / 0  / 0 0 / R Par exemple, la machine de Turing non déterministe ci-dessus a sept transitions; supposons qu’elles sont numérotées de 1 à 7. Les séquences d’exécution seraient 1, 2, 3, 4, 5, 6, 7, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 2, 1, 2, 2, … 1, 1, 1, 1, 1, 2, 1, 1, 3,…

58 Plusieurs de ces séquences de transitions ne correspondent pas à une exécution possible. Ce n’est pas grave; ces séquences incorrectes conduisent simplement à un rejet de la séquence d’entrée. L’important c’est de générer éventuellement n’importe quelle séquence possible. Si l’une des simulations conduit à l’état d’acceptation (ici, 3), D accepte.

59 Remarque L’ajout du non-déterminisme ne permet pas de reconnaître plus de langages. Cependant, on voit que l’acceptation d’une séquence w par D peut nécessiter un nombre d’étapes beaucoup plus grand que celui qui est nécessaire à M pour accepter w.

60 Théorème Les langages reconnus par les machines de Turing sont exactement les langages générés par les grammaires à structures de phrase.

61 Rappel: un langage L est Turing-acceptable s’il existe une machine de Turing M tel que étant donnée une entrée w Si w  L alors M s’arrête et accepte w. Si w  L alors M s’arrête et rejette w ou ne s’arrête pas. La seconde condition pose problème car elle ne correspond pas à notre idée d’algorithme raisonnable.

62 Exemple Le langage L = {a0 + a1x anxn : il existe x  N+ tel que a0 + a1x anxn = 0} Montrons que ce langage est Turing-acceptable grâce à la machine M suivante. M = “Entrée a0 + a1x anxn; Initialiser x = 1; Si a0 + a1x anxn = 0 alors arrêter et accepter. Sinon x := x+1. Répéter 2 et 3 tant que M n’arrête pas.”

63 Comment résoudre ce problème?
Bien que L soit Turing-acceptable, on ne peut pas raisonnablement utiliser l’algorithme ci-dessus car si l’équation n’a aucune solution, notre algorithme roulera indéfiniment. En ce sens, la notion de Turin-acceptable ne correspond pas vraiment à ce que l’on “peut faire avec un ordinateur”. Comment résoudre ce problème? S’assurer que la machine termine. (mais comment faire ça?) Raffiner nos concepts.

64 Définition Un langage L est Turing-décidable (ou simplement décidable) s’il existe une machine de Turing M qui recevant w en entrée s’arrête et accepte si w  L. s’arrête et rejette si w  L.

65 Note: par définition, tout les langages décidables sont également des langages Turing-acceptables.
Par contre, nous verrons que l’inverse n’est pas vrai.

66 Théorème Si L est un langage non-contextuel, alors L est un langage décidable.

67 Démonstration Supposons que K est un langage non-contextuel et que G = (V, T, S, R) est une grammaire en forme normale de Chomsky telle que L(G) = K. On veut montrer qu’il existe une machine de Turing qui étant donné w s’arrête et accepte si w peut être généré par G et s’arrête et rejette si w ne peut être généré.

68 Description “haut-niveau” d’un algorithme. M = “Entrée w;
Définir k := |w|; Énumérer toutes les dérivations possibles de longueur 2k – 1 dans G. Si une de ces dérivations génère w alors arrêter et accepter. Sinon, arrêter et rejeter.” Comme le nombre de dérivations de longueur 2k-1 est fini, cet algorithme finit toujours par s’arrêter. Dans une grammaire en CNF, la dérivation d’un mot de longueur k prend exactement 2k-1 étapes.

69 On a donc une série d’inclusions strictes:
Langages réguliers a*b*, {w: w contient au moins 2 a}, etc. Langages non-contextuels {an bn: n  N}, ensemble des palindromes, etc. Langages décidables {an bn cn : n  N}, {<M>: M un automate fini et L(M) } Langages Turing-acceptables Lh = {<M>: M une m.t. et M accepte <M>} Langages non-acceptables {<M>: M une m.t. et M n’accepte pas <M>}, NVTM

70 Tous les langages Turing-acceptables Décidables Non-contextuels Réguliers

71 Théorème Si L est décidable alors son complément Lc est également décidable.

72 Supposons que L est décidable grâce à la machine de Turing T.
Preuve Supposons que L est décidable grâce à la machine de Turing T. Considérons la machine suivante: S = « entrée w: Simuler T sur w; Si T accepte w alors rejeter w. Si T rejette w alors accepter w; »

73 Pour toute entrée w, la machine S simule T sur w et comme T décide L, cette simulation se termine toujours. Donc S s’arrête toujours. L(S) = Lc car w est accepté par S ssi w est rejeté par T. Donc S décide le langage Lc.

74 Théorème Si L est Turing acceptable et si son complément Lc est également Turing acceptable alors le langage L est décidable.

75 Preuve Supposons que M et N sont des machines de Turing telles que L(M) = L et L(N) = Lc. Nous n’avons par contre pas de garantie que M et N terminent les exécutions sur des mots qu’ils n’acceptent pas.

76 Considérons la machine suivante. T = « Entrée x:
Répéter étapes 2 et 3 jusqu’à l’arrêt; Simuler une étape du calcul de M sur x. Si M accepte x, alors T accepte x; Simuler une étape du calcul de N sur x. Si N accepte x alors T rejette x; »

77 Que fait T? Considérons deux cas:
Si x  L alors M accepte x en un nombre fini d’étapes. Donc T accepte x en un nombre fini d’étapes. Si x L alors on a x  Lc. Donc N accepte x en un nombre fini d’étapes. Donc T rejette x en un nombre fini d’étapes.  T décide L.


Télécharger ppt "Chapitre 3 Machines de Turing."

Présentations similaires


Annonces Google