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