Zum Hauptinhalt springen

Shors Algorithmus

Jetzt wenden wir uns dem Problem der ganzzahligen Faktorisierung zu und sehen, wie es auf einem Quantencomputer mithilfe von Phasenschätzung effizient gelöst werden kann. Der Algorithmus, den wir erhalten werden, ist Shors Algorithmus zur ganzzahligen Faktorisierung. Shor hat seinen Algorithmus nicht explizit in Begriffen der Phasenschätzung beschrieben, aber es ist eine natürliche und anschauliche Möglichkeit, seine Funktionsweise zu erklären.

Wir beginnen mit einem Zwischenproblem, dem sogenannten Ordnungsbestimmungsproblem, und sehen, wie die Phasenschätzung eine Lösung dafür liefert. Anschließend sehen wir, wie eine effiziente Lösung des Ordnungsbestimmungsproblems uns eine effiziente Lösung des ganzzahligen Faktorisierungsproblems gibt. (Wenn die Lösung eines Problems die Lösung eines anderen Problems liefert, sagen wir, dass das zweite Problem auf das erste reduziert — in diesem Fall reduzieren wir also die ganzzahlige Faktorisierung auf die Ordnungsbestimmung.) Dieser zweite Teil von Shors Algorithmus macht überhaupt keinen Gebrauch von Quantencomputing; er ist vollständig klassisch. Quantencomputing wird nur für die Ordnungsbestimmung benötigt.

Das Ordnungsbestimmungsproblem

Ein wenig Zahlentheorie

Um das Ordnungsbestimmungsproblem und seine Lösung durch Phasenschätzung zu erklären, hilft es, mit ein paar grundlegenden zahlentheoretischen Konzepten zu beginnen und dabei hilfreiche Notation einzuführen.

Zunächst definieren wir für eine beliebige positive ganze Zahl NN die Menge ZN\mathbb{Z}_N wie folgt.

ZN={0,1,,N1}\mathbb{Z}_N = \{0,1,\ldots,N-1\}

Zum Beispiel: Z1={0},  \mathbb{Z}_1 = \{0\},\; Z2={0,1},  \mathbb{Z}_2 = \{0,1\},\; Z3={0,1,2},  \mathbb{Z}_3 = \{0,1,2\},\; und so weiter.

Das sind Mengen von Zahlen, aber wir können sie als mehr als nur Mengen betrachten. Insbesondere können wir über arithmetische Operationen auf ZN\mathbb{Z}_N nachdenken, wie Addition und Multiplikation — und wenn wir uns darauf einigen, die Ergebnisse stets modulo NN zu nehmen (d. h. durch NN zu teilen und den Rest als Ergebnis zu verwenden), bleiben wir bei diesen Operationen immer in dieser Menge. Die beiden konkreten Operationen Addition und Multiplikation, beide modulo NN genommen, machen ZN\mathbb{Z}_N zu einem Ring, einem grundlegend wichtigen Objekt in der Algebra.

Zum Beispiel sind 33 und 55 Elemente von Z7\mathbb{Z}_7, und wenn wir sie multiplizieren, erhalten wir 35=153\cdot 5 = 15, was bei Division durch 77 den Rest 11 lässt. Das schreibt man manchmal so:

351  (mod 7)3 \cdot 5 \equiv 1 \; (\textrm{mod } 7)

Wenn klar ist, dass wir in Z7\mathbb{Z}_7 arbeiten, kann man aber auch einfach 35=13 \cdot 5 = 1 schreiben, um die Notation möglichst einfach zu halten.

Hier sind die Additions- und Multiplikationstabellen für Z6\mathbb{Z}_6 als Beispiel.

+012345001234511234502234501334501244501235501234012345000000010123452024024303030340420425054321\begin{array}{c|cccccc} + & 0 & 1 & 2 & 3 & 4 & 5 \\\hline 0 & 0 & 1 & 2 & 3 & 4 & 5 \\ 1 & 1 & 2 & 3 & 4 & 5 & 0 \\ 2 & 2 & 3 & 4 & 5 & 0 & 1 \\ 3 & 3 & 4 & 5 & 0 & 1 & 2 \\ 4 & 4 & 5 & 0 & 1 & 2 & 3 \\ 5 & 5 & 0 & 1 & 2 & 3 & 4 \\ \end{array} \qquad \begin{array}{c|cccccc} \cdot & 0 & 1 & 2 & 3 & 4 & 5 \\\hline 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 2 & 3 & 4 & 5 \\ 2 & 0 & 2 & 4 & 0 & 2 & 4 \\ 3 & 0 & 3 & 0 & 3 & 0 & 3 \\ 4 & 0 & 4 & 2 & 0 & 4 & 2 \\ 5 & 0 & 5 & 4 & 3 & 2 & 1 \\ \end{array}

Unter den NN Elementen von ZN\mathbb{Z}_N sind die Elemente aZNa\in\mathbb{Z}_N mit gcd(a,N)=1\gcd(a,N) = 1 besonders. Die Menge dieser Elemente wird häufig mit einem Stern bezeichnet:

ZN={aZN:gcd(a,N)=1}\mathbb{Z}_N^{\ast} = \{a\in \mathbb{Z}_N : \gcd(a,N) = 1\}

Betrachtet man nur die Multiplikation, bildet ZN\mathbb{Z}_N^{\ast} eine Gruppe — genauer eine abelsche Gruppe — ein weiteres wichtiges Objekt in der Algebra. Eine grundlegende Eigenschaft dieser Mengen (und endlicher Gruppen im Allgemeinen) ist, dass man für jedes aZNa\in\mathbb{Z}_N^{\ast}, wenn man aa wiederholt mit sich selbst multipliziert, schließlich immer die Zahl 11 erhält.

Als erstes Beispiel nehmen wir N=6N=6. Es gilt 5Z65\in\mathbb{Z}_6^{\ast}, da gcd(5,6)=1\gcd(5,6) = 1, und wenn wir 55 mit sich selbst multiplizieren, erhalten wir 11, wie die obige Tabelle bestätigt.

52=1(in Z6)5^2 = 1 \quad \text{(in $\mathbb{Z}_6$)}

Als zweites Beispiel nehmen wir N=21N = 21. Die Zahlen von 00 bis 2020, die mit 2121 den ggT 11 haben, sind:

Z21={1,2,4,5,8,10,11,13,16,17,19,20}\mathbb{Z}_{21}^{\ast} = \{1,2,4,5,8,10,11,13,16,17,19,20\}

Für jedes dieser Elemente kann man die Zahl zu einer positiven ganzzahligen Potenz erheben und erhält 11. Hier sind die kleinsten Potenzen, für die das funktioniert:

11=182=1163=126=1106=1176=143=1116=1196=156=1132=1202=1\begin{array}{ccc} 1^{1} = 1 \quad & 8^{2} = 1 \quad & 16^{3} = 1 \\[1mm] 2^{6} = 1 \quad & 10^{6} = 1 \quad & 17^{6} = 1 \\[1mm] 4^{3} = 1 \quad & 11^{6} = 1 \quad & 19^{6} = 1 \\[1mm] 5^{6} = 1 \quad & 13^{2} = 1 \quad & 20^{2} = 1 \end{array}

Wir arbeiten für alle diese Gleichungen in Z21\mathbb{Z}_{21}, was wir nicht explizit hinschreiben — es ist implizit gemeint, um die Notation übersichtlich zu halten. Das werden wir im Rest der Lektion beibehalten.

Problemformulierung und Verbindung zur Phasenschätzung

Jetzt können wir das Ordnungsbestimmungsproblem formulieren.

Ordnungsbestimmung

Eingabe: positive ganze Zahlen NN und aa mit gcd(N,a)=1\gcd(N,a) = 1
Ausgabe: die kleinste positive ganze Zahl rr mit ar1a^r \equiv 1 (mod N)(\textrm{mod } N)

Anders ausgedrückt: In der Notation von oben ist aZNa \in \mathbb{Z}_N^{\ast} gegeben, und wir suchen die kleinste positive ganze Zahl rr mit ar=1a^r = 1. Diese Zahl rr heißt die Ordnung von aa modulo NN.

Um das Ordnungsbestimmungsproblem mit der Phasenschätzung zu verbinden, betrachten wir die Operation auf einem System, dessen klassische Zustände ZN\mathbb{Z}_N entsprechen, bei der wir mit einem festen Element aZNa\in\mathbb{Z}_N^{\ast} multiplizieren.

Max=ax(fu¨r jedes xZN)M_a \vert x\rangle = \vert ax \rangle \qquad \text{(für jedes $x\in\mathbb{Z}_N$)}

Um das klarzustellen: Die Multiplikation findet in ZN\mathbb{Z}_N statt, also ist es implizit, dass wir das Produkt modulo NN im Ket auf der rechten Seite der Gleichung nehmen.

Nehmen wir zum Beispiel N=15N = 15 und a=2a=2. Die Wirkung von M2M_2 auf die Standardbasis {0,,14}\{\vert 0\rangle,\ldots,\vert 14\rangle\} ist:

M20=0M25=10M210=5M21=2M26=12M211=7M22=4M27=14M212=9M23=6M28=1M213=11M24=8M29=3M214=13\begin{array}{ccc} M_{2} \vert 0 \rangle = \vert 0\rangle \quad & M_{2} \vert 5 \rangle = \vert 10\rangle \quad & M_{2} \vert 10 \rangle = \vert 5\rangle \\[1mm] M_{2} \vert 1 \rangle = \vert 2\rangle \quad & M_{2} \vert 6 \rangle = \vert 12\rangle \quad & M_{2} \vert 11 \rangle = \vert 7\rangle \\[1mm] M_{2} \vert 2 \rangle = \vert 4\rangle \quad & M_{2} \vert 7 \rangle = \vert 14\rangle \quad & M_{2} \vert 12 \rangle = \vert 9\rangle \\[1mm] M_{2} \vert 3 \rangle = \vert 6\rangle \quad & M_{2} \vert 8 \rangle = \vert 1\rangle \quad & M_{2} \vert 13 \rangle = \vert 11\rangle \\[1mm] M_{2} \vert 4 \rangle = \vert 8\rangle \quad & M_{2} \vert 9 \rangle = \vert 3\rangle \quad & M_{2} \vert 14 \rangle = \vert 13\rangle \end{array}

Diese Operation ist unitär, sofern gcd(a,N)=1\gcd(a,N)=1; sie permutiert die Elemente der Standardbasis {0,,N1}\{\vert 0\rangle,\ldots,\vert N-1\rangle\}, ist also als Matrix eine Permutationsmatrix. Aus ihrer Definition ist offensichtlich, dass sie deterministisch ist, und eine einfache Möglichkeit, ihre Invertierbarkeit einzusehen, besteht darin, die Ordnung rr von aa modulo NN zu betrachten: Die Inverse von MaM_a ist Mar1M_a^{r-1}.

Mar1Ma=Mar=Mar=M1=IM_a^{r-1} M_a = M_a^r = M_{a^r} = M_1 = \mathbb{I}

Es gibt noch eine andere Sichtweise auf die Inverse, die kein Wissen über rr voraussetzt (was schließlich das ist, was wir berechnen wollen). Für jedes Element aZNa\in\mathbb{Z}_N^{\ast} gibt es immer ein eindeutiges Element bZNb\in\mathbb{Z}_N^{\ast} mit ab=1ab=1. Dieses Element bb bezeichnen wir mit a1a^{-1}, und es kann effizient berechnet werden; eine Erweiterung von Euklids ggT-Algorithmus erledigt das mit quadratischem Aufwand in lg(N)\operatorname{lg}(N). Damit gilt:

Ma1Ma=Ma1a=M1=I.M_{a^{-1}} M_a = M_{a^{-1}a} = M_1 = \mathbb{I}.

Die Operation MaM_a ist also sowohl deterministisch als auch invertierbar. Das bedeutet, dass sie durch eine Permutationsmatrix beschrieben wird und daher unitär ist.

Betrachten wir nun die Eigenvektoren und Eigenwerte der Operation MaM_a, unter der Annahme aZNa\in\mathbb{Z}_N^{\ast}. Wie gerade gezeigt, bedeutet diese Annahme, dass MaM_a unitär ist.

Es gibt NN Eigenwerte von MaM_a, möglicherweise inklusive Wiederholungen, und es gibt gewisse Freiheit bei der Wahl zugehöriger Eigenvektoren — aber wir brauchen uns nicht um alle Möglichkeiten zu kümmern. Beginnen wir einfach und identifizieren wir zunächst nur einen Eigenvektor von MaM_a.

ψ0=1+a++ar1r\vert \psi_0 \rangle = \frac{\vert 1 \rangle + \vert a \rangle + \cdots + \vert a^{r-1} \rangle}{\sqrt{r}}

Die Zahl rr ist die Ordnung von aa modulo NN, hier und im weiteren Verlauf der Lektion. Der zugehörige Eigenwert ist 11, da der Zustand bei Multiplikation mit aa unverändert bleibt.

Maψ0=a++ar1+arr=a++ar1+1r=ψ0M_a \vert \psi_0 \rangle = \frac{\vert a \rangle + \cdots + \vert a^{r-1} \rangle + \vert a^r \rangle}{\sqrt{r}} = \frac{\vert a \rangle + \cdots + \vert a^{r-1} \rangle + \vert 1 \rangle}{\sqrt{r}} = \vert \psi_0 \rangle

Das passiert, weil ar=1a^r = 1: jeder Standardbasiszustand ak\vert a^k \rangle wird für kr1k\leq r-1 auf ak+1\vert a^{k+1} \rangle verschoben, und ar1\vert a^{r-1} \rangle wird zurück auf 1\vert 1\rangle verschoben. Bildlich gesprochen rühren wir in ψ0\vert \psi_0 \rangle, aber da es bereits vollständig „durchgerührt" ist, ändert sich nichts.

Hier ist ein weiterer Eigenvektor von MaM_a. Dieser ist im Kontext von Ordnungsbestimmung und Phasenschätzung interessanter.

ψ1=1+ωr1a++ωr(r1)ar1r\vert \psi_1 \rangle = \frac{\vert 1 \rangle + \omega_r^{-1} \vert a \rangle + \cdots + \omega_r^{-(r-1)}\vert a^{r-1} \rangle}{\sqrt{r}}

Alternativ kann man diesen Vektor mit einer Summe schreiben:

ψ1=1rk=0r1ωrkak\vert \psi_1 \rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^k \rangle

Hier taucht die komplexe Zahl ωr=e2πi/r\omega_r = e^{2\pi i/r} auf natürliche Weise auf, bedingt durch die Weise, wie die Multiplikation mit aa modulo NN funktioniert. Der zugehörige Eigenwert ist dieses Mal ωr\omega_r. Das sehen wir folgendermaßen:

Maψ1=1rk=0r1ωrkMaak=1rk=0r1ωrkak+1=1rk=1rωr(k1)ak=1rωrk=1rωrkakM_a \vert \psi_1 \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} M_a\vert a^k \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^{k+1} \rangle = \frac{1}{\sqrt{r}}\sum_{k = 1}^{r} \omega_r^{-(k - 1)} \vert a^{k} \rangle = \frac{1}{\sqrt{r}}\omega_r \sum_{k = 1}^{r} \omega_r^{-k} \vert a^{k} \rangle

Da ωrr=1=ωr0\omega_r^{-r} = 1 = \omega_r^0 und ar=1=a0\vert a^r \rangle = \vert 1\rangle = \vert a^0\rangle, ergibt sich:

1rk=1rωrkak=1rk=0r1ωrkak=ψ1,\frac{1}{\sqrt{r}}\sum_{k = 1}^{r} \omega_r^{-k} \vert a^{k} \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^k \rangle = \vert\psi_1\rangle,

also Maψ1=ωrψ1M_a \vert\psi_1\rangle = \omega_r \vert\psi_1\rangle.

Mit demselben Argument können wir weitere Eigenvektor/Eigenwert-Paare für MaM_a identifizieren. Für jede Wahl von j{0,,r1}j\in\{0,\ldots,r-1\} gilt:

ψj=1rk=0r1ωrjkak\vert \psi_j \rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \omega_r^{-jk} \vert a^k \rangle

ist ein Eigenvektor von MaM_a mit dem zugehörigen Eigenwert ωrj\omega_r^j.

Maψj=ωrjψjM_a \vert \psi_j \rangle = \omega_r^j \vert \psi_j \rangle

Es gibt noch weitere Eigenvektoren von MaM_a, aber wir müssen uns nicht um sie kümmern — wir beschränken uns auf die Eigenvektoren ψ0,,ψr1\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle, die wir gerade identifiziert haben.

Ordnungsbestimmung durch Phasenschätzung

Um das Ordnungsbestimmungsproblem für eine gegebene Wahl aZNa\in\mathbb{Z}_N^{\ast} zu lösen, können wir das Phasenschätzungsverfahren auf die Operation MaM_a anwenden.

Dazu müssen wir nicht nur MaM_a effizient als Quantencircuit implementieren, sondern auch Ma2,M_a^2, Ma4,M_a^4, Ma8M_a^8 und so weiter, so weit wie nötig für eine ausreichend genaue Schätzung. Hier erklären wir, wie das gemacht werden kann, und wir werden später genau herausfinden, wie viel Präzision benötigt wird.

Fangen wir mit der Operation MaM_a an sich an. Da wir natürlich im Quantencircuit-Modell arbeiten, verwenden wir Binärdarstellung, um die Zahlen zwischen 00 und N1N-1 zu kodieren. Die größte Zahl, die wir kodieren müssen, ist N1N-1, die Anzahl der benötigten Bits ist also:

n=lg(N1)=log(N1)+1.n = \operatorname{lg}(N-1) = \lfloor \log(N-1) \rfloor + 1.

Für N=21N = 21 zum Beispiel gilt n=lg(N1)=5n = \operatorname{lg}(N-1) = 5. Hier ist die Kodierung der Elemente von Z21\mathbb{Z}_{21} als Binärstrings der Länge 55:

0000001000012010100\begin{gathered} 0 \mapsto 00000\\[1mm] 1 \mapsto 00001\\[1mm] \vdots\\[1mm] 20 \mapsto 10100 \end{gathered}

Und hier ist eine präzise Definition, wie MaM_a als nn-Qubit-Operation definiert wird:

Max={ax  (mod  N)0x<NxNx<2nM_a \vert x\rangle = \begin{cases} \vert ax \; (\textrm{mod}\;N)\rangle & 0\leq x < N\\[1mm] \vert x\rangle & N\leq x < 2^n \end{cases}

Es geht darum, dass wir zwar nur interessiert sind, wie MaM_a auf 0,,N1\vert 0\rangle,\ldots,\vert N-1\rangle wirkt, aber dennoch festlegen müssen, wie es auf die verbleibenden 2nN2^n - N Standardbasiszustände wirkt — und das so, dass die Operation unitär bleibt. MaM_a so zu definieren, dass es auf den verbleibenden Standardbasiszuständen nichts tut, erfüllt diese Anforderung.

Mithilfe der Algorithmen für ganzzahlige Multiplikation und Division, die in der vorherigen Lektion besprochen wurden, sowie der Methodik für reversible, müllfreie Implementierungen davon, können wir einen Quantencircuit für MaM_a bauen — für jede Wahl von aZNa\in\mathbb{Z}_N^{\ast} — mit Aufwand O(n2)O(n^2). Eine Möglichkeit ist folgende:

  1. Baue einen Circuit für die Operation

    xyxyfa(x)\vert x \rangle \vert y \rangle \mapsto \vert x \rangle \vert y \oplus f_a(x)\rangle

    wobei

    fa(x)={ax  (mod  N)0x<NxNx<2nf_a(x) = \begin{cases} ax \; (\textrm{mod}\;N) & 0\leq x < N\\[1mm] x & N\leq x < 2^n \end{cases}

    nach der in der vorherigen Lektion beschriebenen Methode. Das ergibt einen Circuit der Größe O(n2)O(n^2).

  2. Tausche die beiden nn-Qubit-Systeme mithilfe von nn Swap-Gates aus, indem du die Qubits einzeln tauschst.

  3. Analog zum ersten Schritt, baue einen Circuit für die Operation

    xyxyfa1(x)\vert x \rangle \vert y \rangle \mapsto \vert x \rangle \bigl\vert y \oplus f_{a^{-1}}(x)\bigr\rangle

    wobei a1a^{-1} die Inverse von aa in ZN\mathbb{Z}_N^{\ast} ist.

Durch Initialisierung der unteren nn Qubits und Komposition der drei Schritte erhält man folgende Transformation:

x0nSchritt 1xfa(x)Schritt 2fa(x)xSchritt 3fa(x)xfa1(fa(x))=fa(x)0n\vert x \rangle \vert 0^n \rangle \stackrel{\text{Schritt 1}}{\mapsto} \vert x \rangle \vert f_a(x)\rangle \stackrel{\text{Schritt 2}}{\mapsto} \vert f_a(x)\rangle \vert x \rangle \stackrel{\text{Schritt 3}}{\mapsto} \vert f_a(x)\rangle \bigl\vert x \oplus f_{a^{-1}}(f_a(x)) \bigr\rangle = \vert f_a(x)\rangle\vert 0^n \rangle

Die Methode benötigt Hilfs-Qubits, aber sie werden am Ende in ihren initialisierten Zustand zurückversetzt, was es uns erlaubt, diese Circuits für die Phasenschätzung zu verwenden. Der Gesamtaufwand des Circuits beträgt O(n2)O(n^2).

Um Ma2,M_a^2, Ma4,M_a^4, Ma8M_a^8 usw. zu implementieren, kann genau dieselbe Methode verwendet werden, außer dass wir aa durch a2,a^2, a4,a^4, a8a^8 usw. als Elemente von ZN\mathbb{Z}_N^{\ast} ersetzen. Das heißt: Für jede gewählte Potenz kk können wir einen Circuit für MakM_a^k erstellen, nicht indem wir den Circuit für MaM_a kk-mal iterieren, sondern indem wir b=akZNb = a^k \in \mathbb{Z}_N^{\ast} berechnen und dann den Circuit für MbM_b verwenden.

Die Berechnung von Potenzen akZNa^k \in \mathbb{Z}_N ist das modulare Exponentierungsproblem, das in der vorherigen Lektion erwähnt wurde. Diese Berechnung kann klassisch durchgeführt werden, mithilfe des dort erwähnten Algorithmus für modulare Exponentierung (in der rechnerischen Zahlentheorie oft Potenzalgorithmus genannt). Tatsächlich benötigen wir nur Zweierpotenzen von aa, nämlich a2,a4,a2m1ZNa^2, a^4, \ldots a^{2^{m-1}} \in \mathbb{Z}_N^{\ast}, und wir erhalten diese Potenzen durch iteriertes Quadrieren, m1m-1 Mal. Jedes Quadrieren kann durch einen booleschen Circuit der Größe O(n2)O(n^2) durchgeführt werden.

Im Wesentlichen verlagern wir hier das Problem, MaM_a bis zu 2m12^{m-1} Mal zu iterieren, auf eine effiziente klassische Berechnung. Und es ist ein glücklicher Umstand, dass das möglich ist! Bei einer beliebigen Wahl eines Quantencircuits im Phasenschätzungsproblem dürfte das nicht möglich sein — in diesem Fall wächst der Aufwand für die Phasenschätzung exponentiell in der Anzahl der Kontroll-Qubits mm.

Lösung mit einem geeigneten Eigenvektor

Um zu verstehen, wie wir das Ordnungsbestimmungsproblem durch Phasenschätzung lösen können, nehmen wir zunächst an, dass wir das Phasenschätzungsverfahren auf die Operation MaM_a mit dem Eigenvektor ψ1\vert\psi_1\rangle anwenden. Diesen Eigenvektor zu beschaffen ist — wie sich herausstellt — nicht einfach, daher ist das nicht das Ende der Geschichte — aber es ist hilfreich, hier zu beginnen.

Der Eigenwert von MaM_a, der zum Eigenvektor ψ1\vert \psi_1\rangle gehört, ist

ωr=e2πi1r.\omega_r = e^{2\pi i \frac{1}{r}}.

Das heißt, ωr=e2πiθ\omega_r = e^{2\pi i \theta} für θ=1/r\theta = 1/r. Wenn wir also das Phasenschätzungsverfahren auf MaM_a mit dem Eigenvektor ψ1\vert\psi_1\rangle anwenden, erhalten wir eine Approximation von 1/r1/r. Durch Berechnung des Kehrwerts können wir dann rr bestimmen — vorausgesetzt, unsere Approximation ist gut genug.

Genauer gesagt: Wenn wir das Phasenschätzungsverfahren mit mm Kontroll-Qubits durchführen, erhalten wir eine Zahl y{0,,2m1}y\in\{0,\ldots,2^m-1\}. Wir nehmen y/2my/2^m als Schätzung für θ\theta, also 1/r1/r in unserem Fall. Um rr aus dieser Approximation zu bestimmen, liegt es nahe, den Kehrwert der Schätzung zu berechnen und zur nächsten ganzen Zahl zu runden:

2my+12\left\lfloor \frac{2^m}{y} + \frac{1}{2} \right\rfloor

Nehmen wir zum Beispiel r=6r = 6 und führen wir die Phasenschätzung auf MaM_a mit dem Eigenvektor ψ1\vert\psi_1\rangle und m=5m = 5 Kontroll-Bits durch. Die beste 5-Bit-Approximation an 1/r=1/61/r = 1/6 ist 5/325/32, und wir erhalten mit ziemlich hoher Wahrscheinlichkeit (in diesem Fall etwa 68%68\%) das Ergebnis y=5y=5 aus der Phasenschätzung. Es gilt:

2my=325=6,4,\frac{2^m}{y} = \frac{32}{5} = 6{,}4,

und Runden zur nächsten ganzen Zahl ergibt 66, was die richtige Antwort ist.

Andererseits erhalten wir möglicherweise nicht die richtige Antwort, wenn wir nicht genug Präzision verwenden. Wenn wir zum Beispiel m=4m = 4 Kontroll-Qubits bei der Phasenschätzung nehmen, erhalten wir möglicherweise die beste 4-Bit-Approximation an 1/r=1/61/r = 1/6, nämlich 3/163/16. Der Kehrwert ergibt:

2my=163=5,333\frac{2^m}{y} = \frac{16}{3} = 5{,}333 \cdots

und Runden zur nächsten ganzen Zahl ergibt die falsche Antwort 55.

Wie viel Präzision benötigen wir also für die richtige Antwort? Wir wissen, dass die Ordnung rr eine ganze Zahl ist, und intuitiv brauchen wir genug Präzision, um 1/r1/r von benachbarten Möglichkeiten zu unterscheiden, darunter 1/(r+1)1/(r+1) und 1/(r1)1/(r-1). Die nächstgelegene Zahl zu 1/r1/r ist 1/(r+1)1/(r+1), und der Abstand zwischen diesen beiden Zahlen beträgt:

1r1r+1=1r(r+1).\frac{1}{r} - \frac{1}{r+1} = \frac{1}{r(r+1)}.

Um sicherzustellen, dass wir 1/r1/r nicht mit 1/(r+1)1/(r+1) verwechseln, reicht es daher aus, genug Präzision zu verwenden, damit eine beste Approximation y/2my/2^m an 1/r1/r näher an 1/r1/r liegt als an 1/(r+1)1/(r+1). Wenn wir genug Genauigkeit verwenden, sodass

y2m1r<12r(r+1),\left\vert \frac{y}{2^m} - \frac{1}{r} \right\vert < \frac{1}{2 r (r+1)},

der Fehler also kleiner als die Hälfte des Abstands zwischen 1/r1/r und 1/(r+1)1/(r+1) ist, dann liegt y/2my/2^m näher an 1/r1/r als an jeder anderen Möglichkeit, einschließlich 1/(r+1)1/(r+1) und 1/(r1)1/(r-1).

Zur Überprüfung: Angenommen,

y2m=1r+ε\frac{y}{2^m} = \frac{1}{r} + \varepsilon

für ε\varepsilon mit

ε<12r(r+1).\vert\varepsilon\vert < \frac{1}{2 r (r+1)}.

Beim Berechnen des Kehrwerts erhalten wir:

2my=11r+ε=r1+εr=rεr21+εr.\frac{2^m}{y} = \frac{1}{\frac{1}{r} + \varepsilon} = \frac{r}{1+\varepsilon r} = r - \frac{\varepsilon r^2}{1+\varepsilon r}.

Durch Maximierung im Zähler und Minimierung im Nenner können wir die Abweichung von rr begrenzen:

εr21+εrr22r(r+1)1r2r(r+1)=r2r+1<12\left\vert \frac{\varepsilon r^2}{1+\varepsilon r} \right\vert \leq \frac{ \frac{r^2}{2 r(r+1)}}{1 - \frac{r}{2r(r+1)}} %= \frac{r^2}{2 r (r+1) - r} = \frac{r}{2 r + 1} < \frac{1}{2}

Wir weichen weniger als 1/21/2 von rr ab, sodass wir beim Runden rr erhalten, wie erwartet.

Leider können wir, da wir rr noch nicht kennen, es nicht verwenden, um zu bestimmen, wie viel Genauigkeit wir benötigen. Stattdessen können wir die Tatsache nutzen, dass rr kleiner als NN sein muss, um sicherzustellen, dass wir genug Präzision verwenden. Genauer: Wenn wir genug Genauigkeit verwenden, um sicherzustellen, dass die beste Approximation y/2my/2^m an 1/r1/r erfüllt:

y2m1r12N2,\left\vert \frac{y}{2^m} - \frac{1}{r} \right\vert \leq \frac{1}{2N^2},

dann haben wir genug Präzision, um rr bei Berechnung des Kehrwerts korrekt zu bestimmen. Die Wahl m=2lg(N)+1m = 2\operatorname{lg}(N)+1 stellt sicher, dass wir mit der oben beschriebenen Methode eine hohe Chance haben, eine Schätzung mit dieser Präzision zu erhalten. (Die Wahl m=2lg(N)m = 2\operatorname{lg}(N) reicht aus, wenn man mit einer unteren Schranke von 40% für die Erfolgswahrscheinlichkeit zufrieden ist.)

Allgemeine Lösung

Wie wir gerade gesehen haben, können wir rr durch Phasenschätzung bestimmen, wenn wir den Eigenvektor ψ1\vert \psi_1 \rangle von MaM_a besitzen — vorausgesetzt, wir verwenden genug Kontroll-Qubits für ausreichende Präzision. Leider ist es nicht einfach, diesen Eigenvektor zu beschaffen, daher müssen wir einen Weg finden, ohne ihn auszukommen.

Angenommen, wir gehen genauso vor wie oben, aber mit dem Eigenvektor ψk\vert\psi_k\rangle anstelle von ψ1\vert\psi_1\rangle, für eine beliebige Wahl von k{0,,r1}k\in\{0,\ldots,r-1\}. Das Ergebnis des Phasenschätzungsverfahrens ist eine Approximation:

y2mkr.\frac{y}{2^m} \approx \frac{k}{r}.

Unter der Annahme, dass wir weder kk noch rr kennen, kann das uns rr verraten oder auch nicht. Wenn zum Beispiel k=0k = 0, erhalten wir eine Approximation y/2my/2^m an 00, was uns leider nichts sagt. Das ist jedoch ein Sonderfall; für andere Werte von kk können wir zumindest etwas über rr lernen.

Wir können einen Algorithmus namens Kettenbruchalgorithmus verwenden, um aus unserer Approximation y/2my/2^m benachbarte Brüche zu berechnen — einschließlich k/rk/r, wenn die Approximation gut genug ist. Den Kettenbruchalgorithmus erklären wir hier nicht. Stattdessen geben wir eine bekannte Aussage über diesen Algorithmus an.

Fakt

Für eine ganze Zahl N2N\geq 2 und eine reelle Zahl α(0,1)\alpha\in(0,1) gibt es höchstens eine Wahl von ganzen Zahlen u,v{0,,N1}u,v\in\{0,\ldots,N-1\} mit v0v\neq 0 und gcd(u,v)=1\gcd(u,v)=1, die αu/v<12N2\vert \alpha - u/v\vert < \frac{1}{2N^2} erfüllen. Gegeben α\alpha und NN, findet der Kettenbruchalgorithmus uu und vv, oder meldet, dass sie nicht existieren. Dieser Algorithmus kann als boolescher Circuit der Größe O((lg(N))3)O((\operatorname{lg}(N))^3) implementiert werden.

Haben wir eine sehr genaue Approximation y/2my/2^m an k/rk/r und führen den Kettenbruchalgorithmus für NN und α=y/2m\alpha = y/2^m aus, erhalten wir uu und vv wie im Fakt beschrieben. Eine Analyse des Fakts erlaubt uns zu schließen, dass:

uv=kr.\frac{u}{v} = \frac{k}{r}.

Beachte insbesondere, dass wir nicht notwendigerweise kk und rr bestimmen, sondern nur k/rk/r in gekürzter Form.

Wie bereits festgestellt, werden wir aus k=0k=0 nichts lernen. Aber das ist der einzige Wert von kk, bei dem das passiert. Wenn kk von null verschieden ist, kann es gemeinsame Teiler mit rr haben, aber die Zahl vv aus dem Kettenbruchalgorithmus muss zumindest ein Teiler von rr sein.

Es ist nicht offensichtlich, aber es stimmt: Wenn wir uu und vv für u/v=k/ru/v = k/r mit gleichmäßig zufällig gewähltem k{0,,r1}k\in\{0,\ldots,r-1\} bestimmen können, können wir rr mit hoher Wahrscheinlichkeit nach nur wenigen Stichproben ermitteln. Insbesondere: Wenn unsere Schätzung für rr das kleinste gemeinsame Vielfache aller beobachteten Nennerwerte vv ist, sind wir mit hoher Wahrscheinlichkeit richtig. Intuitiv sind einige Werte von kk problematisch, da sie gemeinsame Teiler mit rr haben, und diese gemeinsamen Teiler werden versteckt, wenn wir uu und vv erhalten. Aber zufällige Wahlen von kk verbergen Faktoren von rr nicht lange, und die Wahrscheinlichkeit, dass wir rr nicht korrekt bestimmen, indem wir das kleinste gemeinsame Vielfache der beobachteten Nenner nehmen, fällt exponentiell in der Anzahl der Stichproben.

Es bleibt die Frage, wie wir einen Eigenvektor ψk\vert\psi_k\rangle von MaM_a erhalten, auf dem wir das Phasenschätzungsverfahren ausführen. Wie sich herausstellt, müssen wir ihn gar nicht explizit erzeugen!

Stattdessen führen wir das Phasenschätzungsverfahren auf dem Zustand 1\vert 1\rangle aus — gemeint ist die nn-Bit-Binärkodierung der Zahl 11 — anstelle eines Eigenvektors ψ\vert\psi\rangle von MaM_a. Bislang haben wir das Phasenschätzungsverfahren nur für einen konkreten Eigenvektor beschrieben, aber nichts hindert uns daran, es auf einem Eingabezustand auszuführen, der kein Eigenvektor von MaM_a ist — und genau das tun wir hier mit dem Zustand 1\vert 1\rangle. (Das ist kein Eigenvektor von MaM_a, es sei denn a=1a=1, was uns nicht interessiert.)

Der Grund für die Wahl von 1\vert 1\rangle anstelle eines Eigenvektors von MaM_a ist, dass die folgende Gleichung gilt:

1=1rk=0r1ψk\vert 1\rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \vert \psi_k\rangle

Eine Möglichkeit, diese Gleichung zu überprüfen, besteht darin, die Skalarprodukte beider Seiten mit jedem Standardbasiszustand zu vergleichen und dabei frühere Formeln der Lektion zu verwenden. Dadurch erhalten wir genau dieselben Messergebnisse, als hätten wir k{0,,r1}k\in\{0,\ldots,r-1\} gleichmäßig zufällig gewählt und ψk\vert\psi_k\rangle als Eigenvektor verwendet.

Im Detail: Stellen wir uns vor, wir führen das Phasenschätzungsverfahren mit dem Zustand 1\vert 1\rangle anstelle eines der Eigenvektoren ψk\vert\psi_k\rangle aus. Nach der inversen Quanten-Fourier-Transformation verbleiben wir im Zustand:

1rk=0r1ψkγk,\frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \vert \psi_k\rangle \vert \gamma_k\rangle,

wobei

γk=12my=02m1x=02m1e2πix(k/ry/2m)y.\vert\gamma_k\rangle = \frac{1}{2^m} \sum_{y=0}^{2^m - 1} \sum_{x=0}^{2^m-1} e^{2\pi i x (k/r - y/2^m)} \vert y\rangle.

Der Vektor γk\vert\gamma_k\rangle beschreibt den Zustand der oberen mm Qubits nach der inversen Quanten-Fourier-Transformation.

Da {ψ0,,ψr1}\{\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle\} eine Orthonormalbasis ist, liefert eine Messung der oberen mm Qubits eine Approximation y/2my/2^m an den Wert k/rk/r, wobei k{0,,r1}k\in\{0,\ldots,r-1\} gleichmäßig zufällig gewählt wird. Wie bereits diskutiert, erlaubt uns das, rr mit hoher Zuverlässigkeit nach mehreren unabhängigen Läufen zu bestimmen — was unser Ziel war.

Gesamtkosten

Der Aufwand zur Implementierung jedes gesteuerten Unitären MakM_a^k beträgt O(n2)O(n^2). Es gibt mm gesteuerte unitäre Operationen, und da m=O(n)m = O(n), beträgt der Gesamtaufwand für die gesteuerten unitären Operationen O(n3)O(n^3). Hinzu kommen mm Hadamard-Gates (die O(n)O(n) zum Aufwand beitragen) und die inverse Quanten-Fourier-Transformation, die O(n2)O(n^2) beiträgt. Damit dominieren die gesteuerten unitären Operationen den Gesamtaufwand des Verfahrens — der also O(n3)O(n^3) beträgt.

Neben dem Quantencircuit selbst gibt es einige klassische Berechnungen, die unterwegs durchgeführt werden müssen. Das umfasst die Berechnung der Potenzen aka^k in ZN\mathbb{Z}_N für k=2,4,8,,2m1k = 2, 4, 8, \ldots, 2^{m-1}, die zur Erstellung der gesteuerten unitären Gates benötigt werden, sowie den Kettenbruchalgorithmus, der Approximationen von θ\theta in Brüche umwandelt. Diese Berechnungen können durch boolesche Circuits mit einem Gesamtaufwand von O(n3)O(n^3) durchgeführt werden.

Wie üblich können all diese Schranken durch asymptotisch schnellere Algorithmen verbessert werden; diese Schranken setzen Standard-Algorithmen für grundlegende arithmetische Operationen voraus.

Faktorisierung durch Ordnungsbestimmung

Das Letzte, was wir besprechen müssen, ist, wie die Lösung des Ordnungsbestimmungsproblems bei der Faktorisierung hilft. Dieser Teil ist vollständig klassisch — er hat nichts mit Quantencomputing zu tun.

Die Grundidee ist folgende. Wir möchten die Zahl NN faktorisieren und können das rekursiv tun. Konkret können wir uns auf die Aufgabe konzentrieren, NN zu teilen, d. h. zwei ganze Zahlen b,c2b,c\geq 2 zu finden, für die N=bcN = bc gilt. Das ist nicht möglich, wenn NN eine Primzahl ist, aber wir können mit einem Primzahltest zunächst effizient prüfen, ob NN prim ist, und wenn nicht, versuchen wir NN zu teilen. Sobald wir NN geteilt haben, können wir einfach rekursiv auf bb und cc vorgehen, bis alle Faktoren prim sind und wir die Primfaktorzerlegung von NN erhalten.

Gerade Zahlen zu teilen ist einfach: wir geben einfach 22 und N/2N/2 aus.

Auch vollständige Potenzen lassen sich leicht teilen — also Zahlen der Form N=sjN = s^j für ganze Zahlen s,j2s,j\geq 2 — indem man die Wurzeln N1/2,N^{1/2}, N1/3,N^{1/3}, N1/4N^{1/4} usw. approximiert und nahe gelegene ganze Zahlen als Kandidaten für ss prüft. Man muss dabei nicht weiter als log(N)\log(N) Schritte in dieser Folge gehen, denn ab dann fällt die Wurzel unter 22 und liefert keine weiteren Kandidaten.

Es ist gut, dass wir beides können, denn die Ordnungsbestimmung hilft weder bei der Faktorisierung gerader Zahlen noch bei Primzahlpotenzen, wo ss eine Primzahl ist. Ist NN jedoch ungerade und keine Primzahlpotenz, erlaubt uns die Ordnungsbestimmung, NN zu teilen.

Probabilistischer Algorithmus zum Teilen einer ungeraden zusammengesetzten ganzen Zahl N, die keine Primzahlpotenz ist
  1. Wähle zufällig a{2,,N1}a\in\{2,\ldots,N-1\}.

  2. Berechne d=gcd(a,N)d=\gcd(a,N).

  3. Falls d>1d > 1, gib b=db = d und c=N/dc = N/d aus und stoppe. Andernfalls fahre weiter, in dem Wissen, dass aZNa\in\mathbb{Z}_N^{\ast}.

  4. Sei rr die Ordnung von aa modulo NN. (Hier wird die Ordnungsbestimmung benötigt.)

  5. Falls rr gerade ist:

    5.1 Berechne x=ar/21x = a^{r/2} - 1 modulo NN
    5.2 Berechne d=gcd(x,N).d = \gcd(x,N).
    5.3 Falls d>1d>1, gib b=db=d und c=N/dc = N/d aus und stoppe.

  6. Wurde dieser Punkt erreicht, konnte der Algorithmus keinen Faktor von NN finden.

Ein Durchlauf dieses Algorithmus kann scheitern, einen Faktor von NN zu finden. Das passiert genau in zwei Situationen:

  • Die Ordnung von aa modulo NN ist ungerade.
  • Die Ordnung von aa modulo NN ist gerade und gcd(ar/21,N)=1\gcd\bigl(a^{r/2} - 1, N\bigr) = 1.

Mit elementarer Zahlentheorie lässt sich beweisen, dass für eine zufällige Wahl von aa mit Wahrscheinlichkeit mindestens 1/21/2 keines dieser Ereignisse eintritt. Genauer gesagt ist die Wahrscheinlichkeit, dass eines der Ereignisse eintritt, höchstens 2(m1)2^{-(m-1)}, wobei mm die Anzahl der verschiedenen Primfaktoren von NN ist — deshalb ist die Annahme, dass NN keine Primzahlpotenz ist, erforderlich. (Die Annahme, dass NN ungerade ist, wird für die Gültigkeit dieser Aussage ebenfalls benötigt.)

Das bedeutet, dass jeder Durchlauf mit mindestens 50% Wahrscheinlichkeit NN teilt. Wenn wir den Algorithmus tt Mal ausführen, wobei wir jedes Mal aa zufällig wählen, werden wir NN mit Wahrscheinlichkeit mindestens 12t1 - 2^{-t} erfolgreich teilen.

Die Grundidee des Algorithmus ist folgende. Wenn wir ein aa haben, für das die Ordnung rr von aa modulo NN gerade ist, dann ist r/2r/2 eine ganze Zahl und wir können die Zahlen

ar/21  (mod  N)undar/2+1  (mod  N)a^{r/2} - 1\; (\textrm{mod}\; N) \quad \text{und} \quad a^{r/2} + 1\; (\textrm{mod}\; N)

betrachten. Mit der Formel Z21=(Z+1)(Z1)Z^2 - 1 = (Z+1)(Z-1) folgt:

(ar/21)(ar/2+1)=ar1.\bigl(a^{r/2} - 1\bigr) \bigl(a^{r/2} + 1\bigr) = a^r - 1.

Wir wissen, dass ar  (mod  N)=1a^r \; (\textrm{mod}\; N) = 1 per Definition der Ordnung — was gleichbedeutend damit ist, dass NN das Produkt ar1a^r - 1 teilt. Das bedeutet, dass NN das Produkt

(ar/21)(ar/2+1)\bigl(a^{r/2} - 1\bigr) \bigl(a^{r/2} + 1\bigr)

teilt.

Damit das stimmt, müssen alle Primfaktoren von NN auch Primfaktoren von ar/21a^{r/2} - 1 oder ar/2+1a^{r/2} + 1 (oder beider) sein — und bei einer zufälligen Wahl von aa ist es unwahrscheinlich, dass alle Primfaktoren von NN nur einen der Terme teilen und keinen den anderen. Solange also einige der Primfaktoren von NN den ersten Term teilen und einige den zweiten, können wir durch Berechnung des ggT mit dem ersten Term einen nicht-trivialen Faktor von NN finden.