Calculabilité TD07 : Machines de Turing 1 Machines de Turing

Transcription

Calculabilité TD07 : Machines de Turing 1 Machines de Turing
Institut Galilée
L3 S6 – Année 2014–2015
Calculabilité
TD07 : Machines de Turing
1
Machines de Turing
Soit L un langage sur un alphabet Σ. On rappelle que :
– une machine de Turing M semi-décide L si, pour tout mot w ∈ Σ∗ , l’exécution de M sur
w s’arrête sur un état final acceptant si, et seulement si w ∈ L ;
– une machine de Turing M décide L si M semi-décide L et pour tout mot w ∈ Σ∗ , l’exécution
de M sur w s’arrête (pas forcement sur un état final).
– une machine de Turing M calcule une fonction f : L → L⊥ si, pour tout mot w ∈ L,
– si f (w) ↓, alors l’exécution de M sur w s’arrête sur un état final, en laissant le seul mot
f (w) sur le ruban, la tête de lecture étant sur la premiere lettre (à gauche) de ce mot ;
– si f (w) ↑, alors l’exécution de M sur w ne s’arrête jamais sur un état final (boucle infinie
ou arrêt sur un état non final).
Exercice 1. Soit f la fonction associant à un mot binaire w ∈ {0, 1}? son complémentaire w bit
à bit, c.à-d. w est obtenu en remplaçant chaque 0 de w par 1 et chaque 1 par 0. Par example :
f (00110) = 11001
Décrire une machine de Turing qui calcule f .
Exercice 2. Soit la machine de Turing décrite par le diagramme suivant.
a/a, →
start
a/X, →
qa
qb
Y /Y, →
#/#, →
qf
Y /Y, →
X/X, →
b/Y, ←
#/#, →
qY
qX
Y /Y, →
Y /Y, ←
a/a, ←
1. Décrire l’exécution de la machine sur les entrées ab, abb, aab, aabb en détaillant les configurations.
2. Quel est le langage L ⊆ {a, b}∗ décidé par cette machine de Turing ?
Exercice 3. Décrire une machine de Turing qui décide le langage L = {an bn cn | n ≥ 0} ⊆
{a, b, c}∗ .
Exercice 4. Écrire une machine à deux rubans qui décide l’ensemble des palindromes sur {a, b}∗ .
Au début de l’exécution, on considère que le mot est écrit sur le premier ruban et que le deuxième
ruban est vide.
Indication : parcourir un ruban de gauche à droite et l’autre de droite à gauche.
Jean-Yves Moyen & Luc Pellissier
1
Institut Galilée
L3 S6 – Année 2014–2015
Exercice 5. Écrire une machine à un seul ruban qui décide l’ensemble des palindromes sur
{a, b}∗ .
Indication : comparer la première et la dernière lettre. Si elles sont identiques, les remplacer
par des nouveaux symboles et recommencer (la machine fera beaucoup d’aller-retours).
Exercice 6. Écrire une machine de Turing à trois rubans qui calcule l’addition des nombres en
représentation binaire. Dans la configuration initiale les deux entrées se trouveront, respectivement, sur le premier et le deuxième ruban, alors que la sortie se trouvera sur le troisième ruban
dans la configuration finale.
Indication : commencer par aller à la fin des rubans (vers les bits de poids faible) puis faire
une addition “normale” avec retenue.
Jean-Yves Moyen & Luc Pellissier
2