Sie sind auf Seite 1von 4

Institut Galile e Anne 2007-2008 e

Calculabilit e L3 INFO 1

TD MT

Machines de Turing
Exercice 1 (Quelques exemples de machines de Turing).

1. Construire une machine de Turing acceptant le langage {uc | u {a, b} }. u 2. Construire une machine de Turing acceptant le langage {u {a, b} | |u|a = |u|b }. 3. construire une machine de Turing calculant n + 1 pour n donn en binaire sur le ruban e dentre. e 4. En utilisant ce qui prc`de, dcrire une mthode qui permettrait de calculer n + m en e e e e binaire (n et m donns sur le ruban). e Correction 2. 1. On utilise la mthode suivante : e lire le premier caract`re a ou b du ruban leacer (avec un blanc) et conserver sa e valeur dans ltat (tats qa et qb ) e e aller ` la derni`re case non vide (blanc) du ruban a e vrier que le caract`re qui sy trouve est bien le mme et leacer. e e e revenir (tat qd ) au premier caract`re non blanc du ruban et recommencer tant que e e ce caract`re est a ou b. e Lorsque le premier caract`re est c (tat qc ) vrier que la case suivante est bien vide e e e et ` cette condition entrer dans ltat nal. a e Lautomate correspondant ` la machine de Turing est donn gure 1. a e 2. On utilise la mthode suivante. Tant quon est pas dans ltat nal, lire le caract`re e e e courant : si cest a ou b conserver sa valeur dans ltat, le remplacer par un c puis parcourir le e ruban vers la droite jusqu` trouver le caract`re complmentaire, le remplacer par un a e e c et revenir au dbut du ruban. e Si cest un c passer au caract`re suivant ` droite. e a si cest un blanc passer dans ltat nal. e Lautomate correspondant ` la machine de Turing est donn gure 2. a e 3. On suppose que le nombre en binaire est crit de gauche ` droite des bits de poids faibles e a aux bits de poids forts. Pour ajouter 1 il sut soit de faire passer le bit de poids faible a ` un sil tait ` zro (ou sil ny en avait pas), soit de le faire passer ` zro sil tait ` e a e a e e a un et dans ce cas puisquil y a une retenue de un de lajouter au nombre binaire form e par les autres bits. La solution est dans lautomate de la gure 3. On ne remet pas la tte au dbut. e e 4. Il y a plusieurs solutions possible, en voici une qui exploite lopration successeur vue e prcdemment. On pourrait tout aussi bien imiter la mani`re dont on pose habituellee e e ment une addition de deux nombres. 1

a, b, c, D ,G

qa a/ , D q0 b/ , D c, D qb qc a, b, c, D

qa a/ , G

start

,D

qd

a, b, c, G

b/ , G ,G qb

qf Fig. 1: Un mot, un sparateur (c), un mot miroir e

a, c, D

qa a/c, D q0 ,D b/c, D a/c, G qb qf b, c, D Fig. 2: Autant de a que de b b/c, G q1

start

a, b, c, G

start

q0

1/0, D

0/1, /1

qf Fig. 3: Successeur binaire Comme prcdemment, on utilise la reprsentation des nombres binaires de gauche ` e e e a droite par bits de poids croissants. On commence par remarquer quajouter un nombre binaire dans lequel seul le dernier bit est ` un ` un autre nombre est une gnralisation a a e e simple du cas du successeur que nous venons de traiter. Par exemple, pour ajouter m = 00001 ` n = 10111001, il sut de sauter les quatre premiers bits (1011) de n a pour ces bits nous noterons z pour 0, u pour 1 et de prendre le successeur du nombre binaire form des bits restants 1001. Ainsi 10111001 + 00001 se r-crit uzuu1001 + 1 e ee ce qui donne uzuu0101, qui se r-crit enn 10110101. Maintenant si m vaut 1101, ee par dcomposition de B en 1 + 01 + 0001, il sura de faire n + 1 + 01 + 0001. Mais e on se rend compte que cette dcomposition de m peut tre traite ` la vole par la e e e a e traduction des premiers bits de n sous la forme dun mot de {z, u} . Ainsi on peut eectuer 10111001 + 1101 comme ceci (on reprsente explicitement les espaces librs e ee en poussant le signe +) : n + m = = = = = = = = = = = = 10111001+1101 z1111001 +101 zz000101 +01 zzz00101 +1 zzzu0101 + 00010101 01011111+1111 u1011111 +111 uz111111 +11 uzz000001 +1 uzz100001 + 100100001

Autre exemple, avec n = 01011111 et m = 1111. n + m

Il faut toutefois tre attentif ` la taille des reprsentation binaires qui peut augmenter e a e au cours de laddition : en plaant le nombre ` la reprsentation la plus longue ` gauche c a e a et en rservant une place vide avant le signe plus on se garantit un espace susant pour e raliser toute lopration. Car eectuer successeur ne peut quoccuper une case de plus e e a ` chaque tape (en ralit un seul blanc en tout et pour tout est ncessaire). e e e e On suppose que, au dpart, le nombre ` la reprsentation la plus longue est crit au dbut e a e e e du ruban, cest n, suivi dun blanc (le signe plus est inutile) puis du second nombre, m et dun symbole de n .(Au besoin on peut eectuer des oprations de prparation du e e ruban pour que celui-ci soit dans la conguration que lon vient de dcrire). e 3

Tant quon natteint pas ltat qn (n pour nettoyage) on fait en boucle les opration e e suivantes. On lit le premier bit (0, 1) de m. on remplace ce bit par un blanc et on conserve sa valeur b dans ltat. On va au premier bit a de n (ce bit est 0 ou 1, les z e et u survenant par la suite ne comptent pas). Si b vaut 0 on traduit le bit a en lettre : z si a = 0, u si a = 1 et on recommence la boucle. Si b vaut un on lance lopration e successeur ` partir du bit a en prenant bien soin de traduire le bit qui prendra la place a de a en lettre (les autres bits rsultants de lopration sont crits avec 0 et 1). Une fois e e e que cest fait on recommence la boucle. Si B na plus de bits (on lit ) on passe dans ltat nettoyage et on va ` gauche. e a Dans ltat nettoyage (qn ), on se trouve ` gauche du de n. En parcourant le ruban e a vers la gauche on remplace u par 1 et z par 0 jusqu` aller butter dans le de dbut. a e (On pourrait galement grer leacement ou le dplacement du de n.) e e e 1/0, D 1/z, D q4 q3 , z, u, D

0/1, /1, D 0, 1, D

0/u, D ,D 1/ ,D

q2

, 0, 1, G

start

q0

q1 / ,G 0/

qn

,D

qf

0/z, 1/u, D

z/0, u/1, G

q6

, z, u, D

q5

, 0, 1, G

Fig. 4: Somme binaire

Das könnte Ihnen auch gefallen