Vous êtes sur la page 1sur 44

Modèles de calcul Modèles de calcul

Modalités du cours

Modèles de calcul ◮ 12 cours, 3 groupes de TD (débutent le 13/9/10).


◮ Y. Oualhadj, G. Sénizergues, A. Zvonkine.

Année 2010–2011
◮ Contrôle continu (CC) obligatoire sauf dispense.
◮ Note finale session 1 :
M1, Univ. Bordeaux
2/3 Examen (3h) + 1/3 CC.
◮ Note finale session 2 :
10 septembre 2010
max(Examen, 2/3 Examen (3h) + 1/3 CC).

1 / 176 2 / 176

Modèles de calcul Modèles de calcul

Objectifs (fiche UE) Bibliographie


J.E. Hopcroft, R. Motwani, J. D. Ullman.
Introduction to Automata Theory, Languages & Computation.
Addison-Wesley, 2005.

Définir, indépendamment de la technologie : M. Sipser.


Introduction to the Theory of Computation.
◮ ce qui est calculable et ce qui ne l’est pas
PWS publishing Company, 1997.
(théorie de la calculabilité) ;
O. Carton.
◮ ce qui est calculable efficacement et ce qui ne l’est pas
Langages formels, Calculabilité et Complexité.
(théorie de la complexité).
Vuibert, 2008.
J.M. Autebert.
Calculabilité et Décidabilité.
Masson, 1992.
P. Wolper.
3 / 176
Introduction à la calculabilité. 4 / 176
InterÉditions, 1991.
Modèles de calcul Modèles de calcul

Bibliographie complémentaire Plan du cours


Présentation, bref historique

Ch. Papadimitriou. Ensembles dénombrables. Un paradoxe


Computational complexity.
Addison-Wesley, 1995. Machines de Turing
M. Garey, D. Johnson. Machines RAM
Computers and intractability.
W.H. Freeman & Co, 1979. Problèmes indécidables
J. E. Savage. Réductions : logique, graphes, et problèmes sur entiers
Models of computation.
Addison-Wesley, 1998. Classes de complexité : P, NP, PSPACE.

Fonction récursives

5 / 176 6 / 176

Modèles de calcul Modèles de calcul


Présentation, bref historique Présentation, bref historique

Plan Questions abordées dans ce cours


Présentation, bref historique

Ensembles dénombrables. Un paradoxe ◮ Quels problèmes peut-on résoudre avec une machine
(indépendamment de puissance de calcul des machines) ?
Machines de Turing
◮ Comment formaliser
Machines RAM ◮ ce qu’est un problème ?
◮ ce qu’est une machine ?
Problèmes indécidables
◮ Quelles fonctions peut-on calculer avec une machine ?
Réductions : logique, graphes, et problèmes sur entiers ◮ Comment comparer la complexité des problèmes ?
Y a-t-il des problèmes inhéremment difficiles ?
Classes de complexité : P, NP, PSPACE.

Fonction récursives

7 / 176 8 / 176
Modèles de calcul Modèles de calcul
Présentation, bref historique Présentation, bref historique

Bref historique Bref historique (info fondamentale)


1900 Hilbert, 10ème problème : peut-on décider, de façon
1936 la calculabilité émerge de la logique (Russel, Hilbert, Turing,
mécanique, si une équation Diophantienne a une solution ?
Church sont logiciens)
1931 Gödel publie le théorème d’incomplétude.
1941 Zuse invente le premier ordinateur (Z3) ; suit ENIAC 1945 ;
1935 Turing formalise une définition de machine et de calcul. modèle de von Neumann
1936 Church exhibe un problème non résoluble par machine. 1950 premiers langages de programmation (Fortran, Cobol, Lisp)
1938 Kleene prouve l’équivalence entre machines de Turing, 1960 développement de la théorie des langages formels et des
λ-calcul, fonctions récursives. modèles de calcul (hiérarchie de Chomsky)
1947 Post & Markov prouvent qu’un problème posé par Thue en 1970 développement de la théorie de la complexité, question P vs.
1914 n’est pas résoluble mécaniquement. NP.
1970 Matiyasevich répond négativement au 10ème problème 70/80 algorithmique et structures de données
de Hilbert.
80/90 algorithmique parallèle, distribuée ; cryptographie
1971 Cook & Levin formalisent la notion de problème NP-complet.
9 / 176 10 / 176

Modèles de calcul Modèles de calcul


Présentation, bref historique Présentation, bref historique

Pourquoi ce cours (ou la théorie en général) ? Exemples de problèmes de décision

◮ pour comprendre les limites de la programmation, mais aussi... Problème 1 Donnée Un nombre entier positif n en base 2.
◮ ... pour découvrir un coté esthetique du calcul - la théorie Question n est-il pair ?
apporte le plus souvent un point de vue plus simple et plus Problème 2 D. Un nombre entier positif n en base 10.
élégant, Q. n est-il premier ?
◮ ... pour chercher la pérennité : la technologie évolue Problème 3 D. Une séquence DNA s et un motif p.
rapidement, mais les concepts de base (théoriques) restent Q. p apparait-il dans s ?
valides, Problème 4 D. Un programme C.
◮ ... pour entrainer l’abilité d’analyser et/ou décrire un problème Q. Le programme est-il syntaxiquement
avec clarté. correct ?

11 / 176 12 / 176
Modèles de calcul Modèles de calcul
Présentation, bref historique Présentation, bref historique

Exemples de problèmes de décision (2) Problème 6 : Eternity II


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://fr.eternityii.com .
Q. Le puzzle a-t-il une solution ?
Problème 7 D. Un programme C.
Q. Le programme s’arrête-t-il sur au moins
l’une de ses entrées ?
Problème 8 D. Un programme C.
Q. Le programme s’arrête-t-il sur toute
entrée ?
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 ?
13 / 176 14 / 176

Modèles de calcul Modèles de calcul


Présentation, bref historique Présentation, bref historique

Problème 9 : PCP, Problème de correspondance de Notion de problème de décision


Post Un problème de décision est
http://www.theory.informatik.uni-kassel.de/~stamer/pcp/pcpcontest_en.html ◮ une question. . .
◮ . . . portant sur un ensemble de données. . .
◮ . . . dont une description est fixée. . .
◮ . . . et dont la réponse est OUI ou NON.
Ne pas confondre problème et algorithme le résolvant.
Une instance du problème est la question posée sur une donnée
particulière.

◮ On s’intéressera aussi aux problèmes calculatoires, dont la


réponse n’est pas nécessairement binaire (OUI/NON).
◮ Exemple : calculer un 3-coloriage.

15 / 176 16 / 176
Modèles de calcul Modèles de calcul
Ensembles dénombrables. Un paradoxe Ensembles dénombrables. Un paradoxe

Plan Ensembles dénombrables


Présentation, bref historique ◮ On note N = {0, 1, 2, . . .} l’ensemble des entiers naturels.
Ensembles dénombrables. Un paradoxe ◮ Un ensemble E est dit dénombrable s’il est en bijection avec N.
◮ Un ensemble fini ou dénombrable est dit au plus dénombrable.
Machines de Turing
◮ Exemples. Les ensembles suivants sont dénombrables :
Machines RAM 1. L’ensemble N+ des entiers strictement positifs,
2. Pour un entier k > 0 donné, l’ensemble des entiers divisibles par
Problèmes indécidables k,
3. L’ensemble des entiers qui sont des puissances de 2,
Réductions : logique, graphes, et problèmes sur entiers 4. L’ensemble des entiers naturels qui sont des cubes,
5. L’ensemble des nombres premiers,
Classes de complexité : P, NP, PSPACE. 6. L’ensemble Z des entiers,
7. L’ensemble N × N,
Fonction récursives 8. L’ensemble Q des rationnels.

17 / 176 18 / 176

Modèles de calcul Modèles de calcul


Ensembles dénombrables. Un paradoxe Ensembles dénombrables. Un paradoxe

Propriétés des ensembles dénombrables Propriétés des ensembles dénombrables

Proposition
Proposition 1a. Si A et B sont dénombrables, alors A × B l’est aussi.
Qn
1a. Toute partie de N est au plus dénombrable. 1b. Si A1 , . . . , An sont dénombrables, i =1 Ai l’est aussi
1b. Toute partie d’un ensemble dénombrable est au plus (récurrence).
dénombrable. 2. Si J est au plus dénombrable, et si Ai est au plus dénombrable,
S
2. Soit f : A → B une application. pour i ∈ J, alors i∈J Ai est dénombrable.
2.1 Si f est injective et B dénombrable, alors A est au plus 3. Si A 6= ∅ est au plus dénombrable, alors A∗ est dénombrable.
dénombrable. A∗ : ensembles des suites finies (mots) sur A
2.2 Si f est surjective et A dénombrable, alors B est au plus
4. L’ensemble des automates finis sur alphabet A fini est
dénombrable.
dénombrable.
5. L’ensemble des programmes C est dénombrable.

19 / 176 20 / 176
Modèles de calcul Modèles de calcul
Ensembles dénombrables. Un paradoxe Ensembles dénombrables. Un paradoxe

Quelques ensembles non dénombrables Quelques ensembles non dénombrables


Proposition Les ensembles suivants ne sont pas dénombrables :
1. l’ensemble des nombres réels ; L’argument ci-dessous, dû à Cantor, permet de montrer que
2. l’ensemble des suites infinies d’entiers ; l’ensemble E = {0, 1}N des suites infinies de 0 ou 1 est non
dénombrable.
3. l’ensemble des parties de N ;
4. l’ensemble des suites infinies de 0 ou 1 ; ◮ Soit f : N → E une application.
5. l’ensemble des applications de N dans {0, 1}. ◮ Soit x = (xn )n>0 la suite infinie de 0 ou 1 définie par
Note Les trois derniers ensembles sont en bijection.
xn = 1 − f (n)n
À une partie X de N, on associe
(la suite x = (xn )n>0 définie par
1 si n ∈ X ◮ Puisque xn 6= f (n)n , on a x 6= f (n), et ce, pour tout n ∈ N.
xn =
0 si n ∈
/X ◮ Comme x ∈ E n’est pas de la forme f (n), f n’est pas surjective.
De même, à toute suite x = (xn )n>0 à valeurs dans {0, 1}, on ◮ En particulier, il n’y a aucune bijection de N dans E.
associe bijectivement l’application fx : N → {0, 1} définie par
fx (n) = xn .
21 / 176 22 / 176

Modèles de calcul Modèles de calcul


Ensembles dénombrables. Un paradoxe Machines de Turing

Un paradoxe ? Plan
◮ On suppose qu’on dispose d’un ordinateur à mémoire infinie.
Présentation, bref historique
◮ On considère les programmes C qui écrivent une suite de 0 ou
1. Ensembles dénombrables. Un paradoxe
◮ On interprète une telle suite a1 , a2 , . . . comme le réel
Machines de Turing
0, a1 a2 · · · .
◮ Un tel réel est dit calculable. Machines RAM
◮ L’ensemble de ces programmes est dénombrable : {P1 , P2 , . . .}.
Problèmes indécidables
◮ On considère le programme qui
◮ lance P1 jusqu’à ce que celui-ci s’apprête à écrire a1 , et écrit à la Réductions : logique, graphes, et problèmes sur entiers
place un entier différent de a1 , puis,
◮ lance P2 jusqu’à ce que celui-ci s’apprête à écrire a2 , et écrit à la Classes de complexité : P, NP, PSPACE.
place un entier différent de a2 , etc.
◮ Notre programme écrit un réel calculable non calculable ! Fonction récursives
◮ Où est l’erreur ?
23 / 176 24 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Notion de problème : formalisation Notion de problème : formalisation

◮ Un problème de décision est la donnée d’un ensemble ◮ Exemples


◮ I = N, Σ = {a} et hni = an .
(dénombrable) I d’instances et d’un sous-ensemble P ⊆ I
◮ I = N, Σ = {0, 1} et hni = codage en base 2 de n.
d’instances positives.
◮ I = graphes orientés G = (V , E), Σ = {0, 1, #, $}.
◮ Exemples V = {1, 2, . . . , n}, E = {(i1 , j1 ), . . . , (im , jm )} :
◮ I = N, P = {n ∈ N | n est premier},
◮ I = {G | G graphe fini}, P = {G ∈ I | G est 3-coloriable}, h(V , E)i = |$ ·{z
· · $}hi1 i#hj1 i$hi2 i#hj2 i$ · · · him i#hjm i
◮ I = {G | G grammaire hors contexte}, P = {G ∈ I | n

G est ambiguë}.
◮ Pour Σ fini, un codage des instances est une application ◮ Σ∗ se partitionne en 3 ensembles :
injective h·i : I → Σ∗ associant à chaque élément x de I un mot ◮ Instances positives : LP = {hxi | x ∈ P}.
◮ Instances négatives : LN = {hxi | x ∈ I et x ∈
/ P}.
hxi ∈ Σ∗ .
◮ Non instances : Σ∗ \ {hxi | x ∈ I}.

25 / 176 26 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Notion de problème Qu’est-ce que c’est un ordinateur ?

◮ Un problème de décision peut se voir comme une fonction


◮ avant 1940 : circuits logiques (Boole, Shannon, etc)
fP : Σ∗ −→ {OUI, NON}
◮ 1941, von Neumann : machines “modernes”
calculant le langage LP , au sens que fP (hxi) = OUI ⇐⇒ x ∈ P. ◮ 1950/60 : différencier la puissance des machines selon leur
◮ Plus généralement, on s’intéresse au calcul de fonctions mémoire
Hiérarchie de Chomsky : automates finis, automates à pile,
f : Σ∗1 −→ Σ∗2 automates de mémoire linéaire, machines de Turing.
Chomsky introduit sa hiérarchie avec des grammaires (calcul =
◮ Exemples
réécriture).
◮ Σ 1 = Σ2 = { 0 , 1 } ,

◮ un élément de {0, 1}∗ représente un entier codé en base 2

◮ f calcule la fonction n 7→ 3n .

27 / 176 28 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Notion de machine Machines de Turing


◮ Les machines de Turing sont des abstractions des ordinateurs.
◮ Une machine de Turing comporte :
◮ Résoudre un problème consiste à déterminer pour x ∈ I, si
hxi ∈ LP . ···  b a  a b b b b     ···
◮ On veut une machine « acceptant » les mots de LP .
◮ Automates : mémoire bornée. Contrôle
◮ Automates à pile : ne reconnaissent pas les langages fini
◮ {an bn cn | n > 0} q0 , . . . , qn

◮ ww | w ∈ {a, b}∗ ◮ Une bande infinie à droite et à gauche faite de cases
◮ On peut reconnaître/accepter tous les langages L ⊆ Σ∗ avec un consécutives.
automate à nombre infini d’états. ◮ Dans chaque case se trouve un symbole, éventuellement blanc
.
◮ Une tête de lecture-écriture.
◮ Un contrôle à nombre fini d’états.
29 / 176 30 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Machines de Turing : intuition Machines de Turing : formalisation


Une Machine de Turing (MT) à une bande M = (Q, q0 , F, Σ, Γ, δ) est
donnée par

◮ Le nombre d’états d’une machine de Turing est fini (par ◮ Q : ensemble fini d’états.
comparaison, un ordinateur a un nombre fini de registres et les ◮ q0 : état initial.
programmes sont finis). ◮ F ⊆ Q : ensemble d’états finaux (ou acceptants).
◮ La bande représente la mémoire de la machine. Elle est infinie : ◮ Γ : alphabet fini de la bande, avec  ∈ Γ.
sur un ordinateur, on peut ajouter des périphériques mémoire
◮ Σ : alphabet d’entrée, avec Σ ⊆ Γ \ {}.
(disques. . . ) de façon quasi-illimitée.
◮ δ : ensemble de transitions. Une transition est de la forme
◮ L’accès à la mémoire est séquentiel : la machine peut bouger a , b, d
(p, a, q, b, d), notée p −−−→ q, avec
sa tête à droite ou à gauche d’une case à chaque étape. ◮ p, q ∈ Q,
◮ a , b ∈ Γ,
◮ d ∈ {←, −, →}.
◮ On supposera qu’aucune transition ne part d’un état de F.
31 / 176 32 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Machines de Turing : représentation graphique Fonctionnement d’une MT

◮ On représente souvent une MT comme un automate.


◮ Seules changent les étiquettes des transitions. ◮ Initialement, un mot w est écrit sur la bande entouré de .
◮ Exemple, avec Γ = {0, 1, } et Σ = {0, 1} : ◮ Un calcul d’une MT sur w est une suite de pas de calcul.
◮ Cette suite peut être finie ou infinie.
0, , → ◮ Le calcul commence
1, , → ◮ avec la tête de lecture-écriture sur la première lettre de w,
◮ dans l’état q0 .
, , − ◮ Chaque pas de calcul consiste à appliquer une transition, si
p q
possible (il peut y avoir des choix : non-déterminisme).
◮ Le calcul ne s’arrête que si aucune transition n’est applicable.
représente la machine avec Q = {p, q}, q0 = p, F = {q},
δ = {(p, 0, , →, p), (p, 1, , →, p), (p, , , −, q)}

33 / 176 34 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Fonctionnement d’une MT Configurations et calculs

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


◮ Chaque pas consiste à appliquer une transition.
a,b,d
◮ La configuration uqv signifie que
◮ Une transition de la forme p −−−→ q est possible seulement si ◮ L’état de contrôle est q
1. la machine se trouve dans l’état p, et ◮ Le mot écrit sur la bande est uv, entouré par des ,
2. la lettre se trouvant sous la tête de lecture-écriture est a. ◮ La tête de lecture est sur la première lettre de v.
◮ Dans ce cas, l’application de la transition consiste à ◮ La configuration initiale sur w est donc q0 w.
◮ changer l’état de contrôle qui devient q, ◮ Pour 2 configurations C, C′ , on écrit C ⊢ C′ lorsqu’on obtient C′
◮ remplacer le contenu de la case sous la tête de lecture-écriture
par application d’une transition à partir de C.
par b,
◮ bouger la tête d’une case à gauche si d = ←, ou
Un calcul d’une machine de Turing est une suite de configurations.
◮ bouger la tête d’une case à droite si d = →, ou
◮ ne pas bouger la tête si d = −.
C0 ⊢ C1 ⊢ C2 ⊢ · · ·

35 / 176 36 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Calculs acceptants Langages acceptés


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

C0 ⊢ C1 ⊢ C2 ⊢ · · · Cn
C0 ⊢ C1 ⊢ C2 ⊢ · · ·
avec C0 = q0 w (w est le mot d’entrée) et Cn ∈ Γ∗ FΓ∗ .
3 cas possibles ◮ 3 cas exclusifs : un calcul peut
◮ Le calcul est infini, ◮ soit s’arrêter sur un état acceptant,
◮ soit s’arrêter sur un état non acceptant,
◮ Le calcul s’arrête sur un état final (de F),
◮ soit ne pas s’arrêter.
◮ Le calcul s’arrête sur un état non final (pas de F). ◮ 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.
◮ Si M est déterministe, elle n’admet qu’un calcul par entrée.
37 / 176 38 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Exemples de machines de Turing MT acceptant ({an bn | n > 0})∗


Idée : marquer le 1er a et le 1er b, et recommencer.
◮ Machine qui effectue while(true) ;
a, a, → a, a, ←
◮ Machine qui efface son entrée et s’arrête. B, B, → B, B, ←
B, B, →
◮ Machine qui accepte 0∗ 1∗ (automate fini).
◮ Machine qui accepte {an bn | n > 0} (automate à pile).
a, A, → b, B, ←

n
Machine qui accepte {a2 | n > 0} (automate à mémoire 0 1 2
linéaire).
, , → A, A, →
◮ Machine qui accepte {an bn cn | n > 0} (automate à mémoire
linéaire).
3
◮ Machine qui accepte {ww | w ∈ {0, 1}∗ } (automate à mémoire
linéaire).

39 / 176 40 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

n
MT acceptant {an bn | n > 0} MT acceptant {a2 | n > 0}
Idée : idem en vérifiant qu’on est dans a∗ b∗ . Idée : marquer un a sur 2.
a, a, ← a, a, → a, a, ← A, A, → A, A, →
b, b, ← B, B, → B, B, → B, B, ←

a, A, → , , →
0 1 2
, , → a, A, → b, B, ←
6 0 1 2
, , → a, a, →
, , ←
, , ← , , → A, A, → a, A, →
3 4 5
, , ← a, a, →
5 4 3
b, b, →

a, a, ← A, A, → A, A, →
b, b, → a, a, → A, A, ←
41 / 176 42 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Les machines de Turing peuvent calculer Exemples de machines de Turing


◮ On peut utiliser les MT pour accepter des langages ou calculer.
◮ Une MT déterministe acceptant un langage L calcule la fonction
caractéristique de L définie par
◮ Machine qui interprête son entrée comme un entier n, le

f : Σ → {0, 1} remplace par ⌊n/2⌋ et s’arrête.
( ◮ Machine qui effectue l’incrément en binaire.
0 si w ∈
/ L,
w 7→ ◮ Machine qui effectue l’addition de deux entiers en unaire.
1 si w ∈ L.
◮ Machine qui effectue la multiplication de deux entiers en
◮ Plus généralement, on peut associer à une MT déterministe M unaire.
une fonction fM : Σ∗ → Γ∗
◮ On écrit la donnée w ∈ Σ∗ sur la bande,
◮ Si la MT s’arrête avec sur la bande le mot z ∈ Γ∗ , la fonction est

définie par fM (w) = z.

43 / 176 44 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Calcul de ⌊n/2⌋ Incrément en binaire

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

45 / 176 46 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Addition en unaire Il existe des langages non décidables

◮ Le mot d’entrée est de la forme 1n #1m interprété comme la ◮ Thèse de Church : les MT capturent tout ce qui est calculable.
donnée des entiers n et m. ◮ Un langage L est décidable (ou récursif) s’il existe une MT qui
◮ s’arrête sur F partant d’un mot de L,
◮ s’arrête sur Q \ F partant d’un mot de Σ∗ \ L.
1, 1, → 1, 1, → ◮ L’ensemble des langages sur {0, 1}∗ est non dénombrable.
◮ L’ensemble des machines de Turing est dénombrable.
#, 1, → , , ← 1, , − ◮ Il existe donc des langages non décidables.
q1 q2 q3 q4
◮ Peut-on décrire explicitement un tel langage ?

47 / 176 48 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Variations des machines de Turing Simulation : pour montrer l’équivalence des variantes

On peut changer la définition des MT de plusieurs façons : ◮ Intuitivement, une machine M2 simule une machine M1 lorsque
M2 peut effectuer les mêmes calculs que M1 .
◮ bande finie sur la gauche et infinie sur la droite,
◮ Un exemple (qui n’est pas général) où M2 simule M1 :
◮ un unique état acceptant, un unique état rejetant,
◮ calculs replaçant la tête en début de bande. . . Q1 ⊆ Q2 , F1 = F2 , Γ1 ⊆ Γ2 , et
. . . et terminant avec le mot d’entrée écrit sur la bande, ′ ∗
∀C, C ∈ Γ1 Q1 Γ∗1
◮ machines déterministes, C ⊢1 C′ dans M1 ⇔ C ⊢2 C1 ⊢2 C2 ⊢2 · · · ⊢2 Ck ⊢2 C′
◮ petit alphabet de bande : Γ = Σ ∪ {}, / Γ∗2 Q1 Γ∗2
dans M2 avec Ci ∈
◮ machine à plusieurs bandes et plusieurs têtes.
◮ M2 simule M1 si elle peut effectuer les mêmes passages entre
Ces variations n’affectent pas ce que l’on peut accepter ou calculer. configurations (éventuellement par plusieurs transitions).

49 / 176 50 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Bande finie à gauche Bande finie à gauche


◮ On a Γ2 = ({#} ∪ Γ1 ) × Γ1 .
◮ On « replie » la bande.
◮ # est un nouveau symbole servant à repérer le début de
◮ On représente la configuration initiale
bande.
◮ On a Q2 = Q1 × {haut, bas}.
···       b b a a b   ···
◮ Une configuration de la nouvelle machine est du type

#  A B    ···
q0
b b A b a   ···
par
#       ···
b b a a b   ···
(q, haut)
représente la configuration de la machine initiale
···  B A  b b A b a     ···
(q0 , bas)
q
51 / 176 52 / 176
◮ Reste à écrire les transitions.
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Bande finie vs. bi-infinie Un unique état acceptant, un unique état rejetant
A partir de M = (Q, q0 , F, Σ, Γ, δ), on construit
M′ = (Q′ , q′0 , F′ , Σ′ , Γ′ , δ ′ ).
◮ On ajoute un état OK, seul état acceptant de la nouvelle
machine M′ ,
◮ . . . et des transitions de F vers OK.
◮ Inversement, toute machine travaillant sur une bande finie ◮ Q′ = Q ⊎ {OK}, q′0 = q0 , F′ = {OK}, Σ′ = Σ, Γ′ = Γ,
peut être simulée par une machine à bande bi-infinie.
δ′ = δ ∪ (F × Γ × {OK} × Γ × {−}).
On peut de même transformer M pour que :
◮ il y ait un unique état rejetant KO.
◮ tout calcul de M qui s’arrête replace la tête en début de mot
écrit.
◮ M sauvegarde son mot d’entrée et le restaure sur la bande
quand elle s’arrête.
53 / 176 54 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Composition des MT Langage des machines de Turing

◮ Les simplifications précédentes permettent de composer les


◮ En connectant l’état final (supposé unique) d’une machine M1 à MT.
l’état initial d’une machine M2 , on compose les fonctions ◮ Composition séquentielle : M1 ; M2 .
calculées par les deux machines. ◮ Test : Si M1 alors M2 sinon M3 .
◮ Si M1 termine en restaurant le mot d’entrée, on exécute la ◮ Boucle : Tant que M1 faire M2 .
séquence M1 ; M2 . ◮ Instructions de base
◮ Exemple : codage unaire → binaire en utilisant ◮ test de lecture R == a,

l’incrémentation. ◮ écriture de a : W (a),

◮ Déplacements : G ou D,
◮ arrêt OK ou KO.

55 / 176 56 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing

Plusieurs bandes Plusieurs bandes


◮ Simulation possible : regrouper les bandes.
◮ On peut utiliser plusieurs bandes.  B A  b b a b a     ···
◮ Initialement, le mot d’entrée est écrit sur une bande,
q
◮ Chaque transition lit un symbole sur chaque bande, et en
fonction des symboles lus et de l’état, la machine
◮ change d’état,  B  a b a c a a     ···
◮ écrit un nouveau symbole sous chacune des têtes.
est représentée par
◮ déplace chaque tête indépendamment.
 B A  b b a b a     ···
···  B A  b b a b a     ···
   •          ···
 B  a b a c a a     ···
q
      •       ···
···  B  a b a c a a     ···
57 / 176 58 / 176

Modèles de calcul Modèles de calcul


Machines de Turing Machines de Turing

Plusieurs bandes Machines déterministes

◮ Comme pour les automates finis, pour toute machine M, on


◮ Idée de la simulation : position des têtes stockée dans la bande.
peut construire une machine déterministe qui simule M.
◮ Chaque transition de la machine originale est simulée par
◮ Idée : on parcourt l’arbre des calculs en largeur.
◮ un aller sur la bande pour récupérer les symboles sous les têtes,
◮ un retour pour simuler la transition. ◮ On note r le nombre maximal de choix dans M.
◮ Contrairement à la simulation de bande infinie par bande finie,
◮ On utilise 3 bandes :
plusieurs mouvements sont nécessaires pour simuler un seul
◮ bande 1 : sauvegarde la valeur du mot d’entrée w.
◮ bande 2 : génère dans l’ordre hiérarchique les suites finies
mouvement.
d’entiers sur {1, ..., r }.
◮ La nouvelle machine est intuitivement « plus lente ». ◮ bande 3 : effectue le calcul de M sur w correspondant à la suite
◮ De combien ? Retour aux classes P et NP de choix écrite sur la bande 2.
Retour aux classes P et NP

59 / 176 60 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines RAM

Γ = Σ ∪ {} Plan
Présentation, bref historique

Ensembles dénombrables. Un paradoxe


◮ On peut faire en sorte que Γ n’utilise pas de symboles
supplémentaires, à part . Machines de Turing
◮ Idée : coder chaque symbole de Γ sur Σ ∪ {}. Machines RAM
◮ Représenter
◮ 0 par (0, , . . . , ), Problèmes indécidables
◮ 1 par (1, , . . . , ),
◮  par (, , . . . , ), Réductions : logique, graphes, et problèmes sur entiers

Classes de complexité : P, NP, PSPACE.

Fonction récursives

61 / 176 62 / 176

Modèles de calcul Modèles de calcul


Machines RAM Machines RAM

Machines RAM Machines RAM : registres

Une machine RAM est une machine possédant ◮ Chaque registre peut mémoriser n’importe quel entier positif
◮ Un programme, qui est une suite finie d’instructions I0 , I1 , I2 , . . .. ou nul.
◮ Une suite infinie de registres R0 , R1 , R2 . . .. ◮ Initialement, tous les registres ont comme valeur 0.
◮ Un registre spécial : compteur de programme PC (program ◮ Le registre PC contient le numéro de la prochaine instruction à
counter). exécuter.
◮ Une bande d’entrée sur laquelle la machine lit ses données. ◮ Les autres registres contiennent des valeurs (entières
◮ Une bande de sortie sur laquelle la machine écrit ses résultats. positives) manipulées par la machine au cours du calcul.

63 / 176 64 / 176
Modèles de calcul Modèles de calcul
Machines RAM Machines RAM

Machines RAM : instructions Machines RAM : Opérations arithmétiques

Les instructions sont de 4 types :


1. Manipulations de registres. ◮ incr(n) : incrémente de 1 la valeur contenue dans le registre Rn .
2. Opérations arithmétiques. ◮ decr(n) : décrémente de 1 la valeur contenue dans le registre
3. Sauts et arrêt. Rn , si elle est strictement positive. Ne fait rien sinon.

4. Entrées/sorties.

65 / 176 66 / 176

Modèles de calcul Modèles de calcul


Machines RAM Machines RAM

Machines RAM : sauts et arrêt Machines RAM : E/S

Sur la bande d’entrée se trouve une suite d’entiers (les entrées du


◮ jump <k > : saut inconditionnel à l’instruction Ik .
programme).
◮ jzero <k , n> : saut à l’instruction Ik si la valeur du registre Rn
◮ read(n) : lit la valeur courante de la bande d’entrée et la met
est 0.
dans le registre Rn . La prochaine valeur lue sera la suivante de
◮ stop : fin du programme.
la bande d’entrée.
En pratique, on se permet de mettre des étiquettes au niveau ◮ write(n) : écrit sur la bande de sortie la valeur contenue dans le
d’instructions vers lesquelles on veut aller. registre Rn .

67 / 176 68 / 176
Modèles de calcul Modèles de calcul
Machines RAM Machines RAM

Exécution d’une machine RAM Jeux d’instruction des machines RAM vs. processeurs
Les machines RAM
+ peuvent manipuler des entiers arbitraires,
+ peuvent utiliser un nombre arbitraire de registres.
- ont un jeu d’instructions plus restreint que celui des
◮ La machine exécute les instructions en commençant par I0 .
processeurs habituels.
◮ Une fois l’instruction Ik exécutée, c’est l’instruction Ik+1 qui est
exécutée, sauf après une instruction de saut ou stop. Mais on peut reprogrammer les instructions manquantes.
◮ Rm := Rn , Rn := 0.
◮ Opérations arithmétiques (addition, multiplication, soustraction
« tronquée »,...).
◮ Appel de sous-programme : call/return
nécessite un décalage de registres.

69 / 176 70 / 176

Modèles de calcul Modèles de calcul


Machines RAM Machines RAM

Machines RAM : simulation par machines de Turing Machines RAM : simulation par machines de Turing
◮ Chaque instruction RAM est codée par un “sous-programme”
de MT.
Une MT peut simuler une RAM : tout programme RAM peut être ◮ Les instructions sont reliées entre elles grâce aux états. Dans
réalisé par machine de Turing à plusieurs bandes : l’état de la MT on code l’instruction RAM lk simulée.
◮ Une bande d’entrée sur laquelle on met les données, séparées Exemples.
par .
◮ incr/decr : machines incrémentation/décrémentation déjà vues,
◮ Une bande de sortie. travaillant sur la bande correspondante au registre.
◮ Une bande pour chaque registre (codage unaire par exemple). x/x/−
◮ jump hk i : correspond aux transitions j −−−−→ k pour tout x ∈ Γ.
◮ jzero hk , ni : idem si la bande du registre Rn est vide. Sinon,
aller en j + 1.
◮ stop : aller dans l’état OK.

71 / 176 72 / 176
Modèles de calcul Modèles de calcul
Machines RAM Machines RAM

À quoi sert cette simulation ? Simulation inverse


Inversement, on peut simuler toute machine de Turing par une RAM.
Idée de simulation, pour machine à bande finie à gauche :
◮ On peut compiler un programme C (sans entrée-sortie) vers un ◮ Mémoriser chaque configuration uqv par 2 entiers + état
programme RAM. courant q (codé par exemple par l’instruction RAM courante).
◮ La simulation précédente montre qu’on peut compiler tout ◮ Le mot u ∈ Γ∗ est codé par le premier entier (bit le moins
programme RAM en machine de Turing (déterministe). significatif à droite), et le mot v par le deuxième entier (bit le
◮ Tout programme sans entrée-sortie dans n’importe quel moins significatif à gauche).
langage de programmation se compile en une machine de ◮ Chaque instruction de MT est simulée par un bout de code
Turing. RAM. Par exemple, un mouvement de tête vers la droite signifie
une multiplication du premier entier (qui gagne un bit) et une
division du deuxième entier (qui perd un bit).
◮ Suite en TD...

73 / 176 74 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

Plan Définitions
Présentation, bref historique
◮ Un langage L est semi-décidable (ou récursivement
Ensembles dénombrables. Un paradoxe énumérable) s’il est le langage accepté par une machine de
Turing.
Machines de Turing
◮ RE = classe des langages semi-décidables.
Machines RAM ◮ Note Sur un mot Σ∗ \ L, la machine de Turing peut ne pas
Problèmes indécidables s’arrêter : 3 possibilités OUI/NON/ ?
◮ Un langage L est décidable (ou récursif) s’il est le langage
Réductions : logique, graphes, et problèmes sur entiers accepté par une machine de Turing qui s’arrête sur toute
entrée : 2 possibilités OUI/NON
Classes de complexité : P, NP, PSPACE.
◮ R = classe des langages décidables.
Fonction récursives

75 / 176 76 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Lagages RE et R Codage des MT

◮ On a clairement R ⊆ RE. ◮ On travaille sur Σ = {0, 1}, et on peut supposer Γ = {0, 1, }.
◮ La classe des langages RE est fermée par union. ◮ On ne considère que les MT à un unique état OK.
◮ La classe des langages R est fermée par union et complément. ◮ Toute MT de ce type peut se coder sur l’alphabet {0, 1}.
◮ Si L et Σ∗ \ L sont dans RE, alors ils sont dans R. a j , a k , dℓ
◮ On code une transition pi −−−−→ qm par 0i 10j 10k 10ℓ 10m .
◮ On construit une machine qui simule en parallèle les machines
M et N acceptant L et Σ∗ \ L (elle alterne un pas de calcul de M, ◮ On code la MT M par la suite de ces transitions, séparées entre
un pas de calcul de N). elles par 11, avec deux blocs 111 en début et fin.
◮ Cette machine s’arrête si l’une des machines M et N s’arrête. ◮ On note ce code hMi.
◮ Un mot appartient soit à L, soit à Σ∗ \ L, donc elle
s’arrête toujours. ◮ Si w est un mot, on note hM, wi le code de M suivi par w.

77 / 176 78 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

Le langage diagonal Réductions


◮ On numérote les mots de Σ = {0, 1}∗ dans l’ordre hiérarchique.
◮ Soient PA et PB deux problèmes.
◮ longueur d’abord, ◮ On note LA l’ensemble des instances positives de PA .
◮ ordre lexicographique pour une longueur donnée.
◮ On note LB l’ensemble des instances positives de PB .
w0 = ǫ, w1 = 0, w2 = 1, w3 = 00, w4 = 01, w5 = 10, w6 = 11, . . . ◮ Une réduction de PA vers PB est une fonction calculable par MT
f : Σ∗ → Σ∗ telle que
◮ Note Une MT peut calculer le numéro d’un mot.
◮ On note Mi la machine telle que hMi i = wi (par convention x ∈ LA ⇐⇒ f (x) ∈ LB .
L(Mi ) = ∅ si wi n’est pas le code d’une machine de Turing).
◮ On note PA 6 PB (PA se réduit à PB )
◮ Proposition Le langage
◮ L’existence d’une réduction de PA vers PB assure que
Ld = {wi | wi ∈
/ L(Mi )} ◮ si PB est décidable, PA l’est aussi,
◮ si PA est indécidable, PB l’est aussi.
n’est pas RE.
79 / 176 80 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Réductions - quelques avertissements Problème de correspondance de Post (1946)


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

◮ “PA se réduit à PB ” ne signifie PAS que le problème PB est plus ui1 · · · uik = vi1 · · · vik
facile que PA . Cela signifie plutôt que la recherche d’une
solution pour PA sur une instance x donnée peut être ramenée [A noter : les suites d’indices sont les mêmes.]
à la recherche d’une solution pour PB sur l’instance f (x). ◮ On peut voir les couples de mots comme des dominos.
◮ La notion de réduction est symétrique : x est une instance
a aa ba bab
positive de PA SI ET SEULEMENT SI f (x) est une instance
ab a aa abba
positive de PB .

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


◮ Suite d’indices : 1, 4, 3, 2, 2.

PCP est un problème indécidable (voir TD).


81 / 176 82 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

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


◮ Dans Simple-PCP on a les restrictions suivantes :
1. ui et vi ont la même longueur, pour tout 2 ≤ i ≤ n − 1 (on
◮ On peut donc chercher une solution de Simple-PCP dans un
suppose n 6= 1). graphe orienté fini : les sommets sont les mots de longueur k.
2. La solution de PCP doit commencer par l’indice 1 et terminer par On a un arc de u vers v s’il existe un couple (uj , vj ) tel que
l’indice n. De plus, ces indices ne peuvent pas être utilisés au u uj = vj v.
milieu. Le sommet de départ est le mot w tel que u1 = v1 w et le
◮ Exemple : (u1 , v1 ) = (a, ab), (u2 , v2 ) = (ba, aa) et sommet d’arrivée est w′ tel que w′ un = vn . L’instance de
(u3 , v3 ) = (aa, a). La séquence 1,2,3 est une solution de Simple-PCP donnée a une solution si et seulement si il existe un
Simple-PCP. chemin de w à w′ .
◮ Rq. 1 : pour qu’une solution existe, il faut que
◮ On a donc réduit Simple-PCP au problème d’accessibilité dans
|u1 | − |v1 | = |vn | − |un |. Soit donc k := |u1 | − |v − 1| = |vn | − |un | les graphes orientés. Comme ce dernier problème est
et supposons que k > 0. décidable, Simple-PCP l’est aussi.
◮ Rq. 2 : Pour chaque séquence 1 = i1 , i2 , . . . , ik où ij 6= 1, n pour
◮ C’est possible de réduire aussi dans le sens inverse, du
tout j, on a :
problème d’accessibilité à Simple-PCP.
|ui1 . . . uik | − |vi1 . . . vik | = k
83 / 176 84 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Réductions : deuxième exemple Langage et machine universelle


◮ Le langage (universel)
Problème de l’arrêt borné :
Lu = {hM, wi | M accepte w}
◮ Données : MT M, entrée w et entier k.
◮ Question : Est-ce que M accepte w en moins de k pas ? est RE, mais pas R.
L’arrêt borné se réduit aussi à un problème d’accessibilité : on ◮ S’il était dans R, alors Σ∗ \ Ld le serait aussi.
construit on graphe orienté G(M, w, k ) dont les sommets sont toutes ◮ À partir d’une machine de Turing hypothétique M qui s’arrête
les configurations uqv de taille au plus k (donc |uv| ≤ k). On met sur toute entrée et telle que L(M) = Lu , on construit
des arcs uqv → u′ q′ v′ si uqv ⊢M u′ q′ v′ . une machine de Turing M′ qui s’arrête sur toute entrée et telle
M accepte w en moins de k pas de calcul si et seulement s’il existe que L(M′ ) = Σ∗ \ Ld .
un chemin de longueur au plus k dans G(M, w, k ) de la configuration ◮ Or, une telle machine M′ n’existe pas, car sinon, Ld serait dans
initiale c0 (w) à une configuration finale. R.
◮ On a construit une réduction de Σ∗ \ Ld à Lu : Σ∗ \ Ld 6 Lu .

85 / 176 86 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

Un autre langage indécidable Théorème de Rice

◮ Le langage
L∅ = {hMi | L(M) = ∅}
◮ Soit E l’ensemble des langages RE de {0, 1}∗ .
n’est pas RE.
◮ Une propriété des langages RE est un sous-ensemble P de E .
◮ On montre d’abord que L6=∅ := Σ∗ \ L∅ est RE.
◮ Une propriété P ⊆ E est triviale si P = ∅ ou P = E .
◮ Si L∅ était dans RE, il serait dans R. Alors Lu serait aussi dans
R: ◮ Attention Ne pas confondre P = ∅ (P ne contient aucun
On construit une réduction Lu 6 L= langage) et P = {∅} (P ne contient que le langage vide).
◮ 6 ∅.
◮ À partir de M et w, on construit M′ qui efface son entrée et lance
M sur w.
◮ M′ accepte si et seulement si M s’arrête sur OK.

87 / 176 88 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Théorème de Rice Problème de l’arrêt


◮ Toute propriété non triviale P des langages RE est non
décidable.
◮ Attention : il s’agit d’une propriété des langages, non des MT. Les problèmes suivants sont indécidables :
◮ Preuve A nouveau une réduction à partir de Lu . ◮ étant donnée une MT M et un mot w, M s’arrête-t-elle sur w ?
◮ Quitte à changer P et E \ P , on peut supposer ∅ ∈ / P. ◮ étant donnée une MT M, s’arrête-t-elle sur ε ?
◮ Comme P = 6 ∅, il existe L ∈ P . Soit ML telle que L(ML ) = L.
◮ étant donnée une MT M, s’arrête-t-elle sur au moins une
◮ À partir de M, w donnés, on construit (par machine de Turing !)
entrée ?
la MT suivante :
OK OK
◮ étant donnée une MT M, s’arrête-t-elle sur toute entrée ?
si OK, lancer ML
◮ étant donnée une MT M et un état q de M, M utilise-t-elle l’état
w M ML
q sur l’entrée ε ?
x
◮ Cette machine accepte ∅ ∈ / P si hM, wi ∈
/ Lu , et L ∈ P sinon.
◮ Donc si P était dans R, Lu le serait aussi.
89 / 176 90 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

L’indécidabilité hors du monde des MT : le PCP Le PCP modifié (PCPM)


◮ Problème de correspondance de Post (1946).
◮ Donnée : n paires de mots (u1 , v1 ),. . . ,(un , vn ).
◮ Question : existe-il une suite finie i1 , . . . , ik telle que ◮ Problème de correspondance de Post (1946).
◮ Donnée : n paires de mots (u1 , v1 ),. . . ,(un , vn ).
ui1 · · · uik = vi1 · · · vik
◮ Question : existe-il une suite finie i1 , . . . , ik telle que i1 = 1 et
[A noter : les suites d’indices sont les mêmes.]
◮ On peut voir les couples de mots comme des dominos. ui1 · · · uik = vi1 · · · vik

a aa ba bab A noter : les suites d’indices sont les mêmes,. . .


ab a aa abba . . . et le premier indice est 1.

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


◮ Suite d’indices : 1, 4, 3, 2, 2.
91 / 176 92 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Indécidabilité du PCP et PCPM PCP 6 PCPM

◮ On montre que
◮ Si on a un algorithme pour résoudre PCPM, on a un algorithme
Lu 6 PCPM 6 PCP.
pour résoudre PCP.
◮ Comme le langage universel Lu est non décidable, il en est de ◮ Il suffit de résoudre n PCPM différents, selon le mot avec lequel
même de PCPM et de PCP.
on commence.
◮ Accessoirement, on peut montrer que PCP 6 PCPM.

93 / 176 94 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

PCPM 6 PCP : plus difficile Indécidabilité du PCPM

◮ Supposons donné un algorithme pour résoudre le PCP. ◮ On rappelle que Lu = {hM, wi|M accepte w} est indécidable.
◮ On introduit une nouvelle lettre $, et pour a1 · · · ak ∈ A+ , soient ◮ On montre Lu 6 PCPM.
p(a1 · · · ak ) = $a1 · · · $ak et s(a1 · · · ak ) = a1 $ · · · ak $. ◮ Étant donné une MT M et un mot w, on construit une instance
◮ Soit (u1 , v1 ),. . . ,(un , vn ) une instance de PCPM. ((uℓ , vℓ ))16ℓ6n de PCPM telle que
◮ Soient les 2n + 1 mots suivants :
PCP sur l’instance ((uℓ , vℓ ))16ℓ6n
hM, wi ∈ Lu ⇐⇒ .
xi = p(ui ), yi = s(vi ) a une solution
xn+i = p(ui )$, yn+i = s(vi )
x2n+1 = p(u1 ), y2n+1 = $s(v1 ).
◮ On peut supposer que
◮ Le PCPM sur l’instance ((uℓ , vℓ ))16ℓ6n a une solution si et
◮ le seul état d’arrêt de M est qOK ,
◮ M déplace sa tête à chaque transition.
seulement si le PCP sur l’instance ((xℓ , yℓ ))16ℓ62n+1 en a une.

95 / 176 96 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

La réduction L 6 PCPM Quelques autres problèmes indécidables


◮ Idée : la seule solution sera la suite des configurations sur w.
◮ La partie bleue est en retard d’une configuration. Les problèmes suivants sont indécidables :
◮ Domino 1 : (#, #q0 w#). Les autres dominos : ◮ Étant donné un jeu fini de tuiles carrées, avec conditions de
◮ Dominos de copie : (a, a), (#, #),
compatibilité entre côtés, déterminer si on peut paver le 1/4
◮ Dominos de transitions :
de plan.
a,b,→
◮ Si p −−−→ q ∈ δ , on met un domino (pa, bq). ◮ Étant donnée une grammaire, déterminer si elle est ambiguë.
a,b,←
◮ Si p −−−→ q ∈ δ , on met un domino (xpa, qxb) pour tout x ∈ Γ. ◮ Étant donné un nombre fini de matrices 3 × 3 à coefficients
,b,→
◮ Si p −−−−→ q ∈ δ , on met un domino (p#, bq#). entiers, déterminer si un produit permet d’annuler la
,b,← composante (3,2).
◮ Si p −−−−→ q ∈ δ , on met un domino (xp#, qxb#) pour tout
x ∈ Γ. ◮ Étant donnée une suite calculable d’entiers, déterminer si elle
◮ Dominos de synchronisation en fin de calcul : converge.
◮ pour chaque a, b ∈ Γ : (aqOK , qOK ). (qOK b, qOK ),

◮ (qOK ##, #).

97 / 176 98 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

Révisions : vrai/faux L’indécidabilité hors du monde des MT : le 10e


(a) L’ensemble des graphes orientés finis est dénombrable. problème de Hilbert
(b) Tout langage fini est décidable. ◮ 10e problème de Hilbert : résolution d’équations
(c) Pour tous K , L ⊆ Σ∗ avec Σ = {0, 1}, si K se réduit à L, alors diophantiennes.
Σ∗ \ K se réduit à Σ∗ \ L. ◮ Exemple : est-ce que l’équation x3 + 3x2 y + 3xy2 + y3 a une
(d) Tout langage sur un alphabet à une lettre est décidable. solution avec x, y entiers ?
(e) Étant donnés une machine de Turing M, un mot w et un entier k, ◮ Le problème, formulé par D. Hilbert en 1900, a reçu une
on peut décider si M accepte w en au plus k pas de calcul. solution négative (indécidabilité) par Yu. Matyasevich (suite
(f) Étant données deux machines de Turing M1 et M2 , on peut aux avancées faites par J. Robinson, H. Putnam et M. Davis).
décider si L(M1 ) ⊆ L(M2 ). ◮ Ce résultat d’indécidabilité raffine le théorème d’incomplétude
(g) Le langage des mots sur l’alphabet ASCII représentant un de Gödel, qui dit que la théorie du premier ordre de
programme C syntaxiquement correct est décidable. l’arithmétique (formules avec quantificateurs,
(h) Le complément de tout ensemble semi-décidable est aussi addition/multiplication, coefficients et variables entiers) est
semi-décidable. indécidable.
99 / 176 100 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Equations diophantiennes Coder l’arrêt d’une RAM en arithmétique


◮ Une équation diophantienne a la forme P(x1 , . . . , xn ) = 0, avec
◮ On part du modèle RAM avec instructions incr, decr, jump,
P polynôme avec coefficients entiers. jzero, stop. De plus, on suppose que la RAM s’arrête avec tous
les registres nuls, et que decr ne s’applique que sur des
◮ Dioph(Z) demande si une équation diophantienne a une
registres de valeur non-nulle. On veut coder l’arrêt d’une RAM
solution avec tous les xi entiers ; Dioph(N) demande l’existence
P (sans entrée/sortie).
d’une solution avec les xi entiers positifs.
◮ Soit P une suite de m instructions, étiquetées 1, . . . , m, avec la
◮ Une équation diophantienne exponentielle permet de plus dernière instruction égale à stop (ceci est l’unique occurrence
l’exponentiation. Exemple : 2xy − 7x2 = 1. de stop).
◮ ExpDioph(N) demande si une équation diophantienne ◮ On va coder une séquence finie d’entiers (n0 , . . . , nℓ ) par un
Pℓ
exponentielle a une solution avec tous les xi entiers positifs. seul entier i=0 ni Bi de telle façon que B (une variable) est
◮ La solution de Matyasevich est de réduire le problème de l’arrêt plus grand que toutes les valeurs des ni (ainsi, on peut décoder
(des RAM par exemple) à ExpDioph(N). Ensuite elle réduit ni en tant que coefficient de Bi ). La valeur de B doit être aussi
ExpDioph(N) à Dioph(N) par des méthodes de la théorie des suffisamment grande pour que par exemple quand on somme
nombres. Nous montrons ici juste la première réduction (facile). (les valeurs codant) 2 séquences, il suffit d’additionner les
coefficients base B.
101 / 176 102 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

Coder l’arrêt d’une RAM en arithmétique Coder l’arrêt d’une RAM en arithmétique
◮ Pour le codage on va utiliser les variables (entières) suivantes : ◮ En utilisant des équations (exponentielles) on va demander
◮ B : sa valeur est la base pour le codage de séquences d’entiers que B est une grande puissance de 2 :
(voir transparent précédent). B = 2K ∧ B > max{k , m, 2 · L}
◮ L : sa valeur est le nombre de pas de calcul de la RAM P avant
d’atteindre stop. Les séquences d’entiers qu’on va coder en En particulier, B > 2L signifie que B dépasse le double de la
base B seront de longueur L + 1 (pas : 0,1, . . . , L). valeur maximale d’un registre (après L pas de calcul).
◮ Wp (1 ≤ p ≤ k) : pour chaque registre Rp de P. La valeur de Wp ◮ Rq : avec B = 2K , tout nombre en base B peut s’écrire en
p p
représente la suite (n0 , . . . , nL ) des contenus de Rp au cours du binaire comme suite de blocs 0/1 de longueur K.
p
calcul : nℓ est la valeur de Rp au pas ℓ du calcul. ◮ Pour deux entiers x, y on écrit x E y si – en représentation
◮ Li (1 ≤ i ≤ m) : pour chaque instruction li de P. La valeur de Li
binaire – chaque bit de x est plus petit ou égal au bit
représente une séquence (si0 , . . . , siL ) telle que siℓ = 1 si PC = li
au pas ℓ, et siℓ = 0 sinon. correspondant de y. Exemple : 4 E 14, car
bin(4) = 100, bin(14) = 1110. Mais 4 E 6 8.
◮ Exemple : Soient B = 10, L = 5. Si R1 contient les valeurs
◮ On utilisera une variable T pour designer la séquence
0,1,2,1,1,0 au cours du calcul, alors W1 = 11210. Si PL
constituée que de 1 (en base B) : T = i=0 Bi . Cette variable
l’instruction l1 est exécutée au pas 2, 3 et 5, alors L1 = 101100.
est l’unique solution de l’équation 1 + (B − 1)T = BL+1 .
103 / 176 104 / 176
Modèles de calcul Modèles de calcul
Problèmes indécidables Problèmes indécidables

Coder l’arrêt d’une RAM en arithmétique Coder l’arrêt d’une RAM en arithmétique
◮ La relation Li E T exprime que la séquence Li (en base B) est ◮ Pareil pour li : incr(j) (ou decr) : B · Li E Li+1 (après li on exécute
constituée que des 0 et 1.
Pm li+1 ). On rajoute que les valeurs de Rp sont cohérentes :
◮ En combinaison avec la relation précécente, i=1 Li = T X X
exprime qu’à chaque pas de calcul, une unique instruction est Wp = B · (Wp + Li − Li′ )
exécutée. i i′
◮ La relation 1 E L1 garantit que la première instruction est l1 . La
On somme ici sur tous les i t.q. li : incr(p) et sur tous les i′
relation BL E Lm garantit que la dernière instruction est lm
t.q. li′ : decr(p).
(stop).
◮ Soit maintenant li : jzerohj, pi (si Rp vaut zéro, continuer avec lj ,
◮ La relation Wp E BL+1 − B garantit que la valeur initiale de Rp
sinon avec li+1 ).
est 0.
La relation B · Li E Lj + Li+1 garantit que li est suivie soit par lj ,
◮ Si li : jumphk i alors on garantit avec B · Li E Lk que li est suivi ou par li+1 . La relation B · Li E Li+1 + B · T − 2 · Wp traduit le test
par lk . La multiplication par B fait le lien entre le pas ℓ et le pas Rp =?0.
ℓ + 1.
105 / 176 106 / 176

Modèles de calcul Modèles de calcul


Problèmes indécidables Problèmes indécidables

ExpDioph(N) Révisions : problèmes indécidables


◮ Finalement, on traduit la relation E par des équations
exponentielles. Les problèmes suivants sont indécidables :
x

◮ D’abord, on peut montrer que x E y ssi y
est impair. 1. P1 : Étant donnée une MT M, décider si elle accepte au moins 7
x
 y mots.
◮ Le coefficient binomial est le coefficient de U dans la
y
x 2. P2 : Étant donnée une MT M, décider si elle s’arrête toujours
représentation en base U de (1 + xU) (il faut choisir
 U plus
grand que y , par exemple U > 2 ). On a que xy est l’unique
x
avec écrit sur sa bande 2008.
solution z des équations suivantes : 3. P3 : Étant donnée une MT M et un état p de M, décider si M
x y x y +1 y utilise l’état p sur au moins une entrée.
U = 2 +1 ∧ V<U ∧ z < U ∧ (1+U) = WU +zU +V
4. P4 : Étant donnée une MT M et un état p de M, décider si M
◮ Pour résumer : on obtient un système d’équations utilise l’état p sur toute une entrée.
exponentielles (qu’on peut réduire à une unique équation –
5. P5 : Étant donnée une MT M, décider si elle accepte n’importe
comment ?), en utilisant les variables B, L, Wp , Li , T ainsi que
quel mot représentant (en binaire) un entier premier.
des variables auxiliaires t.q. les U, V , W qui traduisent les
coefficients binomiaux.
107 / 176 108 / 176
Modèles de calcul Modèles de calcul
Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Plan Comparaison de problèmes


Présentation, bref historique Spectre large des niveaux de difficulté :
◮ Problèmes faciles (sur les graphes) :
Ensembles dénombrables. Un paradoxe 1. Accessibilité : étant donné un graphe et 2 sommets s, t, est-ce
qu’il y a un chemin de s à t ? (solution : Dijkstra, Floyd-Warshall)
Machines de Turing
2. Connexité : est-ce qu’un graphe donné est connexe ? (solution :
Machines RAM accessibilité)
3. Graphes eulériens : est-ce qu’un graphe possède un circuit qui
Problèmes indécidables passe par chaque arc exactement une fois ? (solution :
connexité)
Réductions : logique, graphes, et problèmes sur entiers 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
Classes de complexité : P, NP, PSPACE. couleurs différentes ? (solution : DFS)
◮ Facile veut dire qu’on connaît des algorithmes polynomiaux
Fonction récursives
pour résoudre ces problèmes.

109 / 176 110 / 176

Modèles de calcul Modèles de calcul


Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Comparaison de problèmes Littéraux, clauses, et formules CNF


◮ Problèmes difficiles :
1. SAT : savoir si une formule booléenne (sans quantificateurs) a Étant données des variables x1 , x2 , . . . :
une valuation satisfaisante (voir
http ://www.dwheeler.com/essays/minisat-user-guide.html).
◮ un littéral est soit une variable xi , soit la négation d’une
2. Graphes hamiltoniens : est-ce qu’un graphe possède un circuit variable ¬xi .
qui passe par chaque sommet exactement une fois (voir ◮ Une clause est une disjonction de littéraux.
http ://www.tsp.gatech.edu/index.html).
3. 3-colorabilité
Exemple : x1 ∨ ¬x2 ∨ ¬x4 ∨ x5 .
◮ Problèmes encore plus difficiles : ◮ Une 3-clause est une clause avec 3 littéraux différents.
1. Certains jeux à 2 joueurs.
Exemple : x1 ∨ ¬x2 ∨ ¬x4 .
2. QSAT : savoir si une formules booléene quantifiée est valide.
3. Savoir si l’intersection de n automates finis est non-vide. ◮ Une formule CNF est une conjonction de clauses.
◮ Difficile veut dire qu’on ne connaît pas d’algorithmes ◮ Une formule 3-CNF est une conjonction de 3-clauses.
polynomiaux pour ces problèmes. La théorie de la complexité Exemple : (x1 ∨ ¬x2 ∨ ¬x4 ) ∧ (¬x1 ∨ x2 ∨ x3 ).
classifie les problèmes selon les ressources (en temps et/ou
mémoire) nécessaires pour les résoudre.
111 / 176 112 / 176
Modèles de calcul Modèles de calcul
Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

SAT 3-SAT

Le problème 3-SAT est le suivant :


Le problème SAT est le suivant :
◮ Donnée : une formule 3-CNF sur des variables x1 , x2 , . . . , xn .
◮ Donnée : une formule CNF sur des variables x1 , x2 , . . . , xn .
◮ Question : existe-t-il une valuation des variables
◮ Question : existe-t-il une valuation des variables
σ : {xi | 1 ≤ i ≤ n} → {tt, ff} qui rend la formule vraie ?
σ : {xi | 1 ≤ i ≤ n} → {tt, ff} qui rend la formule vraie ?
Le problème 3-SAT est donc moins général que SAT.

113 / 176 114 / 176

Modèles de calcul Modèles de calcul


Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Réduction SAT vers 3-SAT Réduction SAT vers 3-SAT

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


e = ϕ1 ∧ · · · ∧ ϕk , où
ϕ
◮ À toute instance ϕ de SAT, on associe une instance ϕ
e de 3-SAT ◮ Chaque ϕi est une conjonction de 3-clauses,
tq.
◮ ϕi utilise les variables de ci , + éventuellement de nouvelles
ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.
variables.
Remarque. On va construire ϕ
e en temps polynomial par rapport ◮ Si une affectation des variables rend ci vraie, on peut la
à |ϕ|.
compléter pour rendre ϕi vraie.
◮ Inversement, si une affectation des variables rend ϕi vraie, sa
restriction aux variables de ci rend ci vraie.

115 / 176 116 / 176


Modèles de calcul Modèles de calcul
Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

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

◮ Si ci = ℓ1 (un littéral), on ajoute 2 variables yi , zi et

ϕi = (ℓ1 ∨ yi ∨ zi ) ∧ (ℓ1 ∨ ¬yi ∨ zi ) ∧ (ℓ1 ∨ yi ∨ ¬zi) ∧ (ℓ1 ∨ ¬yi ∨ ¬zi ). ◮ ϕ = (x1 ∨ ¬x2 ∨ x3 ∨ ¬x4 ∨ x5 ) ∧ (x1 ∨ ¬x2 ) ∧ (¬x1 ∨ x2 ∨ x4 ),
alors
◮ Si ci = ℓ1 ∨ ℓ2 (2 littéraux), on ajoute 1 variable yi et
◮ La construction donne
ϕi = (yi ∨ ℓ1 ∨ ℓ2 ) ∧ (¬yi ∨ ℓ1 ∨ ℓ2 ).
ϕ̃ = (t1,1 ∨ x1 ∨ ¬x2 ) ∧ (¬t1,1 ∨ x3 ∨ t1,2 ) ∧ (¬t1,2 ∨ ¬x4 ∨ x5 )
◮ Si ci est une 3-clause : ϕi = ci . ∧ (y2 ∨ x1 ∨ ¬x2 ) ∧ (¬y2 ∨ x1 ∨ ¬x2 )
◮ Si ci = ℓ1 ∨ · · · ∨ ℓk avec k > 4, on ajoute k − 3 variables ∧ (¬x1 ∨ x2 ∨ x4 )
ti,1 , . . . , ti,k−3

ϕi = (ti,1 ∨ℓ1 ∨ℓ2 )∧(¬ti,1 ∨ℓ3 ∨ti,2 )∧(¬ti,2 ∨ℓ4 ∨ti,3 )∧· · · (¬ti,k−3 ∨ℓk−1 ∨ℓk )

117 / 176 118 / 176

Modèles de calcul Modèles de calcul


Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Réduction SAT vers 3-SAT Réduction SAT vers 3-SAT


On vérifie qu’avec la construction précédente :
Récapitulatif. A partir de ϕ CNF, on a construit ϕ̃ 3-CNF telle que
◮ Si une affectation des variables rend chaque ci vraie, on la
complète facilement pour rendre chaque ϕi vraie.
◮ Inversement, si une affectation des variables rend chaque ϕi ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.
vraie, la restriction de cette affectation aux variables de ci rend
ci vraie. Donc
On a donc
ci est satisfaisable
⇐⇒ SAT 6 3-SAT.
ϕi est satisfaisable avec les mêmes valeurs pour les variables
de ci . Inversement, comme 3-SAT est un problème moins général que
◮ Comme les variables ajoutées dans ϕi n’apparaissent que dans SAT :
ϕi :
3-SAT 6 SAT.

ϕ est satisfaisable ⇐⇒ ϕ
e est satisfaisable.
119 / 176 120 / 176
Modèles de calcul Modèles de calcul
Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

3-coloration Réduction 3-coloration vers 3-SAT


◮ À toute instance G = (V , E) de 3-coloration on associe une
formule ϕG tq.
G est 3-coloriable ⇐⇒ ϕG est satisfaisable
◮ Littéraux : {vi | v ∈ V , i ∈ {1, 2, 3}}
Le problème 3-coloration est le suivant :
(les couleurs sont 1,2,3 ; vi vrai signifiera que le sommet v est
◮ Donnée : un graphe non orienté G. colorié par la couleur i)
◮ Question : existe-t-il une 3-coloration de G ? ◮ 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 )

121 / 176 122 / 176

Modèles de calcul Modèles de calcul


Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Réduction 3-SAT vers 3-coloration 3-SAT 6 3-coloration


◮ 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.
◮ À toute instance ϕ de 3-SAT, on associe une instance Gϕ de ◮ Pour chaque variable xi : 2 sommets xi et ¬xi reliés entre eux
3-coloration tq. et à 2.
ϕ est satisfaisable ⇐⇒ Gϕ admet une 3-coloration. ◮ Opérateurs : OU p ∨ q codé par : ET p ∧ q codé par :
q q
On utilise des sous-graphes (appelés gadgets) pour coder
2 ∨ p, q 2 ∧ p, q
◮ les littéraux vrais dans une évaluation qui satisfait ϕ, p p
◮ les opérateurs logiques ∧ et ∨. en reliant ∨p,q et ∧p,q au sommet 2 (p et q le sont
inductivement).
◮ ∨p,q coloriable par 1 si et seulement si p OU q sont coloriés 1.
◮ ∧p,q coloriable par 1 si et seulement si p ET q sont coloriés 1.
◮ Sommet « résultat » relié à 0 (et 2 par la construction
123 / 176
précédente). 124 / 176
Modèles de calcul Modèles de calcul
Réductions : logique, graphes, et problèmes sur entiers Réductions : logique, graphes, et problèmes sur entiers

Clique et ensemble indépendant Réduction 3-SAT vers clique

Dans un graphe G non orienté


◮ À toute instance ϕ de 3-SAT, on associe une instance Gϕ , Kϕ de
◮ Une clique pour G est un ensemble de sommets tous reliés 2 à
Clique tq.
2.
ϕ est satisfaisable ⇐⇒ Gϕ a une clique de taille Kϕ .
Le problème Clique est le suivant :
et tq. on peut construire Gϕ , Kϕ en temps polynomial par
◮ Donnée : un graphe G non orienté et un entier K > 0. rapport à |ϕ|.
◮ Question : existe-t-il une clique de G de taille K ?

125 / 176 126 / 176

Modèles de calcul Modèles de calcul


Réductions : logique, graphes, et problèmes sur entiers Classes de complexité : P, NP, PSPACE.

Réduction 3-SAT vers clique Plan


Présentation, bref historique

◮ Soit ϕ = (ℓ0 ∨ ℓ1 ∨ ℓ2 ) ∧ · · · ∧ (ℓ3k−3 ∧ ℓ3k−2 ∧ ℓ3k−1 ). Ensembles dénombrables. Un paradoxe


◮ Le graphe Gϕ a 3k sommets ℓ1 , . . . , ℓ3k . Machines de Turing
◮ Deux sommets ℓi , ℓk sont reliés si
◮ ils ne proviennent pas de la même clause (i/3 6= k/3), et si Machines RAM
◮ ils ne sont pas de la forme ℓ, ¬ℓ.
Problèmes indécidables
◮ On choisit l’entier Kϕ égal à k.
◮ On vérifie que Gϕ a une clique de taille Kϕ ssi ϕ est Réductions : logique, graphes, et problèmes sur entiers
satisfaisable.
Classes de complexité : P, NP, PSPACE.

Fonction récursives

127 / 176 128 / 176


Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Notations - rappels {an bn | n > 0} - quelle complexité en temps ?


Vérifier qu’on est dans a∗ b∗ : O(n). Vérifier que le nombre de a et de
◮ On s’interesse uniquement aux mesures asymptotiques des
b est le même : O(n2 ).
ressources de calcul (temps/mémoire).
a, a, ← a, a, → a, a, ←
◮ Exemple Un algorithme de complexité ≤ 5n2 − 7n + 10 est
b, b, ← B, B, → B, B, → B, B, ←
qualifié comme algorithme quadratique ; un algorithme de
complexité ≤ 106 n3 comme algorithme cubique, etc.
◮ Notation grand-O et petit-o : , , → a, A, → b, B, ←
Soient f , g : N → N. On écrit : 6 0 1 2
◮ f ∈ o(g) si pour tout c > 0 il existe nc ∈ N tel que f (n) ≤ c · g(n)
, , ←
pour tout n ≥ nc . , , ← , , → A, A, →
◮ f ∈ O(g) s’il existent c > 0 et n0 ∈ N tels que f (n) ≤ c · g(n) pour

tout n ≥ n0 . 5 4 3
◮ f ∈ Θ(g) si f ∈ O(g) et g ∈ O(f ). b, b, →
◮ Linéaire = Θ(n), quadratique = Θ(n2 ), etc.
b, b, → a, a, →
129 / 176 130 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

{an bn | n > 0} - quelle complexité en temps ? {an bn | n > 0} - quelle complexité en temps ?
On peut faire mieux :
◮ Vérifier que l’entrée est dans a∗ b∗ : O(n). On peut faire encore mieux - en utilisant plusieurs bandes : 1
◮ Répéter tant qu’il reste des a ou des b non-marqués :
◮ Vérifier que l’entrée est dans a∗ b∗ : O(n).
◮ Vérifier que le nombre total de symboles non-marqués est pair.
Rejeter s’il est impair. ◮ Lire l’entrée de gauche à droite, en copiant les a sur la
◮ Marquer un a sur deux, et un b sur deux (en commençant par deuxième bande.
les premières occurrences). ◮ Continuer de lire les b de l’entrée. Pur chaque b lu, on lit un a
◮ Si tous les a et tous les b sont marqués, accepter. Rejeter sinon. sur la deuxième bande. Si les nombres sont égaux, accepter.
Le temps de calcul est de O(n log(n)) : le nombre d’itérations de la Cet algorithme est linéaire (de complexité O(n)).
boucle interne est logarithmique (après la premiere intération 21 des
a sont marqués, après la deuxième itération 34 sont marqués, etc.
En fait cet algorithme compte le nombre de a (et de b) en binaire.
1. Sur une seule bande, tout langage reconnu en o(n log(n)) est régulier.
131 / 176 132 / 176
Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Complexité en temps Les classes de complexité DTIME(f ) et NTIME(f )


Soit f : N → N, f (n) > n.
◮ On note par NTIME(f ) :
◮ Soit M une machine de Turing (s’arrêtant sur toute entrée). {L | L est accepté par une MT M t.q. fM ≤ f }
◮ Soit stepM (w) le nombre maximal d’instructions exécutées sur ◮ On note par DTIME(f ) :
l’entrée w jusqu’à l’arrêt de M.
{L | L est accepté par une MT M déterministe t.q. fM ≤ f }
M étant non-déterministe, stepM (w) représente la profondeur
de l’arbre de calcul de M sur w. Remarque : on peut définir de manière analogue le temps de calcul
◮ Soit fM (n) = max {stepM (w) | |w| = n}. sur une RAM (ou d’autres modèles de calcul), ainsi que les classes
DTIME et NTIME.
◮ fM (n) mesure le temps passé par M sur une entrée de taille n,
dans le pire des cas. ◮ Thèse de Church qualitative : la complexité du même
algorithme sur des modèles de calcul “comparables” varie
seulement de façon polynomiale.
Exemple : Toute MT M à plusieurs bandes t.q. fM ≤ f peut être
133 / 176 simulée par une MT N à une bande, t.q. fN ≤ O(f 2 ). 134 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Déterminisme vs. non-déterminisme Classe P : exemples


◮ Accessibilité : étant donné un graphe et 2 sommets s, t, est-ce
Soit f : N → N t.q. f (n) > n. qu’il y a un chemin de s à t ? (solution : Dijkstra
◮ Toute MT M non-déterministe t.q. fM ≤ f peut être simulée par O(n2 + m log(n)), Floyd-Warshall O(n3 ))
une MT N déterministe t.q. fN ≤ 2O(f ) . ◮ Connexité : est-ce qu’un graphe donné est connexe ? (solution :
accessibilité O(n + m))
En algorithmique on distingue les temps de calcul : linéaire,
◮ Acyclicité : est-ce qu’un graphe donné contient un cycle ?
O(n log(n)), quadratique, O(n6 ), etc. En théorie de la complexité on
(solution : accessibilité)
classifie les problèmes de manière moins fine. L’objectif est de
◮ Graphes eulériens : est-ce qu’un graphe possède un circuit qui
pouvoir déterminer la complexité intrinsèque d’un problème.
passe par chaque arc exactement une fois ? (solution :
L’origine de la théorie de la complexité :
connexité)
◮ P = ∪k≥1 DTIME(nk ) temps polynomial déterministe ◮ 2-colorabilité : est-ce qu’on peut colorier un graphe avec 2
◮ NP = ∪k≥1 NTIME(nk ) temps polynomial non-déterministe couleurs t.q. pour chaque arête uv, les 2 sommets u, v ont des
couleurs différentes ? (solution : DFS)
◮ L’appartenance d’un mot à un langage hors-contexte (O(n3 )).
135 / 176 136 / 176
Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Les classes P et NP Classe NP


Un langage L est dans NP si et seulement s’il existe un polynôme p
et un langage K ∈ P tels que :
NP = {L(M) | ∃p polynôme tel que fM (n) 6 p(n)}.
P = {L(M) | ∃p polynôme tel que fM (n) 6 p(n) et M déterministe}. x∈L ⇔ il existe y ∈ Σ≤p(|x|) : hx, yi ∈ K

Le mot y est une preuve (de taille polynomiale) pour l’appartenance


◮ P ⊆ NP.
de x à L. Le langage K est un vérifieur polynomial des preuves.
◮ Déterminer si l’inclusion ci-dessus est stricte est un problème
ouvert.
◮ Vocabulaire : on montre souvent l’appartenance de L dans NP
en (1) devinant une preuve y pour l’entrée x et (2) vérifiant que
◮ NP peut être défini par l’existence de preuve qui peut être
y est bien une preuve.
vérifié en temps polynomial :
◮ On vérifie facilement que les problèmes
◮ Exemple : la preuve pour la satisfaisabilité d’une formule
booléenne est une valuation des variables qui rend la formule 3-COLORATION, CLIQUE, CYCLE-HAMILTONIEN, ...
vraie. sont dans la classe NP.
137 / 176 138 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Réductions polynomiales Réductions polynomiales


◮ Soient A et B deux langages de Σ∗ .
◮ Une réduction polynomiale de A vers B est une fonction
f : Σ∗ → Σ∗ telle que
◮ f est calculable par une MT déterministe en temps polynomial.
◮ On a l’équivalence suivante : Plusieurs réductions vues précédemment sont bien polynomiales :

x ∈ A ⇐⇒ f (x) ∈ B. SAT 6 3-SAT 6 3-COLORATION ≤ SAT


3-SAT 6 CLIQUE
◮ On note A 6P B (A se réduit à B de façon polynomiale).
◮ L’existence d’une réduction polynomiale de A vers B assure
que
◮ si B ∈ P, alors A ∈ P.
◮ si B ∈ NP, alors A ∈ NP.

On dit aussi que chacune des classes P et NP est fermée par


réductions polynomiales.
139 / 176 140 / 176
Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Complexité en temps : résumé Problèmes NP-complets


◮ On s’intéresse à des machines de Turing s’arrêtant sur toute
entrée. ◮ Un langage L (ou problème) est NP-complet si
◮ Les machines non-déterministes ont plusieurs calculs sur un 1. L ∈ NP, et
mot (→ arbre de calculs). 2. pour tout langage K ∈ NP, on a K 6P L. (On dit aussi que L est
◮ fonction de complexité fM d’une machine M associe à tout NP-difficile.)
entier n le temps du plus long calcul de M sur une entrée de ◮ On va montrer qu’il existe des problèmes NP-complets.
taille n.  Ne pas confondre les termes NP et NP-complet. Tout problème
◮ P = langages décidés en temps polynomial par une MT L ∈ P est aussi dans NP. MAIS, si vous réussisez à montrer
déterministe. l’appartenance d’un problème NP-complet à P, vous pouvez
◮ NP = langages décidés en temps polynomial par une MT. remporter un prix de 1 Mio.$
◮ On ne sait pas si P = NP.  Un problème NP-difficile peut être indécidable (NP-difficile
◮ Réduction polynomiale : réduction qui se calcule en temps signifie seulement une borne inf sur la complexité.)
polynomial.
Exemple : de SAT vers 3-COLORATION.
141 / 176 142 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

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


optimisation optimisation
Considérons le problème SAT et supposons qu’il ait un algorithme
◮ Les problèmes vus jusqu’à présent (SAT, 3-coloration, etc) sont polynomial A pour le résoudre. Alors on peut construire l’algorithme
des problèmes de décision : réponse OUI/NON. suivant, qui calcule pour une formule donnée ϕ une valuation
satisfaisante σ (s’il en existe une) :
◮ Problèmes de calcul de solution : si une formule est
satisfaisable, alors calculer une valuation satisfaisante. Si un ◮ La formule donnée : ϕ(x1 , . . . , xn ).
graphe est 3-coloriable, alors calculer un coloriage à 3 ◮ Si A(ϕ) retourne “non”, alors retourner “non-satisfaisable”.
couleurs... ◮ Pour i = 1 jusqu’à n faire :
◮ Problèmes d’optimisation : ayant un graphe pondéré sur les ◮ Si A(ϕ(b1 , . . . , bi−1 , true, xi+1 , . . . , xn )) retourne “oui”, alors

arcs, calculer un cycle hamiltonien de poids minimal (TSP). bi := true, sinon bi = false.
◮ Retourner (b1 , . . . , bn ).

143 / 176 144 / 176


Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Réductions de Turing Théorème de Cook-Levin


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. Ce type
de réduction s’appelle Turing (polynomiale). Comme les réductions
de type “many-one”, celles de type Turing préservent la
décidabilité, et P et NP sont fermées par les réductions de Turing ◮ Théorème (Cook, Levin) SAT est NP-complet.
polynomiales :
◮ Conséquence. D’après les réductions polynomiales vues
◮ A ≤T B signifie que A se réduit à B par une réduction de type précédemment, les problèmes 3-SAT, 3-COLORATION, et
Turing (cad, il existe un algorithme pour A, qui utilise un CLIQUE sont NP-complets.
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 (cad, l’algorithme pour A - sans compter le temps
d’exécution des appels de B - est polynomial).
◮ Si A ≤T B et B est décidable, alors A est décidable.
◮ Si A ≤p B est B ∈ P, alors A ∈ P.
T
◮ Si A ≤p B et B ∈ NP, alors A ∈ NP.
T 145 / 176 146 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Théorème de Cook-Levin — principe de la preuve Théorème de Cook-Levin — idée de preuve

◮ Tout calcul de M sur w prend p(n) étapes (instants), où p est un


◮ On part d’un langage quelconque de NP, décidé par une MT M polynôme et n = |w|.
à une bande (bornée à gauche). ◮ Donc tout calcul de M sur w utilise au plus p(n) + 1 cases.
◮ On construit à partir de M et d’un mot d’entrée w une formule ◮ On introduit des variables, avec leur signification intuitive
ϕM,w de taille polynomiale, et telle que ◮ Q(i, q) : vrai ssi l’état de contrôle de M à l’instant i est q.

◮ P(i, j) : vrai ssi la position de la tête de M à l’instant i est j.


M accepte w ⇐⇒ ϕM,w est satisfaisable. ◮ L(i, j, A) : vrai ssi le symbole à l’instant i dans la case j est A.

◮ Note. Seulement un nombre polynomial de variables !

147 / 176 148 / 176


Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Théorème de Cook-Levin — idée de preuve Un autre problème NP-complet : Somme d’entiers

◮ Grâce aux variables Q, P, L, on encode le calcul : À tout instant Le problème Somme d’entiers est le suivant :
◮ on se trouve dans un et un seul état, ◮ Donnée : des entiers x1 , . . . , xk > 0 et un entier s.
◮ une et une seule case est lue,
◮ il y a une et une seule lettre dans chaque case. ◮ Question : existe-t-il 1 6 i1 < i2 < · · · < ip 6 k tels que
◮ On code également que
xi1 + · · · + xip = s.
◮ à l’instant 0, la configuration est q0 wBp(|w|+1−|w|) .
◮ à l’instant p(n), la machine est dans l’état OK.
C’est clairement dans NP : on devine i1 , . . . , ip et on teste.
◮ pour tout i : le passage entre les valeurs Q(i, ·), P(i, ·), L(i, ·, ·) et
les valeurs Q(i + 1, ·), P(i + 1, ·), L(i + 1, ·, ·) correspond bien à On montre que c’est NP-complet par une réduction 3-SAT 6
une transition de M. Somme d’entiers.

149 / 176 150 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Partition Réduction Somme d’entiers vers Partition

P
Soit x1 , . . . , xk , s une instance de Somme d’entiers. Soit x = xi .
Le problème Partition est le suivant :
On construit (en temps polynomial) l’instance x1 , . . . , xk , x − 2s de
◮ Donnée : des entiers x1 , . . . , xk > 0. Partition.
◮ Question : existe-t-il X ⊆ {1, . . . , k } tel que
◮ Si Somme d’entiers a une solution sur x1 , . . . , xk , s,
X X Partition a une solution sur x1 , . . . , xk , x − 2s.
xi = xi .
i∈X i∈
/X
◮ Inversement, si Partition a une solution sur x1 , . . . , xk , x − 2s,
C’est clairement dans NP : on devine X et on teste. Somme d’entiers a une solution sur x1 , . . . , xk , s.

151 / 176 152 / 176


Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Réduction 3-SAT vers Somme d’entiers Réduction 3-SAT vers Somme d’entiers
◮ On construit à partir d’une formule 3-CNF ◮ Exemple : Pour ϕ = (x1 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) on a y1 = 110,
ϕ = C1 ∧ C2 ∧ · · · ∧ Cm avec variables x1 , . . . , xn une instance de z1 = 101, y2 = 1001, z2 = 1000, etc.
Somme d’entiers (x1 , . . . , xk , s) t.q. ϕ est satisfaisable ssi ◮ A chaque clause Cj correspondent les 2 entiers tj = wj = 10m−j .
(x1 , . . . , xk , s) a une solution. · · 1} 3
L’entier s = |1 ·{z · · 3}.
| ·{z

◮ Idée : on code les littéraux et les clauses de ϕ par de (très) n m
grands entiers en base 10. Le codage est défini de telle façon ◮ Pour produire le bloc 1n dans s il faut choisir exactement un de
que quand on fait des sommes, il n’y a pas de retenue (c-à-d, yi , zi (pour tout 1 ≤ i ≤ n). Ceci revient à choisir une valuation
les “bits” sont décodables). des variables – yi signifie xi vrai, et zi signifie xi faux.
◮ A chaque variable xi correspondent les 2 entiers yi , zi . Les ◮ Pour produire le bloc 3m dans s il faut que pour chaque clause,
entiers yi , zi sont de longueur m + i et commencent chacun par au moins un des littéraux soit vrai. On complète jusqu’à 3 en
10i−1 . Les m derniers “bits” codent les clauses : pour yi le j utilisant les entiers tj , wj .
dernier “bit” est 1 si xi apparaît dans Cj , et 0 sinon ; pour zi le j ◮ L’instance de “Somme d’entiers” peut se calculer en temps
dernier “bit” est 1 si xi apparaît dans Cj , et 0 sinon. polynomial.
153 / 176 154 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

Complexité en espace La classe PSPACE


◮ On définit PSPACE = ∪k≥1 DSPACE(nk ) = ∪k≥1 NSPACE(nk ).

◮ Soit M une machine de Turing (s’arrêtant sur toute entrée). P ⊆ NP ⊆ PSPACE ⊆ EXPTIME = ∪k≥1 DTIME(nk )
◮ Soit spaceM (w) le nombre maximal de cases visitées sur les ◮ Exemples de problèmes dans PSPACE :
bandes, sur l’entrée w jusqu’à l’arrêt de M. Entrée : n automates finis Ai .
◮ Soit sM (n) = max {spaceM (w) | |w| = n}. Question : est-ce que ∩ni=1 L(Ai ) 6= ∅ ?
◮ sM (n) mesure la mémoire utilisée par M sur une entrée de taille Entrée : expressions rationnelles R1 , R2 .
n, dans le pire des cas. Question : est-ce que R1 , R2 decrivent le même langage ?
◮ On note par DSPACE(s) la classe des langages acceptés par Entrée : formule booléenne quantifiée ϕ.
une MT déterministe M t.q. sM ≤ s. On note par NSPACE(s) la Question : est-ce que ϕ est valide ?
classe des langages acceptés par une MT M t.q. sM ≤ s. Entrée : graphe orienté G, sommet de départ s : jeu à 2 joueurs
J1 , J2 qui jouent de façon alternée en formant un chemin simple
dans G (à partir de s) - le premier qui ne peut plus jouer, perd.
Question : est-ce que J1 a une stratégie gagnante ?
155 / 176 156 / 176
Modèles de calcul Modèles de calcul
Classes de complexité : P, NP, PSPACE. Classes de complexité : P, NP, PSPACE.

PSPACE et preuves intéractives Preuves intéractives


◮ Rappel : NP représente la classe des problèmes pour lesquels
on peut vérifier la preuve de manière efficace. ◮ Un système de preuves intéractives est une paire (P, V ) t.q. :
◮ 2 acteurs : prouveur P et vérifieur V. Le but de P est de 1. V est un algorithme polynomial probabiliste,
convaincre V que l’entrée w appartient à un langage donné L. 2. P et V échangent un nombre polynomial de messages (de taille
◮ Exemple : L = SAT. Sur une entrée ϕ, le prouveur P présente à polynomiale).
3. Un langage L est décidé par une paire (P, V ) si pour toute entrée
V une valuation σ des variables de ϕ. Le vérifieur V est w:
convaincu, si σ est satisfaisante. ◮ w ∈ L implique que V accepte (après communication avec P) avec

◮ Question : est-ce qu’on peut faire de même pour le proba ≥ 2/3,


complément de SAT ? Réponse : oui, si on augmente les
◮ w ∈ / L implique que V accepte (après communication avec P) avec
proba < 1/3.
capacités de P et V.
◮ Rq : on ne restreint pas P.
1. P et V pourront communiquer de façon bi-directionnelle.
2. V pourra faire des choix probabilistes ; il devra être convaincu
par P avec grande probabilité seulement.

157 / 176 158 / 176

Modèles de calcul Modèles de calcul


Classes de complexité : P, NP, PSPACE. Fonction récursives

PSPACE et preuves interactives Plan


Présentation, bref historique
◮ Exemple : Non-isomorphie de graphes. On veut vérifier que 2
graphes non-orientés G1 , G2 ne sont pas isomorphes. Ensembles dénombrables. Un paradoxe
◮ V choisit de façon aléatoire (et cachée) Gi (i ∈ {1, 2}) et applique
Machines de Turing
une permutation sur Gi , en obtenant le graphe H. Il envoie H à P,
en lui demandant l’indice i. Machines RAM
◮ P envoie j ∈ {1, 2}.
◮ V accepte ssi i = j. Problèmes indécidables
◮ PSPACE est la classe des langages qui peuvent être décidés
Réductions : logique, graphes, et problèmes sur entiers
par des preuves interactives.
◮ Rq : NP ainsi que co-NP (la classe des compléments de Classes de complexité : P, NP, PSPACE.
langages dans NP) sont inclus dans PSPACE.
Fonction récursives

159 / 176 160 / 176


Modèles de calcul Modèles de calcul
Fonction récursives Fonction récursives

Fonctions calculables La classe des fonctions primitives récursives


Plus petite classe de fonctions Nk → N
◮ contenant
◮ Une MT peut être utilisée pour calculer. ◮ La fonction nulle de Nk → N pour tout k > 0,
k
◮ Exemple : pour calculer une fonction de f : N → N, on peut ◮ La fonction Succ : N → N telle que Succ(x) = x + 1.
utiliser k + 2 bandes ◮ La projection πik : Nk → N, telle que πik (x1 , . . . , xk ) = xi .
◮ k bandes d’entrée pour les arguments, ◮ fermée par
◮ une bande de calcul, ◮ composition : si f1 , . . . , fk : Nn → N et g : Nk → N sont primitives
◮ une bande de sortie, sur laquelle le résultat sera écrit. récursives, alors h : Nn → N l’est aussi, , où h est définie par
◮ Lorsque la machine est lancée avec l’argument w sur sa bande h(x1 , . . . , xn ) = g(f1 (x1 , . . . , xn ), . . . , fk (x1 , . . . , xn ))
d’entrée, elle doit s’arrêter avec f (w) sur sa bande de sortie.
◮ récursion : Si f : Nn → N et g : Nn+2 → N sont primitives
◮ On s’intéresse aux fonctions qu’il est possible de calculer par
récursives, alors h : Nn+1 → N l’est aussi , où h est définie par
MT.
h(0, x1 , . . . , xn ) = f (x1 , . . . , xn )
h(x + 1, x1 , . . . , xn ) = g(x, h(x, x1 , . . . , xn ), x1 , . . . , xn )
161 / 176 162 / 176

Modèles de calcul Modèles de calcul


Fonction récursives Fonction récursives

Exemples de fonctions primitives récursives Propriétés des fonctions primitives récursives

◮ La somme, le produit, la différence tronquée de fonctions


◮ Remarque Les fonctions primitives récursives se calculent en C primitives récursives est primitive récursive.
sans boucle while().
◮ Si f : Np+1 → N est primitive récursive, alors
◮ Les fonctions suivantes sont primitives récursives.
◮ La fonction prédécesseur : f (0) = 0, f (x) = x − 1 si x > 0. n
X
◮ L’addition, la multiplication de deux entiers. g(n, x1 , . . . , xp ) = f (i, x1 , . . . , xp )
◮ La différence tronquée : maximum de 0 et de la différence de i =0
deux entiers.
x −̇ y ≡ max{0, x − y} et
n
Y
◮ Le minimum de deux entiers. h(n, x1 , . . . , xp ) = f (i, x1 , . . . , xp )
Attention La récursion ne doit porter que sur un paramètre. i =0

sont primitives récursives.

163 / 176 164 / 176


Modèles de calcul Modèles de calcul
Fonction récursives Fonction récursives

Fonctions définies par cas Fonctions définies par cas

◮ Une fonction dont les valeurs sont 0 ou 1 est appelée un


prédicat. ◮ Si P1 , . . . , Pk sont des prédicats primitifs récursifs, et f1 , . . . , fk+1
◮ On interprète 0 comme faux et 1 comme vrai. des fonctions primitives récursives, il en est de même de
◮ Les opérateurs Booléens classiques, appliqués à des prédicats 

 f1 (x1 , . . . , xn ) si P1 (x1 , . . . , xn ),
primitifs récursifs fournissent des prédicats primitifs récursifs. 
 sinon, et si P2 (x1 , . . . , xn ),
 f2 (x1 , . . . , xn )
◮ Si P(x, x1 , . . . , xp ) est un prédicat primitif récursif, il en est de g(x1 , . . . , xn ) = ···
même de 

 f (x , . . . , xn ) sinon, et si Pk (x1 , . . . , xn ),
◮ AP (n, x1 , . . . , xp ) ≡ ∀x 6 n P(x, x1 , . . . , xp )  k 1

fk+1 (x1 , . . . , xn ) sinon.
◮ EP (n, x1 , . . . , xp ) ≡ ∃x 6 n P(x, x1 , . . . , xp )
Qn
◮ . . . car AP (n, x1 , . . . , xp ) = i =0 P(i, x1 , . . . , xp ), et EP = 1 −̇ A1−̇P .

165 / 176 166 / 176

Modèles de calcul Modèles de calcul


Fonction récursives Fonction récursives

Minimisation bornée Fonctions calculables, non primitives récursives

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


◮ Si P(x, x1 , . . . , xp ) est un prédicat primitif récursif, la fonction ◮ non primitives récursives,
( n o ◮ calculables mécaniquement.

min x 6 n | P(x, x1 , . . . , xp ) si un tel x existe
µB P(n, x1 , . . . , xp ) ≡ x + 1
 si m = 0
n+1 sinon A(m, x) = A(m − 1, 1) si m > 0, x = 0


est primitive récursive. A(m − 1, A(m, x − 1)) si m, x > 0.
Pn Qk
◮ On a µB P(n, x1 , . . . , xp ) = k =0 i=0 (1 −̇ P(i, x1 , . . . , xp )). ◮ Une variante [D. Kozen] : B(m, x) = Bm (x), où
◮ On ne peut pas se passer de borner cette minimisation
B0 (x) = x + 1
(sinon, la fonction n’est plus nécessairement primitive
récursive). Bm+1 (x) = Bm ◦ · · · ◦ Bm (x)
| {z }
x fois

167 / 176 168 / 176


Modèles de calcul Modèles de calcul
Fonction récursives Fonction récursives

Fonctions calculables, non primitives récursives La fonction d’Ackermann n’est pas PR


◮ On vérifie que les récurrences terminent.
◮ B croît trop vite pour être primitive récursive (idem pour A).
◮ On démontre que si f : Np → N est primitive récursive, alors il
B0 (x) = x + 1, B1 (x) = 2x, B2 (x) > 2x
.2 existe k tel que
..
B3 (x) > |22{z } = 2 ↑ x
x f (x1 , x2 , . . . , xn ) < Bk (max(x1 , . . . , xn )). (1)
B4 (x) > 2 ↑↑ x,
B4 (2) > 22048 ... ◮ Or, la fonction B ne vérifie pas (1).
◮ La fonction B n’est donc pas primitive récursive.
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ù
◮ Idem pour A.
◮ (En revanche, chaque Bk est primitive récursive).
2 ↑ · · · ↑(x + 1) = 2 ↑ · · · ↑ (2 ↑ · · · ↑ x)
| {z } | {z } | {z }
m fois m−1 fois m fois

On retrouve la définition d’Ackermann.


169 / 176 170 / 176

Modèles de calcul Modèles de calcul


Fonction récursives Fonction récursives

Bijection N2 → N primitive récursive Récurrence simultanée

◮ La bijection c : N2 → N définie par ◮ On note ~x = x1 , . . . , xp .


◮ Propriété Si f1 , . . . , fk : Np → N et g1 , . . . , gk : Nk+p+1 → N sont
(i + j)(i + j + 1) des fonctions primitives récursives, alors les fonctions
c(i, j) = +i
2 h1 , . . . , hk : Np+1 → N définies comme suit le sont aussi.
est primitive récursive
hi (0, ~x) = fi (~x)
(montrer que n 7→ n/2 est primitive récursive).
hi (n + 1, ~x) = gi (n, h1 (n, ~x), . . . , hk (n, ~x), ~x)
◮ Les fonctions d1 , d2 : N → N telles que c−1 = (d1 , d2 ) sont aussi
primitives récursives. Par exemple, pour d1 , utiliser

0 si ∃y 6 x, x=
y(y+1)
, ◮ Preuve. Pour k = 2, on utilise le codage c : N2 → N et ses
d1 (x + 1) = 2
d1 (x) + 1 sinon. décodages d1 et d2 pour exprimer h = c(h1 , h2 ) à l’aide du
schéma de récurrence.

171 / 176 172 / 176


Modèles de calcul Modèles de calcul
Fonction récursives Fonction récursives

Fonctions récursives Calcul des fonctions récursives


p+ 1
◮ Soit P(z, ~x ) : N → {0, 1} un prédicat non nécessairement
◮ Les fonctions primitives récursives sont calculables par
total, (c’est-à-dire, non nécessairement défini sur tout Np+1 ).
programme.
◮ On écrit P(z, ~ x ) = a si P est défini sur (z, ~x) et vaut a. Soit
n ^ o ◮ Si P(y, x) est un prédicat récursif, µP(x) se « calcule » par
EP (~x) = y ∈ N | P(y, ~x) = 1 ∧ P(z, ~x ) = 0 .
int muP ( int x )
z <y
{
◮ EP (~x) est soit un singleton, soit l’ensemble vide. Soit y = 0;
µP : N p → N while ( P (y , x ) == 0)
( y ++;
min EP (~x) si EP (~x) 6= ∅, return y ;
µP(~x) =
indéfini sinon. }

La fonction µP peut ne pas être totale, même si P l’était.


◮ ◮ Le calcul peut ne pas terminer
 Attention : malgré les définitions similaires, la minimisation ◮ soit parce que l’un des appels P(y, x) ne termine pas,
(générale) permet de construire des fonctions non primitives ◮ soit parce que P(y, x) vaut toujours 0.
récursives, contrairement à la minimisation bornée.
173 / 176 174 / 176

Modèles de calcul Modèles de calcul


Fonction récursives Fonction récursives

La classe des fonctions récursives Fonctions récursives et fonctions MT-calculables

Plus petite classe de fonctions Nk → N Théorèmes


◮ contenant la fonction nulle, la fonction successeur, les ◮ Les fonctions récursives sont exactement les fonctions de Nk
projections. dans N, pour k > 0, qui sont calculables par machine de Turing.
◮ fermée par ◮ Conséquence Il existe une fonction récursive, définie sur N tout
◮ composition, entier, qui n’est pas primitive récursive.
◮ récursion,
◮ minimisation : si P est un prédicat récursif, alors µP l’est aussi. ◮ Il existe des fonctions non récursives.

175 / 176 176 / 176