• Keine Ergebnisse gefunden

Kapitel 3: Zahlen-theoretische Algorithmen (Effiziente Algorithmen, WS 2019) Gerhard Woeginger

N/A
N/A
Protected

Academic year: 2022

Aktie "Kapitel 3: Zahlen-theoretische Algorithmen (Effiziente Algorithmen, WS 2019) Gerhard Woeginger"

Copied!
58
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kapitel 3: Zahlen-theoretische Algorithmen

(Effiziente Algorithmen, WS 2019) Gerhard Woeginger

WS 2019, RWTH

(2)

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

(3)

Zahlen-theoretische Algorithmen

Der Euklidische Algorithmus

Der erweiterte Euklidische Algorithmus Der Chinesische Restsatz

Modulare Potenzfunktion Primzahltest

(4)

Zum Aufw¨ armen:

Der Euklidische Algorithmus

(5)

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

(6)

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

(7)

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

(8)

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.

(9)

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

(10)

Der erweiterte Euklidische Algorithmus

(11)

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).

(12)

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)

(13)

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

(14)

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

(15)

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

(16)

Der Chinesische Restsatz

(17)

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

(18)

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≡xmodn1n2· · ·nk beschrieben.

(19)

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

(20)

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.

(21)

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.

(22)

Modulare Potenzfunktion

(23)

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

(24)

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

(25)

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.

(26)

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

2

4 = 2 + 2 a

8

= a

4

· a

4

8 = 4 + 4

a

3

= a

2

· a 3 = 2 + 1 a

7

= a

4

· a

3

7 = 4 + 3

15 8 7

(27)

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

3

6 = 3 + 3

a

12

= a

6

· a

6

12 = 6 + 6

a

15

= a

12

· a

3

15 = 12 + 3

(28)

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:

(29)

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

(30)

Primzahl-Test

(31)

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)

(32)

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.”

(33)

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

(34)

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

(35)

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?

(36)

Zahlen-theoretisches Werkzeug (1)

Definition

MitZn bezeichnen wir die multiplikative Gruppe modulon. Elemente von Zn sind die Restklassen modulon, die relativ prim zunsind:

Zn={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

(37)

Zahlen-theoretisches Werkzeug (2)

Satz (Kleiner Satz von Fermat) F¨ur eine Primzahl punda∈Zp 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)

(38)

Fermat Test

(39)

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)

(40)

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)

(41)

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

(42)

Pseudo-Primzahlen (1)

Definition (Pseudo-Primzahl)

Es sein≥3eine ungerade, zusammengesetzte Zahl, und es seia∈Zn. 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

(43)

Pseudo-Primzahlen (2)

Satz

Jede ungerade, zusammengesetzte Zahln≥3erf¨ullt genau eine der folgenden beiden Aussagen:

Alle Basena∈Zn sind Betr¨uger f¨urn.

H¨ochstens die H¨alfte aller Basena∈Zn 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∈Zn ist ebenfalls betr¨ugerisch.

Das inverse Elementa−1 vona inZnerf¨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 vonZn. Kardinalit¨at einer Untergruppe teilt Kardinalit¨at der GruppeZn.

(44)

Carmichael Zahlen (1)

Definition (Carmichael Zahl)

Eine ungerade, zusammengesetzte Zahln≥3ist eine Carmichael Zahl, falls alle Basena∈ZnBetr¨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

(45)

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

(46)

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

(47)

Miller-Rabin Test

(48)

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”

(49)

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

(50)

Zahlen-theoretisches Werkzeug (3)

Satz (Quadratwurzelsatz)

F¨ur eine Primzahl nbesitzt die Gleichungx2≡1nur

zwei L¨osungen ¨uberZn: 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)

(51)

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.

(52)

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

(53)

Beweis des Hauptresultats (1)

Erster Beweisschritt: Definition von k,b, undB

Ein Paar (b,k)mitb∈Zn 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∈Zn und allej≥k+1gilta2ju6≡ −1 (modn).

Wir definierenB ={x ∈Zn|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| ≤ |Zn|/2zu zeigen.

(54)

Beweis des Hauptresultats (2)

Zweiter Beweisschritt: B 6=Zn

Nach dem Chinesischen Restsatz existiert ein c∈Zn

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=Zn

(55)

Beweis des Hauptresultats (3)

Letzter Beweisschritt: B ist Untergruppe vonZn

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.

(56)

Anmerkungen

(57)

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.

(58)

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

Referenzen

ÄHNLICHE DOKUMENTE

Eine Zahl x heisst zentral, wenn mindestens ein Viertel der aktiven Zahlen kleiner als x oder mindestens ein Viertel gr¨ osser als x ist Ist das Split-Element x zentral, dann

Shmuel Winograd hat 1971 gezeigt, dass man zur Multiplikation von 2 × 2 Matrizen mindestens sieben Multiplikationen braucht (auch wenn man noch so viele Additionen und Subtraktionen

, 1i endet mit 1, und das letzte Elemente 6= 1 ist ungleich ±1: Dann ist n keine Primzahl (laut Quadratwurzelsatz), und Miller-Rabin erkennt das korrekt... , 1i besteht nur aus

Beweisen oder wi- derlegen Sie diese Umkehrung.. c) Sei G eine endliche

Auch in diesem Fall ist beim Ausstieg nach (3a) und (3b) die Zahl n garantiert zusammengesetzt, denn sie verh¨ alt sich nicht wie eine Primzahl. Diese sind f¨ ur große x genauso

Besonders einfach ist die Multiplikation, wenn die beiden Faktoren als Bitfelder zur Basis 2 vorliegen. Dann kommt man allein mit Additionen und Shiftoperationen aus. rightshift

Die Funktion gibt true zur¨ uck, wenn die ganze Zahl n eine Primzahl oder eine starke Pseudo-Primzahl f¨ ur zehn zuf¨ allig gew¨ ahlte Basen ist, sonst wird false zur¨ uckgegeben..

Diese werden so ausgew¨ ahlt, dass Sie eine m¨ oglichst hohe Punktzahl erreichen. Abgabe in der Vorlesungspause