التحكم في انتشار الأخطاء
الحوسبة الكمومية المتسامحة مع الأخطاء تشبه سباقًا بين الأخطاء وتصحيحها. إذا كان عدد الأخطاء صغيرًا بما يكفي، فسينجح التصحيح في معالجتها؛ أما إذا كثرت الأخطاء فسيفشل التصحيح.
لهذا السبب، يجب الاهتمام الكافي بالطريقة التي تُنفَّذ بها الحسابات الكمومية في التطبيقات المتسامحة مع الأخطاء، للتحكم في انتشار الأخطاء. فخطأ في كيوبت واحد قد ينتشر إلى كيوبتات متعددة من خلال عمل البوابات في الدائرة الكمومية، مما قد يؤدي إلى تضاعف عدد الأخطاء بشكل كبير. هذا اهتمام بالغ الأهمية، لأنه إن لم نتمكن من التحكم في انتشار الأخطاء، ستُستنزف جهود تصحيح الأخطاء سريعًا. أما إذا أمكننا إبقاء انتشار الأخطاء تحت السيطرة، فإن تصحيح الأخطاء يكون أمامه فرصة للمواكبة وتصحيح الأخطاء بمعدل كافٍ للسماح للحساب الكمومي بالعمل كما هو مقصود.
نقطة الانطلاق لمناقشة تقنية لهذه المسألة هي إدراك أن البوابات ذات الكيوبتين (أو بوابات الكيوبتات المتعددة بشكل عام) يمكنها نشر الأخطاء حتى حين تعمل بشكل مثالي. فمثلًا، لنتأمل بوابة NOT المتحكَّم بها، ولنفترض أن خطأ يحدث على الكيوبت التحكمي قُبيل تنفيذ البوابة. كما لاحظنا بالفعل في درس "تصحيح الأخطاء الكمومية"، هذا يعادل حدوث خطأ على كلا الكيوبتين بعد تنفيذ بوابة NOT المتحكَّم بها. والحال مماثلة لخطأ يعمل على الكيوبت المستهدف بدلًا من الكيوبت التحكمي قبل تنفيذ البوابة.
هذا انتشار للأخطاء، لأن الموقع غير الملائم لخطأ أو قبل بوابة NOT المتحكَّم بها يحوّله فعليًا إلى خطأين بعد بوابة NOT المتحكَّم بها. يحدث هذا حتى حين تكون بوابة NOT المتحكَّم بها مثالية، ولا ينبغي لنا أن ننسى أن بوابة NOT المتحكَّم بها بعينها قد تكون هي نفسها مصدر ضوضاء، مما قد يُنشئ أخطاءً مترابطة على كيوبتين.
مما يزيد قلقنا أن البوابات الثنائية اللاحقة قد تنشر هذه الأخطاء أبعد من ذلك، كما يُشير الشكل التالي.
بمعنى ما، لا يمكننا تجنب هذا بالكلية؛ فطالم ا نستخدم بوابات متعددة الكيوبتات، سيكون هناك دائمًا احتمال لانتشار الأخطاء. غير أنه كما سنناقش في الأقسام الفرعية التالية، يمكن اتخاذ خطوات للحدّ من الضرر الناجم عن ذلك، مما يتيح إدارة الأخطاء المنتشرة.
تطبيقات البوابات العرضانية
أبسط الطرق المعروفة للتخفيف من انتشار الأخطاء في الدوائر الكمومية المتسامحة مع الأخطاء هي تطبيق البوابات عرضانيًا، أي بناء أدوات لها بصيغة بسيطة محددة. تحديدًا، يجب أن تكون هذه الأدوات حاصل ضرب تنسوري من العمليات (بمعنى آخر، دائرة كمومية بعمق واحد)، حيث لا يمكن لكل عملية أن تعمل إلا على موضع كيوبت واحد ضمن كل كتلة رمز تلمسها. ربما يكون هذا أوضح ما يكون بالأمثلة.
أمثلة على تطبيقات البوابات العرضانية
لنتأمل الشكل التالي، الذي يُقترح فيه تطبيق عرضان ي لبوابة CNOT. (هذا التطبيق بالذات، حيث تُنفَّذ بوابات CNOT كيوبتًا بكيوبت، يعمل فقط لرموز CSS — لكنه يعمل فعلًا لجميع رموز CSS.)
هناك كتلتا رمز في هذا الشكل، كل منهما مُصوَّرة كمكوّنة من خمسة كيوبتات (وإن كان يمكن أن تكون أكثر كما أُشير إليه). الدائرة على اليمين لها عمق واحد، وكل بوابة CNOT تعمل على موضع كيوبت واحد داخل كل كتلة: كلٌّ من الكيوبت التحكمي والمستهدف للـCNOT الأولى هو الكيوبت الأعلى (أي الكيوبت 0 باتفاقية ترقيم Qiskit)، وكلٌّ من الكيوبت التحكمي والمستهدف للـCNOT الثانية هو الكيوبت الثاني من الأعلى (أي الكيوبت 1)، وهكذا. لذا فهذه أداة عرضانية.
للمثال الثاني — وهو في الواقع فئة من الأمثلة — لنتأمل أي بوابة باولي. يمكن دائمًا تطبيق بوابات باولي عرضانيًا، لأي رمز تثبيت، ببناء أدوات مكوّنة من عمليات باولي. بالتحديد، يمكن تطبيق كل عملية باولي على كيوبت منطقي مُرمَّز برمز تثبيت عرضانيًا باختيار عملية باولي مناسبة على الكيوبتات الفيزيائية المستخدمة في الترميز. يتوافق هذا مع حقيقة ذُكرت عابرًا في درس "الشكلانية المثبِّتة": بصرف النظر عن الطور الكلي، عمليات باولي التي تُبادل كل منشئ مثبِّت لرمز تثبيت تتصرف كعمليات باولي على الكيوبت أو الكيوبتات المُرمَّزة بذلك الرمز.
كمثال محدد، لنتأمل رمز شور ذا الـ كيوبتات، الذي يمكن ترميز حالات الأساس القياسي له كما يلي.
يمكن تطبيق بوابة ع لى الكيوبت المنطقي المُرمَّز بهذا الرمز عرضانيًا بعملية باولي ذات الـ كيوبتات
بينما يمكن تطبيق بوابة على الكيوبت المنطقي عرضانيًا بعملية باولي ذات الـ كيوبتات
كلتا عمليتَي باولي هاتين لهما وزن ، وهو الحد الأدنى من الوزن المطلوب. (رمز شور ذو الـ كيوبتات له مسافة ، لذا أي عملية باولي غير متطابقة بوزن أو أقل تُكشف كخطأ.)
وللمثال الثالث، يسمح رمز ستين ذو الـ كيوبتات (وكذلك كل رمز لوني بالفعل) بالتطبيق العرضاني لجميع بوابات كليفورد. لقد رأينا بالفعل كيف تُطبَّق بوابات CNOT عرضانيًا لأي رمز CSS، فلم يتبق سوى النظر في بوابات و. بوابة هادامار المطبّقة على جميع الـ كيوبتات في رمز ستين تعادل تطبيق على الكيوبت المنطقي الذي يُرمِّزه، بينما بوابة (بدلًا من بوابة ) المطبّقة على جميع الـ كيوبتات تعادل بوابة منطقية.
انتشار الأخطاء للأدوات العرضانية
الآن بعد أن عرفنا ما هي التطبيقات العرضانية للبوابات، لنناقش ارتباطها بانتشار الأخطاء.
بالنسبة للتطبيق العرضاني لبوابة أحادية الكيوبت، لدينا ببساطة حاصل ضرب تنسوري من بوابات أحادية الكيوبت في أداتنا، تعمل على كتلة رمز من الكيوبتات الفيزيائية لرمز تصحيح الأخطاء الكمومية المختار. وإن كان بإمكان أي من هذه البوابات أن تفشل وتُدخل خطأً، فلن يكون هناك أي انتشار للأخطاء لأنه لا تدخل بوابات متعددة الكيوبتات. فور تطبيق الأداة، يُجرى تصحيح الأخطاء؛ وإذا كان عدد الأخطاء الناجمة عن الأداة (أو أثناء تطبيقها) صغيرًا بما يكفي، ستُصحَّح الأخطاء. لذا، إذا كان معدل الأخطاء الناجمة عن البوابات المعيبة صغيرًا بما يكفي، يكون لتصحيح الأخطاء فرصة جيدة للنجاح.
أما بالنسبة للتطبيق العرضاني لبوابة ثنائية الكيوبت، فهناك احتمال لانتشار الأخطاء — لا توجد طريقة لتجنب ذلك كما لاحظنا بالفعل. غير أن النقطة الجوهرية هي أن الأداة العرضانية لا يمكنها أبدًا تسبيب انتشار أخطاء داخل كتلة رمز واحدة.
فمثلًا، بالنظر في التطبيق العرضاني لبوابة CNOT لرمز CSS الموصوف أعلاه، قد يحدث خطأ على الكيوبت الأعلى في الكتلة العليا قُبيل تطبيق الأداة، وستنشر أول بوابة CNOT داخل الأداة هذا الخطأ إلى الكيوبت الأعلى في الكتلة السفلى. غير أن الخطأين الناتجين يكونان الآن في كتلتين منفصلتين. لذا، بافتراض أن رمزنا يمكنه تصحيح خطأ ، فإن خطوات تصحيح الأخطاء التي تتم بعد الأداة ستصحح الخطأين بشكل مستقل — لأن خطأً واحدًا فقط يحدث داخل كل كتلة رمز. في المقابل، لو حدث انتشار الأخطاء داخل نفس كتلة الرمز، فيمكنه تحويل خطأ خفيف الوزن إلى خطأ ثقيل الوزن لا يستطيع الرمز معالجته.
عدم شمولية البوابات العرضانية
بالنسبة لرمزَي تثبيت مختلفَين، قد يكون بوسع بوابة معينة أن تُطبَّق عرضانيًا مع أحد الرمزين دون الآخر. فمثلًا، بينما لا يمكن تطبيق بوابة عرضانيًا باستخدام رمز ستين ذي الـ كيوبتات، هناك رموز أخرى يمكن فيها ذلك.
للأسف، لا يمكن أبدًا، لأي رمز تصحيح أخطاء كمومية غير تافه، تطبيق مجموعة شاملة من البوابات عرضانيًا. تُعرف هذه الحقيقة بـمبرهنة إيستن-كنيل.
لن نشرح برهان هذه المبرهنة هنا. (ليس برهانًا معقدًا، لكنه يتطلب معرفة أساسية بمجموعات لي وجبر لي، وهي ليست من متطلبات هذه السلسلة.) غير أن الفكرة الأساسية يمكن توضيحها بصورة حدسية: العائلات اللانهائية من العمليات العرضانية لا يمكنها البقاء في فضاء رمز غير تافه، لأن الفوارق الطفيفة في العمليات العرضانية تُقارَب جيدًا بعمليات باولي خفيفة الوزن يكتشفها الرمز كأخطاء.
خلاصة القول، تقدّم الأدوات العرضانية تطبيقًا بسيطًا ومتسامحًا مع الأخطاء بطبيعته للبوابات — لكن لأي اختيار معقول لرمز تصحيح أخطاء كمومية، لن تكون هنا ك قط مجموعة بوابات شاملة يمكن تطبيقها بهذه الطريقة، مما يستلزم استخدام أدوات بديلة.
الحالات السحرية
نظرًا لأنه لا يمكن، لأي اختيار غير تافه لرمز تصحيح أخطاء كمومية، تطبيق مجموعة شاملة من البوابات الكمومية عرضانيًا، يجب علينا النظر في طرق أخرى لتطبيق البوابات بشكل متسامح مع الأخطاء. إحدى الطرق المعروفة تقوم على مفهوم الحالات السحرية، وهي حالات كمومية للكيوبتات تُتيح تطبيقات متسامحة مع الأخطاء لبوابات معينة.
تطبيق البوابات باستخدام الحالات السحرية
لنبدأ بالنظر في بوابتَي و، اللتين لهما أوصاف مصفوفية كما يلي.
بالتعريف، عملية كليفورد، في حين أن ليست كذلك؛ لا يمكن تطبيق بوابة بدائرة مكوّنة من بوابات كليفورد (بوابات وبوابات وبوابات CNOT).
غير أنه يمكن تطبيق بوابة (بصرف النظر عن الطور الكلي) بدائرة مكوّنة من بوابات كليفورد إذا، بالإضافة إلى ذلك، كان لدينا نسخة من الحالة
ونسمح بقياسات الأساس القياسي وبأن تكون البوابات خاضعة للتحكم الكلاسيكي. بالتحديد، تُظهر الدائرة التالية إحدى طرق فعل ذلك. الظاهرة المعروضة هنا مثالٌ مُبسَّط نوعًا ما على نقل البوابة الكمومية.
للتحقق من صحة عمل هذه الدائرة، يمكننا أولًا حساب تأثير بوابة CNOT على المدخل.
القياس إذن يعطي النتيجتين و باحتمال متساوٍ. إذا كانت النتيجة ، لا تُنفَّذ بوابة ، وتكون الحالة المخرجة ؛ وإذا كانت النتيجة ، تُنفَّذ بوابة ، وتكون الحالة المخرجة .
تُسمّى الحالة حالة سحرية في هذا السياق، وإن لم تكن هي الوحيدة: حالات أخرى تُسمّى أيضًا حالات سحرية حين يمكن استخدامها بطريقة مماثلة (لبوابات مختلفة ربما وباستخدام دوائر مختلفة). فمثلًا، استبدال الحالة بالحالة واستبدال بوابة في الدائرة أعلاه ببوابة يُطبّق بوابة — وهو مفيد محتملًا للحوسبة الكمومية المتسامحة مع الأخطاء عند استخدام رمز لا يمكن فيه تطبيق بوابات عرضانيًا.