Julien Marcil - julien.marcil@ift.ulaval.ca
Définition: Un langage $L$ est dit Turing-acceptable (ou récursivement énumérable)s’il existe une machine de Turing qui accepte les mots de $L$.
Étant donnée une entrée $w$
Définition: Un langage $L$ est dit Turing-décidable (ou décidable)s’il existe une machine de Turing $M$ qui accepte les mots de $L$ et rejette les autres mots.
Étant donnée une entrée $w$
Soit un le langage $L$. Si $L$ est Turing-décidable, alors $\overline{L}$ est Turing-décidable.
Soit un le langage $L$. Si $L$ et $\overline{L}$ sont Turing-acceptable, alors $L$ est Turing-décidable.
Soit un programme $M$, alors on note $\langle M \rangle$ la chaîne de symboles qui représente $M$.
Lorsque l’on parle d’un « programme » on ne fait souvent pas la distinction entre le code source du programme et l’exécutable qui lui correspond.
La différence entre $M$ et $\langle M \rangle$ est de la même nature.
La Trahison des images (1929, huile sur toile, 59 × 65 cm), René Magritte
$$A_{\text{AFD}} = \{\langle B, w\rangle \mid B \text{ est un AFD qui accepte } w\}$$
$\text{AFD}$: automate fini déterminite
$A_{\text{AFD}}$ est un langage décidable.
Soit la machine de Turing $M_{A_{\text{AFD}}}$ qui décide $A_{\text{AFD}}$.
$M_{A_{\text{AFD}}} = $ Avec $\langle B, w\rangle$
$$A_{\text{AFN}} = \{\langle B, w\rangle \mid B \text{ est un AFN qui accepte } w\}$$
$\text{AFN}$: automate fini non déterminite
$A_{\text{AFN}}$ est un langage décidable.
Soit la machine de Turing $M_{A_{\text{AFN}}}$ qui décide $A_{\text{AFN}}$.
$M_{A_{\text{AFN}}} = $ Avec $\langle B, w\rangle$
$$E_{\text{AFD}} = \{\langle B \rangle \mid B \text{ est un AFD et } L(B) = \emptyset\}$$
$E_{\text{AFD}}$ est un langage décidable.
Soit la machine de Turing $M_{E_{\text{AFD}}}$ qui décide $E_{\text{AFD}}$.
$M_{E_{\text{AFD}}} = $ Avec $\langle B \rangle$
$$EQ_{\text{AFD}} = \{\langle A, B \rangle \mid A \text{ et } B \text{ sont des AFD et } L(A) = L(B) \}$$
$EQ_{\text{AFD}}$ est un langage décidable.
Soit $C$ un $\text{AFD}$ tel que $$L(C) = \big( L(A) \cap \overline{L(B)} \big) \cup \big( \overline{L(A)} \cap L(B) \big)$$
$$L(A) = L(B) \ \Leftrightarrow \ L(C) = \emptyset$$
Soit la machine de Turing $M_{EQ_{\text{AFD}}}$ qui décide $EQ_{\text{AFD}}$.
$M_{EQ_{\text{AFD}}} = $ Avec $\langle A, B \rangle$
$$A_{\text{GHC}} = \{\langle G, w\rangle \mid G \text{ est une GHC qui génère } w\}$$
$\text{GHC}$: grammaire hors context
$A_{\text{GHC}}$ est un langage décidable.
Définition: Soit $G = (V, \Sigma, S, R)$ une grammaire. $G$ est dans la forme normale de Chomsky si les règles de réécriture sont de la forme:
Soit la machine de Turing $M_{A_{\text{GHC}}}$ qui décide $A_{\text{GHC}}$.
$M_{A_{\text{GHC}}} = $ Avec $\langle G, w\rangle$
$$E_{\text{GHC}} = \{\langle G \rangle \mid G \text{ est une GHC et } L(G) = \emptyset\}$$
$E_{\text{GHC}}$ est un langage décidable.
Soit la machine de Turing $M_{E_{\text{GHC}}}$ qui décide $E_{\text{GHC}}$.
$M_{E_{\text{GHC}}} = $ Avec $\langle G \rangle$
$$EQ_{\text{GHC}} = \{\langle G, H \rangle \mid G \text{ et } H \text{ sont des GHC et } L(G) = L(H) \}$$
Les langages hors contexte ne sont pas fermés sur les opérations complément et intersection.
Soit le langage $L$.
$$L \text{ est hors contexte} \Rightarrow L \text{ est décidable}$$
$L$ est hors contexte si il exite une grammaire $G$ qui génère $L$.
Soit la machine de Turing $M_{G}$ qui décide $L(G)$.
$M_{G} = $ Avec $\langle w \rangle$
$$A_{\text{MT}} = \{\langle M, w\rangle \mid M \text{ est une machine de Turing qui accepte } w\}$$
$\text{MT}$: machine de Turing
$A_{\text{TM}}$ est un langage Turing-acceptable.
$A_{\text{TM}}$ n'est pas un langage décidable.
$\overline{A_{\text{TM}}}$ n'est pas un langage Turing-acceptable.
$$HALT_{\text{MT}} = \{\langle M, w \rangle \mid M \text{ est une MT et } M \text{ s'arrête sur } w \}$$
$HALT_{\text{MT}}$ n'est pas un langage décidable.
Une réduction est un algorithme transformant un problème en un autre.
Si un problème $A$ peut être réduit à (i.e. transformé en) un problème $B$, et que le problème $A$ est difficile alors le problème $B$ est au moins aussi difficile. On écrit alors $A \le_m B$.
Un language $L$ se réduit au language $K$, noté $L \le_m K$ si il existe $f: \Sigma^* \to \Sigma^*$ une fonction calculable tel que
$$\forall_{w \in \Sigma^*} \quad w \in L \ \Leftrightarrow \ f(w) \in K$$
Si $A \le_m B$ et $B$ est décidable, alors $A$ est décidable.
Si $A \le_m B$ et $A$ n'est pas décidable, alors $B$ n'est pas décidable.
$A_{\text{MT}} \le_m HALT_{\text{MT}}$
Ceci implique que $HALT_{\text{MT}}$ n'est pas un langage décidable.
$$E_{\text{MT}} = \{\langle M \rangle \mid M \text{ est une MT et } L(M) = \emptyset \}$$
$A_{\text{MT}} \le_m E_{\text{MT}}$
Ceci implique que $E_{\text{MT}}$ n'est pas un langage décidable.
$$REGULIER_{\text{MT}} = \{\langle M \rangle \mid M \text{ est une MT et } L(M) \text{ est régulier} \}$$
$A_{\text{MT}} \le_m REGULIER_{\text{MT}}$
Ceci implique que $REGULIER_{\text{MT}}$ n'est pas un langage décidable.
$$EQ_{\text{MT}} = \{\langle M_1, M_2 \rangle \mid M_1 \text{ et } M_2 \text{ sont des MT et } L(M_1) = L(M_2) \}$$
$E_{\text{MT}} \le_m EQ_{\text{MT}}$
Ceci implique que $EQ_{\text{MT}}$ n'est pas un langage décidable.
Si $A \le_m B$ et $B$ est Turing-acceptable, alors $A$ est Turing-acceptable.
Si $A \le_m B$ et $A$ n'est pas Turing-acceptable, alors $B$ n'est pas Turing-acceptable.
Si $A \le_m B$ et $\overline{A}$ n'est pas Turing-acceptable, alors $\overline{B}$ n'est pas Turing-acceptable.
Définition: Un langage $L$ est dit co-Turing-acceptable si $\overline{L}$ est Turing-acceptable.
$A_{\text{MT}}$ est Turing-acceptable.
$A_{\text{MT}}$ n'est pas co-Turing-acceptable.
Si $A \le_m B$ et $A$ n'est pas co-Turing-acceptable, alors $B$ n'est pas co-Turing-acceptable.
$E_{\text{MT}}$ n'est ni Turing-acceptable ni co-Turing-acceptable
$$A_{\text{MT}} \le_m EQ_{\text{MT}} \ \Rightarrow \ EQ_{\text{MT}} \text{ n'est pas co-Turing-acceptable}$$
$$A_{\text{MT}} \le_m \overline{EQ_{\text{MT}}} \ \Rightarrow \ EQ_{\text{MT}} \text{ n'est pas Turing-acceptable}$$