Skip to content

Machines de Turing

Vidéo de présentation du concept de machine de Turing :

Comment réaliser une machine de Turing universelle :

Activité "mise en oeuvre de la machine de Turing" : fichier PDF
Machine de Turing, feuille vierge : fichier PDF

Lien vers le simulateur de machine de Turing en ligne

Quelques exemples de MT à tester dans le simulateur :

print('BONJOUR') :

; BONJOUR
; Imprime BONJOUR sur un ruban vide

q0 _ B d q1
q1 _ O d q2
q2 _ N d q3
q3 _ J d q4
q4 _ O d q5
q5 _ U d q6
q6 _ R d halt

Addition binaire :

; Addition de deux nombres binaires de même taille
; Alphabet utilisé : _ 0 1 + = A B
; Le ruban initial doit contenir le premier nombre binaire sur N bits
; suivi du caractère "+"
; puis le deuxième nombre binaire sur N bits suivi du caractère "="
; puis N+1 caractères "0"
; (voir exemple fourni)
; $INITIAL_TAPE:01010101+00110110=000000000

q0 0 0 d q0
q0 1 1 d q0
q0 A A d q0
q0 B B d q0
q0 + + g q1

q1 0 A d q2
q1 1 B d q3
q1 A A g q1
q1 B B g q1
q1 _ _ d q14

q2 + + d q2
q2 0 0 d q2
q2 1 1 d q2
q2 A A d q2
q2 B B d q2
q2 = = g q4

q3 + + d q3
q3 0 0 d q3
q3 1 1 d q3
q3 A A d q3
q3 B B d q3
q3 = = g q5

q4 0 A d q6
q4 1 B d q7
q4 A A g q4
q4 B B g q4
q4 + + g q4

q5 0 A d q7
q5 1 B d q8
q5 A A g q5
q5 B B g q5
q5 + + g q5

q6 = = d q6
q6 0 0 d q6
q6 1 1 d q6
q6 A A d q6
q6 B B d q6
q6 _ _ g q9

q7 = = d q7
q7 0 0 d q7
q7 1 1 d q7
q7 A A d q7
q7 B B d q7
q7 _ _ g q10

q8 = = d q8
q8 0 0 d q8
q8 1 1 d q8
q8 A A d q8
q8 B B d q8
q8 _ _ g q11

q9 A A g q9
q9 B B g q9
q9 0 A g q13
q9 1 B g q13

q10 A A g q10
q10 B B g q10
q10 0 B g q13
q10 1 A g q12

q11 A A g q11
q11 B B g q11
q11 0 A g q12
q11 1 B g q12

q12 0 1 g q13
q12 1 0 g q12

q13 0 0 g q13
q13 1 1 g q13
q13 A A g q13
q13 B B g q13
q13 = = g q13
q13 + + g q13
q13 _ _ d q0

q14 0 0 d q14
q14 1 1 d q14
q14 A 0 d q14
q14 B 1 d q14
q14 + + d q14
q14 = = d q14
q14 _ _ g halt

Comptage du nombre d'occurrences d'un caractère dans un texte :

; Comptage du nombre de B dans un mot comportant des A et des B
; Alphabet utilisé : _ A B 1 0 # @
; Exemple de mot d'entrée : 0#AAABBBAAABAB

q0 _ _ g q4
q0 0 0 d q0
q0 1 1 d q0
q0 # # d q0
q0 A A d q0
q0 B @ g q1
q0 @ @ d q0

q1 A A g q1
q1 B B g q1
q1 @ @ g q1
q1 # # g q2

q2 0 1 d q3
q2 1 0 g q2
q2 _ 1 d q3

q3 0 0 d q3
q3 1 1 d q3
q3 # # d q3
q3 A A d q3
q3 @ @ d q0
q3 _ _ g q4

q4 0 0 g q4
q4 1 1 g q4
q4 A A g q4
q4 @ B g q4
q4 # # g q4
q4 _ _ d halt

Division par deux avec reste :

; Division par deux avec reste
; Alphabet utilisé : _ 0 1
; Le ruban initial doit contenir un nombre binaire quelconque
; Après exécution le ruban contient le quotient et le reste, séparés par un "vide"
; $INITIAL_TAPE:101010011011

q0 0 0 d q0
q0 1 1 d q0
q0 _ _ g q1

q1 0 _ d q2
q1 1 _ d q3

q2 _ 0 d halt

q3 _ 1 d halt

Duplicateur de nombre binaire :

; Crée une copie d'un nombre binaire quelconque
; Alphabet utilisé : _ 0 1 A B a b #
; Le ruban doit contenir le nombre binaire à copier suivi du caractère #
; Exemple de mot d'entrée : 101100111000#

q0 0 a d q1
q0 1 b d q2
q0 # # d q4

q1 0 0 d q1
q1 1 1 d q1
q1 # # d q1
q1 A A d q1
q1 B B d q1
q1 _ A g q3

q2 0 0 d q2
q2 1 1 d q2
q2 # # d q2
q2 A A d q2
q2 B B d q2
q2 _ B g q3

q3 0 0 g q3
q3 1 1 g q3
q3 # # g q3
q3 A A g q3
q3 B B g q3
q3 a 0 d q0
q3 b 1 d q0
q3 _ _ d q0

q4 A 0 d q4
q4 B 1 d q4
q4 _ _ d halt

Incrémenteur binaire :

; Incrémenteur binaire
; Attend un nombre binaire quelconque dans le ruban initial
; Alphabet utilisé : _ 0 1 + = A B
;$INITIAL_TAPE:1111111

q0 0 0 d q0
q0 1 1 d q0
q0 _ _ g q1

q1 0 1 g q2
q1 1 0 g q1
q1 _ 1 d halt

q2 0 0 g q2
q2 1 1 g q2
q2 _ _ d halt

Incrémenteur décimal :

; Incrémenteur décimal
; Attend un nombre binaire quelconque dans le ruban initial
; Alphabet utilisé : _ 0 1 2 3 4 5 6 7 8 9
;$INITIAL_TAPE:1024

q0 0 0 d q0
q0 1 1 d q0
q0 2 2 d q0
q0 3 3 d q0
q0 4 4 d q0
q0 5 5 d q0
q0 6 6 d q0
q0 7 7 d q0
q0 8 8 d q0
q0 9 9 d q0
q0 _ _ g q1

q1 0 1 g q2
q1 1 2 g q2
q1 2 3 g q2
q1 3 4 g q2
q1 4 5 g q2
q1 5 6 g q2
q1 6 7 g q2
q1 7 8 g q2
q1 8 9 g q2
q1 9 0 g q1
q1 _ 1 d halt

q2 0 0 g q2
q2 1 1 g q2
q2 2 2 g q2
q2 3 3 g q2
q2 4 4 g q2
q2 5 5 g q2
q2 6 6 g q2
q2 7 7 g q2
q2 8 8 g q2
q2 9 9 g q2
q2 _ _ d halt

 

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert