Académique Documents
Professionnel Documents
Culture Documents
Modalités du cours
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
Fonction récursives
5 / 176 6 / 176
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
◮ 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
15 / 176 16 / 176
Modèles de calcul Modèles de calcul
Ensembles dénombrables. Un paradoxe Ensembles dénombrables. Un paradoxe
17 / 176 18 / 176
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
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
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
◮ 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
◮ 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
33 / 176 34 / 176
35 / 176 36 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing
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
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
43 / 176 44 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines de Turing
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
◮ 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
# 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
◮ 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
59 / 176 60 / 176
Modèles de calcul Modèles de calcul
Machines de Turing Machines RAM
Γ = Σ ∪ {} Plan
Présentation, bref historique
Fonction récursives
61 / 176 62 / 176
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
4. Entrées/sorties.
65 / 176 66 / 176
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
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
73 / 176 74 / 176
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
◮ 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
◮ “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 .
85 / 176 86 / 176
◮ 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
◮ 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
◮ 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
97 / 176 98 / 176
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
SAT 3-SAT
Réduction SAT vers 3-SAT : construction de ϕi Réduction SAT vers 3-SAT : exemple
ϕ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 )
ϕ 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
∧uv∈E,i∈{1,2,3} (ui ∨ vi )
Fonction récursives
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
{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.
arcs, calculer un cycle hamiltonien de poids minimal (TSP). bi := true, sinon bi = false.
◮ Retourner (b1 , . . . , bn ).
◮ 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.
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.
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