Machine d'alan Turing Compléments à l'article de l'apmep 5. Quelques diagrammes un peu plus complexes Calculer le PGCD de X et Y donnés en unaire Ce diagramme est issu de l'algorithme d'euclide. TANT QUE x>0 FAIRE si x<y alors y --> y-x sinon x --> x-y FIN de TANT QUE La tête de lecture est placée initialement sous le chiffre de droite de X La machine doit comparer X et Y, pour cela, elle va successivement : remplacer un 1 de X par un 0 et regarder s'il reste des 1 dans X remplacer un 1 de Y par un 0 et regarder s'il reste des 1 dans Y Par exemple, s'il elle finit par trouver un blanc à gauche de X, elle saura que X<=Y
Etat 1 Lit 1, écrit 0, et va à gauche pour vérifier qu'il reste des 1 dans X Etat 2 Lit un 1 et va à droite Etat 3 Va à droite jusqu'à trouver un 1 de Y, le remplace par un 0 et va à droite pour vérifier qu'il reste des 1 dans Y Etat 4 Lit un 1 et va à gauche Etat 1 Va à gauche jusqu'à trouver un 1 de X... et on recommence : Lit 1, écrit 0, et va à gauche pour vérifier qu'il reste des 1 dans X Après 4 passages, on obtient Etat 2 Lit un blanc, la machine "sait" que X est inférieur ou égal à Y, elle va donc retirer X à Y. Elle commence par aller à droite. Etat 5 Remplace tous les 0 de X par des 1, et va à droite après avoir lu un blanc. Etat 6 Remplace tous les 0 de Y et le premier 1 rencontré par des blancs puis elle vérifie qu'il reste des 1 dans Y. La machine a retiré quatre 1 à Y : Y X = 2 Etat 7 Lit un 1,se déplace à gauche et repasse à l'état 1 Résultat suivant : la machine retire deux 1 à X : X - Y = 2 Résultat final Le PGCD de 4 et 6 est 2
Multiplication par 11 en binaire ( 3 en décimal ) Multiplier par 11 revient à faire l'addition du binaire avec le même binaire décalé d'un cran vers la gauche L'addition dans une colonne comprend la retenue, le chiffre de la colonne et son précédent ( précédent qui est écrit en dessous en raison du décalage) : Etat 1 : Le chiffre précédent est 0 ou blanc, la retenue est 0 Etat 2 : Le chiffre précédent est 1 et la retenue est 0 ou bien Le chiffre précédent est 0 ou blanc et la retenue est 1 Etat 3 : Le chiffre précédent est 1 et la retenue est 1 Avec les règles d'addition : 0+ 0 = 0 0+ 1 = 1+ 0=1 1+ 1 = 10 on obtient le diagramme
Dans les explications ci-dessous, pour chaque étape, le précédent d'un chiffre est simplement celui qui est lu dans l'étape précédente. Etat 1 Précédent blanc, retenue 0, lit un 1, ne le change pas se déplace à gauche et passe à l'état 2 Etat 2 Précédent 1, retenue 0, lit 0 écrit 1 (1+ 0 + 0 = 1 ) se déplace à gauche et repasse à l'état 1 Etat 1 Précédent 0, retenue 0, lit un 1, ne le change pas elle se déplace à gauche et passe à l'état 2 Etat 2 Précédent 1, retenue 0, lit 1 écrit 0 ( 1+ 0 + 1=10 donc 1 de retenue ) se déplace à gauche et passe à l'état 3 Etat 3 Précédent 1, retenue 1 lit blanc écrit 0 (1 + 1 + blanc = 10 ) se déplace à gauche et passe à l'état 2 Etat 2 Précédent blanc, retenue 1 lit blanc écrit 1 et passe à l'état final ( 0 + 1 + blanc = 1) A noter : pour un nombre X, en commençant à l'état 1 on obtient 3X. Je laisse le lecteur vérifier que si on commence à l'état 2 on obtient alors 3X+1... cela sera utilisé dans l'exemple suivant, les états 1,2 et 3 devenant les états 3,4 et 5.
Conjecture de Syracuse Il s'agit de construire une suite de nombres entiers écrits en binaire et définis par : On saisit u 0 Si u n est pair alors u n+1 = u n /2 Si u n est impair alors u n+1 =3u n +1 Exemple de suite obtenue : 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, etc.. La conjecture dit que pour toute suite de Syracuse, il existe un entier n tel que u n = 1. Petit rappel à propos des nombres binaires : - "si u n est pair" se traduit par : "si le chiffre de droite est un 0"... et pour diviser par 2 en binaire, il suffit de supprimer un 0 à droite! - "si u n est impair" se traduit par : "si le chiffre de droite est un 1" L'instruction "si n est pair alors... sinon... " forme des 2 flèches : se trouve dans l'état 1 sous la Pour u n pair : 0;b;L si le chiffre de droite est un 0, le nombre est donc pair, il faut le diviser par 2, pour cela, la machine remplace le 0 de droite par un blanc et se déplaces d'une case à gauche et elle reste à l'état 1 Pour u n impair : 1; ;L qui renvoie sur l'état 2 puis sur l'état 4 qui fera l'opération 3X+1.. (avec les états 3 et 5 ) retour à l'état 1 en passant par l'état 6 Dans les 2 cas le retour se fait sur l'état 1 qui se repose la question... etc. etc. Les états q3,q4 et q5 constituent la multiplication par 11 (3 en décimal), l'arrivée sur q4, donne directement 3X+1.
Etapes obtenues en prenant u 0=11 Pour une étape donnée, la lecture est le symbole souligné de la ligne précédente, l'écriture et la position sont celles de la ligne de l'étape. Par exemple, pour l'étape marquée d'une *, la machine est dans l'état 4 On voit, dans la ligne précédente qu'elle a lu un blanc. Sur le diagramme page précédente, dans l'état 4, si elle lit un blanc, elle écrit 1 et se déplace à droite. C'est ce qui apparaît dans la ligne marquée d'une étoile sous la forme : 1010. Etat binaire Décimal Etat binaire Décimal au départ 11 3 5 100 1 11 4 _000 2 11 5 _0000 4 10 4 10000 16 5 _10 6 10000 5 010 6 10000 * 4 1010 10 6 10000 6 1010 6 10000_ 6 1010 6 10000 6 1010_ 1 1000 8 6 1010 1 100 4 1 101 5 1 10 2 1 101 1 1 1 2 101 1 1 4 100 2 Arrêt Le lecteur pourra trouver sur le site : www.machinedeturing.org des explications détaillées sur tous ces programmes. Notamment en cliquant sur les onglets : calculateurs, traitement des chaînes, prédicats et génération.