0% ont trouvé ce document utile (0 vote)
335 vues133 pages

Cours Caculabilite

Ce document présente un cours sur la complexité et la calculabilité. Il contient le plan du cours, les objectifs, des exemples de problèmes typiques abordés, une bibliographie et un bref historique du domaine.

Transféré par

mulk omar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
335 vues133 pages

Cours Caculabilite

Ce document présente un cours sur la complexité et la calculabilité. Il contient le plan du cours, les objectifs, des exemples de problèmes typiques abordés, une bibliographie et un bref historique du domaine.

Transféré par

mulk omar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 133

Complexité et calculabilité

Complexité et calculabilité

Anca Muscholl, LaBRI


Année 2019/20 2

Master 1, Département ST, Université Bordeaux


http://www.labri.fr/perso/anca/MC.html

4 septembre 2019

2. Version issue du polycopié de Marc Zeitoun.


1 / 133
Complexité et calculabilité

Modalités du cours

I 12 cours, 5 groupes de TD (débutent la semaine prochaine).


I Philippe Duchon, Lamine Lamali, Frédéric Mazoit, Vincent
Penelle, Mohammed Senhaji.
I Contrôle continu (CC) obligatoire (sauf dispense). DS + DM
projet.
I DS : mercredi 23/10/19, 10h15-12h15.
I Note finale session 1 :
1/2 Examen (3h) + 1/2 CC.
I Note finale session 2 :
max(Examen, 1/2 Examen (2h) + 1/2 CC).

2 / 133
Complexité et calculabilité

Objectifs (fiche UE)

Définir, indépendamment de la technologie :


I ce qui est calculable et ce qui ne l’est pas
(théorie de la calculabilité) ;
I ce qui est calculable efficacement et ce qui ne l’est pas
(théorie de la complexité).

3 / 133
Complexité et calculabilité

Exemples de problèmes typiques

I Calculabilité : terminaison de programme. Est-ce qu’il y a une


façon systématique de savoir si le calcul d’un programme
quelconque termine ?

I Complexité : problèmes d’ordonnancement.


Airport gate scheduling, multi-core job scheduling, . . .

4 / 133
Complexité et calculabilité

Bibliographie
J.E. Hopcroft, R. Motwani, J. D. Ullman.
Introduction to Automata Theory, Languages & Computation.
Addison-Wesley, 2005.
M. Sipser.
Introduction to the Theory of Computation.
PWS publishing Company, 1997.
D. Kozen.
Automata and Computability. Springer Verlag, 1997.
O. Carton.
Langages formels, Calculabilité et Complexité.
Vuibert, 2008.
J.M. Autebert.
Calculabilité et Décidabilité. Masson, 1992.
5 / 133
Complexité et calculabilité

Bibliographie complémentaire

Ch. Papadimitriou.
Computational complexity.
Addison-Wesley, 1995.
M. Garey, D. Johnson.
Computers and intractability.
W.H. Freeman & Co, 1979.
J. E. Savage.
Models of computation.
Addison-Wesley, 1998.

6 / 133
Complexité et calculabilité

Plan du cours

Présentation, bref historique

Complexité
Problèmes et réductions
P vs. NP

Calculabilité
Ensembles dénombrables (rappels)
Programme WHILE, machines de Turing
Décidabilité

7 / 133
Complexité et calculabilité
Présentation, bref historique

Plan

Présentation, bref historique

Complexité
Problèmes et réductions
P vs. NP

Calculabilité
Ensembles dénombrables (rappels)
Programme WHILE, machines de Turing
Décidabilité

8 / 133
Complexité et calculabilité
Présentation, bref historique

Questions abordées dans ce cours

I Qu’est-ce que c’est un problème, un algorithme . . . ?


I Calculabilité : comment on formalise la notion de calcul ? quels
problèmes peut-on résoudre (algorithmiquement) avec un
ordinateur ?
I Complexité : Comment comparer la complexité de deux
problèmes ?
Y a-t-il des problèmes plus difficiles que d’autres ? Peut-on
parler d’algorithmes optimaux ?

9 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité


Wilhelm Schickard (1592 – 1635), professeur à
l’Université de Tübingen (Allemagne), invente la
première machine à calculer (mécanique).

Blaise Pascal (1623 – 1662), mathématicien et


philosophe, construit à l’age de 19 ans la Pas-
caline, première machine à calculer opération-
nelle du XVIIè siècle.

Gottfried Wilhelm Leibniz (1646 – 1716), ma-


thématicien et philosophe, développe aussi une
machine à calculer. Il préconise des idées très
modernes : la machine de calcul universelle, le
schéma “entrée-calcul-sortie”, la base 2 pour la
représentation des nombres.
10 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité

Le métier à tisser de Joseph Marie Jacquard


(1752 – 1834) est basé sur l’utilisation de cartes
perforées, et est à l’origine des premiers pro-
grammes de calcul.

Charles Babbage (1791 – 1871), professeur à


Cambridge, construit la machine différentielle
et la machine analytique. La dernière peut être
considérée comme précurseur des ordinateurs
modernes, consistant d’une unité de contrôle,
une unité de calcul, une mémoire, ainsi que
l’entrée-sortie.
11 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité


Ada Lovelace (1815 – 1852) travaille avec Bab-
bage et préconise l’utilisation de la machine
analytique pour la résolution de problèmes ma-
thématiques. Elle est considérée comme pre-
mier programmeur du monde.

David Hilbert (1862 – 1943), professeur à Göt-


tingen, présente en 1920 un programme de re-
cherche visant à clarifier les fondaments des
mathématiques : “tout enoncé mathématique
peut être soit prouvé ou refuté”. Plus tard il en-
once le “Entscheidungsproblem” : montrer de
façon “méchanique” si un enoncé mathéma-
tique est vrai ou faux.
12 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité


Kurt Gödel (1906 – 1978), un des logiciens les
plus fameux de l’histoire, répond 1931 négati-
vement quand au programme proposé par Hil-
bert, en montrant que tout système formel suffi-
samment puissant est soit incomplet ou incohé-
rent. Il montre ceci en construisant une formule
qui exprime le fait qu’elle n’est pas démontrable
("codage de Gödel”, “diagonalisation”).
Alfred Tarski (1901 – 1983), autre logicien très
connu, axiomatise la géométrie euclidienne et
montre la décidabilité de la théorie du premier
ordre des réels en 1931.

13 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité


Alan Turing (1912 – 1954) et
Alonzo Church (1903 – 1995)
montrent indépendamment,
en 1936, l’indécidabilité de
l’Entscheidungsproblem. Tu-
ring propose la machine de
Turing comme modèle formel
de calcul, et Church le lambda-
calcul. Ils enoncent le principe
selon lequel tout ce qui est
calculable peut être calculé
sur un de ces deux modèles
(“thèse de Church-Turing”).

14 / 133
Complexité et calculabilité
Présentation, bref historique

Histoire brève de la calculabilité


2012 a commémoré le centenaire
de la naissance de Turing. Une
réalisation en LEGO de la ma-
chine de Turing : http ://video-
theque.cnrs.fr/doc=3001
I Emil Post (1897 – 1954) invente en 1936 un modèle de calcul
proche de la machine de Turing.
I Steven Kleene (1909 – 1994) montre en 1938 l’équivalence
entre les machines de Turing, le λ-calcul, et les fonctions
récursives.
I Emil Post et Andrei A. Markov (1903 – 1979) montrent que le
problème du mot pour les semigroupes (question posée par
Axel Thue en 1914) n’est pas résoluble algorithmiquement.
I Yuri Matiyasevich (1947 –) montre qu’il n’y a pas d’algorithme
qui résout le 10ème problème de Hilbert.
15 / 133
Complexité et calculabilité
Présentation, bref historique

Origines de la théorie de la complexité


La théorie de la complexité débute par la fameuse question
P =? NP, qui est une des questions ouvertes majeures de
l’informatique. La question P =? NP fait partie des 7 “Clay
Millennium Problems”, et pour leur solution il y a un prix de 1 Mio.$.
Un seul de ces problèmes a été résolu (la conjecture de Poincaré).

Que signifie la question P =? NP ?

En gros, on se limite à des problèmes qui possèdent un espace


exponentiel de solutions potentielles et on se demande s’il existe
un algorithme polynomial qui permet de trouver une solution (s’il
en existe une).

De nombreux problèmes pratiques sont caracterisés par un nombre


exponentiel de solutions potentielles : des puzzles, des problèmes
d’ordonnancement, de cryptographie, etc. 16 / 133
Complexité et calculabilité
Présentation, bref historique

Origines de la théorie de la complexité


John Nash (1928-2015), connu pour ses contributions en théorie
des jeux économiques, a reconnu l’importance de la question
P =? NP pour la cryptographie dès 1955 :
Now my general conjecture is as follows : for almost all
sufficiently complex types of enciphering, especially where
the instructions given by different portions of the key
interact complexly with each other in the determination of
their ultimate effects on the enciphering, the mean key
computation length increases exponentially with the
length of the key, or in other words, the information
content of the key ... The nature of this conjecture is such
that I cannot prove it, even for a special type of ciphers.
Nor do I expect it to be proven.

17 / 133
Complexité et calculabilité
Présentation, bref historique

Origines de la théorie de la complexité


En 1956, Kurt Gödel écrit à John von Neumann en posant la
question P =? NP pour la première fois : il s’agit de savoir si pour
un problème donné on peut trouver une preuve de taille n.
If there actually were a machine with [running time] ∼ Kn
(or even only with ∼ Kn2 ) [for some constant K
independent of n], this would have consequences of the
greatest magnitude. That is to say, it would clearly indicate
that, despite the unsolvability of the
Entscheidungsproblem, the mental effort of the
mathematician in the case of yes-or-no questions could be
completely [. . .] replaced by machines. One would indeed
have to simply select an n so large that, if the machine
yields no result, there would then also be no reason to
think further about the problem.
18 / 133
Complexité et calculabilité
Complexité

Plan

Présentation, bref historique

Complexité
Problèmes et réductions
P vs. NP

Calculabilité
Ensembles dénombrables (rappels)
Programme WHILE, machines de Turing
Décidabilité

19 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Vocabulaire
Avant d’introduire formellement la question P =? NP on va se
familiariser avec les notions centrales de problème et de réduction
entre problèmes.

1. Un problème de décision A est


I une question portant sur un ensemble de données (= entrées)
I dont la réponse est OUI ou NON.
Rq : Ne pas confondre problème et algorithme le résolvant.
2. Une instance du problème A est la question posée sur une
donnée/entrée particulière de A.
Exemple:
I Problème : Savoir si un graphe non-orienté est connexe.
I Instance : V = {1, 2, 3, 4, 5}, E = {(1, 2), (2, 3), (3, 1), (4, 5)}
I Algorithme : Depth-first-search.
20 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

On s’intéresse aussi aux problèmes calculatoires, dont la réponse


n’est pas nécessairement binaire (OUI/NON).
Exemple:
I Calculer les composantes connexes d’un graphe non-orienté.
I Calculer les facteurs premiers d’un entier.

On s’intéresse aussi aux problèmes d’optimisation.


Exemple:
I Calculer un cycle de longueur minimale dans un graphe.
I Calculer un cycle de longueur maximale et sans sommet
répété dans un graphe.
I Calculer le plus petit facteur premier d’un entier.

21 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Exemples de problèmes (de décision)

Problème 1 Donnée Un nombre entier positif n en base 2.


Question n est-il pair ?
Problème 2 D. Un nombre entier positif n en base 10.
Q. n est-il premier ?
Problème 3 D. Une séquence DNA s et un motif p.
Q. p apparait-il dans s ?
Problème 4 D. Un programme C.
Q. Le programme est-il syntaxiquement
correct ?

22 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Exemples de problèmes de décision (2)


Problème 5 Donnée Un graphe donné par une liste
d’adjacence.
Question Le graphe est-il 3-coloriable ?
Problème 6 D. Un puzzle Eternity
http://www.mathpuzzle.com/eternity.html.
Q. Le puzzle a-t-il une solution ?
Problème 7 D. Un programme C.
Q. Le programme s’arrête-t-il sur l’entrée
donnée ?
Problème 8 D. Un programme C.
Q. Le programme s’arrête-t-il toujours ?
Problème 9 D. Des couples de mots (u1 , v1 ), . . . , (un , vn ).
Q. Existe-t-il des entiers ii , . . . , ik tels que
ui1 . . . uik = vi1 . . . vik ?
23 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Problème 9 : PCP, Problème de correspondance de


Post
http://webdocs.cs.ualberta.ca/~games/PCP/

24 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Temps de calcul
Le temps de calcul d’un programme (algorithme) P se mésure en
fonction de la taille de l’entrée. Soit I une entrée de P.
I tP (I) désigne le temps de calcul de P sur I. Le temps de calcul
est le nombre d’instructions élémentaires exécutées (par
exemple, instructions arithmétiques, comparaisons,
affectations de valeur, etc).
I La fonction TP : N → N est définie par :

TP (n) = max{tP (I) | taille(I) = n}


Il s’agit d’un temps de calcul au pire des cas.
I Un algorithme P est polynomial s’il existe un polynome p(n) tel
que TP (n) ≤ p(n), pour tout n. On parle par exemple
d’algorithmes quadratiques (p(n) = c · n2 ), cubiques, etc.
I Un algorithme P est exponentiel s’il existe un polynome p(n) tel
que TP (n) ≤ 2p(n) , pour tout n.
25 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Problèmes et leur complexité


I Problèmes faciles (sur les graphes) :
1. Accessibilité : étant donné un graphe et 2 sommets s, t, est-ce
qu’il y a un chemin de s à t ? (solution : DFS/BFS, Dijkstra,
Floyd-Warshall)
2. Connexité : est-ce qu’un graphe donné est connexe ? (solution :
accessibilité)
3. Graphes eulériens : est-ce qu’un graphe possède un circuit qui
passe par chaque arc exactement une fois ? (solution :
connexité)
4. 2-colorabilité : est-ce qu’on peut colorier un graphe avec 2
couleurs t.q. pour chaque arête uv, les 2 sommets u, v ont des
couleurs différentes ? (solution : DFS)

Rq : Facile veut dire qu’on connaît des algorithmes polynomiaux


pour résoudre ces problèmes.
26 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Problèmes et leur complexité


I Problèmes difficiles :
1. SAT : savoir si une formule booléenne (sans quantificateurs) a
une valuation satisfaisante (voir
http ://www.dwheeler.com/essays/minisat-user-guide.html).
2. Graphes hamiltoniens : est-ce qu’un graphe possède un circuit
qui passe par chaque sommet exactement une fois (voir
http ://www.tsp.gatech.edu/index.html).
3. 3-colorabilité
I Problèmes encore plus difficiles :
1. Certains jeux à 2 joueurs.
2. QSAT : savoir si une formules booléene quantifiée est valide.
3. Savoir si l’intersection de n automates finis est non-vide.
I Problèmes qui ne sont même pas résolubles :
1. Terminaison de programme
2. PCP
3. Eternity
27 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Comment comparer 2 problèmes ?

La notion essentielle de réduction permet de comparer deux


problèmes de décision A, B.

De manière informelle : le problème A est plus facile que le


problème B si l’on peut se servir d’un algorithme pour le problème
B afin de résoudre le problème A.

Autrement dit, on réduit la recherche d’une solution du problème A


à la recherche d’une solution pour le problème B.

28 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Logique propositionnelle

Étant données des variables booléennes x1 , x2 , . . . :


I un littéral est soit une variable xi , soit la négation d’une
variable ¬xi (on écrit aussi xi ).
I Une clause est une disjonction de littéraux.
Exemple : x1 ∨ ¬x2 ∨ ¬x4 ∨ x5 .
I Une 3-clause est une clause avec 3 littéraux différents.
Exemple : x1 ∨ ¬x2 ∨ ¬x4 .
I Une formule CNF est une conjonction de clauses.
I Une formule 3-CNF est une conjonction de 3-clauses.
Exemple : (x1 ∨ ¬x2 ∨ ¬x4 ) ∧ (¬x1 ∨ x2 ∨ x3 ).

29 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

SAT

Le problème SAT est le suivant :


I Donnée : une formule CNF sur des variables x1 , x2 , . . . , xn .

I Question : existe-t-il une valuation des variables


σ : {xi | 1 ≤ i ≤ n} → {0, 1} qui rend la formule vraie ?
1 = vrai, 0 = faux

30 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

3-SAT

Le problème 3-SAT est le suivant :


I Donnée : une formule 3-CNF sur des variables x1 , x2 , . . . , xn .

I Question : existe-t-il une valuation des variables


σ : {xi | 1 ≤ i ≤ n} → {0, 1} qui rend la formule vraie ?

Le problème 3-SAT est donc moins général que SAT.

On peut bien-sûr utiliser un algorithme pour SAT afin de résoudre


3-SAT, mais est-ce que l’inverse est possible aussi ?

31 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT


I À toute instance ϕ de SAT, on va associer une instance ϕ
e de
3-SAT tq.
ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.

Remarque.
1. On va construire ϕ e à partir de ϕ en temps polynomial par
rapport à la taille |ϕ| de ϕ.
On parlera d’une réduction polynomiale de SAT vers 3-SAT.
2. La propriété ci-dessus garantit qu’on peut se servir d’un
algorithme P pour 3-SAT afin de résoudre SAT : pour toute
formule CNF ϕ on construit d’abord ϕ e et on lance ensuite P sur
e. Soit P0 l’algorithme ainsi construit.
ϕ
Important : si P est un algorithme polynomial pour 3-SAT, alors
P0 est aussi polynomial.
32 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réductions
I Soient A et B deux problèmes.
I On note X ⊆ D l’ensemble des instances positives de A, et
Y ⊆ D0 l’ensemble des instances positives de B.
I Une réduction de A vers B est une fonction calculable
f : D → D0 telle que
x ∈ X ⇐⇒ f (x) ∈ Y .
I On note A 6 B (lit : A se réduit à B)
I L’existence d’une réduction de A vers B assure qu’on on peut
se servir d’un algorithme pour le problème B pour résoudre A :

A
x f(x)
f B OUI/NON

33 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Remarques

I “A se réduit à B” ne signifie PAS que B est plus facile que A.


Plutôt : la recherche d’une solution pour A sur une instance x
donnée peut être ramenée à la recherche d’une solution pour B
sur l’instance f (x).
I La notion de réduction est symétrique : x est une instance
positive de A SI ET SEULEMENT SI f (x) est une instance positive
de B.
Mais : A ≤ B n’implique pas B ≤ A.
I Les réductions (polynomiales) sont transitives :
I si A ≤ A et A ≤ A , alors A ≤ A ;
1 2 2 3 1 3
I si A ≤ A et A ≤ A , alors A ≤ A
1 P 2 2 P 3 1 P 3

34 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT

Si ϕ = c1 ∧ · · · ∧ ck où chaque ci est une clause, on construit


e = ϕ1 ∧ · · · ∧ ϕk , où
ϕ
I Chaque ϕi est une conjonction de 3-clauses,
I ϕi utilise les variables de ci , + éventuellement de nouvelles
variables.
I Si une affectation des variables rend ci vraie, on peut la
compléter pour rendre ϕi vraie.
I Inversement, si une affectation des variables rend ϕi vraie, sa
restriction aux variables de ci rend ci vraie.

35 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT : construction de ϕi


I Si ci = `1 (un littéral), on ajoute 2 nouvelles variables yi , zi et

ϕi = (`1 ∨ yi ∨ zi ) ∧ (`1 ∨ ¬yi ∨ zi ) ∧ (`1 ∨ yi ∨ ¬zi ) ∧ (`1 ∨ ¬yi ∨ ¬zi ).

I Si ci = `1 ∨ `2 (2 littéraux), on ajoute 1 nouvelle variable yi et

ϕi = (yi ∨ `1 ∨ `2 ) ∧ (¬yi ∨ `1 ∨ `2 ).

I Si ci est une 3-clause : ϕi = ci .


I Si ci = `1 ∨ · · · ∨ `k avec k > 4, on ajoute k − 3 nouvelles
variables ti,1 , . . . , ti,k−3 et

ϕi = (ti,1 ∨ `1 ∨ `2 ) ∧ (¬ti,1 ∨ `3 ∨ ti,2 ) ∧ (¬ti,2 ∨ `4 ∨ ti,3 ) ∧ · · ·


∧(¬ti,k−3 ∨ `k−1 ∨ `k )
36 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT : exemple

I ϕ = (x1 ∨ ¬x2 ∨ x3 ∨ ¬x4 ∨ x5 ) ∧ (x1 ∨ ¬x2 ) ∧ (¬x1 ∨ x2 ∨ x4 ),


alors
I La construction donne

ϕ̃ = (t1,1 ∨ x1 ∨ ¬x2 ) ∧ (¬t1,1 ∨ x3 ∨ t1,2 ) ∧ (¬t1,2 ∨ ¬x4 ∨ x5 )


∧ (y2 ∨ x1 ∨ ¬x2 ) ∧ (¬y2 ∨ x1 ∨ ¬x2 )
∧ (¬x1 ∨ x2 ∨ x4 )

37 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT


On vérifie qu’avec la construction précédente :
I Si une affectation des variables rend chaque ci vraie, on la
complète facilement pour rendre chaque ϕi vraie.
I Inversement, si une affectation des variables rend chaque ϕi
vraie, la restriction de cette affectation aux variables de ci rend
ci vraie. Donc
ci est satisfaisable
⇐⇒
ϕi est satisfaisable avec les mêmes valeurs pour les variables
de ci .
I Comme les variables ajoutées dans ϕi n’apparaissent que dans
ϕi :

ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.
38 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction SAT vers 3-SAT


Récapitulatif. A partir de ϕ CNF, on a construit ϕ̃ 3-CNF telle que

ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.

On a donc

SAT 6 3-SAT et la réduction est polynomiale

Inversement, comme 3-SAT est un problème moins général que


SAT :

3-SAT 6 SAT.

39 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

3-coloration

Le problème 3-coloration est le suivant :


I Donnée : un graphe non orienté G.
I Question : existe-t-il une 3-coloration de G ?

40 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction 3-coloration vers 3-SAT


I À toute instance G = (V , E) de 3-coloration on associe une
formule ϕG tq.
G est 3-coloriable ⇐⇒ ϕG est satisfaisable
I Littéraux : {vi | v ∈ V , i ∈ {1, 2, 3}}
(les couleurs sont 1,2,3 ; vi vrai signifiera que le sommet v est
colorié par la couleur i)
I Clauses :
1. Chaque sommet est colorié par une (et une seule) couleur :

∧v∈V ((v1 ∨ v2 ∨ v3 ) ∧ ∧i6=j (¬vi ∨ ¬vj ))

2. Deux sommets voisins n’ont pas la même couleur :

∧uv∈E,i∈{1,2,3} (¬ui ∨ ¬vi )

41 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction 3-SAT vers 3-coloration

I À toute instance ϕ de 3-SAT, on associe une instance Gϕ de


3-coloration tq.
ϕ est satisfaisable ⇐⇒ Gϕ admet une 3-coloration.

On utilise des sous-graphes (appelés gadgets) pour coder


I les littéraux vrais dans une évaluation qui satisfait ϕ,
I les opérateurs logiques ∧ et ∨.

42 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

3-SAT 6 3-coloration
I On utilise 3 sommets particuliers 0, 1, 2 reliés entre eux, qu’on
peut supposer, quitte à renommer les couleurs, coloriés par 0,
1, 2.
I Pour chaque variable xi : 2 sommets xi et ¬xi reliés entre eux
et à 2.
I Opérateurs : OU p ∨ q codé par : ET p ∧ q codé par :

en reliant ∨p,q et ∧p,q au sommet 2 (p et q le sont


inductivement).
43 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

3-SAT 6 3-coloration

I ∨p,q coloriable par 1 si et seulement si p OU q sont coloriés 1.


I ∧p,q coloriable par 1 si et seulement si p ET q sont coloriés 1.
I Sommet « résultat » relié à 0 (et 2 par la construction
précédente).

44 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Clique et ensemble indépendant

Dans un graphe G non orienté


I Une clique pour G est un ensemble de sommets tous reliés 2 à
2.
Le problème Clique est le suivant :
I Donnée : un graphe G non orienté et un entier K > 0.
I Question : existe-t-il une clique de G de taille K ?

45 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction 3-SAT vers clique

I À toute instance ϕ de 3-SAT, on associe une instance Gϕ , Kϕ de


Clique tq.
ϕ est satisfaisable ⇐⇒ Gϕ a une clique de taille Kϕ .
et tq. on peut construire Gϕ , Kϕ en temps polynomial par
rapport à |ϕ|.

46 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

Réduction 3-SAT vers clique

I Soit ϕ = (`0 ∨ `1 ∨ `2 ) ∧ · · · ∧ (`3k−3 ∨ `3k−2 ∨ `3k−1 ).


I Le graphe Gϕ a 3k sommets `0 , . . . , `3k−1 .
I Deux sommets `i , `j sont reliés si
I ils ne proviennent pas de la même clause (i/3 6= j/3), et si
I ils ne sont pas de la forme `, ¬`.
I On choisit l’entier Kϕ égal à k.
I On vérifie que Gϕ a une clique de taille Kϕ ssi ϕ est
satisfaisable.

47 / 133
Complexité et calculabilité
Complexité
Problèmes et réductions

I Une réduction polynomiale d’un problème A1 vers un problème


A2 est une fonction de réduction de A1 vers A2 , qui est
calculable en temps polynomial.
On note A1 ≤p A2 s’il existe une réduction polynomiale de A1
vers A2 .
I Les réductions polynomiales sont transitives :
si A1 ≤p A2 et A2 ≤p A3 , alors A1 ≤p A3 .

I Si A1 ≤p A2 et A2 possède un algorithme polynomial, alors A1


en a un, aussi. (On dit que la classe des problèmes résolubles
en temps polynomial est fermée par réductions polynomiales.)

48 / 133
Complexité et calculabilité
Complexité
P vs. NP

Classe NP

La classe NP est une classe de problèmes : informellement, un


problème appartient à NP si

I on peut vérifier une solution donnée en temps polynomial


I s’il existe une solution, alors il en existe toujours une de taille
polynomielle

Pourquoi les problèmes de la classe NP sont-ils difficiles ? Parce que


le nombre de solutions est potentiellement exponentiel. Donc la
recherche naïve peut demander un temps exponentiel.

49 / 133
Complexité et calculabilité
Complexité
P vs. NP

Classe NP - définition

I Soit A un problème. Un vérificateur pour A est un algorithme V


qui prend en entrée des paires hx, yi, où x est une instance de
A, et vérifie que y est bien une “preuve” pour le fait que x est
instance positive.
I Le problème A possède un vérificateur polynomial V si :
1. il existe un polynome p(·) tel que pour toute instance x de A : x
est une instance positive si et seulement si il existe un y de
taille au plus p(taille(x)) et tel que V accepte hx, yi ;
2. l’algorithme V est polynomial dans la taille de x.
I Exemples : Un vérificateur pour SAT prend en entrée une
formule CNF et une valuation de ses variables, et décide si la
valuation rend la formule vraie.

50 / 133
Complexité et calculabilité
Complexité
P vs. NP

Classe NP

I Un vérificateur pour 3-coloration prend en entrée un graphe et


une coloration des sommets par {1, 2, 3}, et vérifie que deux
sommets adjacents ont des couleurs différentes.
I Un vérificateur pour chemin hamiltonien prend en entrée un
graphe G = (V , E) et une permutation vi1 , vi2 , . . . , vin des
sommets dans V, et vérifie qu’il s’agit d’un chemin dans G :
(vij , vij+1 ) ∈ E pour tout j.

Remarque : pour tous les problèmes ci-dessus, la difficulté n’est pas


de vérifier une solution, mais d’en trouver une.

La classe NP est la classe des problèmes qui possèdent des


vérificateurs polynomiaux.

51 / 133
Complexité et calculabilité
Complexité
P vs. NP

P vs. NP

I La classe P contient tous les problèmes qui ont des algorithmes


polynomiaux.
I Evidemment, P ⊆ NP.
?
I La question P = NP est ouverte et représente une des
questions majeures de l’informatique.

?
Le début d’une réponse à P = NP est la no-
tion de problème NP-complet (Karp, 1972)
.

52 / 133
Complexité et calculabilité
Complexité
P vs. NP

Problèmes NP-complets
I Un problème A est NP-complet si
1. A appartient à NP, et
2. tout problème A0 appartenant à NP se réduit à A par une
réduction polynomiale : A0 6P A.
On dit aussi que A est NP-difficile.
I On va montrer qu’il existe des problèmes NP-complets.
I Attention : Ne pas confondre les termes NP et NP-complet.
Tout problème A ∈ P est aussi dans NP.
I Si on trouve un algorithme polynomial pour un problème
NP-complet, alors NP ⊆ P, donc P = NP :
Supposons que A est NP-complet et que A ∈ P. Alors, pour tout
problème A0 ∈ NP : A0 ≤p A (car A est NP-difficile), donc A0 ∈ P
(car P est clos par les réductions polynomiales).
I Attention : Un problème NP-difficile peut être même
non-résoluble algorithmiquement.
53 / 133
Complexité et calculabilité
Complexité
P vs. NP

Problèmes de décision / calcul de solutions /


optimisation

I Les problèmes vus jusqu’à présent (SAT, 3-coloration, etc) sont


des problèmes de décision : réponse OUI/NON.
I Problèmes de calcul de solution : si une formule est
satisfaisable, alors calculer une valuation satisfaisante. Si un
graphe est 3-coloriable, alors calculer un coloriage à 3
couleurs...
I Problèmes d’optimisation : ayant un graphe pondéré sur les
arcs, calculer un cycle hamiltonien de poids minimal (TSP).

54 / 133
Complexité et calculabilité
Complexité
P vs. NP

Problèmes de décision / calcul de solutions /


optimisation
Considérons le problème SAT et supposons qu’il ait un algorithme
polynomial P pour le résoudre. Alors on peut construire l’algorithme
suivant, qui calcule pour une formule donnée ϕ une valuation
satisfaisante σ (s’il en existe une) :

I La formule donnée : ϕ(x1 , . . . , xn ).


I Si P(ϕ) retourne “non”, alors retourner “non-satisfaisable”.
I Pour i = 1 jusqu’à n faire :
I Si P(ϕ(b , . . . , b
1 i−1 , 1, xi+1 , . . . , xn )) retourne “oui”, alors bi := 1,
sinon bi = 0.
I Retourner (b1 , . . . , bn ).

55 / 133
Complexité et calculabilité
Complexité
P vs. NP

Réductions de Turing
On remarque que l’algorithme précedent est en fait une réduction
(du problème de calcul de solution au problème de décision)
différente des réductions ≤ vues jusqu’à maintenant. Ce type de
réduction s’appelle de type Turing (polynomiale). Comme les
réductions ≤ (appelées “many-one”) celles de type Turing
préservent la décidabilité, et P est fermée par les réductions de
Turing polynomiales :
I A ≤T B signifie que A se réduit à B par une réduction de type
Turing : il existe un algorithme pour A, qui utilise un algorithme
pour B de façon “boîte noire”.
p
On écrit A ≤T B si A se réduit à B par une réduction Turing
polynomiale : l’algorithme pour A - sans compter le temps
d’exécution des appels de B - est polynomial.
I Si A ≤p B est B ∈ P, alors A ∈ P.
T
56 / 133
Complexité et calculabilité
Complexité
P vs. NP

Théorème de Cook-Levin
I Théorème (Cook, Levin) SAT est NP-complet.

I Conséquence. D’après les réductions polynomiales vues


précédemment, les problèmes 3-SAT, 3-COLORATION, et
CLIQUE sont NP-complets.

57 / 133
Complexité et calculabilité
Complexité
P vs. NP

SAT est NP-complet - quelles conséquences ?


1. Si on réduit (par une réduction polynomiale) SAT à un problème
A, alors A est NP-difficile.
Il s’agit d’une borne infèrieure de complexité : le problème A
est au moins aussi difficile que SAT (donc NP-difficile).
Conséquence : en supposant P 6= NP il n’existe pas
d’algorithme polynomial pour A.

2. Si un problème A se réduit (par une réduction polynomiale) à


SAT, alors A appartient à NP.
Il s’agit d’une borne supérieure de complexité : le problème A
se trouve alors dans la classe NP.
Conséquence : on peut utiliser la réduction à SAT + un
SAT-solveur pour obtenir un algorithme pour A. Si A est
un problème difficile, alors cet algorithme peut être
bien plus efficace qu’un algorithme direct.
58 / 133
Complexité et calculabilité
Complexité
P vs. NP

Cook-Levin : preuve

On considère un problème A ∈ NP quelconque et on montre


A ≤P SAT.
I A ∈ NP signifie qu’on a un vérificateur polynomial V pour le
problème A :
x est instance positive de A si et seulement si il existe
y de taille polynomiale en x, tel que V accepte hx, yi.

I Le problème SAT :
ϕ est instance positive de SAT si et seulement si il
existe une valuation qui rend ϕ vraie.

59 / 133
Complexité et calculabilité
Complexité
P vs. NP

Cook-Levin : preuve
I Pour tout algorithme polynomial P on peut construire (en temps
polynomial) un circuit booléen CP de taille polynomiale, dont
les entrées z1 , . . . , zn ∈ {0, 1} correspondent à l’entrée
z = z1 · · · zn de P (codée en binaire), et tel que
P accepte x si et seulement si CP s’évalue à 1.

I Etant donné un circuit booléen C avec entrées


x1 , . . . , xk , y1 , . . . , ym et une valuation val : {x1 , . . . , xk } → {0, 1}
on construit une formule booléenne ϕval , de taille polynomiale
en taille(C), telle que :
ϕval est satisfaisable si et seulement si il existe une
f : {y1 , . . . , ym } → {0, 1} tel que C s’évalue
valuation val
à 1 sous la valuation hval, val f i.

60 / 133
Complexité et calculabilité
Complexité
P vs. NP

Un autre problème NP-complet : Somme d’entiers

Le problème Somme d’entiers est le suivant :


I Donnée : des entiers x1 , . . . , xk > 0 et un entier s.
I Question : existe-t-il 1 6 i1 < i2 < · · · < ip 6 k tels que

xi1 + · · · + xip = s.

C’est clairement dans NP : on peut vérifier pour i1 , . . . , ip donné, si


xi1 + · · · + xip = s.
On montre que c’est NP-complet par une réduction 3-SAT 6
Somme d’entiers.

61 / 133
Complexité et calculabilité
Complexité
P vs. NP

Partition
Le problème Partition est le suivant :
I Donnée : des entiers x1 , . . . , xk > 0.
I Question : existe-t-il X ⊆ {1, . . . , k } tel que
X X
xi = xi .
i∈X i∈
/X

C’est clairement dans NP : on peut vérifier si X ⊆ {1, . . . , k } est une


solution.

Remarque Les problèmes Somme d’entiers et Partition sont pseudo


NP-complets, c-à-d si les entiers sont codés en unaire (et donc
polynomiaux dans la taille de l’entrée), ces problèmes peuvent être
résolus en temps polynomial.
62 / 133
Complexité et calculabilité
Complexité
P vs. NP

Réduction Somme d’entiers vers Partition

P
Soit x1 , . . . , xk , s une instance de Somme d’entiers. Soit x = xi .
On construit (en temps polynomial) l’instance x1 , . . . , xk , x − 2s de
Partition.

I Si Somme d’entiers a une solution sur x1 , . . . , xk , s,


Partition a une solution sur x1 , . . . , xk , x − 2s.

I Inversement, si Partition a une solution sur x1 , . . . , xk , x − 2s,


Somme d’entiers a une solution sur x1 , . . . , xk , s.

63 / 133
Complexité et calculabilité
Complexité
P vs. NP

Réduction 3-SAT vers Somme d’entiers


I On construit à partir d’une formule 3-CNF
ϕ = C1 ∧ C2 ∧ · · · ∧ Cm avec variables x1 , . . . , xn une instance de
Somme d’entiers (x1 , . . . , xk , s) t.q. ϕ est satisfaisable ssi
(x1 , . . . , xk , s) a une solution.
I Idée : on code les littéraux et les clauses de ϕ par de (très)
grands entiers en base 10. Le codage est défini de telle façon
que quand on fait des sommes, il n’y a pas de retenue (c-à-d,
les “bits” sont décodables).
I A chaque variable xi correspondent les 2 entiers yi , zi . Les
entiers yi , zi sont de longueur m + i et commencent chacun par
10i−1 . Les m derniers “bits” codent les clauses : pour yi le j
dernier “bit” est 1 si xi apparaît dans Cj , et 0 sinon ; pour zi le j
dernier “bit” est 1 si xi apparaît dans Cj , et 0 sinon.

64 / 133
Complexité et calculabilité
Complexité
P vs. NP

Réduction 3-SAT vers Somme d’entiers


I Exemple : Pour ϕ = (x1 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) on a y1 = 110,
z1 = 101, y2 = 1001, z2 = 1000, etc.
I A chaque clause Cj correspondent les 2 entiers tj = wj = 10m−j .
I L’entier s = 1 · · 1} |3 ·{z
· · 3}.
| ·{z
n m
I Pour produire le bloc 1n dans s il faut choisir exactement un de
yi , zi (pour tout 1 ≤ i ≤ n). Ceci revient à choisir une valuation
des variables – yi signifie xi vrai, et zi signifie xi faux.
I Pour produire le bloc 3m dans s il faut que pour chaque clause,
au moins un des littéraux soit vrai. On complète jusqu’à 3 en
utilisant les entiers tj , wj .
I L’instance de “Somme d’entiers” peut se calculer en temps
polynomial.
65 / 133
Complexité et calculabilité
Calculabilité

Plan

Présentation, bref historique

Complexité
Problèmes et réductions
P vs. NP

Calculabilité
Ensembles dénombrables (rappels)
Programme WHILE, machines de Turing
Décidabilité

66 / 133
Complexité et calculabilité
Calculabilité

Qu’est-ce que c’est “calculable” ?

I Calcul = programme, algorithme, . . . (du latin “calculus” =


petits cailloux)
I Une fonction f : N → N est calculable s’il existe un
programme/algorithme qui calcule f .

Cette pseudo-définition est floue : est-ce qu’il existe des fonctions


“C-calculables”, mais pas “Java-calculables” ? est-ce qu’on doit faire
une preuve de calculabilité à chaque fois qu’on change de
langage ? ou d’ordinateur ?

I Heureusement non : on admettra la thèse de Church-Turing,


qui dit que tous les modèles “raisonnables” de calcul sont
équivalents.

67 / 133
Complexité et calculabilité
Calculabilité

Codages

I Sur l’ordinateur tout est codé en binaire (Unicode, ASCII, . . .).


I Formellement, un codage binaire d’un ensemble D est une
fonction injective (et calculable) f : D → {0, 1}∗ , c-à-d. une
fonction t.q. f (d) 6= f (d0 ) pour tout d 6= d0 dans D.
Peut-on coder des ensembles quelconques ? Non, voir la notion
d’ensemble dénombrable.
I Exemple : on peut coder un graphe G avec ensemble de
sommets V = {1, 2 . . . , n} et ensemble d’arêtes E ⊆ V × V de
plusieurs façons :
I par sa matrice d’adjacence M ∈ {0, 1}n×n ,
I par des listes d’adjacence,
I ...

68 / 133
Complexité et calculabilité
Calculabilité

Des fonctions non-calculables, ça existe !


I Combien de mots binaires y a-t-il ? autant que des entiers
positifs (N = {0, 1, 2, . . .}). On dit que l’ensemble {0, 1}∗ est
dénombrable. Les mots binaires peuvent être énumérés, par
exemple : 0, 1, 00, 01, 10, 11, 000, . . ..
I Combien de programmes/algorithmes existe-t-il ?
On peut coder chaque programme P par un mot en binaire
wP ∈ {0, 1}∗ , il suffit de choisir son codage préféré. Ensuite, on
peut énumérer les programmes, en énumérant les mots
w ∈ {0, 1}∗ représentant des programmes.
L’ensemble des programmes est donc dénombrable également.
I Combien de fonctions f : N → N existe-t-il ? Autant que des
nombres réels (ensemble non-dénombrable).
Conséquence : il existe des fonctions f : N → N non-calculables.

69 / 133
Complexité et calculabilité
Calculabilité

Comme on vient de voir, l’existence de fonctions non-calculables


(ou de problèmes non-résolubles) se montre par un argument de
comptage.

On va donc rappeler dans la suite d’abord la notion de comptage (=


ensembles dénombrables). Ensuite on va fixer une notion de
“modèle de calcul” (= programmes WHILE). Finalement on va
parler de la notion de (in)décidabilité et montrer que toute question
non-triviale qu’on peut poser au sujet d’un programme quelconque,
n’est pas résoluble algorithmiquement (= indécidable).

70 / 133
Complexité et calculabilité
Calculabilité
Ensembles dénombrables (rappels)

Ensembles dénombrables
I On note N = {0, 1, 2, . . .} l’ensemble des entiers naturels.
I Un ensemble D est dit dénombrable s’il est en bijection avec N.
I Un ensemble D fini ou dénombrable est dit au plus
dénombrable. Equivalent : il existe une fonction injective
f : D → N (ou une fonction surjective f : N → D).
I Exemples. Les ensembles suivants sont dénombrables :
1. N = {0, 1, . . .},
2. Z : les entiers,
3. N × N : paires d’entiers positifs ; Nk (k > 2) : les k-uplets,
4. Q : les rationnels,
5. l’ensemble des matrices avec entrées entières,
6. l’ensemble Σ∗ des mots sur un alphabet (fini) Σ,
7. l’ensemble des programmes C,
8. l’ensemble des arbres orientés,
9. l’ensemble des graphes.
71 / 133
Complexité et calculabilité
Calculabilité
Ensembles dénombrables (rappels)

Quelques ensembles non dénombrables


Exemples Les ensembles suivants ne sont pas dénombrables :
1. l’ensemble des nombres réels,
2. l’ensemble des suites infinies d’entiers,
3. l’ensemble des parties de N ;
4. l’ensemble des fonctions de N dans {0, 1}.
Note Ces ensembles sont en bijection.
À une partie X de N, on associe la suite x = (xn )n>0 définie par
(
1 si n ∈ X
xn =
0 si n ∈
/X

De même, à toute suite x = (xn )n>0 à valeurs dans {0, 1}, on


associe bijectivement la fonction fx : N → {0, 1} définie par
fx (n) = xn .
72 / 133
Complexité et calculabilité
Calculabilité
Ensembles dénombrables (rappels)

Diagonalisation

L’argument suivant, dû à Cantor et nommé diagonalisation, permet


de montrer que l’ensemble E = {0, 1}N des suites infinies de 0 ou 1
est non dénombrable.

I Supposons par contradiction qu’on peut énumérer E : e1 , e2 , . . ..


I Soit x = (xn )n>0 la suite infinie de 0 ou 1 définie par

xn = 1 − (en )n

I Puisque xn 6= (en )n , on a x 6= en , et ce, pour tout n ∈ N.


I Comme x n’est pas de la forme en , on déduit que x ∈
/ E,
contradiction.

73 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

LOOP, WHILE, GOTO

I On commence par quelques “langages de programmation”


basiques : LOOP, WHILE et GOTO.
I A chacun de ces langages on associe une classe de fonctions
calculables par des programmes de ce langage.
I On va montrer que WHILE-calculable est équivalent à
GOTO-calculable. Par contre, LOOP-calculable est plus restrictif.
I On va présenter un autre modèle de calcul, la machine de
Turing), et montrer qu’elle définit la même classe de fonctions -
qu’on va appeler la classe de fonctions calculables :
WHILE-calculable = Turing-calculable

74 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Programmes LOOP
I Exemple 1 : addition
Syntaxe :
x := y ;
I variables res, x, y, z, . . .
LOOP (z) DO x := x+1 OD ;
(valuées dans N)
Calcule x = y + z.
I constantes 0, 1, . . .
I Exemple 2 : multiplication
I opérations +, −
x := 0 ;
I instructions x := y ± c,
LOOP (z) DO
x := c, skip
LOOP (y) DO x := x+1 OD
OD I LOOP (x) DO P OD
Calcule x = y · z.
L’effet de x := y ± c est d’affecter à x la valeur max(y ± c, 0).
L’effet de “LOOP (x) DO P OD” est d’itérer x fois le programme P.

75 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

LOOP-calculable
I Soit P un programme LOOP utilisant les variables
x0 = res, x1 , . . . , x` .
I L’entrée de P est un k-uplet ~ n = (n1 , . . . , nk ) ∈ Nk (k < `), stocké
dans les variables x1 , . . . , xk .
I L’effet de P sur ~x = x0 , . . . , x` (défini inductivement) est noté
P(~x) ∈ N`+1 .
I La sortie de P est la valeur de la variable res à la fin du calcul de
P. La fonction calculée par P est notée fP .
I Une fonction f : Nk → N est LOOP-calculable, s’il existe un
programme LOOP P t.q. f (~
n) = fP (0, ~
n, 0, . . . , 0).
I Rq : Un programme LOOP termine toujours, donc les fonctions
LOOP-calculables sont totales (c-à-d, définies partout).

Exercice : montrez que l’instruction (IF (x = 0) THEN P ELSE Q FI)


est LOOP-calculable.
76 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Programmes WHILE
I Les programmes WHILE sont définis à
partir des programmes LOOP, en rajoutant l’instruction “while” :
WHILE (x 6= 0) DO P OD

I Une fonction f : Nk → N est WHILE-calculable s’il existe un


programme WHILE P t.q. f = fP .
I Par définition, toute fonction LOOP-calculable est aussi
WHILE-calculable.
I Attention : Les fonctions WHILE-calculables ne sont pas totales.
Autrement dit : fP (0, ~
n, 0, . . . , 0) n’est défini que si P a un calcul
fini à partir des valeurs initiales (0, ~ n, 0, . . . , 0).
Exemple :
x := 1 ;
WHILE (x 6= 0) DO (x := x + 1) OD
77 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Programmes GOTO
Syntaxe : un programme P = I1 ; . . . Im est une séquence
(numérotée) d’instructions Ij .
I Variables x, y, . . . ∈ N, constantes 0, 1, . . .
I Instructions :
I x := y ± c, x := c
I IF (x = 0) THEN GOTO ` FI (saut conditionnel)
I GOTO ` (saut non-conditionnel)

I HALT
Exemple (addition) : Sémantique des programmes GOTO :
I L’instruction HALT est la dernière.
(1) x := y ;
(2) IF (z = 0) THEN GOTO 5 FI ; I Saut conditionnel : si x est zéro,
(3) x := x + 1 ; z := z − 1 ; continuer avec l’instruction I` ,
(4) GOTO 2 ; sinon avec l’instruction suivante
(5) HALT (sauf si HALT).
78 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Prop.
Pour toute fonction f : N → N :
f est WHILE-calculable si et seulement si f est
GOTO-calculable

Rq : tout programme WHILE peut être réécrit en un programme


utilisant une seule boucle WHILE.
Prop.
Il existe des fonctions WHILE-calculables, qui ne sont pas
LOOP-calculables.
Exemple : fonction d’Ackermann.
79 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Fonction d’Ackermann

I Ackermann et Sudan ont trouvé en 1927-28 des fonctions


calculables qui ne sont pas LOOP-calculables.

x + 1
 si m = 0
A(m, x) = A(m − 1, 1) si m > 0, x = 0


A(m − 1, A(m, x − 1)) si m, x > 0.

I Variante [Kozen] : B(m, x) = Bm (x), où

B0 (x) = x + 1
Bm+1 (x) = Bm ◦ · · · ◦ Bm (x)
| {z }
x fois

80 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Fonctions non LOOP-calculables


I On vérifie que les récurrences terminent, et que A et B sont
calculables.
I B croît trop vite pour être LOOP-calculable (idem pour A).

B0 (x) = x + 1, B1 (x) = 2x, B2 (x) = 2x


2
..
2.
B3 (x) >2
| {z } = 2 ↑ x
x fois
B4 (x) > 2 ↑↑ x,
B4 (2) > 22048 ...
où 2 ↑ (x + 1) = 22↑x , et 2 ↑↑ (x + 1) = 2 ↑ (2 ↑↑ x), et plus
généralement Bm+2 (x) > 2↑ · · · ↑m fois (x), où
2 ↑ · · · ↑(x + 1) = 2 ↑ · · · ↑ (2 ↑ · · · ↑ x)
| {z } | {z } | {z }
m fois m−1 fois m fois

On retrouve la définition d’Ackermann.


81 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

La fonction d’Ackermann est WHILE-calculable, mais


pas LOOP-calculable

I On démontre que si une fonction f : Np → N est


LOOP-calculable, alors il existe m tel que

f (x1 , x2 , . . . , xp ) < Bm (max(x1 , . . . , xp )). (1)

I Or, la fonction B ne vérifie pas (1).


I La fonction B n’est donc pas LOOP-calculable.
I Idem pour A.
I A et B sont WHILE-calculables.
I Rq : chaque Bk est LOOP-calculable.

82 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

f (x1 , x2 , . . . , xp ) < Bm (max(x1 , . . . , xp ))

I Profondeur n(P) d’imbrication des boucles LOOP d’un


programme LOOP P.
I On raisonne par induction sur k = n(P).
I On montre que pour chaque programme LOOP P t.q. k = n(P) il
existe un m (qui dépend seulement de k) t.q. :
si les valeurs des variables de P avant l’exécution de P
sont majorées par M, alors les valeurs après
l’exécution de P sont majorées par Bm (M), pour M
suffisamment grand.

83 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

f (x1 , x2 , . . . , xp ) < Bm (max(x1 , . . . , xp ))

I k −→ (k + 1) : on distingue 2 cas
1. S = LOOP(x) DO P OD avec n(P) ≤ k.
2. S = P1 ; P2 ; . . . Pr , où on a soit n(Pi ) ≤ k, ou Pi a la forme du
premier cas.
Dans le premier cas, les valeurs après exécution sont majorées
par Bm+1 (M). Dans le deuxième cas : si les valeurs après
exécution des Pi sont majorées par Bm+1 (M), alors celles de S
sont majorées par Bm+2 (M), pour M ≥ r.

84 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing
I Une machine de Turing comporte :
I Une bande infinie à droite et à gauche faite de cases
consécutives.
I Dans chaque case se trouve un symbole, éventuellement blanc
.
I Une tête de lecture-écriture.
Modèles de calcul
I Un contrôle à nombre fini d’états.
Machines de Turing

Machines de Turing
! Les machines de Turing sont des abstractions des ordinateurs.
! Une machine de Turing comporte :

··· " b a " a b b b b " " " " ···

Contrôle
fini
q0 , . . . , qn
! Une bande infinie à droite et à gauche faite de cases
consécutives.
! Dans chaque case se trouve un symbole, éventuellement blanc
". 85 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing : intuition

I Le nombre d’états d’une machine de Turing est fini (pour


comparaison, un ordinateur a un nombre fini de registres).
I La bande représente la mémoire infinie de la machine.
Motivation : sur un ordinateur, on peut ajouter des
périphériques mémoire de façon quasi-illimitée.
I L’accès à la mémoire est séquentiel : la machine peut bouger
sa tête à droite ou à gauche d’une case à chaque étape.

86 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing : formalisation


Une machine de Turing (MT) à une bande M = (Q, q0 , F, Σ, Γ, δ) est
donnée par
I Q : ensemble fini d’états.
I q0 : état initial.
I F ⊆ Q : ensemble d’états finaux (ou acceptants).
I Γ : alphabet fini de la bande, avec  ∈ Γ.
I Σ : alphabet d’entrée, avec Σ ⊆ Γ \ {}.
I δ : ensemble de transitions. Une transition est de la forme
a,b,d
(p, a, q, b, d), notée p −−−→ q, avec
I p, q ∈ Q,
I a, b ∈ Γ,
I d ∈ {←, −, →}.
I On supposera qu’aucune transition ne part d’un état de F.
87 / 133
cul
Complexité et calculabilité
e Turing
Calculabilité
Programme WHILE, machines de Turing

nes de Turing
Machines de:Turing
représentation graphique
: représentation graphique

n représente souvent une


I On représente MT comme
souvent une MTun automate.
comme un automate.
ules changent les étiquettes
I Seules changent des transitions.
les étiquettes des transitions.
emple,
I avec 0, 1, Γ!}
Γ = {avec
Exemple, = et
{0Σ , }
, 1= {0et
, 1Σ
} := {0, 1} :

0, !, →
1, !, →

!, !, −
p q

présente la machine avec Q = {p, q}, q0 = p, F = {q},


=→,
= {(p, 0,δ!, 0,(,
{(pp, ), →,
p, 1 p),
, !, →, ),,(,
(pp, 1 p, →,
!, !, (p,q,
p),−, )} , −, q)}

88 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Fonctionnement d’une MT

I Initialement, un mot w est écrit sur la bande entouré de .


I Un calcul d’une MT sur w est une suite de pas de calcul.
I Cette suite peut être finie ou infinie.
I Le calcul commence
I avec la tête de lecture-écriture sur la première lettre de w,
I dans l’état initial q0 .
I Chaque pas de calcul consiste à appliquer une transition, si
possible.
I Le calcul ne s’arrête que si aucune transition n’est applicable.

89 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Fonctionnement d’une MT

I Chaque pas consiste à appliquer une transition.


a,b,d
I Une transition de la forme p −−−→ q est possible seulement si
1. la machine se trouve dans l’état p, et
2. le symbole se trouvant sous la tête de lecture-écriture est a.
I Dans ce cas, l’application de la transition consiste à
I changer l’état de contrôle qui devient q,
I remplacer le symbole sous la tête de lecture-écriture par b,
I bouger la tête d’une case à gauche si d = ←, ou
I bouger la tête d’une case à droite si d = →, ou
I ne pas bouger la tête si d = −.

90 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Configurations et calculs

I Une configuration représente un instantanné du calcul.


I La configuration uqv signifie que
I L’état de contrôle est q
I Le mot écrit sur la bande est uv, entouré par des ,
I La tête de lecture est sur la première lettre de v.
I La configuration initiale sur w est donc q0 w.
I Pour 2 configurations C, C0 , on écrit C ` C0 lorsqu’on obtient C0
par application d’une transition à partir de C.

Un calcul d’une machine de Turing est une suite de configurations.

C0 ` C1 ` C2 ` · · ·

91 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Calculs acceptants

Un calcul d’une machine de Turing est une suite de configurations.

C0 ` C1 ` C2 ` · · ·

3 cas possibles
I Le calcul est infini,
I Le calcul s’arrête sur un état final (de F),
I Le calcul s’arrête sur un état non final (pas de F).

92 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Langages acceptés
On peut utiliser une machine pour accepter des mots.
I Le langage L(M) ⊆ Σ∗ des mots acceptés par une MT M est
l’ensemble des mots w sur lesquels il existe un calcul fini

C0 ` C1 ` C2 ` · · · Cn

avec C0 = q0 w (w est le mot d’entrée) et Cn ∈ Γ∗ FΓ∗ .


I 3 cas exclusifs : un calcul peut
I soit s’arrêter sur un état acceptant,
I soit s’arrêter sur un état non acceptant,
I soit ne pas s’arrêter.
I On dit qu’une machine est déterministe si, pour tout
(p, a) ∈ Q × Γ, il existe au plus une transition de la forme
a,b,d
p −−−→ q.
I Si M est déterministe, elle n’admet qu’un calcul par entrée.
93 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Exemples de machines de Turing

I Machine qui effectue while(true);


I Machine qui efface son entrée et s’arrête.
I Machine qui accepte 0∗ 1∗ .
n
I Machine qui accepte {a2 | n > 0}.
I Machine qui accepte {an bn | n > 0}.
I Machine qui accepte {an bn cn | n > 0}.
I Machine qui accepte {ww | w ∈ {0, 1}∗ }.

94 / 133
Complexité et calculabilité
Modèles de calcul
Calculabilité
Machines de Turing
Programme WHILE, machines de Turing

MT acceptant ({an bn | n ! 0})∗

Idée : marquer le 1er a et le 1er b, et recommencer.


a, a, → a, a, ←
B, B, → B, B, → B, B, ←

a, A, → b, B, ←
0 1 2

", ", → A, A, →

95 / 133
Complexité et calculabilité
Modèles de calcul
Calculabilité
Machines de Turing
Programme WHILE, machines de Turing

MT acceptant {an bn | n ! 0}

Idée : idem en vérifiant qu’on est dans a∗ b∗ .


a, a, ← a, a, → a, a, ←
b, b, ← B, B, → B, B, → B, B, ←

", ", → a, A, → b, B, ←
6 0 1 2
", ", ←
", ", ← ", ", → A, A, →

5 4 3
b, b, →

b, b, → a, a, →

Modèles de calcul
Machines de Turing
96 / 133
Complexité et calculabilité
Modèles de calcul
Calculabilité
Machines de Turing
Programme WHILE, machines de Turing

n
MT acceptant {a2 | n ! 0}

Idée : marquer un a sur 2.


A, A, → A, A, →

a, A, → ", ", →
0 1 2

", ", → a, a, →
a, A, →
3 4 5
", ", ← a, a, →

a, a, ← A, A, → A, A, →
A, A, ←

Modèles de calcul
97 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Les machines de Turing peuvent calculer


I On peut utiliser les MT pour accepter des langages ou, plus
généralement, pour calculer des fonctions.
I Une MT déterministe acceptant un langage L calcule la fonction
caractéristique de L définie par

f : Σ∗ → {0, 1}
(
0 si w ∈
/ L,
w 7→
1 si w ∈ L.

I Plus généralement, on peut associer à une MT déterministe M


une fonction fM : Σ∗ → Γ∗
I On écrit la donnée w ∈ Σ∗ sur la bande,

I Si la MT s’arrête avec sur la bande le mot z ∈ Γ∗ , la fonction est

définie par fM (w) = z.


98 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Exemples de machines de Turing

I Machine qui interprête son entrée comme un entier n, le


remplace par bn/2c et s’arrête.
I Machine qui effectue l’incrément en binaire.
I Machine qui effectue l’addition de deux entiers en unaire.
I Machine qui effectue la multiplication de deux entiers en
unaire.

99 / 133
Complexité et calculabilité
Calculabilité
Modèles de calcul
Programme WHILE, machines de Turing
Machines de Turing

Calcul de ⌊n/2⌋

0, 0, →
1, 1, →

0, !, →
!, !, ← 1, !, →
q1 q2 q3

100 / 133
Complexité et calculabilité
Modèles de calcul
Calculabilité
Machines de Turing
Programme WHILE, machines de Turing

Incrément en binaire

0, 0, →
1, 1, → 1, 0, ←
0, 1, −
!, !, ← !, 1, −
q1 q2 q3

101 / 133
Complexité et calculabilité
Modèles de calcul
Calculabilité
Machines de Turing
Programme WHILE, machines de Turing

Addition en unaire

! Le mot d’entrée est de la forme 1n #1m interprété comme la


donnée des entiers n et m.

1, 1, → 1, 1, →

#, 1, → !, !, ← 1, !, −
q1 q2 q3 q4

102 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

“Thèse” de Church-Turing

La notion de “fonction calculable” ne dépend pas du modèle de


calcul choisi (en supposant un modèle raisonnable).

Théorème
Pour toute fonction f : N → N :
f est WHILE-calculable ssi f est Turing-calculable.

103 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing et programmes WHILE


Simulations
Tout programme WHILE peut être simulé par une MT, et vice-versa.

I Simuler X par Y : coder les configurations de X par des


configurations de Y de telle façon que l’effet d’un pas de calcul
de X est réalisé par un ou plusieurs pas de calcul de Y.

Programme WHILE −→ MT
Soit P un programme WHILE avec k variables. Une configuration de
P est donc un tuplet (i, n0 , . . . nk−1 ) ∈ [1 . . . `] × Nk . La MT MP aura
sur sa bande les valeurs n0 , . . . , nk−1 des variables (codées en
binaire, séparées par #), et le numéro de l’instruction actuelle i
dans son contrôle fini. La simulation d’une opération élémentaire
(addition par exemple) se fait par une séquence de pas de la MT.
104 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing et programmes WHILE

MT −→ programme WHILE
Soit M une MT qui utilise k = |Γ| symboles sur sa bande. Une
configuration uqv de M, u, v ∈ Γ∗ , q ∈ Q sera représentée par
(q, nu , nv ) ∈ Q × N × N, où nw est l’entier dont la représentation en
base k est le mot w ∈ Γ∗ :
I le bit le moins significatif pour nu est à droite, et pour nv à
gauche,
I  vaut 0, les autres symboles de Γ \ {} sont codés par
1, . . . , k − 1.

105 / 133
Complexité et calculabilité
Calculabilité
Programme WHILE, machines de Turing

Machines de Turing et programmes WHILE

Exemple
Supposons que a représente le chiffre 1, et b le chiffre 2. Pour
bba q bb on aura k = 3 et nv = 0 + 2 · 3 + 2 · 32 = 24 et
nu = 1 + 2 · 3 + 2 · 33 = 61.

Simulation
Une transition de M à droite revient (en gros) à multiplier nu par k et
à diviser nv par k. Et inversemment pour une transition à gauche.

Exemple
L’effet de la transition (q, , p, a, →) est de calculer
n0v = 2 + 2 · 3 = 8 = bnv /3c et n0u = 3 · nu + 1 = 184.

106 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Problèmes et algorithmes

Dans cette partie on définit les notions de problème décidable (et


indécidable), semi-décidable, ainsi que les notions d’algorithme et
semi-algorithme.

On verra ensuite que le problème de l’arrêt de programme sur


entrée donnée, ainsi que le problème PCP (correspondance de Post)
sont indécidables (mais semi-décidables). On finira par le théorème
de Rice, qui dit que toute propriété non-triviale de programme est
indécidable.

107 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Rappels et définitions
I Problèmes de décision versus problèmes de calcul : réponse
OUI/NON pour les premiers, résultat pour les autres. La
première catégorie est juste un cas spécial de la deuxième.
I Instance d’un problème A : une entrée de A. Une instance
positive d’un problème de décision est une instance sur
laquelle la réponse est OUI.
I De manière abstraite, un problème de décision A peut être
interprété comme problème de langages :
I On choisit un codage f des instances de A sur un alphabet Σ (ou
N).
I L’ensemble des codages des instances positives de A définit un
langage LA ⊆ Σ∗ (ou LA ⊆ N).
I La question si une instance I de A est positive revient à
demander si f (I) ∈ LA (problème du mot).
108 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Décidable et semi-décidable : définitions

Un programme WHILE P qui résout un problème de décision A est


un programme qui s’arrête ET retourne 1 (= OUI) dans la variable
res sur les instances positives de A. Sur les instances négatives, P
retourne 0 (= NON) dans res, s’il termine.

I Un problème A est dit semi-décidable s’il existe un programme


WHILE P qui le résout.
Attention : On ne demande pas que le programme P termine
toujours !
I Un problème A est dit décidable s’il existe un programme
WHILE P qui le résout et qui termine sur toute entrée.

109 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Vocabulaire

I Dans la littérature on emploie soit le terme “semi-décidable”


ou “récursivement énumérable”.
Rq : Un problème est semi-décidable ssi l’ensemble des
instances positives est énumérable (d’où “récursivement
énumérable”).
I De même, on emploie soit le terme “décidable” ou “récursif”.
Rq : Un problème est décidable ssi l’ensemble des instances
positives est énumérable en ordre lexicographique.
I Indécidable = pas décidable.

110 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Problèmes décidables et semi-décidables

I Tout problème décidable est en particulier semi-décidable.


I Le complémentaire Aco d’un problème décidable est aussi
décidable (complémentaire : inverser les réponses OUI/NON).
I Si un problème A et son complémentaire Aco sont
semi-décidables, alors ils sont tous les deux décidables :
I On met ensemble le programme WHILE P qui résout A et le
programme WHILE P0 qui résout Aco : le programme WHILE
composé simule un pas de calcul de P, ensuite un pas de P0 ,
ensuite un pas de P, etc.
I Le programmme s’arrête si si P ou P0 s’arrête, et retourne OUI si
P répond OUI, et NON si P0 répond OUI.
I Une instance est soit positive pour A ou pour Aco , donc le
programme construit s’arrête toujours.

111 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Un problème qui n’est pas semi-décidable : DIAG


Rappels :
I On peut coder chaque programme WHILE par un entier
(rappel : l’ensemble des programmes WHILE est dénombrable).
I On note Pn le programme WHILE codé par l’entier n (si n ne
code aucun programme, alors Pn est le programme vide).
I On s’interesse aux programmes WHILE qui reçoivent un seul
entier en entrée. On note Acc(P) ⊆ N l’ensemble des entiers n
sur lesquels le programme P termine et retourne 1.
Le problème DIAG est défini par :

1. Entrée : entier n.
2. Question : Est-ce que n ∈
/ Acc(Pn ) ?

Proposition. Le problème DIAG n’est pas semi-décidable.


112 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Un problème semi-décidable, mais pas décidable :


UNIV
Le complémentaire DIAGco de DIAG est le problème suivant, noté
aussi UNIV (“langage universel”) :
I Entrée : entier n.
I Question : est-ce que n ∈ Acc(Pn ) ?
Le problème UNIV est semi-décidable : il suffit de simuler le
programme Pn sur l’entrée n. (On peut construire un programme
WHILE decode qui, à partir de l’entrée n, récupère le programme Pn
et le simule sur n. Voir transparent suivant.)

Conséquence : UNIV est indécidable. (Sinon, DIAG et UNIV seraient


décidables tous les deux).

113 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Codage/décodage de programmes WHILE


Un programme-WHILE P : I1 ; . . . Im est codé par
f (P) = (f (I1 ), . . . , f (Im )) de façon récursive :
I f (xi := xj + c) = (0, i, j, c)
I f (LOOP (xi ) DO P0 OD) = (1, i, f (P0 ))
I f (WHILE (xi 6= 0) DO P0 OD) = (2, i, f (P0 ))

Donc, f (P) est donc une liste de listes de . . ., d’entiers.


Exemple : programme P

x0 := x1 ;
LOOP (x2) DO x1 := x1+1 OD ;

f (P) = ((0, 0, 1, 0), (1, 2, (0, 1, 1, 1))


Soit g une fonction qui code des listes d’entiers par un entier (par
exemple g(11, 7, 3) = 211 · 37 · 53 ). Alors le programme précédant
est codé par g(g(0, 0, 1, 0), g(1, 2, g(0, 1, 1, 1))). Ce codage (tout
comme le décodage associé) est une fonction calculable. 114 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Réductions (rappels)

I Soient A et A0 deux problèmes.


I On note X ⊆ D l’ensemble des instances positives de A.
I On note X0 ⊆ D0 l’ensemble des instances positives de A0 .
I Une réduction de A vers A0 est une fonction calculable
f : D → D0 telle que

x ∈ X ⇐⇒ f (x) ∈ X0 .

I On note A 6 A0 (lit : A se réduit à A0 )


I L’existence d’une réduction de A vers A0 assure que
I si A0 est décidable, A l’est aussi,
I si A est indécidable, A0 l’est aussi.

115 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Remarques
I Rappel : “A se réduit à A0 ” ne signifie PAS que A0 est plus facile
que A. Cela signifie que la recherche d’une solution pour A sur
une instance x donnée peut être ramenée à la recherche d’une
solution pour A0 sur l’instance f (x).
I La notion de réduction est symétrique : x est une instance
positive de A SI ET SEULEMENT SI f (x) est une instance positive
de A0 .
Mais : A ≤ A0 n’implique pas A0 ≤ A.
I Les réductions sont transitives : si A1 ≤ A2 et A2 ≤ A3 , alors
A1 ≤ A3 .
Exemple de réduction : UNIV ≤ UNIV0 , où UNIV0 est le problème
suivant :
I Données : entiers n, m.
I Question : est-ce que m ∈ Acc(Pn ) ?
116 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Problème de l’arrêt
Les problèmes suivants sont indécidables :
I HALT : étant donnés un programme WHILE P et un entier n,
est-ce que P s’arrête sur n ?
I HALT0 : étant donné un programme WHILE P, est-ce que P
s’arrête sur 0 ?
I UTILE : étant donnés un programme WHILE P et une instruction
I, est-ce que P utilise l’instruction I sur l’entrée 0 ?
I HALT∃ : étant donné un programme WHILE P, est-ce que P
s’arrête sur au moins une entrée ?
I HALT∀ : étant donné un programme WHILE P, est-ce que P
s’arrête sur toute entrée ?
I EQUIV : étant donnés deux programmes WHILE P1 , P2 , est-ce
que Acc(P1 ) = Acc(P2 ) ?
Rq : Les 4 premières questions sont semi-décidables, les 2
dernières ne le sont pas. 117 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

L’indécidabilité hors du monde des entiers : le PCP


I Problème de correspondance de Post (1946).
I Donnée : n paires de mots (u1 , v1 ),. . . ,(un , vn ) sur un alphabet
Σ.
I Question : existe-il une suite finie i1 , . . . , ik (k > 0) telle que

ui1 · · · uik = vi1 · · · vik

[A noter : les suites d’indices sont les mêmes.]


I les couples (ui , vi ) peuvent être vus comme des dominos.

a aa ba bab
ab a aa abba

I Une solution : a.bab.ba.aa.aa = ab.abba.aa.a.a


I Suite d’indices : 1, 4, 3, 2, 2.
118 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Le PCP modifié (PCPM)

I Problème de correspondance de Post (1946).


I Donnée : n paires de mots (u1 , v1 ),. . . ,(un , vn ).
I Question : existe-il une suite finie i1 , . . . , ik telle que i1 = 1 et

ui1 · · · uik = vi1 · · · vik

A noter : les suites d’indices sont les mêmes,. . .


. . . et le premier indice est 1.

119 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Indécidabilité du PCP et PCPM

I On montre que
HALT0 6 PCPM 6 PCP.
I Comme HALT0 est indécidable, il en est de même de PCPM et
de PCP.
I Accessoirement, on peut montrer que PCP 6 PCPM.

120 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

PCP 6 PCPM

I Si on a un algorithme pour résoudre PCPM, on a un algorithme


pour résoudre PCP.
I Il suffit de résoudre n PCPM différents, selon le mot avec lequel
on commence.

121 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

PCPM 6 PCP

I On introduit une nouvelle lettre $, et pour a1 , . . . , ak ∈ A, soient


p(a1 · · · ak ) = $a1 · · · $ak et s(a1 · · · ak ) = a1 $ · · · ak $.
I Soit (u1 , v1 ),. . . ,(un , vn ) une instance de PCPM.
I Soient les 2n + 1 mots suivants :

xi = p(ui ), yi = s(vi )
xn+i = p(ui )$, yn+i = s(vi )
x2n+1 = p(u1 ), y2n+1 = $s(v1 ).

I Le PCPM sur l’instance ((u` , v` ))16`6n a une solution si et


seulement si le PCP sur l’instance ((x` , y` ))16`62n+1 en a une.

122 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Indécidabilité du PCPM
I On rappelle que la question UNIV : “est-ce que la MT M termine
sur l’entrée w ?” est un problème indécidable.
I On montre une réduction UNIV ≤ PCPM.
I Étant donné une MT M et un mot w, on construit une instance
(u` , v` )16`6n de PCPM telle que M termine sur w ssi l’instance
(u` , v` )16`6n a une solution.
I On peut supposer que
I M a un seul état d’arrêt : qOK ,
I M déplace sa tête à chaque transition.
I Idée : la seule solution sera la suite des configurations de M sur
w, en partant de la configuration initiale et s’arrêtant dans une
configuration terminale (dont l’état de contrôle est qOK ). La
partie bleue sera en retard d’une configuration. Le retard est
rattrapé à la fin, si l’état est qOK .
123 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

La réduction
I Domino (#, #q0 w#). Les autres dominos :
I Dominos de copie : (a, a), (#, #),
I Dominos de transitions :
a,b,→
I Pour chaque p −−−→ q ∈ δ , il y a un domino (pa, bq).
a,b,←
I Pour chaque p −−−→ q ∈ δ , il y a un domino (xpa, qxb) pour
tout x ∈ Γ.
,b,→
I Pour chaque p −−−−→ q ∈ δ , il y a un domino (p#, bq#).
,b,←
I Pour chaque p −−−−→ q ∈ δ , il y a un domino (xp#, qxb#) pour
tout x ∈ Γ.
I Dominos de synchronisation en fin de calcul : (qOK ##, #) et
pour chaque a, b ∈ Γ : (aqOK , qOK ). (qOK b, qOK ).

124 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Quelques autres problèmes indécidables


Les problèmes suivants sont indécidables :
I Étant donné un jeu fini de tuiles carrées, avec conditions de
compatibilité entre côtés (gauche/droite/haut/bas), déterminer
si on peut paver le 1/4 de plan .
I Étant donnée une grammaire hors-contexte, déterminer si elle
est ambiguë.
I Étant donné un nombre fini de matrices 3 × 3 à coefficients
entiers, déterminer si un produit permet d’annuler la
composante (3,2).
I Étant donnée une suite calculable d’entiers, déterminer si elle
converge.
I Étant donné un polynome à coefficients entiers, déterminer s’il
a des racines entières (10ème problème de Hilbert).
125 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Simple-PCP
I Dans Simple-PCP on a les restrictions suivantes :
1. ui et vi ont la même longueur, pour tout 2 ≤ i ≤ n − 1 (on
suppose n 6= 1).
2. La solution de PCP doit commencer par l’indice 1 et terminer par
l’indice n. De plus, ces indices ne peuvent pas être utilisés au
milieu.
I Exemple : (u1 , v1 ) = (ab, a), (u2 , v2 ) = (aa, ba) et
(u3 , v3 ) = (a, aa). La séquence 1,2,3 est une solution de
Simple-PCP.
I Rq. 1 : pour qu’une solution existe, il faut que
|u1 | − |v1 | = |vn | − |un |. Soit donc k := |u1 | − |v1 | = |vn | − |un | et
supposons que k > 0.
I Rq. 2 : Pour chaque séquence 1 = i1 , i2 , . . . , ik (où
i2 , . . . , ik ∈ {2, . . . , n − 1}) on a :
|ui1 . . . uik | − |vi1 . . . vik | = k
126 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Réduction de Simple-PCP au problème d’accessibilité


I On peut chercher une solution pour une instance I de
Simple-PCP dans un graphe orienté fini GI : les sommets sont
les mots de longueur k ; on a un arc de u vers v s’il existe un
couple (uj , vj ) tel que u uj = vj v.
Le sommet de départ est le mot w tel que u1 = v1 w et le
sommet d’arrivée est w0 tel que w0 un = vn . L’instance I de
Simple-PCP a une solution si et seulement si il existe un chemin
dans GI de w à w0 .
I On a donc réduit Simple-PCP au problème d’accessibilité dans
les graphes orientés. Comme ce dernier problème est
décidable, Simple-PCP l’est aussi.
I C’est possible de réduire aussi dans le sens inverse, du
problème d’accessibilité à Simple-PCP.

127 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Arrêt borné

Problème de l’arrêt borné :


I Données : programme (WHILE) P, entrée n ∈ N et entier k ∈ N.
I Question : Est-ce que P termine sur n en moins de k pas ?
L’arrêt borné est décidable, il suffit de rajouter à P une horloge et de
s’arrêter quand elle atteint k.
Problème des valeurs bornées :
I Données : programme (WHILE) P, entrée n ∈ N et entier k > n.
I Question : Est-ce que P termine sur n avant que ses variables
dépassent la valeur k ?
Ce problème est également décidable (pourquoi ?)

128 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

D’autres problèmes indécidables


Le problème suivant :
I Entrée : programme (WHILE) P.
I Sortie : OUI si Acc(P) 6= ∅.
est semi-décidable, mais pas décidable :
I Semi-décidabilité : on énumère les paires (n, k ) ∈ N2 et on
simule k pas de P sur n. Si la simulation s’arrête et res = 1, on
accepte. Si non, on passe au couple suivant.
I Indécidabilité : réduction à partir de HALT0 .

Il s’en suit que son complémentaire


I Entrée : programme (WHILE) P.
I Sortie : OUI si Acc(P) = ∅.
n’est pas semi-décidable.
129 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Théorème de Rice

I Soit E l’ensemble des X ⊆ N tels que X = Acc(P) pour un


programme P.
I Une propriété d’ensembles semi-décidables est un
sous-ensemble P de E .
I Une propriété P ⊆ E est triviale si P = ∅ ou P = E .
I Attention Ne pas confondre P = ∅ (P ne contient aucun
ensemble) et P = {∅} (P ne contient que l’ensemble vide).
I Un algorithme qui décide une propriété d’ensembles
semi-décidables reçoit en entrée (le codage de) un programme
P. Si l’algorithme répond OUI sur P, alors il doit répondre OUI
sur tout P0 tel que Acc(P) = Acc(P0 ).

130 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Théorème de Rice

I Toute propriété non triviale P d’ensembles semi-décidables est


indécidable.
I Attention : il s’agit d’une propriété d’ensembles, et pas de
programmes.
Exemple : Pour le problème de l’arrêt il ne s’agit pas d’une
propriété d’ensembles semi-décidables, mais d’une propriété
de programmes.

131 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Théorème de Rice : preuve


I Réduction à partir de UNIV (sur entrée n on demande si un
programme accepte son propre code : n ∈ Acc(Pn ) ?)
I Quitte à changer P et E \ P , on suppose ∅ ∈
/ P.
I Comme P =6 ∅, il existe X ∈ P . Soit P un programme WHILE tel
que Acc(P) = X.
I À partir de n on construit le programme R suivant :

I Soit X0 = Acc(R). On a X0 = ∅ ∈
/ P si n ∈
/ UNIV, et X ∈ P sinon.
I Donc si P était décidable, UNIV le serait aussi. Contradiction.

132 / 133
Complexité et calculabilité
Calculabilité
Décidabilité

Théorème de Rice : version fonctionelle

I Soit F l’ensemble des fonctions f : N → N calculables.


I Une proprieté de fonctions calculables est un sous-ensemble P
de F .
I Thm. de Rice : toute propriété non-triviale de fonctions
calculables est indécidable.
I Exemples : on ne peut pas décider si une fonction calculable
est croissante, constante, bornée etc.

133 / 133

Vous aimerez peut-être aussi