Introduction `a la th´eorie de la complexit´e Probl`emes de d´ecision

publicité
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Introduction à la théorie de la
complexité
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
197
Problèmes de décision
I
I
I
I
I
Informellement, un problème de décision est un problème dont la
réponse est oui ou non.
on peut définir un problème de décision comme un langage de mots
sur un alphabet fini ⌃
on note ⌃⇤ l’ensemble des mots sur l’alphabet ⌃ (et ✏ le mot vide)
par exemple, pour ⌃ = {0, 1}, 00100 2 ⌃⇤ , 11 2 ⌃⇤ .
un langage sur ⌃ est un sous-ensemble L ✓ ⌃⇤ .
Définition
Un problème de décision est un langage P ✓ ⌃⇤ .
Remarque : chaque langage P représente bien un problème dont la
réponse est oui ou non, en l’identifiant à sa fonction caractéristique
P
:
⌃⇤
!
u
7!
{0,
⇢ 1}
1 si u 2 P
0 si u 62 P
P
Etant donné un mot d’entrée u 2 ⌃⇤ , on doit décider si u 2 P ou non.
:
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
198
Problèmes de décision : exemples
I
avec ⌃ = {1},
PRIME1 = {1, 11, 111, 11111, 1111111, . . .}
l’ensemble des nombres premiers en unaire.
I
avec ⌃ = {1},
PAIR = {✏, 11, 1111, . . .}
l’ensemble des nombre pairs.
I
avec ⌃ = {0, 1},
PRIME = {1, 10, 11, 101, 111, . . .}
l’ensemble des nombre premiers en binaire.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
199
Notion de codage
I
I
la définition précédente pour les problèmes de décision est abstraite.
comment par exemple représenter le problème suivant comme un
langage ?
I
I
I
I
I
ENTRÉE : un graphe G non dirigé et un entier k 2 N
SORTIE : 1 ssi on peut colorier G avec au plus k couleurs
on voudrait représenter l’ensemble {(G1 , k1 ), (G2 , k2 ), . . .} de toutes
les paires de graphes Gi coloriables avec au plus ki couleurs.
il faut alors “coder” chaque paire comme un mot.
par exemple, avec l’alphabet ⌃ = {0, 1, #, $}, on pourrait coder un
graphe G en identifiant chacun de ses sommets par un entier, et
chaque arête (i, j) pourrait être codée par le mot i#j, où i,j sont les
codages binaires des sommets i et j. La paire (G , k) pourrait se
coder par le mot :
i1 #j1 $i2 #j2 . . . in #jn $k où (i1 , j1 ), . . . (in , jn ) sont les arêtes de G
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
200
Notion de codage
I
la définition de problème comme un langage de mots est abstraite,
et utile en théorie de la calculabilité et complexité.
I
bien souvent, on peut “oublier” le codage et travailler directement
avec des représentations plus “concrètes”, par exemple une matrice
d’adjacence pour un graphe, ou une liste de voisins.
I
mais attention, le codage peut influencer la complexité, et il faudra
parfois revenir à cette notion.
par exemple, quelle est la complexité (en temps) de l’algorithme
suivant :
I
I
I
I
I
I
ENTREE : n 2 Np
POUR i de 2 à d ne FAIRE
SI i|n ALORS RETOURNER 0
RETOURNER 1
cela dépend du codage de n
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
201
Problème d’optimisation
I
un problème d’optimisation est un problème où l’on veut maximiser
ou minimiser une certaine quantité
I
I
on peut associer un problème de décision à un problème
d’optimisation, en donnant une borne
I
I
par exemple, trouver le plus court chemin dans un graphe, d’un
sommet s à un sommet t.
par exemple, est-ce qu’il existe un chemin de longueur au plus k de s
à t ?
si on sait résoudre le problème de décision associé à un problème
d’optimisation, on peut parfois résoudre le problème d’optimisation
I
par exemple, pour trouver le plus court chemin de s à t dans un
graphe à n sommets, on peut faire une recherche dichotomique.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
202
Algorithme de décision
Définition
Un problème P ✓ ⌃⇤ est décidé par un algorithme A si pour tout mot
u 2 ⌃⇤ ,
I A termine et retourne 1 si u 2 P,
I
A termine et retourne 0 si u 62 P.
Un problème est décidable s’il existe un algorithme qui le décide.
Par exemple, selon le codage des entiers adopté, l’algorithme vu
précédemment décide PRIME1 ou PRIME.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
203
La classe P
Définition
La classe P est la classe des problèmes pouvant être décidés en temps
polynomial. Plus précisément, un problème P ✓ ⌃⇤ est dans P si il existe
un algorithme A et une constante k tel que pour tout mot u de longueur
n,
I
I
A retourne 1 en temps O(nk ) si u 2 P
A retourne 0 en temps O(nk ) si u 62 P
Exemples de problèmes dans P :
I décider si un tableau est trié
I décider si un entier codé en unaire est premier (facile)
I décider si un entier codé en binaire est premier (difficile, problème
resté ouvert pendant longtemps)
Les notions d’algorithme et leur complexité peuvent être définies
formellement par le modèle des machines de Turing (plus tard dans le
cours)
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
204
Algorithme de vérification
I
I
informellement, un algorithme de vérification est un algorithme qui,
étant donnée une solution “candidate” à un problème de décision,
décide si oui ou non cette solution est valide.
par exemple, pour le coloriage de graphe avec au plus k couleurs,
une solution candidate serait un coloriage c, et un algorithme de
vérification devrait vérifier que (1) chaque sommet est colorié par c,
(2) deux sommets voisins ne sont pas coloriés de la même couleur
par c.
Cela peut se définir formellement :
Définition
Un algorithme de vérification pour un problème P ✓ ⌃⇤ est un
algorithme A prenant deux mots en argument, tel que
P = {u 2 ⌃⇤ | 9v 2 ⌃⇤ , A(u, v ) = 1}
Lorsque A(u, v ) = 1, v est appelé un certificat pour u.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
205
La classe N P
Définition
La classe N Pest la classe des problèmes pouvant être vérifiés en temps
polynomial.
Autrement dit, un problème P est dans N P si il existe un algorithme de
vérification A de complexité polynomial en temps, et deux constantes k,
tels que
I
I
pour tout entrée u 2 P telle que u 2 P, il existe un certificat v de
longueur polynomial dans u (|v | = O(|u|k )) tel que A(u, v ) = 1
pour tout entrée u 62 P, il n’existe aucun certificat v de longueur
polynomial dans u tel que A(u, v ) = 1.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
206
Exemples de problèmes dans N P
I
décider qu’un ensemble de clauses est satisfaisable (certificat =
valuation)
I
voyageur de commerce : étant donnés n villes, les distances entre
les villes, et un entier d, on voudrait savoir s’il existe un cycle de
longueur  d qui passe par chaque ville une et une seule fois
(certificat = un cycle)
I
coloriage de graphes : peut-on colorier un graphe avec moins de k
couleurs sans que deux sommets aient la même couleur ? (certificat
= coloriage)
I
2-partition : peut-on partitionner un ensemble de n entiers en deux
tas égaux ? (certificat = partition)
I
bin packing : peut-on ranger n objets de volume vi dans k boı̂tes de
volumes C ? (certificat = rangement)
I
tous les problèmes de la classe P(P✓ N P) ... certificat vide.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
207
N P✓ ExpTime
I
tout problème de N Ppeut être décidé par un algorithme de
complexité exponentielle en temps. Pourquoi ?
I
étant donné un mot u en entrée, il suffit d’énumérer tous les
certificats de longueur au plus a.|u|k (pour la constant a de la
notation O()) et d’appeler l’algorithme de vérification. Exemple ?
I
pour SAT : énumérer toutes les interprétations possibles et les tester
I
pour le coloriage : énumérer tous les coloriages possibles et les tester
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
208
Conjecture
La grande conjecture de l’informatique fondamentale est :
P 6= N P
Autrement dit, on ne sait pas encore démontrer que
I
vérifier une solution candidate en tps polynomial (dans la taille de
l’entrée du problème),
est plus puissant que
I
trouver une solution en temps polynomial.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Les classes P et NP
Temps non-déterministe polynomial
I
I
une définition équivalente de N P peut être donnée
c’est la classe des problèmes pouvant être décidés en temps
polynomial par un algorithme non-déterministe
I
cet algorithme doit s’arrêter après un nombre d’étapes polynomial
I
il a le droit de faire des choix aléatoires (tirer à pile ou face)
si la réponse au problème est OUI, alors il doit exister une exécution
de l’algorithme (i.e. une suite de tirages) après laquelle l’algorithme
répondra OUI
I
I
Exemple : SAT choisir aléatoirement une valeur de vérité pour
chaque variable, et vérifier en temps linéaire qu’elles satisfont la
formule.
I
Pourquoi cette définition est équivalente ?
I
idée : certificat = suite de tirages
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
210
Problèmes N P-complets
Parmi les problèmes de la classe N P, certains sont dits “durs” : ce sont
ceux qui contiennent toute la difficulté de n’importe quel problème de la
classe N P. On les appelle les problèmes N P-complets.
I
Un problème de décision P est N P-complet si il est dans N Pet
tout autre problème P 0 de N Pse réduit à P en temps polynomial,
i.e. qu’il existe un algorithme qui transforme toute instance I 0 de P 0
en une instance I de P, en temps polynomial, telle que I a une
solution ssi I 0 a une solution.
I
Pour montrer qu’un problème est N P-complet, en général on part
d’un problème N P-complet connu, qu’on réduit dans notre
problème en temps polynomial.
I
Au début, il fallait bien un premier problème N P-complet !
I
Théorème de Cook (1971) : SAT est N P-complet.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
211
Vue d’ensemble
De manière générale, on appelle N P-dur l’ensemble des problèmes dans
lesquels tout problème de N Ppeut se réduire en temps polynomial.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
212
Exemples de Problèmes N P-complets
I
SAT
I
3-SAT (exactement 3 variables par clauses)
I
voyageur de commerce
I
coloriage de graphes (même avec 3 couleurs)
I
bin-packing
I
couverture d’arête : étant donné un graphe et un entier k, peut-on
trouver un sous-ensemble S de sommets tels que chaque arête a au
moins une de ses extrémités dans S ?
I
...
I
voir http:
//www.nada.kth.se/~viggo/problemlist/compendium.html
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
213
Voyageur de Commerce
I
I
I
I
TSP en anglais (Traveling Salesman Problem)
di↵érentes applications : http://www.tsp.gatech.edu/
500$ à qui trouve le circuit de distance minimale traversant les
115475 villes des USA
record : tour de la Suède, 24 978 villes
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
214
Réduction de SAT vers 3-SAT
On sait que SAT est N P-complet, on voudrait montrer que 3-SAT est
N P-complet.
1. 3-SAT est dans N Pcar c’est un cas particulier de SAT qui est dans
NP
2. on doit maintenant réduire toute instance de SAT en une instance
de 3-SAT en temps polynomial.
3. on va ajouter des nouvelles variables. Prenons un exemple :
I
I
I
I
S = {¬x1 _ x2 _ x4 , ¬x2 _ x3 , x1 _ ¬x2 _ x3 _ ¬x4 }
est transformé en :
S 0 = {¬x1 _x2 _x4 , ¬x2 _x3 _y , ¬x2 _x3 _¬y , x1 _¬x2 _z, ¬z _x3 _¬x4 }
S est satisfaisable ssi S 0 est satisfaisable.
Remarquez que cette réduction est polynomiale.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
Bin Packing
On veut ranger les objets suivants dans des sacs de capacité 10kg.
Objets
Poids
1
3
2
4
3
4
4
3
5
3
6
2
7
1
Peut-on réussir avec 3 sacs ? oui, on forme les sacs d’objets suivants :
{1, 2}, {3, 4, 5}, {6, 7}.
et avec 2 sacs ?
oui : {1, 2, 4}, {3, 5, 6, 7}. Cette solution est optimale (on ne peut pas
réussir avec un seul sac puisque la somme totale de tous les poids
dépasse 10).
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
Bin Packing est N P-complet
Supposons qu’on ait k sacs de capacité C .
I
I
BinPacking est dans N P : on peut vérifier en temps polynomial si
une solution candidate, i.e. une assignation de chaque objet à un
numéro de sac entre 1 et k, satisfait bien la contrainte de capacité.
BinPacking est N P-dur. Nous allons le démontrer en faisant une
réduction en temps polynomial du problème 2-partition, qui est un
problème N P-complet.
I
I
Instance de 2-partition : n entiers
c1 , . .P
. , cn . On veut savoir
P
P s’il
existe S ✓ {1, . . . , n} tel que i2S ci = i62S ci . Soit S = ni=1 ci .
On peut supposer que S est paire (sinon il n’y trivialement pas de
solution).
Réduction vers BinPacking : On prend C = S/2 et les objets
1, . . . , n de poids c1 , . . . , cn , et k = 2. Il y a une solution à
2-partition si et seulement si il y a en une à l’instance de BinPacking
ainsi construite. De plus, on peut construire cette instance de
BinPacking en temps polynomial (dans la taille de l’instance de
2-partitions). BinPacking est donc N P-dur (même pour k = 2).
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
GRAPHCOLOR est N P-complet
Nous allons démontrer que le problème de coloriage de graphe avec k
couleurs est N P-complet.
I le problème est dans N P, en prenant pour solution candidate un
coloriage, i.e. une fonction c des sommets vers {1, . . . , k}. Il est
facile de vérifier en temps polynomial que cette solution est valide.
I
pour montrer que GRAPHCOLOR est N P-dur, nous allons réduire
le problème 3SAT en temps polynomial dans GRAPHCOLOR
I
on doit donc prouver l’existence d’un algorithme qui, à partir d’un
ensemble S de clauses avec 3 littéraux, crée en temps polynomial un
graph G et un entier k tel que S est satisfaisble ssi G est coloriable
avec k couleurs.
I
ici on va prendre k = 3, et prendre les couleurs 0, 1, et #.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
218
Réduction de 3SAT vers GRAPHCOLOR
I
motif de base pour chaque proposition. Un littéral et sa négation ne
peuvent pas être colorié avec la même couleur
I
Comme les coloriages sont équivalents modulo permutation, on
supposera que le noeud central est toujours colorié par #.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
219
Réduction de 3SAT vers GRAPHCOLOR
I
on le fait pour les n propositions.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
220
Réduction de 3SAT vers GRAPHCOLOR
I
encodage d’une clause
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
221
Réduction de 3SAT vers GRAPHCOLOR
I
encodage d’une clause
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
222
Réduction de 3SAT vers GRAPHCOLOR
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
223
Réduction de 3SAT vers GRAPHCOLOR
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
224
Réduction de 3SAT vers GRAPHCOLOR
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
225
Réduction de 3SAT vers GRAPHCOLOR
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
226
Réduction de 3SAT vers GRAPHCOLOR
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
227
Réduction de 3SAT vers GRAPHCOLOR
I
il faut le faire pour toutes les clauses
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
228
Exercice : démontrer la correction de la réduction
Vous devez démontrer que :
I
toute interprétation qui satisfait S donne un coloriage du graphe
avec 3 couleurs
I
toute coloriage valide du graph donne une interprétation qui satisfait
S.
INFO-F-302, Cours d’Informatique Fondamentale
Introduction à la théorie de la complexité
Réductions et N P-complétude
Autres classes
I
PSPACE : problèmes résolubles en espace polynomial
I
EXPTIME : problèmes résolubles en temps exponentiel
I
NPSPACE : résolubles par algorithme non-déterministes en espace
polynomial (NPSPACE = PSPACE, Théroème de Savitch)
I
...
I
kEXPTIME, kNEXPTIME
I
décidables
I
https://complexityzoo.uwaterloo.ca/Complexity_Zoo
P ✓ NP ✓ PSPACE ✓ EXPTIME ✓ NEXPTIME ✓ 2EXPTIME ✓ · · · ✓
· · · ✓ décidables
INFO-F-302, Cours d’Informatique Fondamentale
La Logique des Prédicats
La Logique des Prédicats
ou logique du premier ordre
Téléchargement