انتقل إلى المحتوى الرئيسي

خوارزمية شور

هنا سنتناول مسألة تحليل الأعداد الصحيحة إلى عواملها الأولية، ونرى كيف يمكن حلّها بكفاءة على حاسوب كمي باستخدام تقدير الطور. الخوارزمية التي سنصل إليها هي خوارزمية شور لتحليل الأعداد الصحيحة إلى عواملها. لم يصف شور خوارزميته تحديداً من منظور تقدير الطور، لكنها طريقة طبيعية وبديهية لشرح آلية عملها.

سنبدأ بمناقشة مسألة وسيطة تُعرف بـمسألة إيجاد الرتبة، ونرى كيف يوفر تقدير الطور حلاً لها. ثم سنرى كيف أن الحل الكفء لمسألة إيجاد الرتبة يعطينا حلاً كفئاً لمسألة تحليل الأعداد الصحيحة. (حين يوفر حل مسألة ما حلاً لمسألة أخرى بهذه الطريقة، نقول إن المسألة الثانية تختزل إلى الأولى — وفي حالتنا هذه نختزل تحليل الأعداد الصحيحة إلى إيجاد الرتبة.) هذا الجزء الثاني من خوارزمية شور لا يستخدم الحوسبة الكمية على الإطلاق؛ فهو كلاسيكي بالكامل. الحوسبة الكمية مطلوبة فقط لحل مسألة إيجاد الرتبة.

مسألة إيجاد الرتبة

بعض أساسيات نظرية الأعداد

لشرح مسألة إيجاد الرتبة وكيف يمكن حلّها باستخدام تقدير الطور، سيكون من المفيد أن نبدأ بمفهومين أساسيين من نظرية الأعداد، مع تقديم بعض الرموز المختصرة المفيدة في الطريق.

للبداية، لأي عدد صحيح موجب N,N, نعرّف المجموعة ZN\mathbb{Z}_N كالتالي.

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

مثلاً، Z1={0},  \mathbb{Z}_1 = \{0\},\; Z2={0,1},  \mathbb{Z}_2 = \{0,1\},\; Z3={0,1,2},  \mathbb{Z}_3 = \{0,1,2\},\; وهكذا.

هذه مجموعات من الأعداد، لكن يمكننا التفكير فيها بأكثر من كونها مجرد مجموعات. تحديداً، يمكننا التفكير في العمليات الحسابية على ZN\mathbb{Z}_N كالجمع والضرب — وإذا اتفقنا على أخذ النتائج دائماً مودولو NN (أي القسمة على NN وأخذ الباقي كنتيجة)، فسنبقى دائماً داخل هذه المجموعة عند إجراء هذه العمليات. العمليتان المحددتان للجمع والضرب، كلتاهما مودولو N,N, تحوّلان ZN\mathbb{Z}_N إلى حلقة، وهي نوع أساسي بالغ الأهمية في الجبر.

مثلاً، 33 و 55 عنصران في Z7,\mathbb{Z}_7, وإذا ضربناهما معاً نحصل على 35=15,3\cdot 5 = 15, التي تعطي باقياً مقداره 11 عند القسمة على 7.7. نعبّر عن هذا أحياناً كالتالي.

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

لكن يمكننا أيضاً الكتابة 35=13 \cdot 5 = 1 ببساطة، بشرط أن يكون واضحاً أننا نعمل في Z7\mathbb{Z}_7، وذلك للإبقاء على رموزنا بسيطة قدر الإمكان.

كمثال، إليك جدولا الجمع والضرب لـ Z6.\mathbb{Z}_6.

+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}

من بين عناصر ZN\mathbb{Z}_N الـ NN، العناصر aZNa\in\mathbb{Z}_N التي تحقق gcd(a,N)=1\gcd(a,N) = 1 هي عناصر خاصة. في الغالب تُرمز المجموعة التي تحتوي هذه العناصر بنجمة كالتالي.

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

إذا ركّزنا اهتمامنا على عملية الضرب، فإن المجموعة ZN\mathbb{Z}_N^{\ast} تشكّل زمرة — تحديداً زمرة أبيلية — وهي نوع مهم آخر في الجبر. من الحقائق الأساسية حول هذه المجموعات (والزمر المنتهية بشكل عام) أننا إذا اخترنا أي عنصر aZNa\in\mathbb{Z}_N^{\ast} وضربناه في نفسه مراراً، سنصل في النهاية دائماً إلى العدد 1.1.

كمثال أول، لنأخذ N=6.N=6. لدينا 5Z65\in\mathbb{Z}_6^{\ast} لأن gcd(5,6)=1,\gcd(5,6) = 1, وإذا ضربنا 55 في نفسه نحصل على 1,1, كما يؤكد الجدول أعلاه.

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

كمثال ثانٍ، لنأخذ N=21.N = 21. إذا مررنا على الأعداد من 00 إلى 2020، فتلك التي يكون القاسم المشترك الأكبر لها مع 2121 مساوياً لـ 11 هي:

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\}

لكل عنصر من هذه العناصر، يمكن رفع ذلك العدد إلى قوة صحيحة موجبة للحصول على 1.1. إليك أصغر هذه القوى:

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}

بطبيعة الحال، نحن نعمل داخل Z21\mathbb{Z}_{21} في كل هذه المعادلات، وهو ما لم نكتبه صراحةً — تركناه ضمنيًا حتى لا تتشعب الأمور. وسنكمل على هذا النهج طوال بقية الدرس.

صياغة المسألة والربط بتخمين الطور

الآن يمكننا نصيغ مسألة إيجاد الرتبة.

إيجاد الرتبة

المدخلات: عددان صحيحان موجبان NN و aa بحيث gcd(N,a)=1\gcd(N,a) = 1
المخرجات: أصغر عدد صحيح موجب rr بحيث ar1a^r \equiv 1 (mod N)(\textrm{mod } N)

بعبارة أخرى، بالترميز الذي قدّمناه للتو، المعطيات هي aZN,a \in \mathbb{Z}_N^{\ast}, ونبحث عن أصغر عدد صحيح موجب rr بحيث ar=1.a^r = 1. هذا العدد rr يُسمّى رتبة aa بالقياس إلى N.N.

للربط بين مسألة إيجاد الرتبة وتخمين الطور، تأمّل العملية المُعرَّفة على منظومة تتوافق حالاتها الكلاسيكية مع ZN,\mathbb{Z}_N, حيث نضرب في عنصر ثابت aZN.a\in\mathbb{Z}_N^{\ast}.

Max=ax(for each xZN)M_a \vert x\rangle = \vert ax \rangle \qquad \text{(for each $x\in\mathbb{Z}_N$)}

لنوضّح: الضرب هنا يجري داخل ZN,\mathbb{Z}_N, أي أنه يُقاس بالنسبة إلى NN ضمنيًا داخل ket في طرف المعادلة الأيمن.

مثلاً، إذا أخذنا N=15N = 15 و a=2,a=2, فإن تأثير M2M_2 على الأساس القياسي {0,,14}\{\vert 0\rangle,\ldots,\vert 14\rangle\} يكون كالتالي.

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}

هذه عملية وحدوية بشرط أن gcd(a,N)=1؛\gcd(a,N)=1؛ فهي تُعيد ترتيب عناصر الأساس القياسي {0,,N1},\{\vert 0\rangle,\ldots,\vert N-1\rangle\}, وبالتالي كمصفوفة هي مصفوفة تبديل. يتضح من تعريفها أن هذه العملية حتمية، وأبسط طريقة لرؤية أنها قابلة للعكس هي التفكير في رتبة rr لـ aa بالقياس إلى N,N, وإدراك أن معكوس MaM_a هو Mar1.M_a^{r-1}.

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

ثمة طريقة أخرى للتفكير في المعكوس لا تستلزم معرفة rr (الذي هو بالأصل ما نسعى لحسابه). لكل عنصر aZNa\in\mathbb{Z}_N^{\ast} يوجد دائمًا عنصر وحيد bZNb\in\mathbb{Z}_N^{\ast} يحقق ab=1.ab=1. نرمز لهذا العنصر bb بالرمز a1,a^{-1}, ويمكن حسابه بكفاءة؛ إذ يؤدي ذلك امتداد خوارزمية إقليدس لإيجاد القاسم المشترك الأكبر بتكلفة تربيعية في lg(N).\operatorname{lg}(N). وبالتالي

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

إذن، العملية MaM_a حتمية وقابلة للعكس في آنٍ واحد. وهذا يعني أنها تتمثّل بمصفوفة تبديل، وهي بالتالي وحدوية.

الآن لنفكّر في المتجهات الذاتية والقيم الذاتية للعملية Ma,M_a, بافتراض أن aZN.a\in\mathbb{Z}_N^{\ast}. كما قلنا للتو، هذا الافتراض يُخبرنا أن MaM_a وحدوية.

لـ MaM_a عدد NN من القيم الذاتية، قد تتكرر بعضها، وثمة حرية عمومًا في اختيار المتجهات الذاتية المقابلة — لكننا لن نحتاج للقلق بشأن كل الاحتمالات. لنبدأ بشكل مبسّط ونحدد متجهًا ذاتيًا واحدًا فقط لـ Ma.M_a.

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

العدد rr هو رتبة aa بالقياس إلى N,N, هنا وفي كل ما تبقى من الدرس. القيمة الذاتية المرتبطة بهذا المتجه الذاتي هي 11 لأنه لا يتغيّر عند الضرب في a.a.

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

يحدث هذا لأن ar=1,a^r = 1, وبالتالي كل حالة أساسية قياسية ak\vert a^k \rangle تنتقل إلى ak+1\vert a^{k+1} \rangle لـ kr1,k\leq r-1, وتعود ar1\vert a^{r-1} \rangle إلى 1.\vert 1\rangle. بعبارة بسيطة، الأمر كأننا نُحرّك ψ0\vert \psi_0 \rangle ببطء، لكنه ممزوج تمامًا أصلًا فلا يتغيّر شيء.

وهنا مثال آخر على متجه ذاتي لـ Ma.M_a. هذا المثال بالذات أكثر إثارةً للاهتمام في سياق إيجاد الرتبة وتخمين الطور.

ψ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}}

يمكننا أيضًا كتابة هذا المتجه بصيغة مجموع كالتالي.

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

هنا نرى العدد المركّب ωr=e2πi/r\omega_r = e^{2\pi i/r} يظهر بشكل طبيعي، نتيجةً لطريقة عمل الضرب في aa بالقياس إلى N.N. القيمة الذاتية المقابلة هذه المرة هي ωr.\omega_r. لنتحقق من ذلك بالحساب أولاً.

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

ثم، لأن ωrr=1=ωr0\omega_r^{-r} = 1 = \omega_r^0 و ar=1=a0,\vert a^r \rangle = \vert 1\rangle = \vert a^0\rangle, نرى أن

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,

إذن Maψ1=ωrψ1.M_a \vert\psi_1\rangle = \omega_r \vert\psi_1\rangle.

باستخدام نفس المنطق، يمكننا تحديد أزواج إضافية من المتجهات الذاتية/القيم الذاتية لـ Ma.M_a. لأي اختيار j{0,,r1}j\in\{0,\ldots,r-1\} يكون

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

هو متجه ذاتي لـ MaM_a وقيمته الذاتية المقابلة هي ωrj.\omega_r^j.

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

في الواقع، هناك متجهات ذاتية أخرى لـ Ma,M_a, لكن ما يهمنا هنا هو المتجهات ψ0,,ψr1\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle التي حددناها للتو فقط.

إيجاد الرتبة عن طريق تقدير الطور

لحل مسألة إيجاد الرتبة لاختيار معين aZN,a\in\mathbb{Z}_N^{\ast}, يمكننا تطبيق إجراء تقدير الطور على العملية Ma.M_a.

لعمل هذا، نحتاج أن نُنفّذ ليس فقط MaM_a بكفاءة في دائرة كمومية، بل أيضًا Ma2,M_a^2, Ma4,M_a^4, Ma8,M_a^8, وهكذا، بالقدر الكافي للحصول على تقدير دقيق من إجراء تقدير الطور. هنا سنشرح كيف يمكن تحقيق هذا، وسنحدد لاحقًا بالضبط كمية الدقة المطلوبة.

لنبدأ بالعملية MaM_a لوحدها. بطبيعة الحال، بما أننا نشتغل بنموذج الدائرة الكمومية، سنستخدم النظام الثنائي لترميز الأعداد بين 00 وN1.N-1. أكبر عدد نحتاج لترميزه هو N1,N-1, وعدد البتات المطلوبة هو

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

مثلاً، إذا كان N=21N = 21 فعندنا n=lg(N1)=5.n = \operatorname{lg}(N-1) = 5. هكذا يبدو ترميز عناصر Z21\mathbb{Z}_{21} كسلاسل ثنائية بطول 5.5.

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

والآن، هذا هو التعريف الدقيق لكيفية تعريف MaM_a كعملية على nn كيوبت.

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}

المقصود هنا أنه رغم أننا نهتم فقط بكيفية عمل MaM_a على 0,,N1,\vert 0\rangle,\ldots,\vert N-1\rangle, إلا أننا مضطرين لتحديد كيف تعمل على الحالات القاعدية الأساسية الـ2nN2^n - N المتبقية — وهذا بطريقة تُبقي العملية يونيتارية. تعريف MaM_a بحيث لا تفعل شيئًا على الحالات الأساسية المتبقية يحقق هذا الشرط.

باستخدام خوارزميات ضرب الأعداد الصحيحة والقسمة التي ناقشناها في الدرس السابق، مع منهجية التنفيذ القابل للعكس وخالي من القمامة، يمكننا بناء دائرة كمومية تُنفّذ Ma,M_a, لأي اختيار aZN,a\in\mathbb{Z}_N^{\ast}, بتكلفة O(n2).O(n^2). إليك طريقة واحدة لعمل هذا.

  1. ابنِ دائرة لتنفيذ العملية

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

    حيث

    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}

    باستخدام الطريقة المشروحة في الدرس السابق. هذا يعطينا دائرة بحجم O(n2).O(n^2).

  2. بادل نظامَي الـnn كيوبت باستخدام nn بوابة مبادلة لتبادل الكيوبتات بشكل فردي.

  3. بطريقة مشابهة للخطوة الأولى، ابنِ دائرة للعملية

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

    حيث a1a^{-1} هو معكوس aa في ZN.\mathbb{Z}_N^{\ast}.

بتهيئة الـnn كيوبت السفلية وتركيب الخطوات الثلاث، نحصل على هذا التحويل:

x0nstep 1xfa(x)step 2fa(x)xstep 3fa(x)xfa1(fa(x))=fa(x)0n\vert x \rangle \vert 0^n \rangle \stackrel{\text{step 1}}{\mapsto} \vert x \rangle \vert f_a(x)\rangle \stackrel{\text{step 2}}{\mapsto} \vert f_a(x)\rangle \vert x \rangle \stackrel{\text{step 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

الطريقة تحتاج كيوبتات فضاء عمل، لكنها تُعاد إلى حالتها الأولية في النهاية، مما يتيح لنا استخدام هذه الدوائر في تقدير الطور. التكلفة الإجمالية للدائرة التي نحصل عليها هي O(n2).O(n^2).

لتنفيذ Ma2,M_a^2, Ma4,M_a^4, Ma8,M_a^8, وهكذا، يمكننا استخدام نفس الطريقة بالضبط، باستثناء أننا نستبدل aa بـa2,a^2, a4,a^4, a8,a^8, وهكذا، كعناصر في ZN.\mathbb{Z}_N^{\ast}. يعني، لأي قوة kk نختارها، يمكننا إنشاء دائرة لـMakM_a^k ليس بتكرار دائرة MaM_a لـkk مرة، بل بحساب b=akZNb = a^k \in \mathbb{Z}_N^{\ast} ثم استخدام الدائرة الخاصة بـMb.M_b.

حساب القوى akZNa^k \in \mathbb{Z}_N هو مسألة الأس النموذجي المذكورة في الدرس السابق. يمكن إجراء هذا الحساب بشكل كلاسيكي، باستخدام خوارزمية الأس النموذجي المذكورة في الدرس السابق (التي يُطلق عليها غالبًا خوارزمية القوة في نظرية الأعداد الحسابية). في الواقع، نحتاج فقط لقوى أسس-2 لـa,a, تحديدًا a2,a4,a2m1ZN,a^2, a^4, \ldots a^{2^{m-1}} \in \mathbb{Z}_N^{\ast}, ويمكننا الحصول على هذه القوى بالتربيع المتكرر m1m-1 مرة. كل عملية تربيع يمكن تنفيذها بدائرة منطقية بحجم O(n2).O(n^2).

في جوهر الأمر، ما نقوم به هنا هو نقل مشكلة تكرار MaM_a لما يصل إلى 2m12^{m-1} مرة إلى حساب كلاسيكي فعّال. وهذا من حسن الحظ أنه ممكن! لاختيار عشوائي لدائرة كمومية في مسألة تقدير الطور، هذا على الأرجح لن يكون ممكنًا — وفي ذلك الحال تنمو التكلفة الناتجة لتقدير الطور بشكل أسي في عدد كيوبتات التحكم m.m.

الحل بوجود متجه ذاتي ملائم

لفهم كيف يمكننا حل مسألة إيجاد الرتبة باستخدام تقدير الطور، لنبدأ بافتراض أننا نُشغّل إجراء تقدير الطور على العملية MaM_a باستخدام المتجه الذاتي ψ1.\vert\psi_1\rangle. الحصول على هذا المتجه الذاتي ليس بالأمر السهل كما سيتضح، لذا هذه ليست نهاية القصة — لكنه من المفيد أن نبدأ من هنا.

القيمة الذاتية لـMaM_a المقابلة للمتجه الذاتي ψ1\vert \psi_1\rangle هي

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

أي أن ωr=e2πiθ\omega_r = e^{2\pi i \theta} حيث θ=1/r.\theta = 1/r. إذن، إذا شغّلنا إجراء تقدير الطور على MaM_a باستخدام المتجه الذاتي ψ1,\vert\psi_1\rangle, سنحصل على تقريب لـ1/r.1/r. بحساب المقلوب سنتمكن من معرفة rr — بشرط أن يكون تقريبنا كافيًا.

بمزيد من التفصيل، عندما نُشغّل إجراء تقدير الطور باستخدام mm كيوبت تحكم، ما نحصل عليه هو عدد y{0,,2m1}.y\in\{0,\ldots,2^m-1\}. نأخذ بعدها y/2my/2^m كتخمين لـθ,\theta, وهو 1/r1/r في حالتنا هذه. لمعرفة rr من هذا التقريب، الشيء الطبيعي هو حساب مقلوب تقريبنا والتقريب إلى أقرب عدد صحيح.

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

على سبيل المثال، لنفترض أن r=6r = 6 وأننا نُجري تقدير الطور على MaM_a بالمتجه الذاتي ψ1\vert\psi_1\rangle باستخدام m=5m = 5 بتات تحكم. أفضل تقريب من 55 بتات لـ 1/r=1/61/r = 1/6 هو 5/32,5/32, ولدينا احتمال جيد (حوالي 68%68\% في هذه الحالة) للحصول على النتيجة y=5y=5 من تقدير الطور. لدينا

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

والتقريب إلى أقرب عدد صحيح يعطي 6,6, وهو الجواب الصحيح.

من ناحية أخرى، إذا لم نستخدم دقة كافية، قد لا نحصل على الجواب الصحيح. مثلاً، إذا أخذنا m=4m = 4 كيوبتات تحكم في تقدير الطور، قد نحصل على أفضل تقريب من 44 بتات لـ 1/r=1/6,1/r = 1/6, وهو 3/16.3/16. أخذ المعكوس يعطي

2my=163=5.333\frac{2^m}{y} = \frac{16}{3} = 5.333 \cdots

والتقريب إلى أقرب عدد صحيح يعطي جواباً خاطئاً وهو 5.5.

إذن كم من الدقة نحتاج للحصول على الجواب الصحيح؟ نعرف أن الرتبة rr عدد صحيح، وبشكل حدسي ما نحتاجه هو دقة كافية لتمييز 1/r1/r عن الاحتمالات القريبة منها، بما فيها 1/(r+1)1/(r+1) و 1/(r1).1/(r-1). أقرب عدد من 1/r1/r يجب أن نأخذه بالحسبان هو 1/(r+1),1/(r+1), والمسافة بين هذين العددين هي

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

لذلك، إذا أردنا التأكد من أننا لن نخلط بين 1/r1/r و 1/(r+1),1/(r+1), يكفي استخدام دقة كافية لضمان أن أفضل تقريب y/2my/2^m لـ 1/r1/r يكون أقرب إلى 1/r1/r منه إلى 1/(r+1).1/(r+1). إذا استخدمنا دقة كافية بحيث

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

بحيث يكون الخطأ أقل من نصف المسافة بين 1/r1/r و 1/(r+1),1/(r+1), فسيكون y/2my/2^m أقرب إلى 1/r1/r من أي احتمال آخر، بما فيها 1/(r+1)1/(r+1) و 1/(r1).1/(r-1).

يمكننا التحقق من هذا على النحو التالي. لنفترض أن

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

حيث ε\varepsilon يحقق

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

عند أخذ المعكوس نحصل على

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

بالتكبير في البسط والتصغير في المقام، يمكننا تقدير مدى بُعدنا عن rr كالتالي.

ε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}

نحن أقل من 1/21/2 بعيداً عن r,r, لذا كما هو متوقع سنحصل على rr عند التقريب.

للأسف، لأننا لا نعرف rr بعد، لا يمكننا استخدامه لمعرفة مقدار الدقة التي نحتاجها. ما يمكننا فعله بدلاً من ذلك هو الاستفادة من حقيقة أن rr يجب أن يكون أصغر من NN لضمان استخدام دقة كافية. تحديداً، إذا استخدمنا دقة كافية لضمان أن أفضل تقريب y/2my/2^m لـ 1/r1/r يحقق

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

فستكون لدينا دقة كافية لتحديد rr بشكل صحيح عند أخذ المعكوس. أخذ m=2lg(N)+1m = 2\operatorname{lg}(N)+1 يضمن أن لدينا فرصة جيدة للحصول على تقدير بهذه الدقة باستخدام الطريقة الموصوفة سابقاً. (أخذ m=2lg(N)m = 2\operatorname{lg}(N) يكفي إذا كنا مرتاحين لحد أدنى 40%40\% على احتمال النجاح.)

الحل العام

كما رأينا للتو، إذا كان لدينا المتجه الذاتي ψ1\vert \psi_1 \rangle لـ Ma,M_a, يمكننا معرفة rr عبر تقدير الطور، طالما استخدمنا عدداً كافياً من كيوبتات التحكم لتحقيق هذا بدقة كافية. للأسف، ليس من السهل الحصول على المتجه الذاتي ψ1,\vert\psi_1\rangle, لذا نحتاج لمعرفة كيف نتابع.

لنفترض لحظةً أننا نتابع تماماً كما في الأعلى، لكن مع المتجه الذاتي ψk\vert\psi_k\rangle بدلاً من ψ1,\vert\psi_1\rangle, لأي اختيار k{0,,r1}k\in\{0,\ldots,r-1\} نريد التفكير فيه. النتيجة التي نحصل عليها من إجراء تقدير الطور ستكون تقريباً

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

بافتراض أننا لا نعرف kk ولا r,r, هذا قد يسمح لنا أو لا يسمح لنا بتحديد r.r. مثلاً، إذا كان k=0k = 0 سنحصل على تقريب y/2my/2^m لـ 0,0, وهذا للأسف لا يخبرنا بشيء. لكن هذه حالة غير شائعة؛ بالنسبة لقيم kk الأخرى، سنتمكن على الأقل من تعلم شيء عن r.r.

يمكننا استخدام خوارزمية تُعرف بـ خوارزمية الكسور المتسلسلة لتحويل تقريبنا y/2my/2^m إلى كسور قريبة — بما فيها k/rk/r إذا كان التقريب جيداً بما يكفي. لن نشرح خوارزمية الكسور المتسلسلة هنا. بدلاً من ذلك، إليك حقيقة معروفة عن هذه الخوارزمية.

حقيقة

بالنظر إلى عدد صحيح N2N\geq 2 وعدد حقيقي α(0,1),\alpha\in(0,1), يوجد على الأكثر اختيار واحد من الأعداد الصحيحة u,v{0,,N1}u,v\in\{0,\ldots,N-1\} مع v0v\neq 0 و gcd(u,v)=1\gcd(u,v)=1 يحقق αu/v<12N2.\vert \alpha - u/v\vert < \frac{1}{2N^2}. بمعطى α\alpha و N,N, تجد خوارزمية الكسور المتسلسلة uu و v,v, أو تُبلّغ بعدم وجودهما. يمكن تنفيذ هذه الخوارزمية كدائرة منطقية بحجم O((lg(N))3).O((\operatorname{lg}(N))^3).

إذا كان لدينا تقريب قريب جداً y/2my/2^m لـ k/r,k/r, وشغّلنا خوارزمية الكسور المتسلسلة لـ NN و α=y/2m,\alpha = y/2^m, سنحصل على uu و vv كما هما موصوفان في الحقيقة. تحليل الحقيقة يسمح لنا بالاستنتاج أن

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

لاحظ تحديداً أننا لا نتعلم بالضرورة kk و r,r, بل نتعلم فقط k/rk/r بصورتها المبسّطة.

على سبيل المثال، وكما لاحظنا سابقاً، لن نتعلم أي شيء من k=0.k=0. لكن هذه هي القيمة الوحيدة لـ kk التي يحدث فيها هذا. عندما يكون kk غير صفري، قد يكون له عوامل مشتركة مع r,r, لكن العدد vv الذي نحصل عليه من خوارزمية الكسور المتسلسلة يجب أن يقسم rr على الأقل.

هذا ليس واضحاً على الإطلاق، لكنه صحيح: إذا كان لدينا القدرة على معرفة uu و vv حيث u/v=k/ru/v = k/r لـ k{0,,r1}k\in\{0,\ldots,r-1\} مختارة بشكل عشوائي منتظم، فمن المرجح جداً أن نتمكن من استرداد rr بعد عدد قليل من العينات. تحديداً، إذا كان تخميننا لـ rr هو المضاعف المشترك الأصغر لجميع قيم المقام vv التي نلاحظها، سنكون محقين باحتمال عالٍ.

بشكل حدسي، بعض قيم kk ليست مفيدة لأنها تشترك في عوامل مشتركة مع r,r, وهذه العوامل المشتركة تكون خفية علينا لما نعرف uu و v.v. لكن الاختيارات العشوائية لـ kk ما يُرجَّح أنها تخفي عوامل rr لفترة طويلة، واحتمال أننا ما نخمّن rr صح بأخذ المضاعف المشترك الأصغر للمقامات التي نلاحظها يقل بشكل أسي مع عدد العينات.

لا يزال علينا أن نعالج مسألة كيف نحصل على متجه ذاتي ψk\vert\psi_k\rangle لـ MaM_a من أجل تشغيل إجراء تقدير الطور عليه. والحقيقة، لا نحتاج إلى إنشائها في الأصل!

ما سنفعله بدلاً من ذلك هو تشغيل إجراء تقدير الطور على الحالة 1,\vert 1\rangle, ونقصد بها الترميز الثنائي بـ nn بت للعدد 1,1, بدلاً من متجه ذاتي ψ\vert\psi\rangle لـ Ma.M_a. حتى الآن تكلمنا فقط عن تشغيل إجراء تقدير الطور على متجه ذاتي معين، لكن ما في شيء يمنعنا من تشغيل الإجراء على حالة دخل ليست متجهاً ذاتياً لـ Ma,M_a, وهذا بالضبط ما نفعله هنا مع الحالة 1.\vert 1\rangle. (هذه ليست متجهاً ذاتياً لـ MaM_a إلا إذا كان a=1,a=1, وهو اختيار لسنا مهتمين به.)

المبرر لاختيار الحالة 1\vert 1\rangle بدلاً من متجه ذاتي لـ MaM_a هو أن المعادلة التالية صحيحة.

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

طريقة للتحقق من هذه المعادلة هي مقارنة الضرب الداخلي للطرفين مع كل حالة أساسية قياسية، مستخدمين الصيغ المذكورة سابقاً في الدرس للمساعدة في تقييم نتائج الطرف الأيمن. كنتيجة لذلك، سنحصل على نفس نتائج القياس بالضبط كأننا اخترنا k{0,,r1}k\in\{0,\ldots,r-1\} بشكل موحد عشوائي واستخدمنا ψk\vert\psi_k\rangle كمتجه ذاتي.

بتفصيل أكثر، لنتخيل أننا نشغّل إجراء تقدير الطور مع الحالة 1\vert 1\rangle بدلاً من أحد المتجهات الذاتية ψk.\vert\psi_k\rangle. بعد أداء تحويل فورييه الكمومي العكسي، يتركنا هذا مع الحالة

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

حيث

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

المتجه γk\vert\gamma_k\rangle يمثل حالة الكيوبتات الـ mm العلوية بعد تطبيق عكس تحويل فورييه الكمومي عليها.

إذن، بفضل حقيقة أن {ψ0,,ψr1}\{\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle\} مجموعة متعامدة معيارية، نجد أن قياس الكيوبتات الـ mm العلوية يعطي تقريباً y/2my/2^m للقيمة k/rk/r حيث يُختار k{0,,r1}k\in\{0,\ldots,r-1\} بشكل موحد عشوائي. كما ناقشنا بالفعل، هذا يسمح لنا بمعرفة rr بدرجة عالية من الثقة بعد عدة تشغيلات مستقلة، وهذا كان هدفنا.

التكلفة الإجمالية

تكلفة تنفيذ كل وحدة تحكم موحدة MakM_a^k هي O(n2).O(n^2). هناك mm من عمليات الوحدة الموحدة المتحكم بها، ولدينا m=O(n),m = O(n), لذا التكلفة الإجمالية لعمليات الوحدة الموحدة المتحكم بها هي O(n3).O(n^3). بالإضافة إلى ذلك، لدينا mm بوابة هادامارد (تساهم بـ O(n)O(n) في التكلفة)، وتحويل فورييه الكمومي العكسي يساهم بـ O(n2)O(n^2) في التكلفة. إذن، تكلفة عمليات الوحدة الموحدة المتحكم بها تهيمن على تكلفة الإجراء كله — وبالتالي هي O(n3).O(n^3).

بالإضافة إلى الدائرة الكمومية نفسها، هناك بعض الحسابات الكلاسيكية التي نحتاج إلى أدائها على طول الطريق. هذا يشمل حساب القوى aka^k في ZN\mathbb{Z}_N لـ k=2,4,8,,2m1,k = 2, 4, 8, \ldots, 2^{m-1}, وهي مطلوبة لإنشاء بوابات الوحدة الموحدة المتحكم بها، إلى جانب خوارزمية الكسور المستمرة التي تحوّل تقريبات θ\theta إلى كسور. يمكن أداء هذه الحسابات بدوائر بوليانية بتكلفة إجمالية O(n3).O(n^3).

كما هو معتاد، يمكن تحسين كل هذه الحدود باستخدام خوارزميات سريعة مقارباً؛ هذه الحدود تفترض أننا نستخدم خوارزميات قياسية للعمليات الحسابية الأساسية.

التحليل إلى عوامل عبر إيجاد الرتبة

آخر شيء محتاجين نناقشه هو كيف يساعدنا حل مسألة إيجاد الرتبة في التحليل إلى عوامل. هذا الجزء كلاسيكي تماماً — ما له علاقة تحديداً بالحوسبة الكمومية.

إليك الفكرة الأساسية. نريد تحليل العدد NN إلى عوامل، ويمكننا فعل ذلك بشكل تعاودي. تحديداً، يمكننا التركيز على مهمة تقسيم N,N, التي تعني إيجاد أي عددين صحيحين b,c2b,c\geq 2 بحيث N=bc.N = bc. هذا ليس ممكناً لو NN عدد أولي، لكن يمكننا التحقق بكفاءة إذا كان NN أولياً باستخدام خوارزمية اختبار الأولية أولاً، وإذا لم يكن NN أولياً سنحاول تقسيمه. بمجرد أن نقسّم N,N, يمكننا تطبيق التعاود على bb و cc حتى تصير كل عواملنا أولية ونحصل على التحليل الأولي لـ N.N.

تقسيم الأعداد الزوجية سهل: نُخرج فقط 22 و N/2.N/2.

من السهل أيضاً تقسيم القوى الكاملة، يعني الأعداد بالصيغة N=sjN = s^j للأعداد الصحيحة s,j2,s,j\geq 2, فقط بـ تقريب الجذور N1/2,N^{1/2}, N1/3,N^{1/3}, N1/4,N^{1/4}, وهكذا، والتحقق من الأعداد الصحيحة القريبة كمرشحين لـ s.s. ما نحتاج نتجاوز log(N)\log(N) خطوة في هذا التسلسل، لأن عند تلك النقطة الجذر ينزل عن 22 ولن يكشف مرشحين إضافيين.

من الجيد أننا نستطيع فعل كلا الأمرين لأن إيجاد الرتبة لن يساعدنا في تحليل الأعداد الزوجية أو القوى الأولية, حيث يكون العدد ss أولياً. لكن لو كان NN فردياً وليس قوة أولية، فإيجاد الرتبة يسمح لنا بتقسيم N.N.

خوارزمية احتمالية لتقسيم عدد صحيح مركّب فردي N ليس قوة أولية
  1. اختر عشوائياً a{2,,N1}.a\in\{2,\ldots,N-1\}.

  2. احسب d=gcd(a,N).d=\gcd(a,N).

  3. إذا كان d>1d > 1 فأخرج b=db = d و c=N/dc = N/d وأوقف. وإلا استمر للخطوة التالية مع العلم أن aZN.a\in\mathbb{Z}_N^{\ast}.

  4. ليكن rr هو رتبة aa مودولو N.N. (هنا نحتاج إيجاد الرتبة.)

  5. إذا كان rr زوجياً:

    5.1 احسب x=ar/21x = a^{r/2} - 1 مودولو NN
    5.2 احسب d=gcd(x,N).d = \gcd(x,N).
    5.3 إذا كان d>1d>1 فأخرج b=db=d و c=N/dc = N/d وأوقف.

  6. إذا وصلنا لهذه النقطة، الخوارزمية فشلت في إيجاد عامل لـ N.N.

تشغيل هذه الخوارزمية قد يفشل في إيجاد عامل لـ N.N. تحديداً، هذا يحدث في حالتين:

  • رتبة aa مودولو NN هي فردية.
  • رتبة aa مودولو NN زوجية و gcd(ar/21,N)=1.\gcd\bigl(a^{r/2} - 1, N\bigr) = 1.

باستخدام نظرية الأعداد الأساسية يمكن إثبات أنه، لاختيار عشوائي لـ a,a, باحتمال لا يقل عن 1/21/2 لا يحدث أيٌّ من هذين الحدثين. في الواقع، احتمال أن يحدث أي من الحدثين لا يتجاوز 2(m1)2^{-(m-1)} حيث mm هو عدد العوامل الأولية المتمايزة لـ N,N, وهذا هو سبب الحاجة لافتراض أن NN ليست قوة أولية. (افتراض أن NN فردية مطلوب أيضاً لصحة هذه الحقيقة.)

هذا يعني أن كل تشغيل لديه فرصة لا تقل عن 50% لتقسيم N.N. لذا، لو شغّلنا الخوارزمية tt مرة، مع اختيار aa عشوائياً كل مرة، سننجح في تقسيم NN باحتمال لا يقل عن 12t.1 - 2^{-t}.

الفكرة الأساسية وراء الخوارزمية هي كالتالي. لو لدينا اختيار لـ aa حيث الرتبة rr لـ aa مودولو NN زوجية، فإن r/2r/2 عدد صحيح ويمكننا النظر في الأعداد

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

باستخدام الصيغة Z21=(Z+1)(Z1),Z^2 - 1 = (Z+1)(Z-1), نستنتج أن

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

الآن، نعرف أن ar  (mod  N)=1a^r \; (\textrm{mod}\; N) = 1 بتعريف الرتبة — وهذه طريقة أخرى للقول أن NN تقسّم ar1a^r - 1 بالتساوي. هذا يعني أن NN تقسّم الحاصل

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

لكي يكون هذا صحيحاً، يجب أن تكون كل العوامل الأولية لـ NN أيضاً عوامل أولية لـ ar/21a^{r/2} - 1 أو ar/2+1a^{r/2} + 1 (أو كليهما) — ولاختيار عشوائي لـ aa يتبيّن أنه من غير المرجح أن تقسّم كل العوامل الأولية لـ NN أحد الحدّين دون أن تقسّم الآخر.