Kapitel 3: Zahlen-theoretische Algorithmen
(Effiziente Algorithmen, WS 2019) Gerhard Woeginger
WS 2019, RWTH
Organisatorisches
N¨achste Vorlesung:
Dienstag, Oktober 29, 16:30–18:00 Uhr, AH V Keine Vorlesungam Oktober 24
Webseite:
https://algo.rwth-aachen.de/Lehre/WS1920/EA/EA.py
Zahlen-theoretische Algorithmen
Der Euklidische Algorithmus
Der erweiterte Euklidische Algorithmus Der Chinesische Restsatz
Modulare Potenzfunktion Primzahltest
Zum Aufw¨ armen:
Der Euklidische Algorithmus
Der Euklidische Algorithmus
Euklidischer Algorithmus:
1 function Euklid(a,b): integer 2 if b==0 then return a
3 else return Euklid(b, a mod b)
Euklid(33,39) = Euklid(39, 33)
= Euklid(33, 6)
= Euklid(6, 3)
= Euklid(3,0)
= 3
Analyse des Euklidischen Algorithmus (1)
Definition: Fibonacci Zahlen
Die Fibonacci Zahlen sind definiert durchF0=0undF1=1, und durch die Gleichung Fn=Fn−1+Fn−2 f¨urn≥2.
n 0 1 2 3 4 5 6 7 8 9 10 11 12 . . .
Fn 0 1 1 2 3 5 8 13 21 34 55 89 144 . . .
Fn ≈ 1
√5
1+√ 5 2
n
mit Basiszahl 1+√ 5
2 ≈1.618
Analyse des Euklidischen Algorithmus (2)
Hilfssatz
Es seiena>b≥1zwei ganze Zahlen,
f¨ur die der Aufruf vonEuklid(a,b)zu k≥1rekursiven Aufrufen f¨uhrt.
Dann gilta≥Fk+2undb≥Fk+1.
Beweis mit vollst¨andiger Induktion ¨uberk≥1 Der Fallk =1: Ausb≥1folgt b≥F2=1.
Ausa>b≥1folgta≥F3=2.
Induktionsschritt: Wenn Euklid(a,b)zuk rekursiven Aufrufen f¨uhrt, dann f¨uhrtEuklid(b,amodb)zu mindestensk−1Aufrufen.
Die Induktionsannahme liefert dannb≥Fk+1(!) undamodb≥Fk. Ausa>bfolgtba/bc ≥1.
Daraus erhalten wirb+ (amodb) = b+ (a−bba/bc) ≤ a.
Ergoa ≥ b+ (amodb) ≥ Fk+1+Fk =Fk+2
Analyse des Euklidischen Algorithmus (3)
Gabriel Lam´e (1795-1870):
Satz von Lam´e
Es seiena>b≥1zwei ganze Zahlen mitb<Fk+1 (mitk ≥1).
Dann machtEuklid(a,b)weniger alsk rekursive Aufrufe.
Die Schranke “b<Fk+1” im Satz von Lam´e ist bestm¨oglich:
Euklid(Fk+2,Fk+1)macht n¨amlich genauk rekursive Aufrufe.
Der erste rekursive Aufruf istEuklid(Fk+1,Fk+2modFk+1).
Der erste rekursive Aufruf istEuklid(Fk+1,Fk).
Der Rest folgt mit Induktion.
Zusammenfassung
Der Satz von Lam´e und Fn≈1.618n implizieren:
Satz
F¨ur zwei Eingabezahlena>b≥1mitnBits
terminiert der Euklidische Algorithmus nachO(n)rekursiven Aufrufen.
Bei jedem Aufruf wird eine Modulo-Operation durchgef¨uhrt.
Modulo-Operationen sind gleich teuer wie Divisionen und Multiplikationen vonn-stelligen Zahlen
Der erweiterte Euklidische Algorithmus
Satz von B´ ezout
´Etienne B´ezout (1730–1783):
Satz von B´ezout
F¨ur ganze Zahlena undbgilt
ggT(a,b) = min{ax+by |x,y ∈Z} ∩Z+
Beweisskizze:
(1) ggT(a,b)teilta undb, und somit auchax+by.
(2) Es seis=min{ax+by |x,y ∈Z} ∩Z+ undax0+by0=s.
amods = a−qs (f¨ur einq∈Z)
= a−q(ax0+by) = a(1−qx0) +b(−qy)
Daher teilts sowohl aals auch b, und somitggT(a,b).
Der erweiterte Euklidische Algorithmus (1)
Der erweiterte Euklidische Algorithmus berechnet nicht nur den ggTder beiden Zahlenaund b, sondern auch
die Werte der Koeffizientenx undy in der B´ezout Darstellung:
Erweiterter Euklidischer Algorithmus:
1 procedure Extended-Euklid(a,b) 2 if b==0 then return (a,1,0)
3 else (d,x’,y’):= Extended-Euklid(b, a mod b) 4 (d,x,y) := (d,y’,x’-floor(a/b)*y’)
5 return (d,x,y)
Der erweiterte Euklidische Algorithmus (2)
1 procedure Extended-Euklid(a,b) 2 if b==0 then return (a,1,0)
3 else (d,x’,y’):= Extended-Euklid(b, a mod b) 4 (d,x,y) := (d,y’,x’-floor(a/b)*y’)
5 return (d,x,y)
a b d x y
33 39 3 6 −5
39 33 3 −5 6
33 6 3 1 −5
6 3 3 0 1
3 0 3 1 0
Der erweiterte Euklidische Algorithmus (3)
1 procedure Extended-Euklid(a,b) 2 if b==0 then return (a,1,0)
3 else (d,x’,y’):= Extended-Euklid(b, a mod b) 4 (d,x,y) := (d,y’,x’-floor(a/b)*y’)
5 return (d,x,y)
Korrektheit:
Berechnung von(d,x,y)aus(d,x0,y0)mitd=bx0+ (amodb)y0. ax+by = ay0+b(x0− ba/bcy0)
= bx0+ (a−bba/bc)y0
= bx0+ (amodb)y0
= d
Anwendung des erweiterten Euklidischen Algorithmus
Problem
F¨ura,c∈Zundm∈Z+,
l¨ose die lineare Kongruenzgleichungax ≡cmodm.
Aquivalentes Problem: Finde¨ x,y ∈Zmitax+my =c Berechned:=ggT(a,m). Wennc nicht durchd teilbar, dann STOP (keine L¨osung).
Wenn c durchd teilbar:
Bestimme L¨osung(x∗,y∗)f¨ur neue Gleichungax+my =d.
Dann istx = (c/d)x∗ eine L¨osung von ax≡c modm.
Alle L¨osungen:x = (c/d)x∗+ (m/d)k mitk ∈Z
Der Chinesische Restsatz
Das R¨ atsel von Sun Tzu Suan Ching
Sun Tzu Suan Ching:
Author von“Master Sun’s Mathematical Manual”
Lebte wahrscheinlich um 400 oder um 500 unserer Zeit
Nicht zu verwechseln mit Sun Tzu (Author von“The Art of War”)
There are certain things whose number is unknown.
If we count them by threes, we have two left over;
by fives, we have three left over;
and by sevens, two are left over.
How many things are there?
Findex mit x ≡2 mod 3 und x ≡3 mod 5 und x ≡2 mod 7 Antwort: Allex ≡23 mod 105
Der Chinesische Restsatz
Satz
F¨ur paarweise teilerfremde ganze Zahlenn1, . . . ,nk und f¨ur ganze Zahlenr1, . . . ,rk besitzt das Gleichungssystem
x ≡ r1modn1
x ≡ r2modn2 ... ...
x ≡ rk modnk
genau eine L¨osungx∗ mit0≤x∗<n1n2· · ·nk.
Alle L¨osungen werden durch x≡x∗modn1n2· · ·nk beschrieben.
Der Chinesische Restsatz f¨ ur k=2
Satz
F¨ur teilerfremde ganze Zahlen n1 undn2und
f¨ur ganze Zahlenr1 undr2 besitzt das Gleichungssystem x ≡ r1modn1
x ≡ r2modn2
genau eine L¨osungx∗ mit0≤x∗<n1n2.
Beispiel:
n1=5 n2=8
0 1 2 3 4 5 6 7
0 0 25 10 35 20 5 30 15
1 16 1 26 11 36 21 6 31
2 32 17 2 27 12 37 22 7
3 8 33 18 3 28 13 38 23
4 24 9 34 19 4 29 14 39
Der Chinesische Restsatz f¨ ur k=2: Anwendung
Muss man modulare Arithmetik (Addition, Subtraktion, Multiplikation) in der grossen Grundmenge{0,1,2, . . . ,n1n2−1} durchf¨uhren, so reicht es aus, die Operationen auf den kleineren Grundmengen {0,1,2, . . . ,n1−1}und{0,1,2, . . . ,n2−1}durchzuf¨uhren.
Wennx bei Division durch(n1,n2)die Reste(r1,r2)l¨asst, und wenny bei Division durch(n1,n2)die Reste(s1,s2)l¨asst, so ergeben
x+y die Reste(r1+s1modn1,r2+s2modn2), x−y die Reste(r1−s1modn1,r2−s2modn2), undxy die Reste(r1s1modn1,r2s2modn2).
Mit dem Chinesischen Restsatz kann man leicht von der Zwei-Zahlen-Darstellung in die Einzeldarstellung wechseln.
Der Chinesische Restsatz f¨ ur k=2: Der Algorithmus
F¨ur teilerfremden1,n2 und f¨urr1,r2 l¨ose man das System x ≡ r1modn1
x ≡ r2modn2
Algorithmus zur L¨osung des Systems:
Findem1 mitn1m1≡1 modn2. Findem2 mitn2m2≡1 modn1.
Setzex = (n1m1r2+n2m2r1)modn1n2.
Modulare Potenzfunktion
Modulare Potenzfunktion
Problem: Modulares Potenzieren
Eingabe:Drei positive ganze Zahlena,n,m Gesucht:Der Wertanmodm
Achtung:
Wenn mananberechnet, indem man einfachn-mal mit der Zahla multipliziert, dann kostet das nMultiplikationen
Wenn mananberechnet, indem man einfachn-mal mit der Zahla multipliziert, dann arbeitet man mit Zahlen mitΘ(nloga)Stellen
Ein Rechenbeispiel
Wir betrachten den Exponentenn=789
n=789=512+256+16+4+1=29+28+24+22+20 Wir berechnen der Reihe nach die Hilfswerte
H0=a modm, H1=a2 modm, H2=a4 modm, H3=a8 modm, H4=a16 modm,
und allgemeinHk =a2k modm
Dabei rechnen wir: Hk+1:=Hk2 modm
Zum Schluss multiplizieren wir H9·H8·H4·H2·H0
Modulare Potenzfunktion: Algorithmus
Modular-Exponentiation(a,n,m) 1 result= 1;
2 let n[k], n[k-1], ..., n[0] be 3 the binary representation of n;
4 for i= k downto 0 do
5 result= (result*result) mod m;
6 if n[i]==1 then result= (result*a) mod m;
7 endfor 8
9 return result
F¨ur Eingabezahlena,n,mmitk Bits
kann die Modulare Potenzfunktion mitO(k)Additionen, Multiplikationen und Modulooperationen berechnet werden.
Noch ein Rechenbeispiel (1)
Das folgende Schema f¨ur den Exponentenn=15verwendet sechs Multiplikationen:
a
2= a · a 2 = 1 + 1
a
4= a
2· a
24 = 2 + 2 a
8= a
4· a
48 = 4 + 4
a
3= a
2· a 3 = 2 + 1 a
7= a
4· a
37 = 4 + 3
15 8 7
Noch ein Rechenbeispiel (2)
Das folgende Schema f¨ur den Exponentenn=15verwendet nur f¨unf Multiplikationen:
a
2= a · a 2 = 1 + 1
a
3= a
2· a 3 = 2 + 1
a
6= a
3· a
36 = 3 + 3
a
12= a
6· a
612 = 6 + 6
a
15= a
12· a
315 = 12 + 3
Additionsketten (1)
Definition: Additionskette
Eine Additionskette f¨ur eine ganze Zahl n≥2ist
eine Zahlenfolgehx0,x1, . . . ,xkimit folgenden Eigenschaften:
Es gilt x0=1
F¨ur jeden Index i ≥2kann die Zahlxi als Summexi=xr+xs mit 0≤r,s<i geschrieben werden
Es gilt xk =n
Die Zahlk ist die L¨ange der Additionskette.
Mit`(n)bezeichnen wir die L¨ange der k¨urzesten Additionskette f¨urn.
Beispiel:
Additionsketten (2)
Trivial: F¨ur allen≥2gilt `(2n)≤`(n) +1.
Fakt: Es existieren Zahlen nmit `(2n)≤`(n).
Zum Beispiel gilt `(382) =`(191) =11
Fakt: Es existieren Zahlen nmit`(2n)≤`(n)−1.
(Neill Michael Clift hat 2011 ausgerechnet,
dassn=375494703die kleinste derartige Zahl ist.) Niemand weiss, ob es eine Zahlnmit`(2n)≤`(n)−2gibt Scholz-Brauer Vermutung (1937):
F¨ur allen≥2gilt `(2n−1) =`(n) +n−1 Komplexit¨at der Berechnung von`(n): unbekannt
Primzahl-Test
Primzahlen
Wolfram-Alpha behauptet:
10ˆ200 + 357 is a prime number 10ˆ200 + 361 is not a prime number Wolfram-Alpha behauptet auch:
10ˆ200 + 349 is not a prime number Partial factorization:
2399 × 7079 × 91033 × 360628131971 × 1793656940117246968 607844523635531601680271722217839963531653895049263302135 215181772679733902185996354015802773968132577289499540492 4965089532082651688920261909909036099958383
(4 prime factors, 1 composite factor)
Primzahlen
Carl Friedrich Gauss,“Disquisitiones Arithmeticae”, (1801):
“Problema, numeros primos a compositis dignoscendi, hosque in factores suos primos resolvendi, ad gravissima ac utilissima totius arithmeticae pertinere, et geometrarum tum veterum tum recentiorum industriam ac sagacitatem occupavisse, tam notum est, ut de hac re copiose loqui superfluum foret.”
“Dass das Problem, die Primzahlen von den zusammengesetzten zu unterscheiden und letztere in ihre Primfaktoren zu zerlegen, zu den wichtigsten und n¨utzlichsten der ganzen Arithmetik geh¨ort und den Fleiss und die Weisheit der Geometer der Antike und der Neuzeit besch¨aftigt hat, ist so bekannt, dass es ¨uberfl¨ussig ist, viel dar¨uber zu sagen.”
Primzahlen
Problem: Primzahl
Eingabe:Eine positive ganze Zahlnin Dezimaldarstellung Frage:Istneine Primzahl?
Cryptosysteme (wie zum Beispiel RSA) ben¨otigen sehr grosse Primzahlen
Die Sicherheit von solchen Systemen beruht auf der (bis heute unbewiesenen) Annahme, dass das Faktorisieren von nat¨urlichen Zahlen ein algorithmisch schwieriges Problem ist
Faktorisieren6=Primzahl-Test
Primzahl-Test (1)
Ein korrekter, deterministischer Algorithmus:
1 for t= 2 to sqrt(n) do
2 if (n mod t == 0) then return ”COMPOSITE”
3
4 return ”PRIME”
Aber: Laufzeit nicht polynomiell beschr¨ankt in L¨ange der Eingabe
Primzahl-Test (2)
Ein randomisierter Algorithmus:
1 Pick random number t from –2,...,sqrt(n)˝
2 if (n mod t == 0) then return ”COMPOSITE”
3 else return ”PRIME”
Wenn dieser Test COMPOSITE sagt, dann istnwirklich nicht-prim Wenn dieser Test PRIME sagt, dann istn nicht notwendigerweise prim Ubung¨
Betrachte den Spezialfalln=q2, wobeiqprim ist.
Frage: Wie gross ist die Fehlerwahrscheinlichkeit?
Frage: Wie oft muss man den Test wiederholen, damit die Fehlerwahrscheinlichkeit unter1/2sinkt?
Zahlen-theoretisches Werkzeug (1)
Definition
MitZ∗n bezeichnen wir die multiplikative Gruppe modulon. Elemente von Z∗n sind die Restklassen modulon, die relativ prim zunsind:
Z∗n={a∈Zn|ggT(a,n) =1}
1 2 4 7 8 11 13 14
1 1 2 4 7 8 11 13 14
2 2 4 8 14 1 7 11 13
4 4 8 1 13 2 14 7 11
7 7 14 13 4 11 2 1 8
8 8 1 2 11 4 13 14 7
11 11 7 14 2 13 1 8 4
13 13 11 7 1 14 8 4 2
Zahlen-theoretisches Werkzeug (2)
Satz (Kleiner Satz von Fermat) F¨ur eine Primzahl punda∈Z∗p gilt:
ap−1≡1 (modp)
Beispiel (mit Primzahlp=5):
14≡1≡1 (mod 5) 24≡16≡1 (mod 5) 34≡81≡1 (mod 5) 44≡256≡1 (mod 5)
Beispiel (mit Nicht-Primzahlp=8):
37≡36≡1 (mod 8)
Fermat Test
Fermat Test (1): zur Basis 2
Kleiner Fermat =⇒ Jedes primen6=2erf¨ullt2n−1≡1 (modn) Fermat Test zur Basis 2:
1 If modular-exp(2,n-1,n) ¡¿ 1 2 then return ”COMPOSITE”
3 else return ”PRIME”
Dieser Test ist halb-seitig fehlerhaft:
Die Zahl n=341=11·31ist nicht-prim Dennoch gilt 2340 ≡1 (mod 341)
Fermat Test (2): zur Basis 3
Kleiner Fermat =⇒ Jedes primen6=3erf¨ullt3n−1≡1 (modn) Fermat Test zur Basis 3:
1 If modular-exp(3,n-1,n) ¡¿ 1 2 then return ”COMPOSITE”
3 else return ”PRIME”
Dieser Test ist halb-seitig fehlerhaft:
Die Zahl n=91=7·13ist nicht-prim Dennoch gilt 390≡1 (mod 91)
Fermat Test (3): randomisiert
Fermat Test:
1 Randomly pick integer a in –2,...,n-2˝
2 If ggT(a,n)¿1
3 then return ”COMPOSITE”
4 Else if modular-exp(a,n-1,n) ¡¿ 1 5 then return ”COMPOSITE”
6 Else return ”PROBABLY PRIME”
Wenn Test COMPOSITE sagt, dann ist nwirklich nicht-prim Wenn Test PROBABLY PRIME sagt, dann istnnicht notwendigerweise prim
Pseudo-Primzahlen (1)
Definition (Pseudo-Primzahl)
Es sein≥3eine ungerade, zusammengesetzte Zahl, und es seia∈Z∗n. Falls an−1≡1 (modn) gilt,
dann istneine Pseudo-Primzahl zur Basisa;
dann istaeine betr¨ugerische Basis f¨urn.
Beispiel:
n=341ist Pseudo-Primzahl zur Basisa=2 a=2ist eine betr¨ugerische Basis f¨urn=341 Beispiel:
n=91ist Pseudo-Primzahl zur Basisa=3 a=3ist eine betr¨ugerische Basis f¨urn=91
Pseudo-Primzahlen (2)
Satz
Jede ungerade, zusammengesetzte Zahln≥3erf¨ullt genau eine der folgenden beiden Aussagen:
Alle Basena∈Z∗n sind Betr¨uger f¨urn.
H¨ochstens die H¨alfte aller Basena∈Z∗n sind Betr¨uger f¨urn.
Beweis:
Aus an−1≡1 (modn) und bn−1≡1 (modn) folgt immer auch (ab)n−1≡1 (modn). Ergo:ab∈Z∗n ist ebenfalls betr¨ugerisch.
Das inverse Elementa−1 vona inZ∗nerf¨ullt(a−1)n−1≡1 (modn).
Ergo: Mita ist immer aucha−1 betr¨ugerisch.
Das neutrale Element1ist betr¨ugerisch.
Ergo: Die betr¨ugerischen Basen bilden Untergruppe vonZ∗n. Kardinalit¨at einer Untergruppe teilt Kardinalit¨at der GruppeZ∗n.
Carmichael Zahlen (1)
Definition (Carmichael Zahl)
Eine ungerade, zusammengesetzte Zahln≥3ist eine Carmichael Zahl, falls alle Basena∈Z∗nBetr¨uger f¨urnsind.
Carmichael Zahlen sind t¨odlich f¨ur den Fermat Test:
F¨ur Carmichael Zahlen liefert der Test immer die falsche Antwort.
Die ersten Carmichael Zahlen wurden 1912 vom amerikanischen Mathematiker Robert Daniel Carmichael entdeckt (“On composite numbers P which satisfy the Fermat congruence”)
Kleinste Carmichael Zahl:n=561=3·11·17 (Nachrechnen!) William Robert Alford, Andrew Granville und Carl Pomerance haben 1994 bewiesen, dass es unendlich viele Carmichael Zahlen gibt
Carmichael Zahlen (2)
Satz (Alwin Reinhold Korselt, 1899)
Eine ungerade, zusammengesetzte Zahln≥3ist eine Carmichael Zahl, genau dann wenn die Primfaktorisierungn=p1p2 · · ·pk die folgenden Eigenschaften besitzt:
pi 6=pj f¨uri 6=j (keine wiederholten Primteiler) pi−1|n−1f¨ur1≤i ≤k
Kleinste Carmichael Zahl:n=561=3·11·17 (Nachrechnen!) Nachrechnen:
Die drei Primfaktoren 3,11,17sind paarweise verschieden
n−1=560=24·5·7ist durch3−1=2, durch11−1=10, und durch 17−1=16teilbar
Fermat Test: Zusammenfassung
Der Fermat Test zeigt folgendes Verhalten f¨ur ungerade Eingabe-Zahlen n≥3:
FallsnPrimzahl, ist die Antwort immer PROBABLY PRIME Falls nCarmichael Zahl, ist die Antwort immer PROBABLY PRIME Fallsnnicht-prim und Nicht-Carmichael, ist die Antwort
COMPOSITE mit Wahrscheinlichkeit mindestens1/2
Miller-Rabin Test
Bessere Behandlung von betr¨ ugerischen Basen
Zentrale Idee:
Wir betrachten den Exponentenn−1im Fermat Test genauer.
Setzen−1=2tu, mit ungerademu≥1undt≥1 Neuer Test f¨ur die Basisa:
1 y[0]:= modular-exp(a,u,n) 2
3 for i:=1 to t do
4 y[i]:= y[i-1]ˆ2 (mod n);
5 if y[i]==1 and y[i-1]¡¿1 and y[i-1]¡¿-1 6 then return ”COMPOSITE”
7 endfor 8
9 if y[t]¡¿1 then return ”COMPOSITE”
Rechenbeispiel
Wir betrachten die Carmichael Zahln=561=3·11·17 mitn−1=560=24·35, undt=4, undu=35.
Dann gilt f¨ur die Basisa=7:
y0:=modular-exp(7,35,561) =241 y1:=2412≡298 (mod 561) y2:=2982≡166 (mod 561) y3:=1662≡67 (mod 561) y4:=672≡1 (mod 561) Wegeny4=1undy36=1undy36=−1
wird Pseudo-Primzahl n=561nun korrekt als nicht-prim erkannt
Zahlen-theoretisches Werkzeug (3)
Satz (Quadratwurzelsatz)
F¨ur eine Primzahl nbesitzt die Gleichungx2≡1nur
zwei L¨osungen ¨uberZ∗n: Die L¨osungx =1und die L¨osungx=−1.
Beweis:
Schreibe die Gleichungx2≡1als(x−1)(x+1)≡0 (modn) Wennnprim ist, muss einer der beiden Faktoren durchnteilbar sein
Anmerkung:
F¨ur die Nicht-Primzahln=8gilt12≡32≡52≡72≡1 (mod 8)
Was antwortet der neue Test?
Die Zahlenfolgehy0,y1, . . . ,ytif¨ur eine ungerade Zahl n≥3f¨allt in eine der folgenden vier Kategorien:
(1) Die Folgeh∗,∗,∗,∗, . . . , γ 6=1iendet nicht mit1: Dann istnkeine Primzahl (laut Fermat Test), und Miller-Rabin erkennt das korrekt.
(2) Die Folgeh1,1,1,1, . . . ,1ibesteht nur aus1en: Keine Indizien.
Miller-Rabin antwortet PROBABLY PRIME.
(3) Die Folgeh∗,∗, . . . ,∗,−1,1,1, . . . ,1iendet mit1, und das letzte Folgenelement6=1ist−1: Keine Indizien. Miller-Rabin antwortet PROBABLY PRIME.
(4) Die Folgeh∗,∗, . . . ,∗, γ6=±1,1,1, . . . ,1iendet mit1, und das letzte Elemente 6=1ist ungleich±1: Dann istnkeine Primzahl (laut Quadratwurzelsatz), und Miller-Rabin erkennt das korrekt.
Analyse von Miller-Rabin
Das Hauptresultat zum Miller-Rabin Test lautet:
Satz
F¨ur eine ungerade Nicht-Primzahl nliefert der Miller-Rabin Test mit Wahrscheinlichkeit mindestens1/2die korrekte Antwort COMPOSITE.
Vorbereitende Schritte im Beweis:
O.B.d.A. ist n=p1p2 · · ·pk eine Carmichael Zahl:
Zusammengesetzte Nicht-Carmichael Zahlen werden ja bereits von dem in den Miller-Rabin Test integrierten Fermat Test mit
Wahrscheinlichkeit mindestens1/2identifiziert.
Wir zerlegenn=n1n2 in zwei relativ prime Faktorenn1,n2≥2
Beweis des Hauptresultats (1)
Erster Beweisschritt: Definition von k,b, undB
Ein Paar (b,k)mitb∈Z∗n undk ∈ {0, . . . ,t} heisst gut, fallsb2ku ≡ −1 (modn)gilt.
Das Paar (n−1,0)ist gut.
Unter allen guten Paaren fixieren wir jetzt ein Paar(b,k)mit dem gr¨osstm¨oglichen Wertk. Also: Es giltb2ku≡ −1 (modn).
Und: F¨ur allea∈Z∗n und allej≥k+1gilta2ju6≡ −1 (modn).
Wir definierenB ={x ∈Z∗n|x2ku≡ ±1 (modn)}.
Diese MengeB enth¨alt alle (betr¨ugerischen) Basen, f¨ur die Miller-Rabin mit PROBABLY PRIME antwortet.
Unser Ziel ist es,|B| ≤ |Z∗n|/2zu zeigen.
Beweis des Hauptresultats (2)
Zweiter Beweisschritt: B 6=Z∗n
Nach dem Chinesischen Restsatz existiert ein c∈Z∗n
mit c ≡b (modn1) und mit c≡1 (modn2)
Aus c ≡b (modn1) folgt c2ku≡b2ku ≡ −1 (modn1) Aus c≡1 (modn2) folgt c2ku≡1 (modn2)
Daraus folgt: c2ku6≡1 (modn) und c2ku6≡ −1 (modn) Ergo: c2ku∈/B, und daher wie gew¨unschtB6=Z∗n
Beweis des Hauptresultats (3)
Letzter Beweisschritt: B ist Untergruppe vonZ∗n
Betrachtex1,x2∈B.
Also:x12ku≡ ±1 (modn) und x22ku≡ ±1 (modn) Dann gilt(x1x2)2ku≡ ±1 (modn)und daherx1x2∈B. Damit ist der Beweis des Hauptresultats abgeschlossen.
Anmerkungen
Deterministischer Primzahltest in polynomieller Zeit (1)
Gary L. Miller hat 1975 einen deterministischen Primzahltest entwickelt. Die Laufzeit dieses Tests betr¨agtO(log4n),falls die Erweiterte Riemannsche Vermutung stimmt.
(Aus diesem Test hat sich dann der Miller-Rabin Test entwickelt.) Die indischen Mathematiker Manindra Agrawal, Neeraj Kayal und Nitin Saxena (AKS) haben 2002 einen deterministischen
Primzahltest entwickelt. Die Laufzeit dieses Tests betr¨agt O(log12n).
Carl Pomerance und Hendrik Lenstra haben die Laufzeit von AKS aufO(log6n)verbessert.
Deterministischer Primzahltest in polynomieller Zeit (2)
Der AKS Primzahltest:
1. Check whethernis a perfect power:
if n=ab for integersa>1andb>1, then return COMPOSITE 2. Find the smallestr such thatordr(n)>(log2n)2
3. If1<a<gcd(a,n)for somea≤r, then return COMPOSITE 4. Ifn≤r, then return PRIME
5. Fora=1top
φ(r)log2ndo:
if (x+a)n6=xn+a inZn[x]/(xr−1), then return COMPOSITE 6. Return PRIME