Einleitung Shor’s Algorithmus Anhang Shor’s Algorithmus Thomas Neder 19. Mai 2009 Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Einleitung Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Shor’s Algorithmus Klassischer Teil Quantenmechanischer Teil Quantenfouriertransformation Algorithmus zur Suche nach Perioden Beispiel: Faktorisierung von 15 Analyse des Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Problemstellung(1) I Was sind die Primteiler von 281472829095937? Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Problemstellung(1) I Was sind die Primteiler von 281472829095937? I Primfaktorzerlegung ist Schwierig Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Problemstellung(1) I Was sind die Primteiler von 281472829095937? I Primfaktorzerlegung ist Schwierig I Produkt von 2147483647 und 131071? Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Problemstellung(1) I Was sind die Primteiler von 281472829095937? I Primfaktorzerlegung ist Schwierig I Produkt von 2147483647 und 131071? I Leicht Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Problemstellung(2) I Genauso ergeht es dem Computer: I Naives Ausprobieren: Computer müsste O(2 m ) Zahlen durchprobieren um die Primfaktoren einer Zahl zu finden, die durch m Bits dargestellt wird. I Es gibt raffinierteres Verfahren, das nur O(2 würde. Aber: Thomas Neder Shor’s Algorithmus √ √ 3 m) benötigen Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Tabelle: Länge der Zahl in Bits 2 4 8 16 32 64 128 256 512 1024 2048 4096 Operationen klassisch 3 4 8 16 51 256 2546 65536 6479348 4294967296 41981937869757 1,84E+019 Thomas Neder Operationen quantenmechanisch 1 4 19 60 145 300 555 946 1515 2309 3380 4787 Shor’s Algorithmus Faktor 3 1 0,42 0,27 0,35 0,85 4,59 69,28 4276,8 1860098,44 12420691677,44 3,85E+015 Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Beispiel: RSA(1) I I Public Key Verfahren bzw. asymmetrische Verschlüsselung Alice will Bob eine Nachricht senden: I I I 1. Bob erzeugt zwei Schlüssel, den einen behält er für sich, den anderen schickt er Alice(öffentlich). 2. Alice verschlüsselt Nachricht an Bob mit öffentlichem Schlüssel. 3. Bob verwendet geheimen Schlüssel, um Alice’ Nachricht zu entschlüsseln. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Beispiel: RSA(2) I Vorteile: I I Schlüssel oder Verschlüsselungsverfahren muss nicht geheim gehalten werden. Viele Benutzer können gleichen öffenlichen Schlüssel benutzen. Diese können Nachrichten untereinander nicht lesen. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Beispiel: RSA(3) I Im Detail: Bob erzeugt Schlüssel: I I I I I 1. Wähle zwei zufällige Primzahlen p,q. 2. Berechne n = p · q und (p-1)(q-1). 3. Suche ungerade Zahl e, die teilerfremd zu (p-1)(q-1) ist. 4. Löse Gleichung d · e ≡ mod (p − 1)(q − 1). 5. Versende d und n als öffentlichen Schlüssel, vernichte p,q,(p-1)(q-1) und behalte e als geheimen Schlüssel. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Beispiel: RSA(4) I Alice verschlüsselt Nachricht: I I I I 7. Stelle Nachricht als ganze Zahl dar, z.B. wenn PNachricht durch Bitfolge gegeben, dann ganze Zahl m := bi 2i 8. Wenn m ≤ n gut, wenn nicht zerlege m in Blöcke die jeder kleiner als n sind. e = md mod n 9. Verschlüssle Nachricht: m Bob entschlüsselt Nachricht: I e e mod n. 10. Benutze dazu geheimen Schlüssel e: m = m Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Beispiel: RSA(5) I Böser Mensch hat natürlich d und n mitgehört. I Kann er/sie die Nachricht entschlüsseln? I Klar: Er/Sie muss dazu nur“ d −1 mod (p − 1)(q − 1) ” berechnen. Dazu müsste jedoch die Primfaktorzelegung von n bekannt sein.(Siehe Bücher über Zahlentheorie) e entschlüsselt, Bis heute ist kein Verfahren bekannt, das m ohne n zu faktorisieren. I I (Trotz angestrengter gegenteiliger Bemühungen.) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Teiler von Zahlen und Periode von Funktion(1) I Ziel: Faktorisierung ganzer Zahl n. I Wir wissen: Direktes Faktorisieren ist schwer, können aber ggT zweier Zahlen effizient bestimmen. Erster Ansatz: Probiere Zahlen durch und bestimme ggT. I I I I I √ Egal, welche Reihenfolge oder ob randomisiert, immer O( n), wenn n zu faktorisierende Zahl. Angenommen, man würde die Zahl p kennen, für die gilt: ap ≡ 1 mod n. Ordnung modulo n von a“ ” Daraus folgt: Es gibt eine natürliche Zahl k: ap = 1 + k · n, also n teilt ap − 1 Wenn p gerade: ap = (ap/2 − 1)(ap/2 + 1) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Teiler von Zahlen und Periode von Funktion(2) I Satz aus Zahlentheorie: n hat Teiler mit ap/2 − 1 und/oder mit ap/2 − 1 gemeinsam. I Beh.: ap/2 − 1 ist kein Vielfaches von n I Bew.:Ang. ap/2 − 1 wäre ein Vielfaches von n I ⇔ ap/2 − 1 = 0 mod n I ⇔ ap/2 = 1 mod n I ⇔ Die Periode wäre kleiner oder gleich p/2. Widerspruch. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Teiler von Zahlen und Periode von Funktionen(3) ap/2 + 1 könnte natürlich ein Vielfaches von n sein! Dann wäre ggT (ap/2 + 1, n) = n, also kein echter Teiler. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Teiler von Zahlen und Periode von Funktionen(4) I I Zusammengefasst: Wenn p gerade ist gilt: ggT (ap/2 − 1, n) oder ggT (ap/2 + 1, n) ergeben echten Teiler außer I I ap/2 − 1 ist mit n teilerfremd und gleichzeitig ap/2 + 1 ist Vielfaches von n. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Problemstellung Beispiel: RSA Teiler von Zahlen und Periode von Funktionen Teiler von Zahlen und Periode von Funktionen(5) I Aber: I Satz: Ist n ungerade und keine Primpotenz, so gilt für mindestens die Hälfte der Zahlen a in {0, · · · , n − 1}, die mit n teilerfremd sind: I I I die Periode von ax mod n ist gerade und n teilt ap/2 + 1 nicht. Für den Beweis siehe Bücher über Zahlentheorie Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Übersicht über den Algorithmus Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Shor’s Algorithmus, klass. Teil(1) I Eingabe: ungerade ganze Zahl, soll keine Primpotenz sein! (und ungleich Eins) I Ausgabe: ein echter Teiler von n (wahrscheinlich) Ablauf: I I I I I I I I 1. Wähle zufällig Zahl a aus {2, · · · , n − 1} 2. Berechne ggT(a,n)=:z. 2.1 z 6= 1? Wenn ja, gibt z aus und fang von vorne an. 3. Bestimme die Periode p von ax mod n. 3.1 p ungerade? Wenn ja, zurück zu Schritt 1. 4. Ermittle ggT (ap/2 − 1, n) und ggT (ap/2 + 1, n). Kein echter Teiler dabei? Wenn ja, zurück zu Schritt 1. Wahrscheinlichkeit zu scheitern? Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Shor’s Algorithmus, klass. Teil(2) I Aus Satz von oben folgt: I Ist n ungerade und nicht die Potenz einer Primzahl, so führt der klassische Teil des Algorithmus mit einer Wahrscheinlichkeit größer 1/2 im ersten Anlauf zum Erfolg. I Zusammengefasst: I Suchen echten Teiler einer ungeraden Zahl, die keine Primpotenz ist. Kennen wir Periode von ax mod n, so brauchen wir O((log(n))3 ) Laufzeit und sind mit einer Wahrscheinlichkeit größer oder gleich 1/2 erfolgreich. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quantenfourier-Transformation(1) I I I Bekannt: Fouriertransformation Analog: Diskrete Fouriertransformation: Summe statt Integral Quantenfouriertransformation der Ordnung N: I 1 1 1 1 QFTN = √ N 1 .. . 1 ωN 2 ωN 3 ωN .. . 1 2 ωN 4 ωN 6 ωN .. . 2(N−1) N−1 1 ωN ωN I 1 3 ωN 6 ωN 9 ωN .. . 3(N−1) ωN ωN bezeichnet N-te Einheitswurzel e 2πi/N Thomas Neder Shor’s Algorithmus ··· ··· ··· ··· .. . ··· 1 N−1 ωN 2(N−1) ωN 3(N−1) ωN .. . (N−1)(N−1) ωN Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quantenfourier-Transformation(2) I I I I I |0i , . . . , |N − 1i eine ONB, dann gilt: 1 X j·k ωN |ki QFTN |ji = √ N P Belieber Zustandsvektor: |v i = αj |ji: 1 X X j·k ( αj ωN ) |ki QFTN |v i = √ N QFT ist unitär. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Realisierung der Quantenfouriertransformation(1) I Zerlegung der QFT: I Zustand |xi = |x0 i · . . . · |xn−1 i bestehe aus n Bits, x sei die Binärdarstellung einer ganzen Zahl und N=2n . Dann: I 1 x QFTN |xi = √ (|0i+ω2x |1i)·(|0i+ω4x |1i)·. . .·(|0i+ωN |1i) N I Hadamard-Trafo: 1 1 H |xi = √ (|0i + (−1)x |1i) = √ (|0i + ω2x |1i) = QFT2 2 2 I Problem: Erzeugung kleinerer Drehwinkel Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Realisierung der Quantenfouriertransformation(2) I Abhilfe: Benutze zusätzlich Phasen-Drehungs-Operation: 1 0 Rm = 0 ωm I Benötigt eigentlich gesteuerte Version, siehe Skizze. I Auf Bit |xi i werden i gesteuerte Rm -Gatter angewendet, sowie jeweils ein Hadamard-Gatter. Gesteuerte Gatter setzen sich aus mehreren elementaren Gattern zusammen. I Man erhält: Die QFTN lässt sich mit n(n+1)/2∈ O(n2 ) lokalen Quantengattern ausführen. (Für N=2n .) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Realisierung der Quantenfouriertransformation(3) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Schema Quantenteil von Shor(1) I Quantenteil von Shor: Eigentlich viel allgemeinerer Algorithmus: Kann Periode allgemeinerer Funktionen berechnen. I Rechnet auf zwei Quantenregistern R=|ai|bi I Eingabe: Funktion f:{0, · · · , N − 1} → {0, · · · , n − 1} mit Periode p. I f sei als Quantenorakel gegeben: Uf : |ai |bi → |ai |b ⊕ f (a)i I Spezialfall der Faktorisierung: f(x)=ax mod n Ausgabe: I I I Falls p teilt N: Ganzzahliges Vielfaches y von N/p; y=jN/p Sonst: Zahl nahe bei ganzzahligem Vielfachen von N/p. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Schema Quantenteil von Shor(2) I Ablauf: I I I I I I I 1. Initialisiere Register mit Nullen: |ai |bi ← |0 · · · 0i |0 · · · 0i 2. Wende Hadamard-Trafos auf |ai an: P |xi |0 · · · 0i R ← √1 x=0,··· ,N−1 (N) P 3. Wende Orakel an: R ← Uf R = N1 x=0,··· ,N−1 |xi |f (x)i 4. Miss Register |bi 5. Wende QFT auf |ai an: |ai ← QFTN |ai 6. Miss |ai und gib Inhalt aus. Schritt 4 nicht nötig, erleichtert Analyse. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Schema Quantenteil von Shor(3) I Wenn gilt: p teilt N, dann ist p= j ·N , y wobei j eine so gewählte ganze Zahl ist, dass sie die Kleinste ist, für die p ganzzahlig wird. I Geht nur, wenn j und p teilerfremd! I Darum teste ob p passt! I Wenn j und p gemeinsame Teiler haben: Neustart. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Beispiel: Faktorsierung von 15 Siehe Tafel Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Exponentierung modulo N(1) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Exponentierung modulo N(2) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(1) I Nach Potenzierung: Im Register steht dann 1 |Φ3 i = √ N X |xi |f (x)i x=0,··· ,N−1 I Messung bei Schritt 4: Register |bi nimmt Zustand |f (x0 )i an. x0 ist mit Wahrscheinlichkeit 1/N gewählt. I Zustand Register nach Messung: X 1 |Φ4 i = √ |xi |f (x0 )i A x:f (x)=f (x ) 0 A: Anzahl der |xi, über die summiert wird. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(2) I Zunächst: N sei Vielfaches von p: I Dann gilt: A=N/p I f Periodisch ⇒ 1 |Φ4 i = √ (|x0 mod Ni + |x0 + p mod Ni + . . . A + |x0 + (A − 1)p mod Ni) |f (x0 )i Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(3) I Schritt 5: Anwendung QFT: P (x +j·p) QFTN |x0 + j · pi = √1N y ωN 0 |y i I ⇒ Neuer Zustand: N−1 A−1 1 X X (x0 +j·)·y ω |y i |f (x0 )i |Φ5 i = √ NA y =0 j=0 N N−1 A−1 1 X x0 ·y X j·p·y =√ ω ω |y i |f (x0 )i NA y =0 N j=0 N Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(4) I Messung von Register |ai: I Wahrscheinlichkeit von |y i: P(y ) = I 1 0 (A−1)py 2 py ωN + ωN + · · · + ωN NA Es gilt: jpy ωN = ωAjy I 1 0 (A−1)y 2 y ⇒ P(y ) = ω + ωA + · · · + ωA NA A Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(5) I Wenn y Vielfaches von A, also y=k·A: ωAjy = (ωAA )jk = 1 I ⇒ P(y ) = I A 1 1 2 A = = NA N p Wenn y kein Vielfaches von A ⇒ P(y ) = 0 I Man erhält tatsächlich Vielfaches von A=N/p als Messwert!! Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Analyse des Algorithmus(6) I Allgemeiner Fall: p teilt N nicht“ siehe A Lecture on Shor’s ” Factoring Algorithm von Samuel J. Lomonaco Kapitel 7, 8 und 9. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Zur Laufzeit I Shors Quantenalgorithmus zur Bestimmung der Periode von ax mod n hat erwartete Laufzeit O(log(log(n))·(log(n))3 ). I Die Erfolgswahrscheinlichkeit kann durch Wiederholung beliebig erhöht werden. I Klass. Teil: O(log(n)) mit Erfolgswahrscheinlichkeit 1/2. I Insgesamt: O(log(log(n))· (log(n))3 ) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quanten-Computer-Simulator(1) Weblink Quanten-Computer-Simulator: http://iaks-www.ira.uka.de/home/matteck/QuaSi/applet1.html Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quanten-Computer-Simulator(2) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quanten-Computer-Simulator(3) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quanten-Computer-Simulator(4) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Klassischer Teil Quantenmechanischer Teil Quanten-Computer-Simulator(5) Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Definitionen und Begriffe(1) I a heißt Teiler von b, wenn es eine ganze Zahl k gibt, so dass gilt b=a·k. I a heißt echter Teiler, wenn gilt b 6= a 6= 0. I Eine Primzahl ist eine Zahl, die keine echten Teiler hat. I Der größte gemeinsame Teiler zweier Zahlen a und b ist die größte ganze Zahl, die sowohl a als auch b teilt. I Zwei ganze Zahlen a,b heißen teilerfremd, wenn der ggT(a,b)=1 ist. I Jede ganze Zahl lässt sich eindeutig (bis auf Reihenfolge) als Produkt von Primzahlen darstellen. Dies nennt man die Primfaktorzerlegung der Zahl. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Definitionen und Begriffe(2) I Def. O(f(n)): g heißt von Ordnung von f(n), wenn es eine Konstante k gibt, so dass gilt: lim (g(n)/f(n))=k Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Beispiel: RSA(6) I Bob dagegen kann Nachricht korrekt entschlüsseln. I Zusätzlich braucht er auch nur O(m3 ) Schritte für eine m Bit lange Zahl, wenn er nicht die gewöhnliche Multiplikation benutzt: Stattdessen: Verwende Binärdarstellung des Exponenten: P Y i i m d = m bi 2 = m2 bi 6=0 Zusätzlich gilt: i i−1 m2 = m2 I · m2 i−1 . Benötigt O(log(d)) Multiplikationen. Jede Multiplikation benötigt O((log(d))2 )Bitoperationen. Benötigt also insgesamt Laufzeit in O((log(d))3 ). Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Rechnen modulo n I Def.: Zwei ganze Zahlen a,b heißen kongruent modulo n, a ≡ b mod n, genau dann wenn gilt, dass es eine ganze Zahl k gibt, so dass a = b + k · n. I Es gilt: Aus a ≡ a0 mod n und b ≡ b 0 mod n folgt a + b ≡ a0 + b 0 mod n und a · b ≡ a0 · b 0 mod n. I Modulo n kongruente Zahlen bilden Klassen, die sich wie die Zahlen der Menge {0 . . . n − 1} mit Überlauf“ verhalten, ” wenn man obige Operation verwendet. I Ist n = 2l , so entspricht dies der Art, wie in einem l-Bit-Register gerechnet wird. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Suchen und Finden von Primzahlen I I I I I I I I I I s.o.: wähle zwei Primzahlen“ ” keine Funktion bekannt, die sowas macht Darum: Wähle zwei Zahlen und teste ob Prim: Miller-Rabin-Test: Eingabe n: Wähle Zahl a aus 2,. . ., n-1 Faktorisiere n-1 in geraden und ungeraden Teil: n − 1 = d · 2j r ad = 1 mod n oder ad·2 für 0 ≤ r ≤ j − 1, dann ist n Primzahl oder sgn. starke Pseudoprimzahl. Wahrscheinlichkeit, dass n fälschlicherweise als Primzahl erkant wird, obwohl zusammengesetzt, ist 1/4 bei einfacher Anwendung. Die Laufzeit liegt in O(k·log (n)3 ); k: Anzahl der Durchgänge. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Euklid’s Algorithmus und Laufzeit(1) I Eingabe: Zwei natürliche Zahlen a, b I Ausgabe: Der größte gemeinsame Teiler der beiden Zahlen I Division mit Rest: I a = b · q1 + r 1 Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Euklid’s Algorithmus und Laufzeit(2) I Dann jeweils erneute Division mit Rest, bis Division aufgeht: I r0 = q2 · r1 + r2 I r1 = q3 · r2 + r3 I .. . I rn−1 = qn−1 · rn + 0 I Letzter Divisor rn ist ggT(a,b). Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Euklid’s Algorithmus und Laufzeit(3) I Die Laufzeit der naiven Implementierung ist in O(log(a· b)). Es gibt Algorithmus, der mit Hilfe der schnellen Fourier-Trafo die Laufzeit auf O(n · log (n)2 ) drückt, wobei n die Länge der größeren Zahl von a, b in Bits angibt. Schlimmster Fall: Zwei aufeinanderfolgende Fibonacci-Zahlen. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Laufzeit klassischer Teil von Shor I Zur Laufzeit: I I I I 1. Schritt, sowie 2.1 und 3.1: quasi konstante Laufzeit. 2. Schritt: Euklid’s Algorithmus, also Laufzeit in O((log(n))3 ) 3. Schritt: Später. 4. Schritt: Verwende effiziente Multiplikation, geht mit Laufzeit O((log(n))3 ). Geht, da gilt ggT(x,n)=ggT(x mod n, n). I Wahrscheinlichkeit nach k Wiederholungen keinen echten Teiler gefunden zu haben, ist kleiner oder gleich 1/2k . I Erwartete Laufzeit: X k · O((log (n))3 ) = O((log (n))3 ) 2k Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Laufzeit(1) I Wesentliche Teile des Algorihmus: I I I I I Wenn n Eingabe, dann: Anzahl QBits: I I I 1. Hadamard-Transformation 2. Anwendung des Orakels für ax mod n 3. QFT Schritt 1 und Schritt 2 auf 2·log(n) QBits Schritt 3 auf log(n) QBits. Anzahl Gatter: I I I Hadamard-Trafo: 2·log(n) Gatter QFT: O((log(n))2 ) Gatter, s.o. Orakel: Gibt Schaltkreise, die Potenzierung mit O((log(n))3 ) Gattern realisieren. Thomas Neder Shor’s Algorithmus Einleitung Shor’s Algorithmus Anhang Rechnen modulo n Suchen und Finden von Primzahlen Euklid’s Algorithmus und Laufzeit Laufzeit(2) I Wichtig: Laufzeit der Berechnung der Periode im nicht-einfachen Fall: O((log(n))3 ), aber nur Erfolgswahrscheinlichkeit 1/(20·log(log(n))). Man braucht also O(log(log(n))) Wiederholungen. Thomas Neder Shor’s Algorithmus