Les algorithmes de Las Vegas

publicité
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
Téléchargement