ift-66975 chapitre 1 classes de complexité fondamentales: p, bpp, rp, co-rp, zpp, np, co-np, pp

48
IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Upload: severin-bourgeois

Post on 04-Apr-2015

111 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

IFT-66975

Chapitre 1Classes de complexité

fondamentales:P, BPP, RP, co-RP, ZPP, NP, co-NP,

PP

Page 2: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Quatre exemples

1- Problème du tri

Entrée: une liste d’entiers a1, …, an

Sortie: Cette liste triée en ordre croissant.

Page 3: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Algorithme classiquement utilisé:

Quicksort: « entrée a1, …, an

1. Comparer tous les entiers au pivot a1 pour obtenir les ensembles P et G des ai respectivement plus petits et plus grands que a1.

2. Retourner la liste Quicksort(P), a1, Quicksort(G). »

Page 4: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problème classique de l’analyse de Quicksort: sur une liste d’entrée aléatoire, Quicksort nécessite (n log n) comparaisons mais si la liste d’entrée est triée, le nombre de comparaisons est (n2).

Solution: exécuter l’algorithme sur

une permutation aléatoire de la liste d’entrée ou choisir les pivots de façon aléatoire. Alors l’espérance du temps d’exécution est (n log n).

Page 5: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

2- Problème du test de nullité d’un polynôme sur un corps fini.

Entrée: Un polynôme à plusieurs variables sur un corps fini F (par exemple, les entiers modulo un nombre premier q, Zq). Ce polynôme p(x1, …, xn) est représenté par un circuit arithmétique.

Question: Ce polynôme est-il égal au polynôme nul?

Page 6: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Exemples:

Sur Z2, les polynômes x2 – x et x2 + x sont toujours 0.

Sur Z3, x2 – x est nul mais x2 + x n’est pas toujours nul car 12 + 1 2 (mod 3).

Sur Zp, xp-1 – x est nul. (Petit théorème de Fermat)

Sur Z5, le polynôme x2 + xy – 2yz + z3

n’est pas nul. Si on prend x = 1, y = 0 et z = 2, on a bien 1 + 0 – 0 + 8 = 9 et 9 0 (mod 5).

Page 7: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Idée apparemment raisonnable pour un algorithme:

1. Choisir au hasard une valeur i F pour chaque variable xi et calculer p(1, …, n).

2. Si la valeur est non-nulle, arrêter et conclure que p est non-nul. Sinon, conclure que p est nul.

Page 8: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Temps d’exécution polynomial. Pas si bête! Si le polynôme est

nul alors l’algorithme ne se trompe pas.

Si le polynôme est non-nul, il faudrait être malchanceux pour tomber précisément sur des i tels que

p(1, …, n) 0.

Peut-on formaliser ces intuitions?

Page 9: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Lemme: [Schwartz, Zippel, deMillo, Lipton]

Soit p(x1, …, xn) un polynôme non-nul de degré d sur Zq, avec d < q. Alors on a

Pr[p(1, …, n) 0] d/q

où les i sont choisis uniformément aléatoirement et de façon indépendante dans S.

Page 10: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Algorithme modifié: « 1. Choisir au hasard une valeur i Zq pour

chaque variable xi et calculer p(1, …, n).

2. Si la valeur est non-nulle, arrêter et conclure que p est non-nul. Sinon, répéter 1 au plus n fois. »

Si p est nul alors la probabilité que l’algorithme retourne la bonne réponse est 1.

Si p est non-nul, alors chaque exécution de 1 a une probabilité d/q de nous induire en erreur. La probabilité de se tromper n fois de suite est seulement (d/q)n. (Note: cette analyse n’est rassurante que si d < q)

Page 11: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

3- Test de graphe biparti (2-colorabilité d’un graphe)

Entrée: Un graphe G = (V,E).Question: Le graphe est-il biparti?

Peut-on colorier les nœuds du graphe avec 2 couleurs tel que deux nœuds adjacents ont des couleurs différentes?

Page 12: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Idée simple: colorier un premier nœud et colorier tous ses voisins avec l’autre couleur.Il est clair que ce procédé nous permet de tester si le graphe est 2-coloriable en temps O(|G|)

Page 13: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

4. 3-coloriage de graphe

Entrée: Un graphe G = (V,E).Question: Le graphe est-il 3-

coloriable? Peut-on colorier chaque nœud en bleu, rouge ou vert tel que deux nœuds adjacents aient des couleurs différentes?

Page 14: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP
Page 15: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP
Page 16: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Algorithme: « 1. Choisir un premier nœud et le

colorier en rouge.2. Choisir un noeud non-colorié

voisin d’un nœud colorié et le colorier d’une couleur possible choisie au hasard. 

3. Si tout le graphe a été colorié, répondre oui. Si un nœud n’a pas de couleur possible répondre non.»

Page 17: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Si le graphe est impossible à 3-colorier, alors cet algorithme répond toujours non.

Si le graphe est 3-coloriable, alors il est possible que l’algorithme ne s’en rende pas compte.

La probabilité que l’algorithme trouve un 3-coloriage est peut-être très faible. Même un grand nombre de répétitions de l’algorithme pourrait ne pas suffire.

Page 18: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Machines de Turing probabilistes

Définition: Une machine de Turing probabiliste est un sextuplet M = (Q,,,q0,1,Q’)

Q un ensemble fini d’états, q0 Q l’état initial, Q’ Q des états d’arrêt.

un alphabet d’entrée. un alphabet de ruban qui contient et

au moins un symbole blanc b. 1: Q Q {-1,0,1} deux

fonctions de transition.

Page 19: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

L’exécution se fait à l’aide d’une suite de bits aléatoires indépendants X1, X2, … tels que Pr[Xi = 0] = Pr[Xi = 1] = ½.

À la ième étape du calcul, la fonction de transition Xi

est utilisée.

Formalisation naturelle du concept d’algorithme probabiliste.

Page 20: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Deux notions de temps de calcul:

Le temps de calcul moyen de M sur w est l’espérance du nombre d’étapes avant l’arrêt lorsque l’entrée est w.

Le temps moyen de calcul de M est la fonction t: N N définie par t(n) = max{temps moyen de M sur w: |w| = n}.

Le temps de calcul de M sur w est le maximum (peut importe les bits aléatoires) du nombre d’étapes avant l’arrêt lorsque l’entrée est w.

Le temps de calcul de M est la fonction t: N N définie par

t(n) = max{temps de M sur w: |w| = n}.

Note: l’espérance n’est pas calculée sur l’espace des entrées mais bien sur l’espace des choix probabilistes de la machine M.

Page 21: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Temps espéré polynomial

EP: classe des problèmes de calcul pour lesquels il existe un algorithme probabiliste dont le temps de calcul moyen est polynomial.

Note: Il est possible que P EP, mais cela reste un problème ouvert.

Page 22: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Algorithmes tolérant l’erreur

Définition: Un algorithme probabiliste M calcule la fonction f avec une probabilité d’erreur (n) si Pr[M(w) f(w)] (|w|) pour tous les mots w.

Note: Différent d’un algorithme qui calcule f correctement sur une grande proportion d’entrées.

Page 23: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définition: BPP((n)) est la classe des fonctions f telles qu’il existe un algorithme probabiliste avec temps de calcul polynomial calculant f avec probabilité d’erreur (n) < ½.

Si la probabilité d’erreur est très faible, on peut raisonnablement considérer ces problèmes comme ceux pour lesquels il existe un algorithme efficace.

Note de terminologie: souvent appelés algorithmes Monte Carlo.

Page 24: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définition: RP((n)) est la classe des problèmes de décision L tels qu’il existe un algorithme probabiliste M avec temps de calcul polynomial et tel que

1. Si w L, alors Pr[M rejette w] (|w|) < 1.

2. Si w L, alors Pr[M accepte w] = 0.

L’erreur ne peut se produire que dans le cas où l’entrée devrait être acceptée.

Page 25: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définition: co-RP((n)) est la classe des problèmes de décision L tels que le complément Lc de L est dans la classe RP((n)).

De façon générale, pour chaque classe C de langages (problèmes de décision), on notera comme co-C l’ensemble des langages dont le complément fait partie de C.

Page 26: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définition: ZPP((n)) est la classe des problèmes de décision L tels qu’il existe un algorithme probabiliste M avec temps de calcul polynomial et tel que pour tout w, M(w) {oui,non,?} et

1. Pr[M(w) = ?] (|w|) < 1.2. Si M(w) = oui alors w L.3. Si M(w) = non alors w L.

L’algorithme ne se trompe jamais lorsqu’il répond mais il peut ne pas répondre.

Note terminologique: algorithmes dits Las Vegas.

Page 27: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Théorème: pour toute fonction d’erreur (n), on a ZPP((n)) = RP((n)) co-RP((n)).

Page 28: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Théorème: EP = ZPP(½).

Dans une certaine mesure, cela permet d’ignorer la notion de temps de calcul moyen.

Page 29: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Théorème: Pour tous polynômes p(n) et q(n) on a

ZPP(1-1/p(n)) = ZPP(2-q(n))RP(1-1/p(n)) = RP(2-q(n))

Si un algorithme ZPP ou RP n’a pas une chance trop écrasante d’échec, alors on peut dramatiquement améliorer sa performance. (Souvent appelé amplification ou boosting)

Page 30: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définitions: 1. Un problème de décision appartient à

ZPP s’il appartient à ZPP(½). Donc tout L ZPP(1-1/p(n)) fait partie de ZPP.

2. Un problème de décision appartient à ZPP* s’il appartient à ZPP((n)) pour un (n) < 1.

3. Un problème de décision appartient à RP s’il appartient à RP(½). Donc tout L RP(1-1/p(n)) fait partie de RP.

4. Un problème de décision appartient à RP* s’il appartient à RP((n)) pour un (n) < 1.

Page 31: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

L’amplification des algorithmes BPP est problématique à cause de notre définition de BPP mais on peut démontrer:

Théorème: Pour tous polynômes p(n) et q(n), on retrouve les mêmes problèmes de décision dans BPP(1/2 – 1/(p(n)) et BPP(2-q(n)).

Possible aussi d’étendre ce théorème à certains problèmes d’optimisation.

Page 32: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définitions: 1. Un problème de calcul appartient à

BPP s’il appartient à BPP(1/3).2. Un problème de calcul appartient à

PP s’il appartient à BPP((n)) pour un (n) < ½.

Page 33: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

L’état du monde

Pour les problèmes de décision, on a

BPP

P

RP

ZPP = EP = RP co-RP

Co-RP

PP

RP*

ZPP* = RP* co-RP*

Co-RP*

Page 34: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Pourquoi RP*?

À quoi bon définir RP* alors qu’un algorithme qui a une chance écrasante d’échec est inutile?

Parce que beaucoup de problèmes intéressants se retrouvent dans cette classe!

Page 35: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Machines de Turing non-déterministes

Définition: Une machine de Turing non-déterministe est un septuplet M = (Q,,,q0,1,Q’0,Q’1)

Q un ensemble fini d’états, q0 Q l’état initial, Q’0, Q’1 Q des états d’arrêt.

un alphabet d’entrée. un alphabet de ruban qui contient

et au moins un symbole blanc b. 1: Q Q {-1,0,1} deux

fonctions de transition.

Page 36: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Les états d’arrêts sont soit acceptants (Q’1) soit rejetants (Q’0).

Les machines non-déterministes servent à accepter des langages.

La machine M accepte l’entrée w s’il existe une séquence de bits X1, X2, … telle que l’exécution définie par ces bits mène à un état acceptant. Sinon, elle rejette w.

Le temps d’exécution de M sur w est le maximum sur tous les choix de Xi du nombre d’étapes avant d’atteindre un état d’arrêt.

Page 37: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problème: les machines non-déterministes n’existent que conceptuellement! Pour les simuler il faut essayer tous les choix possibles de Xi ou alors « savoir » d’avance quels bits choisir.

Essayer tous les choix possibles requiert un temps exponentiellement plus grand.

Page 38: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Définition: Un problème de décision (ou un langage L) appartient à NP s’il existe une m.t. non-déterministe avec un temps de calcul polynomial qui accepte L.

Théorème: RP* = NP.

Page 39: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

L’état du monde (mis à jour)

Pour les problèmes de décision, on a

BPP

P

RP

ZPP = EP = RP co-RP

Co-RP

PP

NP

NP co-NP

Co-NP

Page 40: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Système de preuves Algorithme NP en deux étapes. On

veut savoir si w L.1. Choix d’une « preuve » que w L.2. Vérification de cette preuve.

Quatre conditions: 1. la preuve est une chaîne de bits de

longueur p(|w|) pour un certain polynôme p.

2. La vérification se fait en temps q(|w|) pour un certain polynôme q.

3. Si w L alors il existe une preuve valide qui montre que w L.

4. Si w L alors il n’existe aucune preuve valide qui montre que w L.

Page 41: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Théorème: Un langage L est dans NP si et seulement s’il existe un polynôme p et un langage L’ P tel queL = {x| z {0,1}p(|x|): (x,z) L’}.

Formalisation précise des «systèmes de preuves».

Page 42: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Exemple 3-coloriage d’un graphe.

1. Colorier chaque nœud avec une des 3 couleurs.

2. Vérifier que chaque nœud a bien une couleur différente de celle de ses voisins.

1. La preuve est bien de longueur polynomiale.2. La vérification se fait clairement en temps

polynomial.3. Si le graphe est 3-coloriable alors par

définition il existe une preuve valide.4. S’il n’est pas 3-coloriable alors tous les

essais de coloriage doivent contenir un conflit détecté à la vérification.

Page 43: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problèmes de NP (exemples)

Problème du commis-voyageur (TSP):

Entrée: un ensemble de ville v1, …, vn, un coût de déplacement dij entre vi et vj et un objectif de coût C.

Question: Existe-t-il un circuit qui passe par toutes les villes et dont le coût total est au plus C?

Page 44: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Ce problème est dans NP.

1. Choix non-déterministe d’un circuit.

2. Calcul du coût de ce circuit et vérification que ce coût est C.

1. la « preuve » est de longueur nlog

n.2. La vérification se fait en temps O(n).

Page 45: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

PrimalitéEntrée: Un entier q de n bits.Question: q est-il un nombre

premier?

Entiers composésEntrée: Un entier q de n bits.Question: q est il un entier

composé?

Page 46: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problèmes respectivement dans co-NP et NP.

Algorithme NP pour entier composé:1. Preuve: deux entiers 1 < s,t < q.2. Preuve acceptée si st = q.

Note: Depuis 2002, on sait en fait que Primalité et Entier composé sont dans P.

Page 47: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problème du sac à dos. (Fait partie de NP)Entrée: Un ensemble d’objets avec un poids pi et

une valeur vi + une capacité de sac à dos C + un objectif de valeur V.

Question: Peut-on choisir un ensemble d’objets dont le poids total est au plus C et la valeur totale au moins V.

Problème de démineur (Fait partie de co-NP)Entrée: une grille de démineur partiellement

découverte et une case à découvrir.Question: Est-on certain que cette case peut-être

découverte?

Page 48: IFT-66975 Chapitre 1 Classes de complexité fondamentales: P, BPP, RP, co-RP, ZPP, NP, co-NP, PP

Problème du mots-croisés. (Fait partie de NP)

Entrée: Une grille de mots-croisés et un dictionnaire.

Question: La grille peut-elle être complétée grâce à des mots du dictionnaire?

Problème d’acceptation d’une machine non-déterministe (Fait partie de NP)

Entrée: une machine de Turing non-déterministe M, un polynôme p et une entrée w.

Question: La machine M accepte-t-elle l’entrée w en temps p(|w|)?