Hyperlivre – Exemple: Machine de Turing - (CUI)

Transcription

Hyperlivre – Exemple: Machine de Turing - (CUI)
Outils Formels pour les Systèmes d‘Information
Jean-Claude Ziswiler
[email protected]
TUE 02DEC2003 1415h Uni Mail M2170
FRI 05DEC2003 0900h Uni Dufour 408
Hyperlivre – Exemple:
Machine de Turing
Automates (Rappel)
Définition d‘un automate à états fini (déterministe):
Un automate à états fini (déterministe) est composé:
d’un alphabet (ensemble de symboles)
d‘un ensemble d‘état fini Q parmi lesquels
un état initial q0
un ou plusieurs états finals
d‘un ensemble d‘instructions (fonctions des transitions)
L‘automate est fini parce que l‘ensemble d‘état est limité, c‘est-à-dire le
mémoire n‘est pas infini.
L‘automate est déterministe parce que les instructions sont clairement
définies, il n‘y a pas de choix pour effectuer les calculs, la séquence
d‘instructions ne s‘exécute pas par hasard. Pour un état, il y a un seul
état successeurs.
Les automates à états finis ne peuvent pas tout calculer, il existe des
langages (langages non réguliers) qu‘aucun automate à états fini
n‘accepte.
Machine de Turing
En 1936, Turing a écrit un article pour proposer une machine qui résolvait
le problème de «Entscheidbarkeit», c’est-à-dire il a créé une machine avec
laquelle on peut déterminer, pour quel langage existe toujours une solution, ou de façon plus général, quel problème est calculable.
Une machine de Turing est un engin de calcul simple, il se souvient d’un
seul numéro. Il bouge sur une bande infinie et deux seul facteurs d’un
état sont pris en considération: le numéro de l’état et le symbole à la position actuelle. Il continue jusqu’un état final est trouvé.
Même si l’architecture est très simple et même si elle ne correspond pas
avec celle d’un ordinateur, on peut effectuer tous les calculs qu’avec un
ordinateur «réaliste». Une Random Access Machine (RAM) qui donne une
image plus proche des ordinateurs ont une mémoire où les cellules sont
adressées et accessibles directement pendant qu’une machine de Turing
peut accéder à une valeur simplement en traversant la bande jusqu’à l’endroit où la valeur est stockée. Mais les fonctionnalités des deux machines
sont équivalentes, on peut effectuer les mêmes calculs et on peut montre que le temps pour l’exécution ne varie pas de façon polynomiale.
Machine de Turing (cont.)
Une machine de Turing (déterministe) est composée
d’une bande infinie divisée en cases
d’une tête de lecture / écriture
d’un alphabet (ensemble de symboles) ∑
d’un symbol ‘blank’ B (B ∉ ∑)
d’un ensemble d’états Q parmi lesquels
un état initial q0
un ou plusieurs états finals (si déterministe)
d’un ensemble d’instructions (le programme)
Chaque case de la bande peut contenir un symbole tiré d’un alphabet
fixé.
Machine de Turing (cont.)
Langage Γ
Un langage pour écrire des programmes d’une machine de Turing. Un programme est formé d’une suite d’instructions étiquetées.
Les instructions sont de la forme:
PRINT s -- imprime s sur la bande à l’endroit où se trouve la tête
IF s GOTO L -- si le symbole sous la tête est s, va à l’instruction L
RIGHT -- déplace la tête à droit
LEFT -- déplace la tête à gauche
Les instructions d’un programme en Γ s’exécutent en séquence.
Machine de Turing – Exemple
f: X <- X+1 (fonction qui incrémente de facteur 1, représentation binaire)
(0 ∪ 1)* ∈ ∑
In State
q0
q1
q1
q1
q2
q2
q2
q3
q3
q3
Reading
B
0
1
B
0
1
B
0
1
B
Write
B
0
1
B
1
0
1
0
1
B
Move
RIGHT
RIGHT
RIGHT
LEFT
LEFT
LEFT
LEFT
LEFT
LEFT
LEFT
New State
q1
q1
q1
q2
q3
q2
q4
q3
q3
q4
On a trouvé une machine de Turing qui réalise la fonction f, alors f est
calculable. De même manière, il existe une machine de Turing pour chaque fonction f, qui semble intuitivement calculable (Thèse de Church).
xTuringMachine Applet
Références
Articles, documentation, livres
Gilles Falquet, De la machine de Turing aux langages de programmation,
notes de cours ‘Outils formels pour les systèmes d’information’, proposition hiver 1998-1999.
David Eck, xTuringMachine Lab: Introduction to Turing Machines, in: The
Most Complex Machine: A Survey of Computers and Computing, A. K.
Peters Ltd., Wellesley, MA, 1996.
Ingo Wegener, Theoretische Informatik, B. G. Teubner, Stuttgart, 1993.
xTuringMachine Applet
http://math.hws.edu/TMCM/java/labs/xTuringMachineLab.html