Concept de Calculabilité
Concept de Calculabilité
Concept de calculabilité
La calculabilité est la branche de l'algorithmique qui s'intéresse
aux questions suivantes
Calculabilité
Notion de calculable
45
1
Calculabilité
Codages
46
Calculabilité
Problème de décision
Un problème de décision A est
une question portant sur un ensemble de données (entrées)
dont la réponse est OUI ou NON.
Rq : Ne pas confondre problème et algorithme le résolvant.
Une instance du problème A est la question posée sur une
donnée/entrée particulière de A.
Exemple:
Problème : Savoir si un graphe non-orienté est connexe.
Instance : V = {1, 2, 3, 4, 5}, E = {(1, 2), (2, 3), (3, 1), (4, 5)}
Algorithme : Depth-first-search.
47
2
Calculabilité
Autres types de problèmes
Les problèmes calculatoires, dont la réponse n’est pas
nécessairement binaire (OUI/NON).
Exemple:
Calculabilité
Exemples de problèmes de décision
49
3
Calculabilité
Rappels et définitions
Problèmes de décision versus problèmes de calcul : réponse
OUI/NON pour les premiers, résultat pour les autres. La
première catégorie est juste un cas spécial de la deuxième.
Instance d’un problème A : une entrée de A. Une instance
positive d’un problème de décision est une instance sur
laquelle la réponse est OUI.
De manière abstraite, un problème de décision A peut être
interprété comme problème de langages :
On choisit un codage f des instances de A sur un alphabet Σ (ou
N).
L’ensemble des codages des instances positives de A définit un
langage LA ⊆ Σ∗ (ou LA ⊆ N).
La question si une instance I de A est positive revient à
demander si f (I) ∈ LA (problème du mot).
50
Calculabilité
Ensembles dénombrables
On note N = {0, 1, 2, . . .} l’ensemble des entiers naturels.
Un ensemble D est dit dénombrable s’il est en bijection avec N.
Un ensemble D fini ou dénombrable est dit au plus dénombrable
s’il existe une fonction injective f : D → N (ou une fonction
surjective f : N → D).
4
Calculabilité
Quelques ensembles non dénombrables
Exemples Les ensembles suivants ne sont pas dénombrables :
n
x =
1 si n ∈ X
0 si n X
Calculabilité
Diagonalisation
xn = 1 − (en)n
5
Calculabilité
Problématique
Combien de mots binaires y a-t-il ? autant que des entiers
positifs (N = {0, 1, 2, . . .}). On dit que l’ensemble {0, 1}∗ est
dénombrable. Les mots binaires peuvent être énumérés, par
exemple : 0, 1, 00, 01, 10, 11, 000, . .
Combien de programmes/algorithmes existe-t-il ?On peut
coder chaque programme P par un mot en binaire wP ∈ {0, 1}∗, il
suffit de choisir son codage préféré. Ensuite, on peut énumérer
les programmes, en énumérant les mots w ∈ {0, 1}∗ représentant
des programmes. L’ensemble des programmes est donc
dénombrable également.
Combien de fonctions f : N → N existe-t-il ? Autant que des
nombres réels (ensemble non dénombrable). il existe des
fonctions f : N → N non-calculables.
54
Calculabilité
Problèmes de Hilbert
David Hilbert, 8 aout 1900, Paris : 23 problèmes dont certains
ont été résolus, d’autre à moitié résolus, et d’autres non résolus
55
6
Calculabilité
Concept d’algorithme
56
Calculabilité
Thèse de Church-Turing
57
7
Calculabilité
Problème de l’arrêt
Exemple
58
Calculabilité
Indécidabilité d'un problème
Il n'existe pas d'algorithme résolvant ce problème
de manière générale
iI n'existe pas de machine de Turing qui prend en
entrée les données (langage) et qui s'arrête toujours
en donnant une solution.
Exemple
Le problème de l'arrêt pour les machines de Turing est indécidable.
8
Calculabilité
Machines de Turing : intuition
Le nombre d’états d’une machine de Turing est fini (pour
comparaison, un ordinateur a un nombre fini de registres).
60
Calculabilité
Machines de Turing : intuition
61
9
Calculabilité
Machines de Turing : formalisation
Une machine de Turing (MT) à une bande M = (Q, q0, F, Σ, Γ, δ) est
donnée par:
Q : ensemble fini d’états.
q0 : état initial.
F ⊆ Q : ensemble d’états finaux (ou acceptants).
Γ : alphabet fini de la bande, avec # ∈ Γ.
Σ : alphabet d’entrée, avec Σ ⊆ Γ \ {#}.
δ : ensemble de transitions. Une transition est de la forme
, ,
(p, a, q, b, d), notée 𝑝 𝑞 ,avec
• p, q ∈ Q ,
• a , b ∈ Γ,
• d ∈ {← , −, → } .
= > O n s u ppo s er a qu’aucune transition ne part d’un état de F.
62
Calculabilité
Machines de Turing : représentation graphique
0 , #,
1 , #,
#, #, −
p q
63
10
Calculabilité
Fonctionnement d’une MT
64
Calculabilité
Fonctionnement d’une MT
Transition
𝒂,𝒃,𝒅
Une transition de la forme 𝒑 𝒒 est possible seulement si
la machine se trouve dans l’état 𝒑, et
le symbole se trouvant sous la tête de lecture-écriture est 𝒂.
Dans ce cas, l’application de la transition consiste à
Changer l’état de contrôle qui devient 𝒒,
Remplacer le symbole sous la tête de lecture-écriture par 𝒃,
Bouger la tête d’une case à gauche si 𝒅 = ←, ou bouger la tête
d’une case à droite si d = →, ou ne pas bouger la tête si d = −.
65
11
Calculabilité
Configurations et calculs
C0 ┤ C1 ┤ C2 ┤ ···
66
Calculabilité
Concept formel
Une machine de Turing comporte :
Une bande infinie à droite ou à gauche faite de cases
consécutives.
Dans chaque case se trouve un symbole, éventuellement blanc #.
Une tête de lecture-écriture, qui peut se déplacer dans les deux
directions d'un caractère à la fois
Un contrôle à nombre fini d’états de transition
A chaque étape, en fonction de l'état courant et du symbole
courant, la machine :
Change d'état,
Ecrit un symbole à l'emplacement courant,
Déplace la tête d'une position, à droite ou à gauche, ou ne se
déplace pas.
67
12
Calculabilité
Définitions générale
Initialement la machine est dans un état initial :
le mot w = 12…n est dans le ruban, cadré à gauche, avec un blanc
devant et une suite infinie de blancs derrière,
la tête de lecture / écriture pointe sur l'extrémité gauche du ruban,
le contrôle sur l'état initial.
# 1 2 … n # # …
68
Calculabilité
Calculs acceptants
C0 ┤ C1 ┤ C2 ┤ · · ·
3 cas possibles
69 /134
69
13
Calculabilité
Exemple de MT
#, #,
#, #,
q0 q1 q2
a, b, a, a,
b, a, b, b,
(pas d’état final)
70
Calculabilité
utilisation de MT
71
14
Calculabilité
Les machines de Turing pour reconnaître des langages
Pour qu’une machine de Turing standard puisse reconnaitre un
langage, il faut ajouter la notion d'état final.
Une machine de Turing augmentée avec des états finaux est
le sextuplet
M = (Q, , , , q0, F) où :
Q : ensemble fini (non vide) d'états
: alphabet (ensemble non vide de lettres)
Γ : alphabet fini, avec # ∈ Γ.
: fonction de transition : Q Q
(q, ) = q' (q' : état de la machine après avoir lu la lettre
dans l'état q)
q0 : état initial : q0 Q
F : ensemble des états finaux : F Q
72
Calculabilité
Les machines de Turing pour reconnaître des langages
Soit M = (Q, , , , q0, F) une machine de Turing. Une chaîne
w * est acceptée par M ssi :
(q0, #w) ├M* (qf, w'aw'') où :
– qf F,
– a ,
– w', w'' *,
– (qf, a) n'est pas défini.
73
15
Calculabilité
Les machines de Turing pour reconnaître des langages
Exemple
q0 q1 q2 q3
#, #, a, a, a, a,
b, b, b, b,
Calculabilité
Les machines de Turing pour reconnaître des langages
Le langage accepté par une machine de Turing est dit
Turing-acceptable ou récursivement énumérable.
Si la machine de Turing s'arrête sur toutes les entrées
possibles (c-à-d pour tous les mots w, w L ou w L), alors
le langage est dit Turing-décidable ou récursif.
On dit que M semi-décide L, ou encore M accepte L.
On a alors :
– w L, (q0, #w) ├M* (qf, #Y) (qf F) YES (accepté)
– w L, (q0, #w) ├M* (qf, #N) (qf F) NO (rejeté)
75
16
Calculabilité
Les machines de Turing pour reconnaître des langages
Autre formulation :
Une machine de Turing est le septuplet
M = (Q, , , , q0, qaccept, qreject) où :
Q : ensemble fini (non vide) d'états
: alphabet (ensemble non vide de lettres)
Γ : alphabet fini de la bande, avec # ∈ Γ.
: fonction de transition : Q Q
(q, ) = q' (q' : état de la machine après avoir lu la lettre
dans l'état q)
q0 : état initial : q0 Q
qaccept Q est l’état d’acceptation de l’entrée,
qreject Q est l’état de rejet de l’entrée.
76
Calculabilité
Langages acceptés
On peut utiliser une machine pour accepter des mots.
Le langage L(M) ⊆ Σ∗ des mots acceptés par une MT. Avec M est
l’ensemble des mots w sur lesquels il existe un calcul fini
C0 ┤ C1 ┤ C2 ┤ · · · Cn
17
Calculabilité
fonctions non calculables
Un programme est un ensemble fini d'instructions = mot fini sur l'alphabet
(fini) des instructions Les programmes sont énumérables
78
Calculabilité
Les machines de Turing pour calculer des fonctions
Utiliser les machines de Turing pour calculer des fonctions de
chaînes vers chaînes.
Soient
0 et 1 deux alphabets ne contenant pas le symbole blanc (#),
18
Calculabilité
Les machines de Turing pour calculer des fonctions
80
Calculabilité
Les machines de Turing pour calculer des fonctions
fonction f ssi :
81
19
Calculabilité
Les machines de Turing pour calculer des fonctions
Fonctions de N dans N :
Notons I un symbole fixé différent de #.
Tout entier naturel n peut être représenté par la chaîne In en
notation unaire
L'entier zéro est représenté par la chaîne vide
82
Calculabilité
Les machines de Turing pour calculer des fonctions
M = (Q, , , , q0, F) où :
– F = {q2}
83
20
Calculabilité
Combinaison des machines de Turing
Machine de Turing = module ou sous-routine
Ces modules peuvent être connectés entre eux en utilisant des
règles de combinaisons :
a
M1 M2 M1 M2
b
M3
84
Calculabilité
Extensions des machines de Turing
un ruban bidimensionnel,
le non-déterminisme,
l'accès aléatoire.
21
Calculabilité
Simulation des extensions des machines de Turing
Pour chaque type d'extension, l'opération de la machine
étendue peut être simulée par une machine de Turing
normale.
86
Calculabilité
Machine de Turing à ruban infini dans les deux sens
Soit une machine de Turing M = (Q, , , , q0, F) dont le
ruban n'a pas de borne à gauche :
La chaîne d'entrée peut se trouver n'importe où sur le ruban,
22
Calculabilité
Machine de Turing à ruban infini dans les deux sens
Une machine M avec ruban infini dans les deux sens n'est
pas plus puissante qu'une machine normale
Elle ne permet pas de reconnaître plus de langages, ou
calculer plus de fonctions.
En construisant une machine M'= (Q', , ', ', q0', F'), à partir
de M et qui simule M :
si M s'arrête sur un mot w, alors M' s'arrête sur ce même mot w,
88
Calculabilité
Machine de Turing à ruban infini dans les deux sens
Pour simuler le ruban doublement infini de M dans celui de
M', on définit pour M' un ruban à 2 pistes.
Ce ruban est obtenu en coupant en 2 celui de M de façon
arbitraire.
Exemple
Ruban de M : … f g h i j k …
B A
i j k …
$
Ruban de M' : h g f …
89
23
Calculabilité
Machine de Turing à plusieurs rubans
Une machine de Turing étendue peut être caractérisée par
k rubans, chaque ruban étant munie d'une tête autonome.
90
Calculabilité
Machine de Turing à plusieurs rubans
Contrôle
... # # # 0 1 1 ø0 # # # # # # # ...
... # # # 0 1 1 ø0 # # # # # # # ...
... # # # 0 1 1 ø0 # # # # # # # ...
91
24
Calculabilité
Machine de Turing à plusieurs rubans
Machine à k rubans avec
: fonction partielle de Q k dans Q k {, , -}k
Soit la transition (qi, a1, …, ak) = (qj, b1, …, bk, D1, …, Dk).
Cette transition s'applique lorsque :
• La machine est dans l'état courant qi,
• Le symbole courant sur le 1er ruban est a1, … sur le kème ruban est ak.
Après l'application de cette transition :
• La machine est dans l'état qj,
• Le symbole b1 est écrit sur le 1er ruban à la place de a1, …, bk est
écrit sur le kème ruban à la place de ak,
Calculabilité
Machine de Turing à plusieurs rubans
Exemple : machine à copier à deux rubans, = {a, b}
93
25
Calculabilité
Machine de Turing non déterministe
Calculabilité
Machine de Turing non déterministe
Le non déterminisme n'apporte aucune puissance
supplémentaire, En effet, pour toute machine de Turing non
déterministe M, on peut construire une machine normale M'
telle que pour toute chaîne w * on a:
– si M s'arrête avec w en entrée, alors M' s'arrête sur w,
– si M ne s'arrête pas sur l'entrée w, alors M' ne s'arrête pas non plus sur w.
Théorème
Tout langage accepté par une machine de Turing non déterministe est accepté
par une machine de Turing déterministe
95
26
Calculabilité
Machines de Turing universelles
96
Calculabilité
Exemples de machines de Turing
97
27
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
Idée : marquer le 1 er a et le 1 er b, et recommencer.
a, a, → a, a, ←
B, B, → B, B, → B, B, ←
a, A, → b, B , ←
q0 q1 q2
#, #, → A, A, →
q3
98
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
a a a b b b # # # # # ...
28
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a b b b # # # # # ...
q1
100
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a b b b # # # # # ...
q1
101
29
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a b b b # # # # # ...
q1
102
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a B b b # # # # # ...
q2
103
30
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a B b b # # # # # ...
q2
104
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a B b b # # # # # ...
q2
105
31
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A a a B b b # # # # # ...
q0
106
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B b b # # # # # ...
q1
107
32
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B b b # # # # # ...
q1
108
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B b b # # # # # ...
q1
109
33
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B B b # # # # # ...
q2
110
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B B b # # # # # ...
q2
111
34
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B B b # # # # # ...
q2
112
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A a B B b # # # # # ...
q0
113
35
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B b # # # # # ...
q1
114
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B b # # # # # ...
q1
115
36
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B b # # # # # ...
q1
116
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q2
117
37
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q2
118
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q2
119
38
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q0
120
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q0
121
39
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q0
122
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q0
123
40
Calculabilité
MT acceptant ({anbn | n ≥ 0})∗
a A b B #
q0 (q1,A,) (q0,B, ) (q3,#, )
q1 (q1,a, ) (q2,B, ) (q1,B, )
q2 (q2,a,) (q0,A, ) (q2,B, )
q3
A A A B B B # # # # # ...
q3
Remarques:
Cette machine est déterministe
Elle réalise de l'ordre de O(n2) mouvements 124
Calculabilité
n 𝒏
MT acceptant { 𝒂 𝟐 | n ≥ 0 }
Idée : marquer un a sur 2.
A, A, → A, A, →
a, A, → #, #, →
q0 q1 q2
#, #, → a, a, →
a, A, →
q5 q3 q4
#, #, ← a, a, →
a, a, ← A, A, → A, A, →
A, A, ←
125
41
Calculabilité
Exemples de machines de Turing
126
Calculabilité
0, 0, →
Calcul de ⌊n/2⌋ 1, 1, →
0 , #, →
#, #, ← 1 , #, →
q1 q2 q3
Incrément en binaire
0, 0, →
1, 1, → 1, 0, ←
0, 1, −
#, #, ← #, 1 , −
q1 q2 q3
127
42
Calculabilité
Addition en unaire
1, 1, → 1, 1, →
# , 1, → #, #, ← 1 , #, −
q1 q2 q3 q4
128
Calculabilité
Nombre de machine de Turing
Considérons une machine de Turing à p états et q lettres.
On peut supposer que les états sont notés : e1, e2, … , ep
et que les symboles du ruban sont #, r1, r2, … , rq.
Il y a un nombre fini de transitions possibles, (même si la machine
n'est pas déterministe), donc le nombre de machines de Turing à p
états et q lettres est fini !
129
43
Calculabilité
Machine de Turing Universelle
Il est possible de concevoir une machine de Turing TU capable
d'émuler toutes les machines de Turing.
Plus précisément, si on note R l'alphabet des symboles du ruban
de TU, il existe un codage :
T → 〈T 〉
Calculabilité
Modèles de calcul
Lambda-Calcul
131
44
Calculabilité
Machine de Turing à mémoire à accès direct
Random Access : on peut accéder à chaque case en une
étape, contrairement au ruban d'une machine de Turing qui
est à accès séquentiel
Cette machine comporte :
T : ruban à accès direct
• T[0], T[1], T[2], T[3] … : cases du ruban
132
Calculabilité
Machine de Turing à mémoire à accès direct
133
45
Calculabilité
Machine de Turing à mémoire à accès direct
La machine à mémoire RAM est simulé de la façon suivante :
Parcourir le ruban représentant la mémoire jusqu’à trouver
l’adresse correspondant au contenu du compteur de
programme (PC);
Lire et décoder l’instruction se trouvant à cette adresse;
Le cas échéant trouver les opérandes de cette instruction;
Exécuter l’instruction, en modifiant éventuellement la
mémoire et/ou des registres;
Incrémenter le compte de programme par la taille de
l’instruction ou effectuer un saut pour passer au cycle
suivant. 134
Calculabilité
Machine de Turing à mémoire à accès direct
Instructions :
– read j R0 := T[Rj] placer dans le 1er registre le contenu de la
R ème case, R étant la valeur du jème registre
j j
– write j T[Rj] := R0
– store j Rj := R0 placer le contenu du 1er registre dans le jème
registre
– load j R0 := Rj
– load = c R0 := c
– add j R0 := R0 + Rj
– add = c R0 := R0 + c c : nombre entier
– sub j R0 := max{ R0 – Rj, 0 }
– sub = c R0 := max{ R0 – c, 0 }
– half R0 := integer{ R0 / 2 }
135
46
Calculabilité
Machine de Turing à mémoire à accès direct
Instructions de contrôle :
– jump s K := s s : numéro
– jpos s if R0 > 0 then K := s d’instruction
– jzero s if R0 = 0 then K := s
– halt k := 0
Remarques
– Chaque instruction incrémente K : K := K + 1
– R0 : rôle particulier (accumulateur)
136
Calculabilité
Machine de Turing à mémoire à accès direct
Une machine de Turing à accès direct est un couple
M = (k, ) où :
k > 0 est le nombre de registres,
est une suite finie d'instructions (le programme).
137
47
Calculabilité
Machine de Turing à mémoire à accès direct
Une telle machine peut être simulée par une machine de
Turing à plusieurs rubans :
un ruban pour la mémoire,
un ruban pour le programme
un ruban pour chaque registre.
Le contenu de la mémoire est représenté par des paires de
mots (adresse, contenu).
La simulation pourrait être la répétition du cycle suivant :
parcourir le ruban du programme jusqu'à l'instruction
correspondant à la valeur trouvée dans le compteur de
programme,
lire et décoder l'instruction,
exécuter l'instruction modifications éventuelles des
rubans correspondant à la mémoire et / ou aux registres,
138
incrémenter le compteur de programme.
Calculabilité
Machine de Turing à mémoire à accès direct
Exemple
1. store 2 11. add 2
2. load 1 12. store 4
3. jzero 19 13. load 2 read j R0 := T[Rj]
write j T[Rj] := R0
4. half 14. add 2
store j Rj := R0
5. store 3 15. store 2
load j R0 := Rj
6. load 1 16. load 3 add j R0 := R0 + Rj
7. sub 3 17. store 1 sub j R0 := max{ R0 – Rj, 0 }
8. sub 3 18. jump 2 half R0 := integer{ R0 / 2 }
9. jzero 13 19. load 4 jump s K := s
10. load 4 20. halt jpos s if R0 > 0 then K := s
jzero s if R0 = 0 then K := s
halt k := 0
Ca fait quoi ?
Si initialement R0 contient x et R1 contient y, que contient R0 à la fin de
l’exécution ? (convention : tous les registres contiennent initialement 0) 139
48