Robustesse des machines de Turing

Transcription

Robustesse des machines de Turing
Robustesse des machines de Turing
IFT2105
13 ocbobre 2015
1
Rappel des définitions
Une Machine de Turing est un 6-tuplet (Q, Σ, Γ, δ, q0 , F ). où
—
—
—
—
Q est un ensemble (fini) d’états ;
Σ est l’alphabet ;
Γ est l’alphabet de ruban. t ∈ Γ et Σ ⊂ Γ ;
δ : Q × Γ 7→ Q × Γ × {hGAUCHEi , hDROITEi} est la fonction de
transition ;
— q0 est l’état initial et
— F = {qA , qR } sont les états finaux.
Une Configuration d’une machine de Turing M est un triplet (u, q, v) où
q ∈ Q et u, v, ∈ Γ∗ . On l’interprète par “M contient uv, suivi et précédé
d’une chaı̂ne infinie de t et la tête de lecture est au-dessus du premier symbole de v.”
Dans la section suivante, on va montrer que le modèle précédent est robuste, i.e. on va montrer que ses relaxations sont polynomialement équivalentes
au modèle standard.
2
Machine de Turing avec possibilité de tête immobile
Étudions le modèle de machine de Turing dans lequel en plus de pouvoir
déplacer la tête à droite et à gauche, on lui permet de rester immobile.
Ses transitions de la forme :
δ : Q × Γ → Q × Γ × {hGAUCHEi , hDROITEi , hIMMOBILEi}.
1
Soit M une machine de Turing avec possibilité de tête immobile. Montrons qu’on peut simuler M sur une machine de Turing
standard
On bâtit M 0 une machine de Turing standard. Elle est identique à M avec
l’exception que les transitions qui ne bougent pas la tête sont remplacées par
une paire de transitions qui déplace la tête à gauche puis à droite.
On remplace les transitions δ(q, s) = (q 0 , s0 , S) de M par la paire δ(q, s) =
et δ(qg0 , s0 ) = (q 0 , s0 , D). Ceci ajoute Q états et autant de transitions. L’immobilité est simulée avec 1 opération supplémentaire. Si M fonctionne en temps polynomial, notre construction fonctionne aussi en temps
polynomial.
Soit M une machine de Turing standard. Montrons qu’on peut
simuler M sur une machine de Turing avec possibilité de tête immobile
(qg0 , s0 , G)
On pose M 0 := M . On n’a aucune modification à faire. M 0 n’utilisera
simplement jamais la possibilité de rester immobile.
3
Machine de Turing avec ruban infini dans une
seule direction
Étudions le modèle de machine de Turing dans lequel le ruban n’est arbitrairement long que dans une direction. Lorsque la tête est dans la première
case et qu’une transition devrait aller à gauche, la tête reste plutôt immobile.
Soit M une machine de Turing à ruban infini dans une seule
direction. Montrons qu’on peut simuler M sur une machine de
Turing standard
On bâtit M 0 une machine de Turing standard. Elle est identique à M avec
l’exception qu’on ajoute à Γ un caractère spécial # dans la case à gauche de
la première case. On ajoute également |Q| transitions. Pour chaque q ∈ Q,
on ajoute la transition (q, #) → (q, #, hDROIT Ei).
2
4
Changements d’alphabet
On définit un encodage binaire E des symboles de Σ dans lequel chaque
symbole est encodé avec lg |Σ| bits.
Supposons qu’il existe une machine de Turing M qui reconnait
un langage L sur alphabet Σ. Montrez que E(L) peut être reconnu
par une machine de Turing M 0 d’alphabet de ruban Γ = {0, 1, t}.
De plus, montrez que si M fonctionne en temps polynomial, M 0
est également polynomial.
Pour chaque paire état/symbole (q, s), on simule sur M 0 la transition
δ(q, s) = (q 0 , s0 , d) de M de la façon suivante :
Lecture
Pour la lecture de s encodé en binaire sur le ruban de la machine dans
l’état q ∈ Q, on doit ajouter lg |Σ| états. (qE(S)1 , qE(S)1 ,E(S)2 ,. . . , qE(S)1 ,E(S)2 ,...,E(S)lg |Σ| )
et ajouter autant de transitions.
À la fin de la lecture de E(s), faite en lg |Σ| opérations, on connait s et la
tête se situe dans la dernière case encodant s. On passe ensuite à l’écriture.
Écriture
On veut remplacer les lg |Σ| derniers symboles par E(s0 ). Pour remplacer
lg |Σ| symboles, on a besoin d’ajouter lg |Σ| états (qs0 0 ,dernier , . . . , qs0 0 ,premier )
et autant de transitions et de faire lg |Σ| opérations. La tête est maintenant
dans la première case encodant s0 . On doit maintenant déplacer la tête dans
la direction donnée par d.
Déplacement
Pour se déplacer à droite on doit avancer de lg |Σ| cases. On le fait avec
lg |Σ| états, autant de transitions et lg |Σ| opérations. Pour ce déplacer à
gauche, on doit reculer de lg |Σ| cases. On le fait avec lg |Σ| états, autant
de transitions et lg |Σ| opérations. On peut maintenant passer à l’état q 0 et
passer à la transition suivante.
3
Complexité
Il y a |Σ|×Q paires (q, s) possibles. La lecture, l’écriture et le déplacement
ajoutent au total 3 × |Σ| × |Q| × lg |Σ| états et autant de transitions à la
description de la machine M 0 .
On simule chaque transition de M avec 3|Σ| lg |Σ| opérations dans M 0 .
Si M est polynomial, M 0 est aussi polynomial.
5
Machine de Turing avec plusieurs têtes et plusieurs rubans
On étudie le modèle de machine de Turing avec un nombre fini k de
rubans et une tête par ruban.
Ses transitions sont de la forme :
δ : Q × Γk → Q × Γk × {hGAUCHEi , hDROITEi}k .
Une configuration de M donne la position de chaque tête, le contenu de
chaque ruban et l’état de la machine. On le représente dans le tuplet
(u1 , v 1 , u2 , v 2 , . . . , uk , v k , q)
Où ui v i est le contenu du ie ruban, où la tête est située au premier symbole
de v et q est l’état.
Soit M une machine de Turing à k rubans. Montrons qu’on
peut simuler M sur une machine de Turing standard
On écrit le contenu des k rubans sur le seul ruban de M 0 de la manière
suivante : la première case du premier ruban va dans la première case, la
première case du deuxième ruban va dans la deuxième case, . . . , la première
case du k e ruban va dans la k e case, la 2e case du premier ruban va dans la
k + 1e case et ainsi de suite. Si i = m (mod k) et i = nk + m, la ie case du
ruban de M 0 est associée à la ne case du me ruban de M .
On représente la position de la tête en créant |Γ| symboles spéciaux (un
pour chaque lettre). Si la tête du me ruban pointe à la position n contenant
le symbole a, on écrit ȧ à la case nk + m de M 0 .
4
Pour effectuer ses transitions, M 0 dans l’état q commence par trouver
les k symboles qui ont un point au-dessus, disons s˙1 , . . . , s˙k . Pour simuler la
transition (s1 , . . . , sk , q) → (s01 , . . . , s0k , q 0 , d1 , . . . , dk ), M 0 remplace chaque s˙i
par s0i , met un point au-dessus de k e case de droite ou la k e case de gauche
selon di . À la fin, M 0 passe à l’état q 0 .
6
Ruban à deux dimensions
On étudie le modèle de machine de Turing avec un ruban à deux dimensions dans lequel la tête peut se déplacer à droite, à gauche, en haut et en
bas. On simplifie le modèle en le rendant infini vers le bas et vers la droite
seulement. (La preuve est similaire pour un plan infini dans les 4 directions,
mais les transformations des fonctions de transitions sont plus compliquées.)
Ses transitions sont de la forme :
δ : Q × Γ → Q × Γ × {hGAUCHEi , hDROITEi , hHAUTi , hBASi}.
On va bâtir une machine de Turing standard M 0 qui simule une machine
de Turing M à un ruban en deux dimensions.
On décrit le ruban à deux dimension dans un ruban à une dimension en
numérotant les cases par diagonale.
1 3 6 ...
2 5 9 ...
1 2 3 4 5 6 ...
≡
4 8 13 . . .
.. ..
..
..
.
. .
.
On peut déterminer à quelle diagonale la case i se trouve en trouvant le
plus petit k tel que 1 + 2 + · · · + k ≥ i.
Pour simuler un déplacement dans le ruban à deux dimension à partir
de la case i, M 0 détermine i et k en temps polynomial à l’aide d’un ruban
auxiliaire puis,
Pour simuler un déplacement vers la gauche dans M , M 0 se déplace de
k cases vers la gauche.
Pour simuler un déplacement vers la droite dans M , M 0 se déplace de
k + 1 cases vers la droite.
Pour simuler un déplacement vers le haut dans M , M 0 se déplace de k −1
cases vers la gauche.
Pour simuler un déplacement vers le bas dans M , M 0 se déplace de k
cases vers la droite.
5