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

خوارزمية سايمون

خوارزمية سايمون هي خوارزمية استعلام كمومية لمسألة تُعرف بـ مسألة سايمون. هذه مسألة وعد (promise problem) تشبه في طابعها مسألتَي دويتش-جوزا وبرنشتاين-فازيراني، لكنها تختلف عنهما في التفاصيل.

تتميز خوارزمية سايمون بأنها تحقق ميزة أسية للحوسبة الكمومية على الخوارزميات الكلاسيكية (بما فيها الاحتمالية)، كما أن الأسلوب الذي تستخدمه ألهم بيتر شور في اكتشافه خوارزمية كمومية فعّالة لتحليل الأعداد إلى عواملها الأولية.

مسألة سايمون

دالة الإدخال في مسألة سايمون تأخذ الشكل

f:ΣnΣmf:\Sigma^n \rightarrow \Sigma^m

لأعداد صحيحة موجبة nn و m.m. يمكن الاقتصار على حالة m=nm = n لتبسيط الأمر، لكن لا فائدة كبيرة من هذا الافتراض — فخوارزمية سايمون وتحليلها تبقيان في جوهرهما متطابقتين في الحالتين.

مسألة سايمون

المدخل: دالة f:ΣnΣmf:\Sigma^n \rightarrow \Sigma^m
الوعد: يوجد سلسلة sΣns\in\Sigma^n بحيث [f(x)=f(y)][(x=y)(xs=y)][f(x) = f(y)] \Leftrightarrow [(x = y) \vee (x \oplus s = y)] لكل x,yΣnx,y\in\Sigma^n
المخرج: السلسلة ss

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

ثمة حالتان رئيسيتان: الأولى أن تكون ss هي السلسلة الصفرية الكاملة 0n0^n، والثانية أن تكون ss غير ذلك.

  • الحالة الأولى: s=0n.s=0^n. إذا كانت ss هي السلسلة الصفرية، فيمكن تبسيط عبارة "إذا وفقط إذا" في الوعد لتصبح [f(x)=f(y)][x=y].[f(x) = f(y)] \Leftrightarrow [x = y]. وهذا يعادل كون ff دالة واحد-إلى-واحد (أحادية الاتجاه).

  • الحالة الثانية: s0n.s\neq 0^n. إذا لم تكن ss هي السلسلة الصفرية، فإن استيفاء الوعد لهذه السلسلة يعني أن ff هي دالة اثنين-إلى-واحد، أي أن لكل سلسلة إخراج ممكنة من ff اثنتين فقط من سلاسل الإدخال تُنتجانها. علاوة على ذلك، يجب أن تأخذ هاتان السلسلتان شكل ww و wsw \oplus s لسلسلة ما w.w.

المهم أن ندرك أنه لا يمكن أن تكون هناك إلا سلسلة ss واحدة تعمل إذا استُوفي الوعد، أي أن الإجابة الصحيحة دائماً فريدة للدوال التي تستوفي الوعد.

إليك مثالاً على دالة من الشكل f:Σ3Σ5f:\Sigma^3 \rightarrow \Sigma^5 تستوفي الوعد للسلسلة s=011.s = 011.

f(000)=10011f(001)=00101f(010)=00101f(011)=10011f(100)=11010f(101)=00001f(110)=00001f(111)=11010\begin{aligned} f(000) & = 10011 \\ f(001) & = 00101 \\ f(010) & = 00101 \\ f(011) & = 10011 \\ f(100) & = 11010 \\ f(101) & = 00001 \\ f(110) & = 00001 \\ f(111) & = 11010 \end{aligned}

يوجد 88 سلاسل إدخال مختلفة و 44 سلاسل إخراج مختلفة، تظهر كل منها مرتين — وهذا يجعلها دالة اثنين-إلى-واحد. فضلاً عن ذلك، لأي سلسلتَي إدخال مختلفتين تنتجان نفس سلسلة الإخراج، نجد أن XOR البتي لهاتين السلسلتين يساوي 011011، وهو ما يعادل القول بأن كلاً منهما تساوي الأخرى بعد XOR مع s.s.

لاحظ أن الشيء الوحيد المهم في سلاسل الإخراج الفعلية هو ما إذا كانت متطابقة أو مختلفة لاختيارات مختلفة من سلاسل الإدخال. على سبيل المثال، في المثال أعلاه، ثمة أربع سلاسل (10011,10011, 00101,00101, 00001,00001, و 1101011010) تظهر كمخرجات لـ f.f. يمكننا استبدال هذه السلاسل الأربع بسلاسل مختلفة، طالما أنها متمايزة، ولن يتغير الحل الصحيح s=011.s = 011.

وصف الخوارزمية

إليك مخطط دائرة كمومية يمثل خوارزمية سايمون.

خوارزمية سايمون

توضيحاً، يوجد nn كيوبت في الأعلى تؤثر عليها بوابات هادامار، و mm كيوبت في الأسفل تدخل مباشرة إلى بوابة الاستعلام. تبدو الخوارزمية مشابهة جداً للخوارزميات التي ناقشناها سابقاً في الدرس، لكن هذه المرة لا يوجد ركل طور (phase kickback)؛ إذ تدخل الـ mm كيوبت السفلية جميعها إلى بوابة الاستعلام في الحالة 0.\vert 0\rangle.

حل مسألة سايمون باستخدام هذه الدائرة يستلزم في الواقع تشغيلها عدة مرات مستقلة يتبعها خطوة معالجة كلاسيكية، سنصفها لاحقاً بعد تحليل سلوك الدائرة.

التحليل

يبدأ تحليل خوارزمية سايمون بطريقة مشابهة لخوارزمية دويتش-جوزا. بعد تطبيق الطبقة الأولى من بوابات هادامار على الـ nn كيوبت العليا، تصبح الحالة

12nxΣn0mx.\frac{1}{\sqrt{2^n}} \sum_{x\in\Sigma^n} \vert 0^m \rangle \vert x\rangle.

عند تطبيق UfU_f، تُضاف XOR خرج الدالة ff على الحالة الصفرية للـ mm كيوبت السفلية، لتصبح الحالة

12nxΣnf(x)x.\frac{1}{\sqrt{2^n}} \sum_{x\in\Sigma^n} \vert f(x) \rangle \vert x\rangle.

عند تطبيق الطبقة الثانية من بوابات هادامار، نحصل على الحالة التالية باستخدام نفس صيغة تأثير طبقة بوابات هادامار كما سبق.

12nxΣnyΣn(1)xyf(x)y\frac{1}{2^n} \sum_{x\in\Sigma^n} \sum_{y\in\Sigma^n} (-1)^{x\cdot y} \vert f(x) \rangle \vert y\rangle

عند هذه النقطة، يختلف التحليل عن تحليل الخوارزميات السابقة في هذا الدرس.

نحن مهتمون باحتمال أن تُفضي القياسات إلى كل سلسلة ممكنة yΣn.y\in\Sigma^n. باستخدام قواعد تحليل القياسات الموضحة في درس الأنظمة المتعددة من دورة أساسيات المعلومات الكمومية، نجد أن الاحتمال p(y)p(y) للحصول على السلسلة yy يساوي

p(y)=12nxΣn(1)xyf(x)2.p(y) = \left\|\frac{1}{2^n} \sum_{x\in\Sigma^n} (-1)^{x\cdot y} \vert f(x) \rangle \right\|^2.

للتعامل بشكل أفضل مع هذه الاحتمالات، نحتاج إلى قدر بسيط من الرموز والمصطلحات. أولاً، مجال القيم (range) للدالة ff هو المجموعة التي تحتوي على جميع سلاسل مخرجاتها.

range(f)={f(x):xΣn}\operatorname{range}(f) = \{ f(x) : x\in \Sigma^n \}

ثانياً، لكل سلسلة zrange(f)z\in\operatorname{range}(f)، يمكن التعبير عن مجموعة جميع سلاسل الإدخال التي تجعل الدالة تُخرج zz بالصيغة f1({z}).f^{-1}(\{z\}).

f1({z})={xΣn:f(x)=z}f^{-1}(\{z\}) = \{ x\in\Sigma^n : f(x) = z \}

تُسمى المجموعة f1({z})f^{-1}(\{z\}) الصورة العكسية (preimage) لـ {z}\{z\} تحت f.f. يمكن تعريف الصورة العكسية تحت ff لأي مجموعة بالمثل — فهي مجموعة جميع العناصر التي تُعين عليها ff إلى تلك المجموعة. (لا ينبغي الخلط بين هذه الصيغة وعكس الدالة ff، الذي قد لا يوجد. كون الوسيط في الجانب الأيسر هو المجموعة {z}\{z\} وليس العنصر zz هو ما يُميّز الحالتين.)

باستخدام هذه الصياغة، يمكننا تقسيم المجموع في تعبيرنا للاحتمالات أعلاه للحصول على

p(y)=12nzrange(f)(xf1({z})(1)xy)z2.p(y) = \left\| \frac{1}{2^n} \sum_{z\in\operatorname{range}(f)} \Biggl(\sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y}\Biggr) \vert z \rangle \right\|^2.

تُمثَّل كل سلسلة xΣnx\in\Sigma^n مرة واحدة بالضبط في المجموعين — نحن نضع هذه السلاسل في دلاء منفصلة حسب سلسلة الإخراج z=f(x)z = f(x) التي تُنتجها عند تقييم الدالة ff، ثم نجمع على كل دلو على حدة.

يمكننا الآن تقييم مربع القاعدة الإقليدية للحصول على

p(y)=122nzrange(f)xf1({z})(1)xy2.p(y) = \frac{1}{2^{2n}} \sum_{z\in\operatorname{range}(f)} \left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2.

لتبسيط هذه الاحتمالات أكثر، لنلقِ نظرة على القيمة

xf1({z})(1)xy2(1)\left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2 \tag{1}

لاختيار عشوائي من zrange(f).z\in\operatorname{range}(f).

إذا كان s=0ns = 0^n، فإن ff هي دالة واحد-إلى-واحد وهناك دائماً عنصر واحد فقط xf1({z})x\in f^{-1}(\{z\})، لكل zrange(f).z\in\operatorname{range}(f). قيمة التعبير (1)(1) في هذه الحالة هي 11.

إذا كان s0ns\neq 0^n من ناحية أخرى، فإن هناك سلسلتين بالضبط في المجموعة f1({z}).f^{-1}(\{z\}). بدقة، إذا اخترنا wf1({z})w\in f^{-1}(\{z\}) لتكون إحدى هاتين السلسلتين، فإن السلسلة الأخرى يجب أن تكون wsw \oplus s وفقاً للوعد في مسألة سايمون. باستخدام هذه الملاحظة يمكننا تبسيط (1)(1) كما يلي.

xf1({z})(1)xy2=(1)wy+(1)(ws)y2=(1)wy(1+(1)sy)2=1+(1)ys2={4ys=00ys=1\begin{aligned} \left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2 & = \Bigl\vert (-1)^{w\cdot y} + (-1)^{(w\oplus s)\cdot y} \Bigr\vert^2 \\ & = \Bigl\vert (-1)^{w\cdot y} \Bigl(1 + (-1)^{s\cdot y}\Bigr) \Bigr\vert^2 \\ & = \Bigl\vert 1 + (-1)^{y\cdot s} \Bigr\vert^2 \\ & = \begin{cases} 4 & y \cdot s = 0\\[1mm] 0 & y \cdot s = 1 \end{cases} \end{aligned}

اتضح إذن أن القيمة (1)(1) مستقلة عن الاختيار المحدد لـ zrange(f)z\in\operatorname{range}(f) في كلتا الحالتين.

يمكننا الآن استكمال التحليل بدراسة نفس الحالتين السابقتين كل على حدة.

  • الحالة الأولى: s=0n.s = 0^n. في هذه الحالة ff هي دالة واحد-إلى-واحد، إذن هناك 2n2^n سلسلة zrange(f)z\in\operatorname{range}(f)، ونحصل على

    p(y)=122n2n=12n.p(y) = \frac{1}{2^{2n}} \cdot 2^n = \frac{1}{2^n}.

    بعبارة أخرى، تُنتج القياسات سلسلة yΣny\in\Sigma^n مختارة بالتساوي عشوائياً.

  • الحالة الثانية: s0n.s \neq 0^n. في هذه الحالة ff هي دالة اثنين-إلى-واحد، إذن هناك 2n12^{n-1} عنصراً في range(f).\operatorname{range}(f). باستخدام الصيغة أعلاه نستنتج أن احتمال قياس كل yΣny\in\Sigma^n هو

    p(y)=122nzrange(f)xf1({z})(1)xy2={12n1ys=00ys=1p(y) = \frac{1}{2^{2n}} \sum_{z\in\operatorname{range}(f)} \Biggl\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \Biggr\vert^2 = \begin{cases} \frac{1}{2^{n-1}} & y \cdot s = 0\\[1mm] 0 & y \cdot s = 1 \end{cases}

    بعبارة أخرى، نحصل على سلسلة مختارة بالتساوي عشوائياً من المجموعة {yΣn:ys=0}\{y\in\Sigma^n : y \cdot s = 0\}، التي تحتوي على 2n12^{n-1} سلسلة. (بما أن s0ns\neq 0^n، فإن نصف السلاسل الثنائية بالضبط بطول nn لها حاصل ضرب نقطي ثنائي يساوي 11 مع ss والنصف الآخر يساوي 00، كما لاحظنا سابقاً في تحليل خوارزمية دويتش-جوزا لمسألة برنشتاين-فازيراني.)

المعالجة الكلاسيكية اللاحقة

نعرف الآن ما هي احتمالات نتائج القياس الممكنة عند تشغيل الدائرة الكمومية لخوارزمية سايمون. هل هذا كافٍ لتحديد ss؟

الجواب نعم، شريطة أن نكون مستعدين لتكرار العملية عدة مرات وقبول احتمال فشل صغير، يمكن تقليصه بتشغيل الدائرة عدداً كافياً من المرات. الفكرة الأساسية هي أن كل تشغيل للدائرة يمدنا بأدلة إحصائية حول ss، ويمكننا استخدام هذه الأدلة لإيجاد ss باحتمال مرتفع جداً إذا شغّلنا الدائرة عدداً كافياً من المرات.

لنفترض أننا نشغّل الدائرة بشكل مستقل kk مرة، حيث k=n+10.k = n + 10. لا يوجد شيء مميز في هذا العدد تحديداً — يمكن اختيار kk أكبر أو أصغر حسب احتمال الفشل المقبول، كما سنرى. اختيار k=n+10k = n + 10 سيضمن احتمالاً يزيد على 99.999.9% في استرداد s.s.

بتشغيل الدائرة kk مرة، نحصل على سلاسل y1,...,ykΣn.y^1,...,y^{k} \in \Sigma^n. المؤشرات العلوية هنا جزء من أسماء هذه السلاسل وليست أسساً أو مؤشرات للبتات، لذا لدينا

y1=yn11y01y2=yn12y02    yk=yn1ky0k\begin{aligned} y^1 & = y^1_{n-1} \cdots y^1_{0}\\[1mm] y^2 & = y^2_{n-1} \cdots y^2_{0}\\[1mm] & \;\; \vdots\\[1mm] y^{k} & = y^{k}_{n-1} \cdots y^{k}_{0} \end{aligned}

نُشكّل الآن مصفوفة MM بـ kk صفاً و nn عموداً باتخاذ بتات هذه السلاسل إدخالات ذات قيم ثنائية.

M=(yn11y01yn12y02yn1ky0k)M = \begin{pmatrix} y^1_{n-1} & \cdots & y^1_{0}\\[1mm] y^2_{n-1} & \cdots & y^2_{0}\\[1mm] \vdots & \ddots & \vdots \\[1mm] y^{k}_{n-1} & \cdots & y^{k}_{0} \end{pmatrix}

الآن، لا نعرف ما هي ss في هذه المرحلة — هدفنا إيجاد هذه السلسلة. لكن تخيّل للحظة أننا نعرف السلسلة ss، وأننا نُشكّل متجهاً عمودياً vv من بتات السلسلة s=sn1s0s = s_{n-1} \cdots s_0 كما يلي.

v=(sn1s0)v = \begin{pmatrix} s_{n-1}\\ \vdots\\ s_0 \end{pmatrix}

إذا أجرينا ضرب المصفوفة بالمتجه MvM v بالتحويل modulo 22 — أي نُجري الضرب بالطريقة المعتادة ثم نأخذ باقي قسمة عناصر النتيجة على 22 — نحصل على متجه الأصفار.

Mv=(y1sy2syks)=(000)M v = \begin{pmatrix} y^1 \cdot s\\ y^2 \cdot s\\ \vdots\\[1mm] y^{k} \cdot s \end{pmatrix} = \begin{pmatrix} 0\\ 0\\ \vdots\\[1mm] 0 \end{pmatrix}

أي أن السلسلة ss ستكون دائماً عنصراً في الفضاء الصفري (null space) للمصفوفة MM معاملَةً كمتجه عمودي vv كما وصفنا، شريطة إجراء الحسابات بالتحويل modulo 22. وهذا صحيح في حالتَي s=0ns = 0^n و s0ns\neq 0^n على حد سواء. بدقة أكبر، متجه الأصفار موجود دائماً في الفضاء الصفري لـ MM، وينضم إليه المتجه الذي عناصره بتات ss في حالة s0n.s\neq 0^n.

السؤال المتبقي هو ما إذا كانت توجد متجهات أخرى في الفضاء الصفري لـ MM غير تلك المقابلة لـ 0n0^n و ss. الإجابة هي أن هذا يصبح أقل احتمالاً كلما زاد kk — وإذا اخترنا k=n+10k = n + 10، لن يحتوي الفضاء الصفري لـ MM على متجهات أخرى بخلاف تلك المقابلة لـ 0n0^n و ss باحتمال يزيد على 99.999.9%. بشكل عام، إذا استبدلنا k=n+10k = n + 10 بـ k=n+rk = n + r لاختيار عشوائي من عدد صحيح موجب rr، فإن احتمال انفراد المتجهين المقابلين لـ 0n0^n و ss في الفضاء الصفري لـ MM هو على الأقل 12r.1 - 2^{-r}.

باستخدام الجبر الخطي، يمكن حساب وصف الفضاء الصفري لـ MM بالتحويل modulo 22 بكفاءة. تحديداً، يمكن فعل ذلك باستخدام الحذف الغاوسي (Gaussian elimination)، الذي يعمل بنفس الطريقة عند إجراء الحساب modulo 22 كما هو الحال مع الأعداد الحقيقية أو المركبة. طالما أن المتجهين المقابلين لـ 0n0^n و ss هما وحدهما في الفضاء الصفري لـ MM، وهو ما يحدث باحتمال مرتفع، يمكننا استنتاج ss من نتائج هذا الحساب.

الصعوبة الكلاسيكية

كم استعلاماً تحتاج خوارزمية استعلام كلاسيكية لحل مسألة سايمون؟ الجواب: كثيراً جداً بوجه عام.

ثمة عبارات دقيقة مختلفة يمكن صياغتها حول الصعوبة الكلاسيكية لهذه المسألة، وإليك واحدة منها. إذا كان لدينا أي خوارزمية استعلام احتمالية أجرت أقل من 2n/2112^{n/2 - 1} - 1 استعلاماً — وهو عدد استعلامات أسي في nn — فستفشل في حل مسألة سايمون باحتمال لا يقل عن 1/2.1/2.

أحياناً يكون إثبات نتائج استحالة من هذا القبيل أمراً صعباً للغاية، لكن هذا الإثبات ليس صعباً كثيراً ويمكن تقديمه عبر تحليل احتمالي أولي. لكننا هنا سنكتفي بالنظرة العامة خلف الحدس الأساسي.

نحن نحاول إيجاد السلسلة المخفية ss، لكن طالما لم نستعلم عن الدالة بسلسلتين لهما نفس قيمة الإخراج، ستحصل على معلومات محدودة جداً حول ss. بصورة بديهية، كل ما ستتعلمه هو أن السلسلة المخفية ss ليست XOR أي سلسلتين متمايزتين استُعلم عنهما. وإذا كان الاستعلام عن أقل من 2n/2112^{n/2 - 1} - 1 سلسلة، ستبقى هناك خيارات كثيرة لـ ss لم يُستبعَد أيٌّ منها لأن الأزواج غير كافية لذلك. هذا ليس إثباتاً رسمياً، بل الفكرة الأساسية فحسب.

إذن، خلاصة القول، تمنحنا خوارزمية سايمون ميزة لافتة للكم على الكلاسيك في نموذج الاستعلام. تحديداً، تحل خوارزمية سايمون مسألة سايمون بعدد استعلامات خطي في عدد بتات الإدخال nn للدالة، بينما تحتاج أي خوارزمية كلاسيكية، حتى لو كانت احتمالية، إلى عدد استعلامات أسي في nn لحل مسألة سايمون باحتمال نجاح معقول.