TD2 : Ensembles récursifs/récursivement énumérables

Énoncé (pas les mêmes numéros d’exercices)

TD 2

EX 1

On écrit le mot à l’envers sur le deuxième ruban, puis on compare lettre à lettre verticalement.

  • Étape 1 : Aller jusqu’au bout du mot sur le premier ruban, à l’indice $k$.
  • Étape 2 : écrire un caractère spécial en position $k$ sur le deuxième
  • Étape 3 : revenir au début sur le premier ruban, copier le mot sur le deuxième à l’envers
  • Étape 4 : comparer les deux.

    • $q_1$ : écrit le mot sur le deuxième ruban
    • $q_2$ : revient au début sur le premier ruban
    • $q_3$ : compare les deux mots lettre à lettre

$∀ a \neq b ∈ 𝛴$ :

  $(a,b)$ $(a,a)$ $(B,_)$ $($,_)$
$q_1$ $q_1(a,a)→→$ $q_1(a,a)→→$ $q_2(B,B)←←$  
$q_2$ $q_2(a,b)←↓$ $q_1(a,a)←↓$   $q_2($,_)→→$
$q_1$ reject $q_1(a,a)→←$ accept  

EX 2

  • Intersection : les deux MT sont sur un ruban chacune ⟶ le dernier état est le $∧$ des deux états finaux des deux MT.
  • Union : idem, avec $∨$.
  • Complémentaire : idem, avec $\lnot$ (“accept” devient “reject” et réciproquement).

EX 3

On veut savoir si $w ∈ f(L)$ : Sur le ruban, on note $w$, un caractère spécial, et tous les éléments de $L$ juxtaposés par des caractères spéciaux. Puis : on calcule $f(w’)$, pour tous les $w’$ écrits sur le ruban (sauf le premier, qui est $w$), et on la compare à $w$ (si $w ∈L$ : ça termine, sinon : ça ne termine pas).

Soit $M_f$ calculant $f$.

Mq \(L ≝ \{f(w) \vert w ∈ 𝛴^* \}\) est récursivement énumérable.

\[M_L :\] \[\begin{align*} \$x\#w'\#𝜀 \\ &\vdash^* \$x\#w'\#𝜀 \\ &\vdash^* \$x\#w'\#𝜀 \\ &\vdash^* \begin{cases} accept \, \, \, \, \text{ si } f(w') = x \\ \$x\#next(w')\#𝜀 \, \, \, \, \text{ sinon } \end{cases} \end{align*}\]

EX 4

On exécute $M_1, M_2$ sur $w$ sur deux bandes différentes.

Ne marche pas pour le complémentaire, car on ne peut pas détecter les mots tels que la machine ne termine pas pour les accepter dans $\lnot M$.

EX 5

On aimerait bien faire quelque chose de similaire à l’exo 3, tester tous les mots successifs du langage sur la première bande, puis le placer sur la deuxième bande ⟶ MAIS : ne marche pas, car on peut rester indéfiniment sur un mot n’appartenant pas au langage.

Le langage $L$ est récursivement én. ssi \(∃ M \text{ à deux rubans }; q_e ∈ Q_M ∧ \\ q_0,(𝜀, \$),(𝜀,\$)\vdash_M^* q_e, (𝜀,\$w'), (𝜀, \$w) ⟺ w ∈ L\)

  • $⟹$ : On définit $M$ de la manière suivante :

À la $k$-ième grande étape, on a :

  • Sur le premier ruban : les $k$ premiers mots de l’alphabet auxquels on appliqué $k$ étapes de la machine $M_L$ (on les stocke sous la forme $q_1\vert t_1\vert w_1#q_2\vert t_2\vert w_2⋯ #q_k\vert t_k\vert w_k)$
  • Sur le deuxième ruban : on écrit tour à tour les $k$ mots du premier ruban en faisant progresser l’exécution de $M_L$ de 1 étape. Si $M_L$ accepte le mot, on l’écrit tout seul (sans $q_i\vert t_i\vert $) juste après (et on passe dans l’état $q_e$).

On passe d’un mot au suivant/ au précédent par la fonction $next()$/$prec()$.

  • $⟸$ : À trois rubans : à chaque fois que $M$ est dans l’état $q_e$, on lit le mot sur le 3e ruban, et on le compare à $w$ sur le premier ruban.

EX 6

M1.

On procède de même qu’en EX3, en remplaçant $𝛴^*$ par $L$ ($L$ peut être énuméré, puisqu’il est récursivement énumérable (cf. EX5)).

M2. \(∃ M_L \text{ à deux rubans }; q_e ∈ Q_{M_L} ∧ \\ q_0,(𝜀, \$),(𝜀,\$)\vdash_M^* q_e, (𝜀,\$w'), (𝜀, \$w) ⟺ w ∈ L\)

\[M_{f(L)} :\] \[\begin{align*} q_0,(𝜀, \$),(𝜀,\$) &\vdash_{M_L}^* q_e, (𝜀,\$w'), (𝜀, \$w) ⟺ w ∈ L \\ &\vdash^* q_e, (𝜀,\$w'\#w), (𝜀, \$f(w)) ⟺ f(w) ∈ f(L)\\ \end{align*}\]

EX 7

Voici un langage récursivement énumérable mais non récursif : \(L = \{(⟨M⟩, w) \vert M(w) \text{ termine}\}\)

  • $L$ est récursivement én., avec la MT Universelle : on peut simuler l’action de $M$ sur $w$ (qu’elle termine ou non).
  • $L$ n’est pas récursif, car sinon on a une machine $L’$ qui résout le problème de l’arrêt.

M1. Si $L$ est réc.én., il existe une machine qui énumère ce langage, et en retourne le $n$-ième mot. La fonction qui à $n$ associe le $n$-ième mot est calculable, et l’image de cette fonction est $L$.

M2.

$f(⟨M⟩,w,n)$ simule $M$ sur $w$ pendant $n$ étapes, et si $M$ accepte, retourne $(⟨M⟩,w)$, sinon $𝜀$

$Im(f) = L$

Leave a comment