Algorithmes Probabilistes COMPLEX Ludovic Perret Université Pierre et Marie Curie (Paris VI) [email protected] Introduction Algorithme Il retourne toujours une solution correcte, et pour une même entrée, il retourne toujours la même réponse (et toujours avec la même complexité. Introduction Algorithme Probabiliste Pour une même entrée, l’algorithme ne retourne pas toujours la même réponse (et pas toujours avec la même complexité). la sortie n’est pas forcément correcte. Introduction Las-Vegas Définition Un algorithme de type Las-Vegas est un algorithme probabiliste qui retourne toujours un résultat correct. Le temps d’exécution peut varier ; la complexité d’un algorithme de Las-Vegas est une variable aléatoire. QuickSort avec pivot aléatoire : Θ(n2 ) dans le pire cas, Θ(n log n) en moyenne. Introduction Monte-Carlo Définition Un algorithme de type Monte-Carlo est un algorithme probabiliste qui termine toujours en temps polynomial. Le résultat n’est pas toujours correct, mais on contrôle la probabilité d’erreur. Introduction Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Tests de Primalité Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Tests de Primalité Motivation Contexte Cryptographie à clef publique ≡ fonction à sens unique avec trappe. Problème difficile (dans NP). Tests de Primalité Motivation Contexte Cryptographie à clef publique ≡ fonction à sens unique avec trappe. Problème difficile (dans NP). FACT Entrée : un entier N ∈ N∗ . Question : trouver un diviseur non-trivial p de N. Génération de Grands Premiers π(N) = {n ∈ [1 . . . , N] | n premier}. π(N) ∼ N . log(N) Tests de Primalité Primalité PREMIER Entrée : un entier N ∈ N∗ . Question : N est-il premier ? Historique PREMIER ∈ NP ∩ coNP. Tests de Primalité Primalité PREMIER Entrée : un entier N ∈ N∗ . Question : N est-il premier ? Historique PREMIER ∈ NP ∩ coNP. Tests de primalité probabilistes. Si TestPREMIER(N) retourne composé, alors N est toujours composé. Si TestPREMIER(N) retourne premier, alors N est peut être premier. Tests de Primalité Primalité PREMIER Entrée : un entier N ∈ N∗ . Question : N est-il premier ? Historique PREMIER ∈ NP ∩ coNP. Tests de primalité probabilistes. Si TestPREMIER(N) retourne composé, alors N est toujours composé. Si TestPREMIER(N) retourne premier, alors N est peut être premier. Algorithme déterministe en O(log(N)15/2+ ), pour > 0. M. Agrawal, N. Kayal, N. Saxena. “PRIMES is in P” . Annals of Mathematis, 2004. Tests de Primalité Rappels Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Tests de Primalité Rappels Éléments inversibles Theorem Soit x ∈ ZN , alors x est inversible modulo N si et seulement si pgcd(x, N) = 1. Définition L’ensemble des éléments inversibles modulo N est noté Z× N. Calcul de l’inverse modulaire Il existe (u, v ) t.q. u · x + v · N = pgcd(x, N) = 1, c’est à dire : u·x ≡1 mod N. Calculer l’inverse de x, c’est donc calculer u (et v ). On utilise l’algorithme d’Euclide étendu. Tests de Primalité Rappels Fonction ϕ d’Euler Ordre de Z× N Si N est premier alors Z× N = ZN \ {0}. #Z× N =N −1 Si N n’est pas premier alors Z× N 6= ZN \ {0} #Z× N =??? Tests de Primalité Rappels Fonction ϕ d’Euler Définition Pour un entier N : ϕ(N) = #{x ∈ [1, . . . N−1] | pgcd(x, N) = 1}. Calcul de ϕ p est premier, ϕ(p) = p − 1. Si p et q sont relativement premiers alors ϕ(pq) = ϕ(p)ϕ(q) Tests de Primalité Rappels Fonction ϕ d’Euler Theorem (Euler) Soit N ∈ N∗ . Alors, pour tout entier a tel que pgcd(a, N) = 1 : aϕ(N) ≡ 1 mod N. Tests de Primalité Rappels Rappels Probabilité Soient deux événements A et B. Pr(A ∪ B) = Pr(A) + Pr(B) − P(A ∩ B). Soient deux événements A et B. La probabilité conditionnel de l’événement “A sachant B” est : Pr(A|B) = Pr(A ∩ B) . Pr(B) Tests de Primalité Test de Fermat Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Tests de Primalité Test de Fermat Test de Fermat – (I) Principe Général des Tests Condition calculatoirement facile à vérifier qui caractérise les premiers. + Test probabiliste ≡ condition nécessaire. Tests de Primalité Test de Fermat Test de Fermat – (I) Principe Général des Tests Condition calculatoirement facile à vérifier qui caractérise les premiers. + Test probabiliste ≡ condition nécessaire. + Test déterministe AKS ≡ condition nécessaire et suffisante. Theorem (Fermat) Soit N un premier. Alors, pour tout entier a tel que pgcd(a, N) = 1 : aN−1 ≡ 1 mod N. Tests de Primalité Test de Fermat Test de Fermat – (I) Principe Général des Tests Condition calculatoirement facile à vérifier qui caractérise les premiers. + Test probabiliste ≡ condition nécessaire. + Test déterministe AKS ≡ condition nécessaire et suffisante. Theorem (Fermat) Soit N un premier. Alors, pour tout entier a tel que pgcd(a, N) = 1 : aN−1 ≡ 1 mod N. Soit a, 1 < a < N tel que pgcd(a, N) = 1 et aN−1 6≡ 1 mod N alors N est composé (a est un témoin de Fermat). Tests de Primalité Test de Fermat Test de Fermat – (I) Principe Général des Tests Condition calculatoirement facile à vérifier qui caractérise les premiers. + Test probabiliste ≡ condition nécessaire. + Test déterministe AKS ≡ condition nécessaire et suffisante. Theorem (Fermat) Soit N un premier. Alors, pour tout entier a tel que pgcd(a, N) = 1 : aN−1 ≡ 1 mod N. Soit a, 1 < a < N tel que pgcd(a, N) = 1 et aN−1 6≡ 1 mod N alors N est composé (a est un témoin de Fermat). Soient N un entier impair composé et a, 1 < a < N relativement premier avec N. Alors, N est pseudo-premier en base a si : aN−1 ≡ 1 mod N. Tests de Primalité Test de Fermat Test de Fermat – (II) TestFermat(N) Choisir aléatoirement a ∈ {2, . . . , N − 1} Calculer Reste ≡ aN−1 mod N Si Reste 6= 1 mod N alors retourner composé. Retourner premier Tests de Primalité Test de Fermat Test de Fermat – (II) TestFermat(N) Choisir aléatoirement a ∈ {2, . . . , N − 1} Calculer Reste ≡ aN−1 mod N Si Reste 6= 1 mod N alors retourner composé. Retourner premier Complexité O log3 (N) . Tests de Primalité Test de Fermat Test de Fermat – (II) TestFermat(N) Choisir aléatoirement a ∈ {2, . . . , N − 1} Calculer Reste ≡ aN−1 mod N Si Reste 6= 1 mod N alors retourner composé. Retourner premier Caractéristiques Si TestFermat(N, t) retourne composé alors N n’est pas premier (réciproque du théorème de Fermat). Si TestFermat(N, t) retourne premier, alors N est peut être premier (le théorème de Fermat n’est pas une équivalence). L’algorithme échoue pour les a tels que N est pseudo-premier en base a (par exemple, 341 = 11 · 31 pour a = 2). Tests de Primalité Test de Fermat Test de Fermat – (II) Nombres de Carmichaël Un nombre de Carmichaël est un entier N qui ∀a ∈ {2, . . . , N − 1} est pseudo-premier en base a. TestFermat(N) échoue si N est un nombre Carmichaël Le plus petit nombre de Carmichaël est 561 = 3 · 11 · 17. Tests de Primalité Test de Fermat Test de Fermat – (II) Nombres de Carmichaël Un nombre de Carmichaël est un entier N qui ∀a ∈ {2, . . . , N − 1} est pseudo-premier en base a. TestFermat(N) échoue si N est un nombre Carmichaël Le plus petit nombre de Carmichaël est 561 = 3 · 11 · 17. Densité des Nombres de Carmichaël [Harman, 2002] Soit C (N) le nombre d’entiers de Carmichaël ≤ N, alors ∃ β > 0.33 : C (N) > N β , pour N “suffissament” grand. + C (1014 ) = 44706, et d1014·0.33 e = 41687. Tests de Primalité Test de Fermat Test de Fermat – (II) Densité des Nombres de Carmichaël [Harman, 2002] Soit C (N) le nombre d’entiers de Carmichaël ≤ N, alors ∃ β > 0.33 : C (N) > N β , pour N “suffissament” grand. + C (1014 ) = 44706, et d1014·0.33 e = 41687. Prn∈[1,...,N] (N est de Carmichaël) = C (N) 1 ≤ 0.66 . N n Tests de Primalité Test de Rabin-Miller Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (I) Lemme Soient X et N des entiers positifs. Si X 6≡ ±1 mod N et X 2 ≡ 1 mod N alors N est composé. Theorem Soit N un premier. Nous écrivons N − 1 = 2s · r , avec r impair. Si a est tel que pgcd(a, N) = 1, alors : j ar ≡ 1 mod N ou ∃j, 0 ≤ j ≤ s − 1 tel que a2 ·r ≡ −1 mod N. Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (I) Si ∃ a, 1 < a < N tel que pgcd(a, N) = 1, j ar 6≡ 1 mod N et a2 ·r 6≡ −1 mod N, ∀j, 0 ≤ j ≤ s − 1, ⇒ N est composé. Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (I) Définition Soit N un entier impair composé que nous écrivons comme N − 1 = 2s · r , avec r impair et un entier a ∈ Z tel que pgcd(a, N) = 1. Nous dirons que N est pseudo-premier fort en base a si : j ar ≡ 1 mod N ou ∃j, 0 ≤ j ≤ s − 1 tel que a2 ·r ≡ −1 mod N. Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (I) Définition Soit N un entier impair composé que nous écrivons comme N − 1 = 2s · r , avec r impair et un entier a ∈ Z tel que pgcd(a, N) = 1. Nous dirons que N est pseudo-premier fort en base a si : j ar ≡ 1 mod N ou ∃j, 0 ≤ j ≤ s − 1 tel que a2 ·r ≡ −1 mod N. Theorem Soit N un entier impair composé. Il existe au plus N/4 entiers a, 2 ≤ a ≤ N − 1 tel que N est pseudo-premier fort en base a. Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (II) TestRabinMiller(N) Trouver r impair et s tels que N − 1 = 2s · r Choisir aléatoirement a ∈ {2, . . . , N − 1} et calculer Reste ≡ ar mod N Si Reste 6≡ ±1 mod N alors j ←1 Tant que 1 ≤ j ≤ s − 1 et Reste 6≡ −1 mod N Faire Reste ← Reste2 mod N Si Reste ≡ 1 mod N alors retourner composé j ←j +1 FinTantQue Si Reste 6≡ −1 mod N retourner composé. FinSi Retourner premier Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (II) TestRabinMiller(N) Trouver r impair et s tels que N − 1 = 2s · r Choisir aléatoirement a ∈ {2, . . . , N − 1} et calculer Reste ≡ ar mod N Si Reste 6≡ ±1 mod N alors j ←1 Tant que 1 ≤ j ≤ s − 1 et Reste 6≡ −1 mod N Faire Reste ← Reste2 mod N Si Reste ≡ 1 mod N alors retourner composé j ←j +1 FinTantQue Si Reste 6≡ −1 mod N retourner composé. FinSi Retourner premier Complexité O log3 (N) . Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (II) TestRabinMiller(N) Trouver r impair et s tels que N − 1 = 2s · r Choisir aléatoirement a ∈ {2, . . . , N − 1} et calculer Reste ≡ ar mod N Si Reste 6≡ ±1 mod N alors j ←1 Tant que 1 ≤ j ≤ s − 1 et Reste 6≡ −1 mod N Faire Reste ← Reste2 mod N Si Reste ≡ 1 mod N alors retourner composé j ←j +1 FinTantQue Si Reste 6≡ −1 mod N retourner composé. FinSi Retourner premier Si TestRabinMiller(N) retourne composé alors N n’est pas premier j Si ∃ a, 1 < a < N tel que ar 6≡ 1 mod N et a2 ·r 6≡ −1 mod N, ∀j, 0 ≤ j ≤ s − 1 alors ⇒ N est composé. Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (II) Si TestRabinMiller(N) retourne premier alors N : 1 PrN (TestRabinMiller(N) retourne premier | N est composé) ≤ . 4 Tests de Primalité Test de Rabin-Miller Test de Rabin-Miller – (II) Si TestRabinMiller(N) retourne premier alors N : 1 PrN (TestRabinMiller(N) retourne premier | N est composé) ≤ . 4 Démonstration. Si N est un entier composé impair et si TestRabinMiller(N) retourne premier, alors N est pseudo-premier fort en base a. Le probabilité de tirer a ∈ {2, . . . , N − 1} tel que N est pseudo-premier fort en base a est ≤ 1 N · . N 4 Polynomial Identity Testing Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Polynomial Identity Testing Polynomial Identity Testing – Motivation Soit n > 0 et une matrice de Vandermonde 1 x1 1 x2 Vd(x1 , . . . , xn ) = . .. : ... ... .. . 1 xn . . . x1 n−1 x2 n−1 .. . . xn n−1 Polynomial Identity Testing Polynomial Identity Testing – Motivation Soit n > 0 et une matrice de Vandermonde 1 x1 1 x2 Vd(x1 , . . . , xn ) = . .. : ... ... .. . 1 xn . . . x1 n−1 x2 n−1 .. . . xn n−1 On sait montrer mathématiquement : Det V (x1 , . . . , xn ) = Y 1≤i<j≤n (xj − xi ). Polynomial Identity Testing Polynomial Identity Testing – Motivation On sait montrer mathématiquement : Det V (x1 , . . . , xn ) = Y (xj − xi ). 1≤i<j≤n On souhaite vérifier l’identité : Det V (x1 , . . . , xn ) − Y 1≤i<j≤n (xi − xj ) = 0. Polynomial Identity Testing Polynomial Identity Testing – Motivation On souhaite vérifier l’identité : Det V (x1 , . . . , xn ) − Y (xi − xj ) = 0. 1≤i<j≤n Pour n = 2 : 1 x1 Vd(x1 , x2 ) = , 1 x2 et Det Vd(x1 , x2 ) = x2 − x1 . Polynomial Identity Testing Polynomial Identity Testing – Motivation On souhaite vérifier l’identité : Det V (x1 , . . . , xn ) − Y 1≤i<j≤n (xi − xj ) = 0. Polynomial Identity Testing Polynomial Identity Testing – Motivation Pour n = 3 : 1 x1 x1 2 Vd(x1 , x2 , x3 ) = 1 x2 x2 2 , 1 x3 x3 2 et Det Vd(x1 , x2 , x3 ) = (−1)1+1 (x2 x3 2 − x3 x2 2 ) + (−1)2+1 (x1 x3 2 − x3 x1 2 ) + (−1)3+1 (x1 x2 2 − x2 x1 2 ). Polynomial Identity Testing Polynomial Identity Testing – Motivation Pour n = 3 : 1 x1 x1 2 Vd(x1 , x2 , x3 ) = 1 x2 x2 2 , 1 x3 x3 2 et Det Vd(x1 , x2 , x3 ) = (x2 x3 2 − x2 2 x3 ) − (x1 x3 2 − x1 2 x3 ) + (x1 x2 2 − x1 2 x2 ). Pour n = 100, Det Vd(x1 , . . . xn ) est un poly. de degré ≈ 5000 avec ≈ 25000 termes. Polynomial Identity Testing Polynomial Identity Testing – Motivation Pour n = 3 : 1 x1 x1 2 Vd(x1 , x2 , x3 ) = 1 x2 x2 2 , 1 x3 x3 2 et Det Vd(x1 , x2 , x3 ) = (x2 x3 2 − x2 2 x3 ) − (x1 x3 2 − x1 2 x3 ) + (x1 x2 2 − x1 2 x2 ). Pour n = 100, Det Vd(x1 , . . . xn ) est un poly. de degré ≈ 5000 avec ≈ 25000 termes. Définiton Soit f ∈ K[x1 , . . . , xn ] de degré d > 0. Un monôme de f est une produit de puissances des variables, i.e. un terme est de la forme x1α1 · · · xnαn . P Le degré d’un monôme x1α1 · xnαn est ni=1 αi . Le nombre de monôme de degré d en n variables est O(nd ). Polynomial Identity Testing Polynomial Identity Testing Définition f ∈ K[x1 , . . . , xn ] est donné par une boîte noire s’il est possible d’évaluer f efficacement (mais pas accéder à ses coefficients). Par exemple, Det Vd(x1 , . . . , xn ) . Polynomial Identity Testing Polynomial Identity Testing Définition f ∈ K[x1 , . . . , xn ] est donné par une boîte noire s’il est possible d’évaluer f efficacement (mais pas accéder à ses coefficients). Par exemple, Det Vd(x1 , . . . , xn ) . PIT Entrée : un polynôme f ∈ K[x1 , . . . , xn ] de degré d > 1 donné par une boîte-noire. Question : Est-ce que le polynôme f est nul ? Polynomial Identity Testing PIT – Cas Univarié UnivPIT Entrée : un polynôme f ∈ C[X ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Polynomial Identity Testing PIT – Cas Univarié UnivPIT Entrée : un polynôme f ∈ C[X ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Lemme Il existe une algorithme polynomial déterministe pour résoudre UnivPIT. Polynomial Identity Testing PIT – Cas Univarié UnivPIT Entrée : un polynôme f ∈ C[X ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Lemme Il existe une algorithme polynomial déterministe pour résoudre UnivPIT. Démonstration. f s’annule sur au plus d points distincts. L’algorithme consiste à évaluer le polynôme f sur d + 1 poins distincts r1 , . . . , rn ∈ C. Si f (xi ) = 0, pour tout i, 1 ≤ i ≤ n, alors nous pouvons dire que f est nul. Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général (n > 1) Lemme de Schwartz-Zippel-DeMillo-Lipton Soit f ∈ K[x1 , . . . , xn ] de degré d > 0, et S ⊆ K. Si f est non-nul, alors : Pr(r1 ,...,rn )∈S n (f (r1 , . . . , rn ) = 0) ≤ d , |S| avec |S| qui dénote la taille d’un sous-ensemble S ⊆ K. Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton The Curious History of Schwartz-Zippel (DeMillo-Lipton) Lemma http://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the-schwartz-zippel-lemma/ Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton The Curious History of Schwartz-Zippel (DeMillo-Lipton) Lemma Richard A. DeMillo, Richard J. Lipton. “A Probabilistic Remark on Algebraic Program Testing”. Inf. Process. Lett. 1978. Jacob T. Schwartz. “Probabilistic Algorithms for Verification of Polynomial Identities (invited)”. An International Symposium on Symbolic and Algebraic Computation, 1979. Richard Zippel. “Probabilistic Algorithms for Sparse Polynomials.” An International Symposium on Symbolic and Algebraic Computation, 1979. Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton Rappels Soient deux événements A et B. Pr(A ∪ B) = Pr(A) + Pr(B) − P(A ∩ B). Soient deux événements A et B. La probabilité conditionnel de l’événement “A sachant B” est : Pr(A|B) = Pr(A ∩ B) . Pr(B) Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général (n > 1) Démonstration. Cas de base. Pour n = 1, nous savons qu’un polynôme univarié possède au plus d racines distincts. Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général (n > 1) Démonstration. Induction. Soit k la plus grande puissance de x1 qui divise les monômes de f . Nous allons écrire : f = k X x1i · fi (x2 , . . . , xn ). i=0 Par définition, fk est non-nul. Nous voyons aussi que fk est de degré ≤ d − k. Par hypothèse d’induction : Pr(r2 ,...,rn )∈S n (fk (r2 , . . . , rn ) = 0) ≤ d −k , |S| Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général (n > 1) Démonstration. Induction. Soit A l’événement “f (r1 , . . . , rn ) = 0” et B “fk (r2 , . . . , rn ) = 0”. Nous avons A = (A ∩ B) ∪ (A ∩ B̄) et : Pr(A) = Pr(A ∩ B) + Pr(A ∩ B̄) Pr(A) = Pr(A|B)Pr(B) + Pr(A|B̄)Pr(B̄) Pr(A) ≤ Pr(B) + Pr(A|B̄). Nous avons Pr(B) = Pr(r2 ,...,rn )∈S n (fk (r2 , . . . , rn ) = 0) ≤ d−k |S| . Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général (n > 1) Démonstration. Induction. Soit A l’événement “f (r1 , . . . , rn ) = 0” et B “fk (r2 , . . . , rn ) = 0” : Pr(A) ≤ d −k + Pr(A|B̄). |S| Soit r2 , . . . , rn ∈ S (n−1) . On pose p(x1 ) = f (x1 , r2 , . . . , rn ) = k X x1i · fi (r2 , . . . , rn ). i=0 Si “fk (r2 , . . . , rn ) 6= 0”, alors p est un polynôme univarié non-nul. Nous avons alors : d −k k d Pr(A) ≤ + = . |S| |S| |S| Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général PIT Entrée : un polynôme f ∈ K[x1 . . . , xn ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général PIT Entrée : un polynôme f ∈ K[x1 . . . , xn ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Proposition Soit K fini, et d > |K|. Il existe une algorithme polynomial probabiliste pour résoudre PIT. L’algorithme retourne non-zero alors f est bien non nul. Sinon, l’algorithme retourne zero si le polynôme f est nul avec d probabilité ≤ |K| Si K est infini, avec probabilité ≥ 1 − , pour tout 0 < < 1. Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton PIT – Cas Général Démonstration. L’algorithme consiste à évaluer le polynôme f sur un point (r1 , . . . , rn ) ∈ Kn tiré aléatoirement. Si f (r1 , . . . , rn ) 6= 0, alors l’algorithme retourne non zero. Si f (r1 , . . . , rn ) = 0, alors l’algorithme retourne zero. Aussi, si f est non nul, alors Pr(r1 ,...,rn )∈Kn (f (r1 , . . . , rn ) = 0) ≤ d |K| , Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton Schwartz-Zippel-DeMillo-Lipton – Cas Particulier Lemme de Schwartz-Zippel-DeMillo-Lipton Soit f ∈ F2 [x1 , . . . , xn ] un polynôme multilinéaire de degré d > 0. Si f est non-nul, alors : Pr(r1 ,...,rn )∈Fn2 (f (r1 , . . . , rn ) = 0) ≤ 1 − 1 . 2d MAX3SAT Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes MAX3SAT 3SAT et MAX3SAT Définition Soit x une variable booléenne. Un littéral est x ou x̄ (négation logique). Une (3-)clause est une disjonction de 3 littéraux (x1 ∨ x¯2 ∨ x¯3 ) Une (3-)formule est un conjonction de plusieurs 3-clauses. MAX3SAT 3SAT et MAX3SAT Définition Soit x une variable booléenne. Un littéral est x ou x̄ (négation logique). Une (3-)clause est une disjonction de 3 littéraux (x1 ∨ x¯2 ∨ x¯3 ) Une (3-)formule est un conjonction de plusieurs 3-clauses. 3SAT Entrée : une formule φ de m clauses en les variables x1 , . . . , xn . Question : existe t-il une affection des variables satisfaisant φ ? Theorem 3SAT est NP-complet. MAX3SAT 3SAT et MAX3SAT Définition Soit x une variable booléenne. Un littéral est x ou x̄ (négation logique). Une (3-)clause est une disjonction de 3 littéraux (x1 ∨ x¯2 ∨ x¯3 ) Une (3-)formule est un conjonction de plusieurs 3-clauses. MAX3SAT Entrée : une formule φ de m clauses en les variables x1 , . . . , xn . Question : trouver une affection des variables satisfaisant un maximum de clauses de φ. MAX3SAT Algorithme Probabiliste pour MAX3SAT Lemme Soit φ(x1 , . . . , xn ) une formule de m clauses C1 . . . , Cm . Une affectation aléatoire des variables permet de satisfaire simultanément 7·m 8 clauses en moyenne. Démonstration. Soit Xj = 1, si Cj est vrai. 0, sinon. Nous avons : 7 E(Xj ) = 1 · Pr(Xj = 1) = . 8 Pn Finalement, si X = j=1 Xj , alors : E(X ) = m X i=1 1 · Pr(Xj = 1) = 7·m . 8 MAX3SAT Algorithme Probabiliste pour MAX3SAT Lemme Soit φ(x1 , . . . , xn ) une formule de m clauses. Il existe toujours une affectation des variables satisfaisant au moins 7·m 8 clauses φ. MAX3SAT Algorithme Probabiliste pour MAX3SAT Lemme Soient φ(x1 , . . . , xn ) une formule de m clauses et A l’événement “ une affectation aléatoire des variables satisfait ≥ 7·m 8 clauses de φ”. Alors : Pr(A) ≥ 1 . 8·m Démonstration. Soient p = Pr(A) et pj proba. de satisfaire exactement j clauses de φ. m X j · pj m X j · pj ≤ 8 = m X j =0 j · pj ≤ 7·m 8 j =0 7·m j · pj + 7·m 8 X j · pj j ≥ 7·m 8 j < 7·m 8 j =0 E(X ) = X = − − 1 8 1 8 X pj + m · j < 7·m 8 +m·p X j ≥ 7·m 8 pj . MAX3SAT Algorithme de Johnson Entrée. une formule φ(x1 , . . . , xn ) de m clauses Sortie. Une affectation satisfaisant ≥ 7·m 8 clauses. Choisir aléatoirement (z1 , . . . , zn ) ∈ {0, 1}n . Tant que # clauses true dans φ(z1 , . . . , zn ) est < n Choisir aléatoirement (z1 , . . . , zn ) ∈ {0, 1} . FinTantQue Retourner (z1 , . . . , zn ) ∈ {0, 1}n 7·m 8 Faire MAX3SAT Algorithme de Johnson Entrée. une formule φ(x1 , . . . , xn ) de m clauses Sortie. Une affectation satisfaisant ≥ 7·m 8 clauses. Choisir aléatoirement (z1 , . . . , zn ) ∈ {0, 1}n . Tant que # clauses true dans φ(z1 , . . . , zn ) est < n Choisir aléatoirement (z1 , . . . , zn ) ∈ {0, 1} . FinTantQue Retourner (z1 , . . . , zn ) ∈ {0, 1}n Théorème Le nombre moyen d’itérations est ≤ 8 · m. 7·m 8 Faire MAX3SAT Analyse C : v.a. du nombre d’itérations de l’algorithme. Soit p = 1 8·m la proba. de satisfaire ≥ E(C ) = X 7·m 8 clauses de φ. j · Pr(C = j) j≥0 E(C ) = X j · (1 − p)j−1 · p j≥0 E(C ) = p X j · (1 − p)j 1−p j≥0 p 1−p 1 E(C ) = = 2 1−p p p E(C ) ≤ 8 · m Classes de Complexité Probabilistes Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Classes de Complexité Probabilistes Modèle de Calcul Machine de Turing Probabiliste Définition Une machine de Turing probabiliste est une machine de Turing déterministe avec une bande distinguée dite bande d’aléa en lecture seule. Les transitions dépendent de la bande d’aléa. Classes de Complexité Probabilistes Randomized Polynomial-Time Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe Randomized P Définition Un langage L ⊂ {0, 1}∗ est dans RP (Randomized Polynomial-Time) s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) ≤ 12 , si x 6∈ L, alors Pr(M accepte x) = 0. Classes de Complexité Probabilistes Randomized Polynomial-Time Amplification Définition équivalente de RP Soit , 0 < ≤ 12 . Un langage L ⊂ {0, 1}∗ est dans RP s’il existe une machine de Turing probabiliste M 0 qui fonctionne en temps polynomial : si x ∈ L, alors Pr(M 0 n’accepte pas x) ≤ , si x 6∈ L, alors Pr(M 0 accepte x) = 0. Démonstration. Soient L ∈ RP, M une MT probabiliste pour L et un entier k > 0. 1 Pr(M n’accepte pas x | x ∈ L) ≤ . 2 M 0 une MT probabiliste qui sur une entrée x simule k fois M telle que M 0 accepte x ⇐⇒ au moins une exécution de M accepte x. Classes de Complexité Probabilistes Randomized Polynomial-Time Amplification Définition équivalente de RP Soit , 0 < ≤ 12 . Un langage L ⊂ {0, 1}∗ est dans RP s’il existe une machine de Turing probabiliste M 0 qui fonctionne en temps polynomial : si x ∈ L, alors Pr(M 0 n’accepte pas x) ≤ , si x 6∈ L, alors Pr(M 0 accepte x) = 0. Démonstration. Soient L ∈ RP, M une MT probabiliste pour L et un entier k > 0. M 0 une MT probabiliste qui sur une entrée x simule k fois M telle que M 0 accepte x ⇐⇒ au moins une exécution de M accepte x. Pr(M 0 n’accepte pas x | x ∈ L) = Pr(M n’accepte pas x | x ∈ L) If faut choisir k tel que 1 2k k ≤ 1 . 2k ≤ . Finalement, Pr(M 0 accepte x | x 6∈ L) = 0. Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe coRP Définition Un langage L ⊂ {0, 1}∗ est dans coRP s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) = 0, si x 6∈ L, alors Pr(M accepte x) ≤ 12 . Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe coRP Définition Un langage L ⊂ {0, 1}∗ est dans coRP s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) = 0, si x 6∈ L, alors Pr(M accepte x) ≤ 12 . Définition équivalente de coRP Soit , 0 < ≤ 12 . Un langage L ⊂ {0, 1}∗ est dans coRP s’il existe une machine de Turing probabiliste M 0 qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M 0 n’accepte pas x) = 0, si x 6∈ L, alors Pr(M 0 accepte x) ≤ . Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe coRP Définition Un langage L ⊂ {0, 1}∗ est dans coRP s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) = 0, si x 6∈ L, alors Pr(M accepte x) ≤ 12 . PREMIER ∈ coRP Si N est premier, TestRabinMiller(N) retourne toujours premier. Si N est composé, TestRabinMiller(N) retourne premier avec proba. ≤ 14 < 21 . Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe coRP Définition Un langage L ⊂ {0, 1}∗ est dans coRP s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) = 0, si x 6∈ L, alors Pr(M accepte x) ≤ 12 . PIT Entrée : un polynôme f ∈ K[x1 . . . , xn ] de degré d > 0 donné par une boîte noire. Question : Est-ce que le polynôme f est nul ? Si f est nul, on retourne toujours nul. Si f n’est pas nul, on retourne nul avec proba. ≤ d |K| . Classes de Complexité Probabilistes Randomized Polynomial-Time La Classe Zerro-Error P Définition La classe ZPP (Zero-Error Probabilictic Polynomial-Time) est : ZPP = RP ∩ coRP. Classes de Complexité Probabilistes Bounded Polynomial-Time Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Classes de Complexité Probabilistes Bounded Polynomial-Time Classe Bounded P Définition Un langage L ⊂ {0, 1}∗ est dans BPP (Bounded Polynomial-Time) s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) ≤ 13 , si x 6∈ L, alors Pr(M accepte x) ≤ 13 . Classes de Complexité Probabilistes Bounded Polynomial-Time Classe Bounded P Définition Un langage L ⊂ {0, 1}∗ est dans BPP (Bounded Polynomial-Time) s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) ≤ 13 , si x 6∈ L, alors Pr(M accepte x) ≤ 13 . Amplification Soit , 0 < < 12 . Un langage L ⊂ {0, 1}∗ est dans BPP (Bounded Polynomial-Time) s’il existe une machine de Turing probabiliste M qui fonctionne en temps polynomial telle que : si x ∈ L, alors Pr(M n’accepte pas x) ≤ , si x 6∈ L, alors Pr(M accepte x) ≤ . Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Algorithmes de Monte Carlo Définition Un algorithme de Monte-Carlo est un algorithme probabiliste qui fonctionne toujours en temps polynomial, mais qui peux se tromper. La probabilité d’erreur reste inférieure à 13 . Monte-Carlo : des erreurs sont possibles, le temps est garanti polynomial. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Algorithmes de Monte Carlo Définition Un algorithme de Monte-Carlo est un algorithme probabiliste qui fonctionne toujours en temps polynomial, mais qui peux se tromper. La probabilité d’erreur reste inférieure à 13 . Monte-Carlo : des erreurs sont possibles, le temps est garanti polynomial. Théorème BPP correspond aux algorithmes de Monte-Carlo. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Algorithme de Las-Vegas Définition Un algorithme de Las-Vegas est un algorithme probabiliste qui ne se trompe jamais mais dont le temps d’exécution moyen est polynomial. Las-Vegas : aucune erreur, pas garanti sur le pire cas. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Algorithme de Las-Vegas Définition Un algorithme de Las-Vegas est un algorithme probabiliste qui ne se trompe jamais mais dont le temps d’exécution moyen est polynomial. Las-Vegas : aucune erreur, pas garanti sur le pire cas. Théorème ZPP = RP ∩ coRP ≡ Las-Vegas. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Las-Vegas ≡ ZPP Démonstration. Proposition (Inégalité de Markov) Soit X une variable aléatoire positive. Alors, pour tout a > 0 : Pr(X ≥ a) ≤ E(X ) . a Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Las-Vegas ≡ ZPP Démonstration. Soit L un langage décidé par un algorithme Las-Vegas A dont le temps d’exécution moyen est T . M une MT probabiliste qui accepte une entrée x si, et seulement si, A accepte x en un temps < 3 · T . M n’accepte jamais x 6∈ L. Soit X la v.a. du temps d’exécution de A : 1 Pr X ≥ 3 · E(X ) = Pr X ≥ 3 · T ≤ . 3 Si x ∈ L, alors Pr(M n’accepte pas x) ≤ 13 . L ∈ RP. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Las-Vegas ≡ ZPP Démonstration. Soit un L un langage décidé par un algorithme Las-Vegas A dont le temps d’exécution moyen est T . M une machine de Turing probabiliste qui rejette une entrée x si, et seulement si, A rejette x en un temps < 3 · T . Nous avons : M accepte toujours x ∈ L. Soit X la v.a. du temps d’exécution de A : 1 Pr X ≥ 3 · E(X ) = Pr X ≥ 3 · T ≤ . 3 Si x 6∈ L, alors Pr(M accepte x) ≤ 13 . L ∈ coRP ∩ RP. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Las-Vegas ≡ ZPP Démonstration. Soient L ∈ coRP ∩ RP et M une MT probabiliste pour L ∈ RP, M 0 une MT probabiliste pour L ∈ coRP). Nous avons : Si x ∈ L, Pr(“M accepte x” et “M 0 accepte x”) ≥ 12 . Si x 6∈ L, Pr(“M accepte x” et “M 0 accepte x”) ≥ 12 . M ∗ est une MT probabiliste qui accepte une entrée x si, et seulement si, M et M 0 acceptent x. M ∗ n’accepte pas x si, et seulement si, M et M 0 rejettent x. Classes de Complexité Probabilistes Monte-Carlo, Las-Vegas et Classes Probabilistes Las-Vegas ≡ ZPP Démonstration. C : v.a. du nombre d’itérations de M ∗ . Soit p ≥ 1 2 la proba. que M et M 0 retournent la même réponse. E(C ) = X E(C ) = X j · Pr(C = j) j≥0 j · (1 − p)j−1 · p j≥0 E(C ) = p X j · (1 − p)j 1−p j≥0 1 p 1−p E(C ) = = 2 1−p p p E(C ) ≤ 2 Classes de Complexité Probabilistes Relation entre les Classes Plan du cours 1 Introduction 2 Tests de Primalité Rappels Test de Fermat Test de Rabin-Miller 3 Polynomial Identity Testing Lemme de Schwartz-Zippel-DeMillo-Lipton 4 MAX3SAT 5 Classes de Complexité Probabilistes Modèle de Calcul Randomized Polynomial-Time Bounded Polynomial-Time Monte-Carlo, Las-Vegas et Classes Probabilistes Relation entre les Classes Classes de Complexité Probabilistes Relation entre les Classes Relations entre les Classes Théorème P ⊂ RP et P ⊂ coRP. Classes de Complexité Probabilistes Relation entre les Classes Relations entre les Classes Théorème P ⊂ RP et P ⊂ coRP. Corollaire P ⊂ ZPP. Classes de Complexité Probabilistes Relation entre les Classes Relations entre les Classes Théorème P ⊂ RP et P ⊂ coRP. Corollaire P ⊂ ZPP. Théorème RP ⊂ BPP et coRP ⊂ BPP.