Les algorithmes de Las Vegas La réponse retournée par ces algorithmes est toujours exacte. Un algorithme de LV peut retourner un message disant qu’il n’a pas pu trouver de réponse. Dans ce dernier cas, on exécute l’algorithme autant de fois que nécessaire. Un appel typique à un algorithme de LV a la forme: réponse=LV(x,succès) où succès est une variable booléene April 7, 2016 1 / 15 On ne peut pas toujours prévoir le temps d’exécution d’un algorithme de Las Vegas: RépeterLV(x) répeter réponse=LV(x,succès) jusqu’à ce qu’à (succès==VRAI) retourner réponse Mais on est toujours certain que la réponse est bonne. April 7, 2016 2 / 15 Factorisation Étant donné un nombre entier composé n, on veut trouver un facteur non trivial. fonction facteur(n) √ pour i = 2 à b nc faire si (n mod i) = 0 alors retourner i retourner 1 Temps: √ n = 10m/2 où m = log n Fait: On ne connait aucun algorithme capable de factoriser un nombre en temps polynomial en m. April 7, 2016 3 / 15 Algorithme de Dixon 1) Trouver 1 ≤ a, b < n tels que a2 = b 2 (mod n) mais a 6= ±b(mod n). Exemple: n = 2537, a = 2012, b = 1127. a2 = 1595n + 1629 b 2 = 500n + 1629 2) On a a2 − b 2 = (a − b)(a + b) = 0 (mod n) Exemple: 20122 − 11272 = (2012 − 1127)(2012 + 1127) = (885)(3139) = 2778015 = 1095 × 2537 April 7, 2016 4 / 15 3) a 6= b (mod n) =⇒ (a − b) 6= 0 (mod n) et a 6= −b (mod n) =⇒ (a + b) 6= 0 (mod n) Exemple: (2012 − 1127) = 0 × 2537 + 885 (2012 + 1127) = 3139 = 1 × 2537 + 602 4) On a donc n = xy tel que x|a + b et y |a − b Exemple: 2537 = 43 × 59 602 = 14 ∗ 43 885 = 15 ∗ 59 April 7, 2016 5 / 15 5) On a a + b = kx pour un certain k > 0 6) Donc PGCG(a+b,n) est un facteur non trivial de n. Exemple: PGCD(3139, 2537) = 43 April 7, 2016 6 / 15 fonction Dixon(n,succès) Si n est pair alors succès=vrai retourner 2 Sinon pour i = 2 à blog3 nc faire Si n1/i est un entier alors succès=vrai retourner n1/i Trouver a, b t.q. a2 = b 2 (mod n) Si a = ±b(mod n) alors succès=faux Sinon succès=vrai retourner PGCD(a+b,n) April 7, 2016 7 / 15 Comment trouver a et b t.q. a2 = b 2 (mod n) ? Théorème fondamental de l’arithmétique: Tout entier n est nm où les p sont des nombres décomposable en n = p1n1 × p2n2 × · · · × pm i premiers. Définition: Un entier est k-uniforme si tous ses facteurs premiers sont parmi les k premiers Exemple: 120 = 23 × 3 × 5 est 3-uniforme. 35 = 5 × 7 est 4-uniforme. 3 phases: April 7, 2016 8 / 15 Phase 1 Soit k, une valeur entière à être spécifiée plus tard. X =uniforme(1, n − 1) Y = X 2 (mod n) On vérifie si Y est k-uniforme. Si oui, on conserve X et la factorisation de Y dans une table. On répète le processus jusquà ce qu’on obtienne k + 1 entiers distincts k-uniforme. April 7, 2016 9 / 15 Exemple n = 2537 et k = 7 =⇒ nombres premiers: 2, 3, 5, 7, 11, 13, 17 x1 x2 x3 x4 x5 x6 x7 x8 = 2455 = 970 = 1105 = 1458 = 216 = 80 = 1844 = 433 y1 y2 y3 y4 y5 y6 y7 y8 = 1650 = 2210 = 728 = 2295 = 990 = 1326 = 756 = 2288 = 2 × 3 × 52 × 11 = 2 × 5 × 13 × 17 = 23 × 7 × 13 = 33 × 5 × 17 = 2 × 32 × 5 × 11 = 2 × 3 × 13 × 17 = 22 × 33 × 7 = 24 × 11 × 13 April 7, 2016 10 / 15 Phase 2 Trouver un sous-ensemble S ⊆ {1, 2, ..., k + 1} tel que Z= Q i∈S yi = p1m1 × p2m2 × · · · × pkmk où tous les mi sont pairs. Exemple: y1 y2 y4 y8 = 26 × 34 × 54 × 70 × 112 × 132 × 172 Comment trouver un tel ensemble? April 7, 2016 11 / 15 Combinaison linéaire Fait: Le problème de trouver un tel ensemble consiste à trouver une combinaison linéaire du système d’équation précédent. 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 Chaque ligne correspond à la décomposition des yi en puissance de nombres premiers où les bits représente la parité des exposants. April 7, 2016 12 / 15 Phase 3 Z= Q yi = p1m1 × p2m2 × · · · × pkmk i∈S Q xi i∈S √ m /2 m /2 m /2 b = Z = p1 1 × p2 2 × · · · × pk k a= On a alors que a2 = b 2 (mod n) April 7, 2016 13 / 15 Phase 3 (suite) Fait: La probabilité que a 6= ±b(mod n) est au moins 1/2 Conséquense du théorème suivant. Théorème: Si n est un nombre composé d’au moins 2 nombres premiers distincts et a est n’importe quel entier tel que PGCD(a,n) = 1, alors a2 possède au moins 4 racine carrées distinctes modulo n. April 7, 2016 14 / 15 Analyse Le temps espéré est optimisé en prenant 1 k = e2 √ ln n ln ln n L’algorithme de Dixon√trouve un facteur non trivial avec probabilité 1/2 et en temps espéré O(e 2 ln n ln ln n ). April 7, 2016 15 / 15