Examen Cor Calculabilite
Examen Cor Calculabilite
Examen Cor Calculabilite
Examen Final
Corrigé rédigé par Paul Brunet et Laure Gonnord
Durée 1H30
Notes de cours et de TD autorisées. Livres et appareils électroniques interdits.
Le barème est donné à titre indicatif .
1 Machines de Turing
Question 1 (4 points)
Construisez une machine de Turing déterministe acceptant le langage L des palindromes
sur {a, b}∗ , défini par L = {w ∈ {a, b}∗ |w = wR , où wR est le mot miroir de w).
Vous écrirez une machine de Turing :
— À un seul ruban infini à droite, le marqueur délimitant le mot d’entrée étant #, la tête
de lecture initialement positionnée sur le premier blanc à gauche de w.
— Qui décide L (avec donc un état d’acceptation et un état de refus).
Votre machine de Turing viendra avec des EXPLICATIONS et un EXEMPLE. Soi-
gnez le dessin et la rédaction !
Solution:
#/#/ ←
a/a/ →
b/b/ →
#/#/ ←
2 3 #/#/ ←
2’ 3’ #/#/ ←
#/#/ ←
a/a/ →
b/b/ →
Solution:
On peut définir sommebis(n, i) qui fait la somme des diviseurs de n jusqu’à i. On a assez
facilement :
— sommebis(n, 0) = 0
(
i+1 si modulo(n, i + 1) > 0
— sommebis(n, i + 1) = sommebis(n, i) +
0 sinon
Il resterait à recoller les morceaux.
Question 3 (3 points)
Soit g une fonction récursive primitive.
Soit f la fonction définie par f (0, x) = g(x) et f (n + 1, x) = f (n, f (n, x)).
Montrez que f est récursive primitive.
n
On commencera par prouver proprement que f : (n, x) 7→ g 2 (x), et on pourra utiliser sans
preuve le fait que la fonction 2 puis : n 7→ 2n , est récursive primitive.
Solution:
La première chose à faire est de prouver une spécification alternative de f :
n
∀n ∈ N, f (n, x) = g 2 (x).
f := Comp2 (Rec(id11 , Comp3 (g, id33 )), id22 , Comp2 (2 puis, id12 ))
Solution:
Soit < M, w > une instance du problème de l’arrêt. On construit M0 comme suit :
— M0 prend en entrée un compteur c.
— Si M s’arrête en moins de c étapes, M0 accepte, sinon elle rejette.
M0 accepte c ssi M s’arrête en moins de c étapes sur w. L(M0 ) = {c ∈ Ntels que c ≥
longueur du calcul de M sur w} est donc infini ssi M s’arrête sur w.
4 Problème : NP-complétude
Le problème Clique consiste à établir si un graphe G donné contient une clique de cardinal
égal à un entier donné k. Un graphe G est défini par la donnée de son ensemble de sommets V
et de l’ensemble de ses arêtes E ⊆ V × V . Le cardinal d’un graphe est son nombre de sommets.
Un ensemble C ⊆ V de sommets de G est une clique si tous ces sommets sont reliés entre eux
dans G, c’est à dire :
∀u, v ∈ C, u 6= v ⇒ (u, v) ∈ E.
Question 5 (1 point)
Donnez un exemple de graphe contenant une clique de cardinal quatre.
Solution:
On pose G = (V, E) avec V = {0, 1, 2, 3} et E = V × V . Il est trivial de vérifier que V
lui-même est une clique de cardinal quatre dans G.
0 1
2 3
x, c1 y, c1
¬x, c2 y, c3
¬y, c2 ¬x, c3
Question 6 (3 points)
Montrez que si F est constituée de n clauses, alors F est satisfiable si et seulement si
GF contient une clique de cardinal n. On prouvera soigneusement les deux implications en
construisant une clique dans un sens, et une interprétation des formules dans un autre.
Solution:
Si F est satisfiable, soit I un modèle de F . Pour chaque clause ck de F , il y a au moins un
littéral `(ck ) dans ck tel que [`(ck )]I = 1. Considérons un tel ensemble CI = {(`(ck ), ck )}.
F a n clauses, donc le cardinal de CI vaut n. De plus, si (`, c) et (`0 , c0 ) sont deux éléments
différents de CI , alors c 6= c0 et comme [`]I = [`0 ]I = 1, ` et `0 ne sont pas la négation l’un
de l’autre. Donc ((`, c), (`0 , c0 )) ∈ EF . CI est donc une clique de cardinal n dans GF .
Supposons au contraire qu’on a une clique C ⊆ VF de cardinal n. On peut définir une
interprétation IC de la manière suivante :
1 si (p, c) ∈ C, pour une certaine clause c
IC (p) = 0 si (¬p, c) ∈ C, pour une certaine clause c
0 sinon
Comme C est une clique, pour tous (`, c) et (`0 , c0 ) différents dans C ces deux sommets
sont reliés dans GF , ce qui implique en particulier que c et c0 sont des clauses différentes.
Comme de plus le cardinal de C est égal au nombre de clauses de F , on en déduit que
pour chaque clause c de F il y a un littéral ` tel que (`, c) ∈ C. Par définition de IC , on a
[`]IC = 1. Par conséquent comme IC valide au moins un littéral dans chaque clause de F ,
[F ]IC = 1, ce qui signifie que F est satisfiable.
Question 7 (2 points)
Question 8 (2 points)
En utilisant les résultats précédents, prouvez que Clique est NP-complet.
Solution:
On commence par montrer que Clique est NP-dur. Pour cela on donne une réduction
polynomiale depuis Sat. Soit ρ la fonction qui à une formule F en forme normale conjonc-
tive associe (GF , n), avec n le nombre de clauses de F . D’après la question 7, on sait que
GF est de taille polynomiale par rapport à la taille de F , et il est évident à partir de la
définition de GF que la construction de ce graphe est linéaire en sa taille. Le calcul de n
ne pose pas plus de problème. Donc ρ est une fonction P. D’après la question 6, on sait
que :
F ∈ Sat ⇔ ρ(F ) = (GF , n) ∈ Clique.
Par conséquent, ρ est bien une réduction polynomiale de Sat à Clique, et comme Sat
est NP-complet, Clique est NP-dur.
Il faut encore montrer que Clique appartient bien à la classe NP. Considérons l’algorithme
non déterministe suivant :
input : Un graphe G = (V, E) et un entier n
output: Un booléen, indiquant si G possède une clique de taille n.
N ← 0;
C ← ∅;
pour v ∈ V faire
choix entre
C ← C ∪ {v};
N ← N + 1;
ou
ne rien faire ;
finchoix
finpour
si N = n alors
pour u, v ∈ C faire
si u 6= v et (u, v) ∈
/ E alors
retourner (faux);
finsi
finpour
retourner (vrai) ;
sinon
retourner (faux);
finsi
MIF15 Complexité et Calculabilité, Master Info - 2015-2016 6/7
Cet algorithme calcule de manière non-déterministe (“devine”) une clique , puis vérifie
que c’est bien une clique de taille n. Il s’exécute en temps polynomial par rapport à |G|.
Par conséquent on a établi que Clique est bien dans la classe NP.