Examen final première session (2022)

\[\newcommand\Nat{\mathbb{N}} \newcommand\set[1]{\left\{#1\right\}} \newcommand\setcompr[2]{\left\{#1\;\middle|\;#2\right\}} \newcommand\Turing{ {\Bbb{T}}\paren{\Sigma}} \newcommand\size[1]{\left|#1\right|} \newcommand\eqdef{\mathrel{:=}} \newcommand\Lang[1]{\mathcal{L}\left(#1\right)} \newcommand\tuple[1]{\left\langle #1\right\rangle} \newcommand\paren[1]{\left( #1\right)} \newcommand\MT{\mathcal{M}}\]

Exercice 1 : Machines de Turing qui reconnaîssent des langages

Proposer des machine de Turing reconnaissant chacun des langages suivants.

a - les mots qui contiennent le motif \(\tt{abba}\)

\[L_1\eqdef\setcompr{w\in\set{ {\tt a},{\tt b}}^\star}{\exists u,v\in\set{ {\tt a},{\tt b}}^\star:\;w=u\,{\tt abba}\,v}\]

Solution :

Solution :

b - les mots qui ont deux fois plus de \(\tt{a}\) que de \(\tt{b}\).

\[L_2\eqdef\setcompr{w\in\set{ {\tt a},{\tt b}}^\star}{\size{w}_{\tt a}=2\times\size{w}_{\tt b}}\]

Solution :

Solution :

c - les séquences de \(\tt{a}\) dont la longueur est une puissance de 2.

\[L_3\eqdef\setcompr{ {\tt a}^{2^n}}{n\in\Nat}\]

Solution :

Exercice 2 : Les carrés

Les machines de Turing peuvent reconnaître plus que les langages hors-contexte. C’est le cas par exemple du langage \(L\eqdef\setcompr{ww}{w\in\set{ {\tt a},{\tt b}}^\star}\) des carrés. On peut montrer, par exemple avec le lemme de la double étoile, que ce langage n’est pas hors-contexte : il ne peut être défini à l’aide d’une grammaire hors-contexte.

question 1

Écrire une machine de Turing reconnaissant le langage \(w{\tt X}w\), où \(w\in\set{\tt a,\tt b}^\star\).

Solution :

Solution :

question 2

Écrire une machine de Turing qui rejette les mots de longueur impaire, et pour les mots de longueur paire insère le symbole \(\tt X\) entre les deux moitiés du mot. Par exemple, le mot \({\tt abaa}\) est transformé en \({\tt abXaa}\).

Solution :

question 3

Combiner les machines des deux questions précédentes pour en produire une reconnaissant \(L\).

Solution :

question 4 (Bonus)

Montrer que le langage \(L\) n’est pas rationnel.

Solution

:

Exercice 3 : Machines de Turing qui calculent

\(\newcommand\pcode[1]{\tuple{#1}_{code}}\) On va manipuler des listes d’entiers, encodées par la fonction \(\pcode{-}\) comme suit:

  • les entiers sont encodés en binaire avec le bit de poids fort en tête;
  • les éléments d’une liste sont séparés par le symbole \({\tt \$}\);
  • la liste est délimitée à gauche et à droite par un symbole \({\tt \$}\).

Par exemple:

liste code
[] $$
[3] $11$
[3,2] $11$10$
[1,2,3,4,5,6] $1$10$11$100$101$110$

question 1

Proposer une machine de Turing qui calcule la fonction \({\tt rev}\), qui inverse l’ordre des éléments d’une liste (d’entiers).

Par exemple, comme \({\tt rev}\left([1,2,3]\right)=[3,2,1]\), on veut une machine qui, si elle est exécutée sur \(\pcode{[1,2,3]}\), produit \(\pcode{[3,2,1]}\).

Solution :

question 2

Proposer une machine de Turing qui calcule la somme des entiers contenus dans une liste. Par exemple, sur l’entrée \(\pcode{[1,2,3]}\), la machine devra produire le mot \({\tt 110}\), qui encode l’entier \(1+2+3=6\).

Solution :

question 3

Proposer une machine de Turing qui calcule la longueur d’une liste (d’entiers). Par exemple, sur l’entrée \(\pcode{[1,2,3]}\), elle produira \({\tt 11}\), c’est à dire la représentation de \(3=\size{[1,2,3]}\).

Solution :

Exercice 4 : Difficulté des problèmes

Pour chacun des problèmes suivants, indiquer s’ils sont:

  • rationnels
  • non-rationnels mais décidables
  • indécidables mais reconnaissables
  • ni décidables, ni reconnaissables.

Il est nécessaire dans cet exercice de justifier soigneusement vos réponses. On appréciera tout particulièrement les justifications claires et concises (également: justes).

Dans la suite, on fixe \(\Sigma=\set{ {\tt a},{\tt b} }\), et on note \(\Turing\) l’ensemble des machines de Turing sur l’alphabet \(\Sigma\).

a - Machines reconnaissant \({\tt ab}\) :

  • Instances : \(\MT\in\Turing\)
  • Instances Positives : \(\MT\) telle que \({\tt ab}\in\Lang{\MT}\).

Solution

:

b - Machines reconnaissant au moins un mot de taille bornée :

  • Instances : paires \(\tuple{\MT,n}\), avec \(\MT\in\Turing\) et \(n\in\Nat\)
  • Instances Positives : \(\tuple{\MT,n}\) tels que il existe \(w\in\Sigma^\star\) tel que \(\size{w}<n\) et \(w\in\Lang{\MT}\).

Solution

:

c - Paires de machines ayant au moins un mot en commun :

  • Instances : paires \(\tuple{\MT_1,\MT_2}\in\Turing\times\Turing\),
  • Instances positives : paires \(\tuple{\MT_1,\MT_2}\) telles que \(\Lang{\MT_1}\cap\Lang{\MT_2}\neq\emptyset\).

Solution

:

d - Machines avec plus d’états finaux que d’états non-finaux :

  • Instances : \(\MT\in\Turing\),
  • Instances positives : \(\MT=\tuple{Q,\Sigma,\Delta,q_0,F}\) telle que \(\size{F} \geqslant \size{Q\setminus F}\).

Solution

:

e - Machines sans états finaux :

  • Instances : \(\MT\in\Turing\),
  • Instances positives : \(\MT=\tuple{Q,\Sigma,\Delta,q_0,F}\) telle que \(F=\emptyset\).

Solution

: