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

شيفرة شور ذات 9 كيوبتات

ننتقل الآن إلى شيفرة شور ذات 9 كيوبتات، وهي شيفرة تصحيح أخطاء كمومية تُستخلص بدمج الشيفرتين اللتين درسناهما في القسم السابق: شيفرة التكرار الثلاثي للكيوبتات، التي تتيح تصحيح خطأ قلب بت واحد، والنسخة المعدَّلة منها، التي تتيح تصحيح خطأ قلب طور واحد.

وصف الشيفرة

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

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

Encoding circuit for the 9-qubit Shor code showing three blocks

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

يمكننا بدلاً من ذلك تحديد الشيفرة بوصف كيفية ترميز حالتَي الأساس القياسي للكيوبت الأصلي.

0122(000+111)(000+111)(000+111)1122(000111)(000111)(000111)\begin{aligned} \vert 0\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \otimes (\vert 000\rangle + \vert 111\rangle) \\[4mm] \vert 1\rangle & \:\mapsto\: \frac{1}{2\sqrt{2}} (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \otimes (\vert 000\rangle - \vert 111\rangle) \end{aligned}

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

تصحيح أخطاء قلب البت وقلب الطور

الأخطاء وبوابات CNOT

لتحليل تأثير أخطاء XX وZZ على ترميزات الكيوبتات، سواء في شيفرة شور ذات 9 كيوبتات أو في شيفرات أخرى، سيكون من المفيد ملاحظة بعض العلاقات البسيطة بين هذه الأخطاء وبوابات CNOT. عند بدء تحليل شيفرة شور ذات 9 كيوبتات، يكون هذا وقتاً مناسباً للتوقف والقيام بذلك.

توضح مخططات الدوائر التالية ثلاث علاقات أساسية بين بوابات XX وبوابات CNOT. تحديداً، تطبيق بوابة XX على الكيوبت المستهدف قبل CNOT يعادل عكس الترتيب وتنفيذ CNOT أولاً، في حين أن تطبيق بوابة XX على الكيوبت التحكمي قبل CNOT يعادل تطبيق بوابتَي XX على كلا الكيوبتين بعد CNOT. وأخيراً، تطبيق بوابتَي XX على كلا الكيوبتين قبل CNOT يعادل تنفيذ CNOT أولاً ثم تطبيق بوابة XX على الكيوبت التحكمي. يمكن التحقق من هذه العلاقات بإجراء ضربات المصفوفات المطلوبة أو حساب تأثير الدوائر على حالات الأساس القياسي.

X errors before and after CNOT gates

الوضع مشابه بالنسبة لبوابات ZZ، إلا أن أدوار الكيوبت التحكمي والكيوبت المستهدف تتبادل. تحديداً، لدينا العلاقات الثلاث التي تصورها الدوائر الكمومية التالية.

Z errors before and after CNOT gates

تصحيح أخطاء قلب البت

سنتناول الآن كيفية رصد الأخطاء وتصحيحها باستخدام شيفرة شور ذات 9 كيوبتات، بدءاً بأخطاء قلب البت — التي سنشير إليها عموماً بـأخطاء XX من الآن فصاعداً اختصاراً.

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

باختصار، تصحيح أخطاء قلب البت أمر بسيط في هذه الشيفرة، نظراً لأن الشيفرة الداخلية تصحح أخطاء قلب البت.

تصحيح أخطاء قلب الطور

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

لنفترض أن خطأ ZZ يحدث على أحد الكيوبتات التسعة لشيفرة شور، كذلك الموضَّح في هذا المخطط.

Z error on a qubit for the 9-qubit Shor code

لاحظنا بالفعل ما يحدث عند وقوع خطأ ZZ عند استخدام شيفرة التكرار الثلاثي — فهو يعادل وقوع خطأ ZZ قبل الترميز. في سياق شيفرة شور ذات 9 كيوبتات، يعني ذلك أن خطأ ZZ على أي كيوبت من الكيوبتات الثلاثة داخل كتلة له دائماً الأثر ذاته، وهو ما يعادل وقوع خطأ ZZ على الكيوبت المقابل قبل تطبيق الشيفرة الداخلية.

فمثلاً، مخطط الدائرة أعلاه يعادل المخطط التالي. يمكن استنتاج ذلك باستخدام العلاقات بين بوابات ZZ وCNOT الموضحة أعلاه، أو بتقييم الدوائر ببساطة على حالة كيوبت عشوائية ψ\vert\psi\rangle.

Z error prior to the inner code for the 9-qubit Shor code

هذا يقترح أحد الخيارات لرصد أخطاء ZZ وتصحيحها، وهو فك ترميز الشيفرة الداخلية، مما يُبقي لدينا الكيوبتات الثلاثة المستخدمة للترميز الخارجي مع ستة كيوبتات مساحة عمل مُهيَّأة. يمكننا بعد ذلك فحص هذه الكيوبتات الثلاثة للشيفرة الخارجية بحثاً عن أخطاء ZZ، ثم إعادة الترميز باستخدام الشيفرة الداخلية للعودة إلى الترميز بـ9 كيوبتات الذي نحصل عليه من شيفرة شور. إذا رصدنا خطأ ZZ، يمكننا إما تصحيحه قبل إعادة الترميز بالشيفرة الداخلية، أو تصحيحه بعد إعادة الترميز بتطبيق بوابة ZZ على أي من الكيوبتات في تلك الكتلة.

فيما يلي مخطط دائرة يتضمن دائرة الترميز والخطأ المقترح أعلاه مع الخطوات المذكورة للتو (دون خطوة التصحيح الفعلية).

Z error detection for the 9-qubit Shor code

في هذا المثال بالذات، قياس المتلازمة هو 1111، مما يحدد موقع خطأ ZZ ليكون في إحدى كيوبتات الكتلة الوسطى.

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

Simplified Z error detection for the 9-qubit Shor code

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

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

أخطاء قلب البت والطور في آنٍ واحد

رأينا الآن كيف يمكن رصد أخطاء XX وZZ وتصحيحها باستخدام شيفرة شور ذات 9 كيوبتات، ولا سيما كيف يمكن رصد خطأ XX واحد على الأكثر أو خطأ ZZ واحد على الأكثر وتصحيحهما. الآن لنفترض أن خطأ قلب بت وخطأ قلب طور يحدثان معاً، ربما على الكيوبت نفسه. اتضح أنه لا يلزم فعل أي شيء مختلف في هذا الوضع عما سبق مناقشته — إذ تستطيع الشيفرة رصد خطأ XX واحد وخطأ ZZ واحد في آنٍ واحد وتصحيحهما، دون أي تعديل إضافي.

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

لفهم السبب، تأمل المثال الموضَّح في مخطط الدائرة التالي، حيث أثّر خطأُي XX وZZ على الكيوبت السفلي في الكتلة الوسطى.

An XZ error for the 9-qubit Shor code

لنلاحظ أولاً أن ترتيب الأخطاء لا يهم، بمعنى أن عكس موضع أخطاء XX وZZ يُنتج دائرة مكافئة. وللتوضيح، XX وZZ لا يتبادلان التبديل، بل يتعاكسان:

XZ=(0110)(1001)=(0110)=(1001)(0110)=ZX.XZ = \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} = \begin{pmatrix} 0 & -1\\[1mm] 1 & 0 \end{pmatrix} = - \begin{pmatrix} 1 & 0\\[1mm] 0 & -1 \end{pmatrix} \begin{pmatrix} 0 & 1\\[1mm] 1 & 0 \end{pmatrix} = -ZX.

هذا يعني أن الدائرة التالية مكافئة للدائرة السابقة حتى عامل طور كوني مقداره 1-1.

A ZX error for the 9-qubit Shor code

يمكننا الآن تحريك خطأ ZZ كما فعلنا سابقاً للحصول على دائرة مكافئة أخرى.

A ZX error for the 9-qubit Shor code

في هذه المرحلة يتضح أنه إذا طُبِّق إجراء رصد أخطاء XX وتصحيحها أولاً، فسيُصحَّح خطأ XX، ثم يُطبَّق إجراء رصد أخطاء ZZ وتصحيحها لإزالة خطأ ZZ كما سبق.

أو يمكن تطبيق إجراء رصد أخطاء ZZ وتصحيحها أولاً. يتبع أن هذا الإجراء يعمل كما هو متوقع، حتى في وجود خطأ XX أو أكثر، من كون بوابات XX على أي من الكيوبتات التسعة المستخدمة للترميز تتبادل التبديل مع جميع البوابات في دائرتنا المبسَّطة لقياس المتلازمة لأخطاء ZZ. وبالتالي، سيحدد قياس المتلازمة هذا بشكل صحيح أي كتلة تأثرت بخطأ ZZ. ويتبع أن تصحيح خطأ ZZ في أي كتلة بتطبيق بوابة ZZ على أي كيوبت في تلك الكتلة يكون صحيحاً حتى لو وقع خطأ XX أيضاً، وذلك من الحجة ذاتها المتعلقة بترتيب بوابتَي XX وZZ التي تُعطينا دوائر مكافئة حتى طور كوني.

يتبع أن شيفرة شور ذات 9 كيوبتات تستطيع تصحيح خطأ XX أو خطأ ZZ أو كليهما على أي من الكيوبتات التسعة المستخدمة في هذه الشيفرة. بل يمكننا تصحيح أخطاء أكثر من ذلك، بما فيها أخطاء XX متعددة (ما دامت في كتل مختلفة) أو أخطاء ZZ متعددة (ما دام عدد الكتل التي يحدث فيها عدد فردي من هذه الأخطاء كتلةً واحدة على الأكثر) — غير أن ما سيكون أكثر صلةً بأغراض هذا الدرس هو أننا نستطيع تصحيح خطأ XX أو خطأ ZZ أو كليهما على أي كيوبت واحد.

تقليل الخطأ في الأخطاء العشوائية

قبل الانتقال إلى القسم الأخير من الدرس المتعلق بالأخطاء الكمومية العشوائية، دعنا نتأمل بإيجاز أداء شيفرة شور ذات 9 كيوبتات عندما تقع أخطاء ممثَّلة بمصفوفات باولي بشكل عشوائي على الكيوبتات.

وبشكل أكثر تحديداً، لنتأمل نموذج ضوضاء بسيطاً حيث تقع الأخطاء بشكل مستقل على الكيوبتات، حيث يتعرض كل كيوبت لخطأ باحتمال pp، دون أي ارتباط بين الأخطاء على الكيوبتات المختلفة — على غرار القناة الثنائية المتماثلة للبتات الكلاسيكية. يمكننا تخصيص احتمالات مختلفة لوقوع أخطاء XX وYY وZZ، لكن للإبقاء على الأمر بسيطاً قدر الإمكان، سنتأمل أسوأ سيناريو لشيفرة شور ذات 9 كيوبتات، وهو وقوع خطأ YY على كل كيوبت متأثر. وخطأ YY بالمناسبة مكافئ (حتى عامل طور كوني غير ذي صلة) لوقوع خطأَي XX وZZ على الكيوبت نفسه، إذ إن Y=iXZY = iXZ. هذا يفسر تجاهلنا الظاهري لأخطاء YY حتى هذه النقطة.

الآن، لنفترض أن Q\mathsf{Q} هو كيوبت في حالة معينة نريد حمايته من الأخطاء، ويمكننا التفكير في خيار استخدام شيفرة شور ذات 9 كيوبتات. سؤال طبيعي: "هل نستخدمها؟"

الجواب ليس بالضرورة "نعم". إذا كانت الضوضاء كبيرة جداً، بمعنى أن pp كبير، فاستخدام شيفرة شور قد يزيد الأمور سوءاً — تماماً كشيفرة التكرار الثلاثي التي تكون أسوأ من لا شيفرة عندما يكون pp أكبر من النصف. لكن إن كان pp صغيراً بما يكفي، فالجواب هو "نعم"، ينبغي استخدام الشيفرة لأنها ستقلل احتمال تلف الحالة المرمَّزة. دعنا نرى لماذا، وماذا يعني أن يكون pp كبيراً جداً أو صغيراً بما يكفي لهذه الشيفرة.

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

وهكذا، تحمي الشيفرة Q\mathsf{Q} طالما تأثر كيوبت واحد على الأكثر من الكيوبتات التسعة بخطأ، وهو ما يحدث باحتمال

(1p)9+9p(1p)8.(1-p)^9 + 9 p (1-p)^8.

وإلا، باحتمال

1(1p)99p(1p)8,1 - (1-p)^9 - 9 p (1-p)^8,

تفشل الشيفرة في حماية Q\mathsf{Q}.

وبشكل أكثر تحديداً، ما يعنيه ذلك في هذا السياق هو أنه حتى عامل طور كوني، ستُطبَّق عملية باولي غير هوية على كيوبتنا Q\mathsf{Q} (كـكيوبت منطقي). أي أنه إذا رُصدت أخطاء XX وZZ وصُحِّحت في شيفرة شور كما هو موصوف سابقاً في الدرس، فسنجد أنفسنا مع ترميز لحالة مكافئة، حتى عامل طور كوني، لترميز عملية باولي غير هوية مطبَّقة على الحالة الأصلية لـQ\mathsf{Q}. بعبارة أوجز: سيكون قد وقع خطأ منطقي. قد يؤثر ذلك أو لا يؤثر على الحالة الأصلية لـQ\mathsf{Q} — أو بعبارة أخرى على الكيوبت المنطقي الذي رمّزناه بتسعة كيوبتات فيزيائية — لكن لأغراض هذا التحليل، نعتبر هذا الحدث فشلاً.

من ناحية أخرى، لو لم نكلف أنفسنا باستخدام الشيفرة، فإن كيوبتنا الوحيد سيعاني مصيراً مشابهاً (التعرض لعملية باولي غير هوية) باحتمال pp. تُفيد الشيفرة حين يكون الاحتمال الأول أصغر من الثاني:

1(1p)99p(1p)8<p.1 - (1-p)^9 - 9 p (1-p)^8 < p.

فيما يلي رسم بياني يوضح، لقيم صغيرة جداً من pp، أن الشيفرة تمنح ميزة، مع نقطة التعادل عند حوالي 0.03230.0323.

Error probability graph for independent Y errors using the Shor code

إذا كان pp أقل من نقطة التعادل هذه، فالشيفرة مفيدة؛ وعند نقطة التعادل تتساوى الاحتمالات، فنضيع وقتنا مع 8 كيوبتات إضافية لا فائدة منها؛ وما وراء نقطة التعادل لا ينبغي لنا البتة استخدام هذه الشيفرة لأنها ترفع احتمال وقوع خطأ منطقي في Q\mathsf{Q}.

ثلاثة وربع بالمئة تقريباً قد لا تبدو نقطة تعادل جيدة، خاصةً مقارنةً بـ50%50\% التي هي نقطة التعادل المماثلة لشيفرة التكرار الثلاثي للمعلومات الكلاسيكية. هذا الفارق يعود في معظمه إلى أن المعلومات الكمومية أكثر هشاشة وأصعب حمايةً من المعلومات الكلاسيكية. لكن أيضاً — مع الإقرار بأن شيفرة شور ذات 9 كيوبتات تمثل اكتشافاً رائعاً بوصفها أول شيفرة تصحيح أخطاء كمومية في العالم — ينبغي الإشارة إلى أنها في الواقع ليست شيفرة جيدة من الناحية العملية.