Julien Marcil - julien.marcil@ift.ulaval.ca
Définition: Une machine de Turing consiste en un 7-tuple de la forme $(S, \Sigma, \Gamma, \delta, \iota, s_{\text{accepte}}, s_{\text{rejete}})$ où
Définition: Une machine de Turing non déterministe consiste en un 7-tuple de la forme $(S, \Sigma, \Gamma, \delta, \iota, s_{\text{accepte}}, s_{\text{rejete}})$ où
Soit $M$ une machine de Turing qui s’arrête sur toutes les entrées possibles.
Une definition naturelle du temps de calcul de $M$ sur le mot $w$ est le nombre de transitions avant l’arrêt de $M$.
Définition: Le temps de calcul de $M$ est la fonction
$$ \begin{aligned} f : \mathbb N & \to \mathbb N \\ n & \mapsto \max_{\lvert w \rvert = n}\{ \text{ temps de calcul de } M \text{ sur } w \} \end{aligned} $$
On dit que $M$ fonctionne en temps $f(n)$, ou que sa complexité de temps est $f(n)$.
On défini $\mathsf{TIME}(t(n))$, la classe de complexité des langages, comme
$$ \begin{aligned} \{ L \mid & L \text{ est un language décidé par une MT } \\ & \text{en temps } O(t(n)) \} \end{aligned} $$
La classe de complexité $\mathsf{P}$ est définie comme
$$ \bigcup_{k \ge 0} \mathsf{TIME}(n^k) $$
La classe P correspond aux langages décidables en pratique en un temps raisonnable.
La classe P est robuste par rapport à un changement raisonnable dans le modele de calcul: les MT avec un ruban, $k$ rubans, $k$ têtes de lecture/écriture, et plusieurs autres modèles définissent la même classe de langages P.
Voici quelques problèmes dans P
Un graphe $G$ est $k$-coloriable s’il est possible d’assigner à chaque sommet de $G$ une couleur choisie parmi $k$ couleurs données, de telle sorte qu’il n’existe aucune paire de sommets adjacents de la même couleur.
Soit le langage $3\mathsf{-COL} = \{ \langle G \rangle \mid G \text { est un graphe } 3\text{-coloriable} \}$
Clairement $3\mathsf{-COL}$ est décidable.
Est-ce que $3\mathsf{-COL} \in \mathsf{P}$ ?
Définition: Un vérificateur polynômial pour un langage $L$ est une machine de Turing $V$ tel que pour tout $w \in \Sigma^*$:
le temps de calcul de $V$ sur $\langle w, c \rangle$ est polynômial en la taille de $w$.
Un $c$ tel que $\langle w, c \rangle \in L(V)$ est appelé certificat ou preuve ou temoin de l’appartenance de $w$ au langage $L$.
La classe de complexité $\mathsf{NP}$ est l’ensemble des langages qui possèdent un vérificateur polynômial.
On défini $\mathsf{NTIME}(t(n))$, la classe de complexité non déterministe des langages, comme
$$ \begin{aligned} \{ L \mid & L \text{ est un language décidé par une MT } \\ & \text{non déterministe en temps } O(t(n)) \} \end{aligned} $$
$$ \mathsf{NP} = \bigcup_{k \ge 0} \mathsf{NTIME}(n^k) $$
Voici quelques exemples de langages dans NP.
Un graphe hamiltonien est un graphe possédant au moins un cycle passant par tous les sommets une fois et une seule.
$$\{ \langle G \rangle \mid G \text{ est un graphe hamiltonien } \}$$
$$\mathsf{HAMGRAPH} \in \mathsf{NP}$$
$$ \begin{aligned} \{ & \langle \{x_1, \dots, x_m\}, t \rangle \mid (x_1, \dots, x_m) \in \mathbb N^m \\ & \exists_{\{y_1, \dots,y_k\} \subseteq \{x_1, \dots, x_m\}} \sum y_i = t \} \end{aligned} $$
$$\mathsf{SUBSET-SUM} \in \mathsf{NP}$$
Remarquez que $\overline{\mathsf{HAMGRAPH}} \notin \mathsf{NP}$ et $\overline{\mathsf{SUBSET-SUM}} \notin \mathsf{NP}$.
On dit que $\overline{\mathsf{HAMGRAPH}}$ et $\overline{\mathsf{SUBSET-SUM}}$ sont dans $\mathsf{coNP}$
Le Clay Mathematical Institute offre un prix de un million de dollars à quiconque répondra à la question:
$$ \mathsf{P} = \mathsf{NP} $$
La classe de complexité $\mathsf{EXPTIME}$ est définie comme
$$ \bigcup_{k \ge 0} \mathsf{TIME}(2^{n^k}) $$
$$ \mathsf{NP} \subseteq \mathsf{EXPTIME} $$
$$ \mathsf{coNP} \subseteq \mathsf{EXPTIME} $$
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_p K$ si il existe $f: \Sigma^* \to \Sigma^*$ une fonction calculable en temps polynômiales tel que
$$\forall_{w \in \Sigma^*} \quad w \in L \ \Leftrightarrow \ f(w) \in K$$
Si $A \le_p B$ et $B \in \mathsf{P}$, alors $A \in \mathsf{P}$.
Si $A \le_p B$ et $B \in \mathsf{NP}$, alors $A \in \mathsf{NP}$.
Définition: Le langage $L$ est NP-difficile si pour tout $L' \in \mathsf{NP}$ on a $$ L' \le_p L $$
un langage NP-difficile est aussi difficile à décider, ou plus difficile, que n’importe quel langage de NP.
Définition: Le langage $L$ est NP-complet si
Soit $L$ un langage NP-complet.
Si $L$ est un langage NP-complet et $L \in \mathsf{P}$, alors
$$\mathsf{P} = \mathsf{NP}$$
Si l’on peut résoudre un seul problème NP-complet efficacement, alors on aura résolu efficacement tous les problèmes de NP.
Si $A \le_p B$ et $A \in$ NP-complet et $B \in $ NP, alors $B$ est NP-complet.
Pour montrer qu'un problème $B$ est NP-complet il faut réduire un problème $A$ NP-complet à ce problème.
$\mathsf{SAT}$ est NP-complet
$$ \begin{aligned} \mathsf{SAT} = \{⟨φ⟩\mid & φ \text{ est une expression booléenne } \\ & \text{satisfaisable} \} \end{aligned} $$
$$φ = (\overline{x}∧y) ∨ (x∧\overline{z})$$
$$ \begin{aligned} x & = 0 \\ y & = 1 \\ z & = 0 \end{aligned} $$
Un terme est soit une variable booléenne ou la négation d’une variable booléenne.
Une clause est une somme booléenne de termes.
Une expression booléenne est en forme normale conjonctive (FNC) si il s’agit d’un produit booléen de clauses.
L’expression booleenne suivante est en FNC
$$(x_1 ∨ \overline{x_2} ∨ \overline{x_3} ∨ x_4) ∧ (x_3 ∨ \overline{x_5} ∨ x_6) ∧ (x_3 ∨ \overline{x_6})$$
Une expression booléenne est en 3-FNC si elle est en FNC et si chaque clause est une somme booléenne d’exactement 3 termes qui comprennent 3 variables distinctes.
$$(x_1 ∨ \overline{x_2} ∨ \overline{x_3}) ∧ (x_3 ∨ \overline{x_5} ∨ x_6) ∧ (x_3 ∨ \overline{x_6} ∨ x_4)$$
$$ \begin{aligned} \{⟨φ⟩\mid & φ \text{ est une expression booléenne } \\ & \text{en } 3\mathsf{-FNC} \text{ satisfaisable} \} \end{aligned} $$
3SAT est NP-complet
Une clique d'un graphe est un sous-ensemble des sommets de ce graphe dont le sous-graphe est complet, c'est-à-dire que deux sommets quelconques de la clique sont toujours adjacents.
$$ \begin{aligned} \{ \langle G, k \rangle \mid & G \text{ est un graphe qui contient} \\ & \text{un sous-graphe complet de taille } k \} \end{aligned} $$
CLIQUE est NP-complet
De nombreux problème ont été démontrer comme NP-complet
Pour definir un espace de calcul inférieur à la taille de l’input, nous considérons que l’input réside sur un ruban en lecture seule, et qu’un autre ruban est utilisé pour faire le calcul.
Soit $M$ une machine de Turing qui s’arrête sur toutes les entrées possibles.
Une definition naturelle de l'espace de calcul de $M$ sur le mot $w$ la position la plus à droite que la tête de lecture atteint.
Définition: Le espace de calcul de $M$ est la fonction
$$ \begin{aligned} f : \mathbb N & \to \mathbb N \\ n & \mapsto \max_{\lvert w \rvert = n}\{ \text{ espace de calcul de } M \text{ sur } w \} \end{aligned} $$
On défini $\mathsf{SPACE}(t(n))$, la classe de complexité des langages, comme
$$ \begin{aligned} \{ L \mid & L \text{ est un language décidé par une MT } \\ & \text{en espace } O(t(n)) \} \end{aligned} $$
$$ \begin{aligned} L = & \mathsf{SPACE}(log n) \\ PSPACE = & \bigcup_{k \ge 0} \mathsf{SPACE}(n^k) \\ EXPSPACE = & \bigcup_{k \ge 0} \mathsf{SPACE}(2^{n^k}) \\ \end{aligned} $$
$$\mathsf{TIME}(f(n)) \subseteq \mathsf{SPACE}(f(n))$$
On défini $\mathsf{NSPACE}(t(n))$, la classe de complexité des langages non déterministe, comme
$$ \begin{aligned} \{ L \mid & L \text{ est un language décidé par une MT } \\ & \text{non déterministe en espace } O(t(n)) \} \end{aligned} $$
Soit un fonction $f$ tel que $f(n) ≥ n$
$$\mathsf{NSPACE}(f(n)) \subseteq \mathsf{SPACE}(f^2(n))$$
$$\mathsf{PSPACE} = \mathsf{NPSPACE}$$
P ⊆ NP ⊆ PSPACE = NPSPACE ⊆ EXPTIME
PSPACE $\stackrel{?}{=}$ EXPTIME
NP $\stackrel{?}{=}$ PSPACE
Définition: Le langage $L$ est PSPACE-difficile si pour tout $L' \in \mathsf{PSPACE}$ on a $$ L' \le_p L $$
un langage PSPACE-difficile est aussi difficile à décider, ou plus difficile, que n’importe quel langage de PSPACE.
Définition: Le langage $L$ est PSPACE-complet si
Soit un liste de pays: Argentine, Bolivie, Brésil, Canada, Chili, Colombie, Costa Rica, Cuba, Équateur, États-Unis, Guatemala, Haïti, Honduras, Mexique, Nicaragua, Panama, Paraguay, Pérou, République dominicaine, Salvador, Uruguay, Venezuela.
Jeux à deux joueurs: un joueur choisi un pays. L'aute joueur doit choisir un pays qui n'est pas encore été choisi tel que la première lettre du pays est la même que la dernière lettre du pays choisi précédemment. Un joueur gagne quand l'autre joueur ne peut plus nommer de pays.
Étant donner une liste de noms: $w_1, \dots, w_n$. Exist-il une statégie gagnante pour le pour le premier joueur?
Jeu de géographie est PSPACE-complet