الضوضاء والأخطاء
سيقدّم هذا الدرس الضوضاء والأخطاء الكمومية، بما في ذلك العديد من مصادرها، مع رسم أوجه تشابه مع الأخطاء الكلاسيكية. سيكون فهم أنواع الأخطاء التي قد تحدث، والقدرة على نمذجة الضوضاء باستخدام القنوات الكمومية، أمرًا بالغ الأهمية لفهم الدروس القادمة. والواقع أن معظم طرق التعامل مع الأخطاء تتطلب منا معرفة شيء عن نوع الضوضاء أو الأخطاء التي نسعى إلى تقليلها أو تصحيحها.
يقدّم هذا الفيديو نظرة عامة على الضوضاء والأخطاء ويستعرض بعض النتائج الحسابية. يضيف النص أدناه مزيدًا من التفاصيل ويستكشف بعض أنواع الأخطاء باستخدام Qiskit.
الأسباب
الضوضاء والأخطاء الكلاسيكية
لفهم الأخطاء والضوضاء الكمومية، لنبدأ بالنظير الكلاسيكي. تحدث الأخطاء في الحواسيب الكلاسيكية لأسباب متنوعة، منها آليات متعددة لتراكم الشحنات الطفيلية، والأحداث الأحادية العابرة (single-event upsets)، والتدهور البطيء للمواد. بعض هذه الآليات (وليس كلها) له نظائر في الحوسبة الكمومية وسيكون مفيدًا في فهم الأخطاء والضوضاء الكمومية. سنستعرض بإيجاز بعضًا منها، ثم ننتقل إلى النظائر الكمومية.
الضوضاء الحرارية:
مع ارتفاع درجة حرارة مكونات الحاسوب، تُغيّر الحركة الحرارية للذرات وحاملات الشحنة مقاومة المادة (وعادةً ما تزيدها). وهذا يعني أن المقاومة في الـcircuit يمكن أن تتغيّر. ورغم ندرة ذلك، قد يؤدي إلى انتقال منطقي طفيلي في الترانزستور. ورغم أن التغيرات الطفيفة أمر لا مفر منه، فإن التبريد المناسب للمكونات هو المفتاح لتجنب هذه التأثيرات.
التلف والتدهور الحراريان:
يمكن أن يتسبب التسخين والتبريد المتكرران للمواد في هجرة بطيئة جدًا للعناصر الموصلة (المعادن). وفي أفضل الأحوال، يغيّر هذا من مقاومة أو سعة (أو كليهما) عناصر الدائرة ويؤدي إلى عدم دقة التوقيت في تشغيل الدائرة. وفي أسوأ الأحوال، ينتج عنه قصر في الدارة (short-circuit) أو عطل دائم. ومرة أخرى، يُعد التحكم المناسب في درجة الحرارة مفتاحًا لمنع هذا النوع من التدهور.
التأثيرات الناتجة عن الإشعاع (الأحداث الأحادية العابرة، SEUs):
في بعض الأحيان، يمكن لجسيمات عالية الطاقة أن تؤين ذرات داخل المعالج وتؤدي إلى شحنة طفيلية. وإذا حدث ذلك في المكان والزمان الخطأين، فقد يؤدي إلى أخطاء منطقية. ومصدر هذه الجسيمات عالية الطاقة (بما في ذلك الإشعاع الكهرومغناطيسي والنيوترونات) هو عادةً تفاعلات عالية الطاقة في الغلاف الجوي العلوي. لذا فإن هذه الأحداث أكثر شيوعًا في البيئات ذات الارتفاع العالي، بما في ذلك الفضاء. ويتم التعامل مع هذه الحالات باستخدام رموز تصحيح الأخطاء والتصميم المقاوم للإشعاع.
التداخل الكهرومغناطيسي:
يمكن أن تنجم الأخطاء أيضًا عن حقول كهرومغناطيسية (EM) خارجية ناتجة عن تبديل خطوط الطاقة، أو أجهزة إرسال الراديو، أو مكونات أخرى في النظام. ويختلف هذا عن الإشعاع عالي الطاقة في الظاهرة السابقة. فهنا، تُحدث الحقول الكهرومغناطيسية الشاردة المعتمدة على الزمن تيارًا وجهدًا عبر مكونات الحوسبة (بدلاً من تأيين ذرة معينة في حدث واحد). ونظرًا إلى أن اعتماد الحقول على الزمن عامل حاسم في الجهود المستحثة، يكتسب هذا النوع من التداخل أهمية خاصة في الأنظمة عالية التردد. ويمكن مكافحة هذه الأخطاء من خلال التدريع والتأريض، من بين أمور أخرى.
التداخل بين الوصلات (Crosstalk):
يمكن أن يؤدي الاقتران السعوي أو الحثي بين الموصلات المتجاورة، لا سيما في الـcircuits المتكاملة النانوية، إلى إشارات طفيلية. ويرتبط هذا بالتداخل الكهرومغناطيسي، لكنه يختلف لأن مصدر الحقل المزعج هو مكون آخر داخل الـcircuit الحاسوبي. تخيل سلكين قريبين جدًا من بعضهما. إذا مر السلك A بانتقال مفاجئ (تغيّر في الجهد)، فقد يُحدث تيارات في السلك المجاور B. ويعتمد الاتجاه والمقدار الدقيقان على تخطيط الـcircuit؛ فقد يكون تدفقًا صافيًا متماسكًا للشحنة أو شيئًا أقرب إلى تيارات دوامية للشحنة. لكن في بعض الحالات، قد يؤدي هذا إلى انتقالات منطقية غير مرغوب فيها. ويمكن تخفيف تأثيرات هذا التداخل من خلال تحسين تباعد التخطيط، والتدريع، والتحكم في أزمنة صعود الإشارة.
هذه ليست قائمة كاملة، لكنها كافية لنبدأ برؤية أوجه التشابه مع الحوسبة الكمومية. لاحظ أنه في جميع أنواع التفاعلات غير المرغوب فيها أعلاه، لا يمكن أن يتجلى ظهور الضوضاء كخطأ منطقي إلا في صورة تحول 0 إلى 1، أو تحول 1 إلى 0. وهذا هو كل ما هو مسموح به في فضاء حالات البتات الكلاسيكية.
الضوضاء والأخطاء الكمومية
في الحوسبة الكمومية، غالبًا ما تُناقش الضوضاء والأخطاء معًا، لكن من المهم إدراك الفرق بينهما. تشير الضوضاء الكمومية إلى الاضطراب الفيزيائي الكامن الذي يؤثر على الكيوبتات والأنظمة الكمومية. وتشمل جميع أشكال التفاعلات أو التقلبات غير المرغوب فيها الناتجة عن البيئة، أو التحكم غير المثالي، أو عيوب العتاد التي تتسبب في انحراف الحالة الكمومية عن المثالية. أما الأخطاء الكمومية فهي الانحرافات أو الأعطال المحددة في المعلومات الكمومية الناتجة عن الضوضاء الكمومية. والأخطاء الكمومية هي المظاهر القابلة للقياس أو التشغيلية للضوضاء، وتشمل الأخطاء انقلابات البت (bit-flips)، وانقلابات الطور (phase-flips)، وتخامد السعة (amplitude damping)، وغيرها. يمكن أن تحدث كل من الضوضاء والأخطاء بطريقة مستمرة. على سبيل المثال، قد يكون الحقل المستخدم في بوابة كمومية منحرفًا بنسبة 0.1%، أو 0.15%، أو أي كسر آخر. وقد ينتج عن ذلك طور غير صحيح على كيوبت، أيضًا بأي مقدار مستمر. لكنك سترى أنه، عمليًا وخاصة في تصحيح الأخطاء، من الشائع معاملة الأخطاء كما لو كانت منفصلة (discrete): بتجميع التأثيرات المتراكمة في انقلاب بت منفصل أو دوران طور واحد. وهذا مفيد لتصحيح الأخطاء ووصفها، لكنه لا يعني أن تأثير الضوضاء على كيوبت يقتصر على مجموعة منفصلة من الأخطاء.
هناك أنواع عديدة من الضوضاء التي تؤثر على الحواسيب الكمومية. قد يؤدي بعضها إلى أنواع متعددة من الأخطاء، بينما يرتبط بعضها الآخر بمظاهر خطأ محددة. وتتجاوز القائمة الكاملة أغراض هذا الدرس؛ وفيما يلي قائمة جزئية ذات صلة ببقية هذه الدورة، بعضها له نظائر في ضوضاء الحوسبة الكلاسيكية.
Thermal:
تفصل بين حالتي الأساس الحسابيتين و لكيوبت كمية طاقة صغيرة جدًا. وتعتمد القيمة الدقيقة، بالطبع، على عتاد الحوسبة الكمومية. بالنسبة إلى كيوبتات الحالة الصلبة (ترانزمون ثابت التردد) مثل تلك المستخدمة من قِبل IBM Quantum®، فإن فجوة الطاقة بين هاتين الحالتين تبلغ من رتبة جول، أو بضعة ميكروإلكترون فولت. ويمكن ربط مقياس الطاقة هذا بالتردد عبر أو بدرجة حرارة مميزة. وبما أن درجة الحرارة مرتبطة بمتوسط الطاقة الحركية للجسيمات في العينة، يمكننا استخدام ثابت بولتزمان للحصول على تقدير لدرجة الحرارة التي يكون عندها متوسط الجسيمات لديه طاقة كافية لإحداث انتقال:
لتقليل احتمال أن تتسبب التفاعلات الحرارية في انتقالات من حالة أساس حسابية لـqubit إلى أخرى، يجب الحفاظ على درجة حرارة الـqubits أقل بكثير من 100 مللي كلفن، ويُفضَّل أن تكون أقرب إلى 15-25 مللي كلفن. وأي ارتفاع كبير في درجة الحرارة فوق هذه العتبات سيؤدي إلى إشغال عشوائي كليًا للحالة وفقدان تام للمعلومات الكمومية.
يُشابه هذا الأخطاء الحرارية التي قد تحدث في الحواسيب الكلاسيكية، من حيث إن كليهما حراري المنشأ — لكن مقياس درجة الحرارة يختلف بشكل واضح، وكذلك آلية فقدان المعلومات.
التداخل المتبادل (Crosstalk) والتشويش:
يشير Crosstalk في الحوسبة الكمومية إلى أي اقتران أو تداخل غير مرغوب فيه بين الكيوبتات أو خطوط التحكم، بحيث تؤثر عملية أو إشارة موجهة إلى كيوبت واحد على كيوبتات أخرى عن غير قصد. ويتجلى ذلك في صورة أخطاء أو ارتباطات بين كيوبتات ينبغي أن تكون مستقلة في الحالة المثالية.
في معماريات الكيوبتات الفائقة التوصيل مثل تلك المستخدمة من قِبل IBM®، يمكن أن ينشأ الـcrosstalk من تسرب إشارات التحكم بالموجات الدقيقة إلى كيوبتات مجاورة، أو اقتران غير مقصود بين مرنانات القراءة، أو crosstalk في التدفق بين حلقات الكيوبتات.
يُدمج العديد من أساليب تقليل الـcrosstalk في تصميم الحاسوب الكمومي، مثل التباعد بين الـqubits وضمان اختلاف الترددات التشغيلية بين الـqubits المتجاورة. وهناك أيضًا أساليب برمجية لتخفيف أخطاء الـcrosstalk، سنناقشها في دروس لاحقة.
عمليات البوابات غير المثالية:
تُنفَّذ العمليات على الكيوبتات باستخدام عتاد ذي دقة محدودة، وقد يخضع لضوضاء أو مصادر أخرى لعدم الدقة. وعلى وجه الخصوص، تُستخدم نبضات الموجات الدقيقة ذات مدد واتجاهات محددة لتنفيذ بوابات الدوران. لنفترض، على سبيل المثال، أن نبضة موجة دقيقة يُراد بها الدوران بمقدار 0.30 راديان حول المحور . هناك دقة محدودة في الاتجاه، ما يؤدي إلى بعض عدم الدقة في محور الدوران. علاوة على ذلك، هناك دائمًا مفاضلة أساسية بين تردد النبضة ومدتها. يمكن أن تتصرف النبضة الطويلة جدًا بشكل جيبي أساسًا بتردد واحد عمليًا. ولتشكيل حزمة قصيرة، يحتاج المرء إلى تراكب العديد من الترددات. وهذه هي نفس المفاضلة الكامنة في جذر علاقة عدم اليقين بين الطاقة والزمن، رغم أن دقة البوابة لم تصل بعد إلى هذه الحدود الأساسية؛ فلا يزال هناك مجال للتحسين.
الضوضاء الكامنة في الطبيعة الكمومية:
يختلف هذا النوع الأخير من الضوضاء تمامًا عن الأنواع الأخرى؛ فهو لا ينتج عن أخطاء، بل عن طبيعة ميكانيكا الكم نفسها. لنفترض أن كيوبتًا في الحالة الكمومية يُقاس وينهار إلى حالة ذاتية ( أو ). في نظام ترانزمون ثابت التردد، يكون الكيوبت مقترنًا تشتتيًا (dispersively) بمرنان موجات دقيقة يعتمد تردد رنينه قليلًا على حالة الكيوبت. تُرسَل نبضة سبر بموجات دقيقة عبر المرنان، وتكتسب الإشارة الصادرة إزاحة طور وتغيرًا في السعة يعتمدان على الحالة. ثم تُضخَّم هذه الإشارة وتُقاس باستخدام الإلكترونيات الكلاسيكية.
على المستوى الكمومي، تُحمَل إشارة القياس بواسطة حقل موجات دقيقة متماسك (coherent) بمتوسط عدد محدود من الفوتونات. ونظرًا للطبيعة الكمومية للحقول الكهرومغناطيسية، تُظهر تربيعات الحقل (field quadratures) تقلبات جوهرية. وهذه التقلبات مستقلة عن أوجه القصور التقنية وتنشأ حتى بالنسبة لحالة متماسكة مثالية. وزيادة متوسط عدد الفوتونات تزيد من إشارة القياس، لكن مستوى الضوضاء الأساسي يبقى محدودًا، بحيث لا تتحسن قابلية التمييز بين النتائج إلا بمقدار .
وبالتالي، حتى لو تم تحضير الكيوبت بشكل مثالي وكانت سلسلة القياس مثالية، فإن إشارة القراءة (readout) المقابلة لحالة كيوبت معينة ليست قيمة ثابتة واحدة، بل توزيعًا يحد من مدى إمكانية التمييز بين النتائج. ويمثل هذا التداخل مصدرًا أساسيًا لعدم اليقين في عملية القياس نفسها. وفي الممارسة العملية، ورغم أن الضوضاء التقنية الناتجة عن المضخمات والمكونات الأخرى غالبًا ما تكون المهيمنة، فإن هذه الضوضاء الكمومية الجوهرية تضع حدًا أدنى لدقة القراءة (readout fidelity).
عدم اليقين ليس خطأً:
تختلف كل مصادر الضوضاء هذه عن عدم اليقين الأساسي المرتبط بقياسات الحالات الكمومية. وللمقارنة، لنفترض أن لدينا كيوبتًا في حالة كمومية:
تبلغ احتمالية قياس هذه الحالة في نسبة 64%، واحتمالية قياسها في نسبة 36%. لكن القياس الواحد لن يُعطي سوى أو — لذا نادرًا ما يخبرنا قياس واحد بالكثير عن الحالة قبل القياس. ويلزم إجراء العديد من القياسات للحصول على معلومات تفصيلية عن الحالة. ومن بين عشرة قياسات، قد نتوقع أن تُعطي ستة أو سبعة منها . لكن لن يكون مفاجئًا إذا صادف أن أعطت القياسات العشرة الأولى جميعها (تمامًا مثل قلب عملة معدنية عادلة والحصول على "صورة" عشر مرات متتالية: أمر غير شائع، لكنه ممكن تمامًا). أما إذا كررنا القياس 1000 مرة وحصلنا دائمًا على ، فسيكون ذلك مفاجئًا حقًا.
لذلك يوجد عدم يقين في معرفتنا بالحالة الكمومية استنادًا إلى أي عدد محدود من القياسات. وكلما كررنا القياسات، تحسنت معرفتنا بالحالة الكمومية قبل القياس، لكنها لا تكون مثالية أبدًا. قد يقول المرء بشكل عامّي إن هناك دائمًا نوعًا من "الخطأ" الكامن في أي نتيجة قياس كمومي. لكن هذا استخدام مختلف لمصطلح "الخطأ"، ويُفضَّل وصفه بأنه عدم يقين إحصائي. تُسمى عملية زيادة المعرفة بالحالة الكمومية من خلال العديد من القياسات تصوير الحالة الكمومية المقطعي (quantum state tomography). ومع ذلك، لا يقتصر تصوير الحالة الكمومية المقطعي على القياسات على طول Z؛ بل يشير عمومًا إلى القياسات على طول محاور متعامدة (مثل X وY وZ) لتحديد السعات والطور النسبي. لمزيد من المعلومات حول هذه العملية، راجع هذا القسم في دورة John Watrous حول الصياغة العامة للمعلومات الكمومية، أو للاطلاع على تطبيق عملي، راجع درس الانتقال الآني هذا من دورة الحوسبة الكمومية ذات النطاق العملي.
مراقبة الأخطاء وتراكمها
في هذا القسم، سنستخدم حواسيب كمومية حقيقية لمراقبة الأخطاء الكمومية وتراكمها في ظل ظروف مختلفة. وعمليًا، عادةً ما تكون العديد من مصادر الأخطاء الكمومية حاضرة في آن واحد. ولمراقبة أنواع مختلفة من الأخطاء بطريقة معزولة نوعًا ما، سنحتاج إلى استخدام دوائر مصممة لهذا العزل. ستبدو الدوائر المستخدمة في تطبيقات الحوسبة الكمومية أكثر تعقيدًا بكثير.
لنبدأ بأخطاء الاسترخاء الطاقي (energy relaxation).
أخطاء الاسترخاء الطاقي ()
تذكّر من مناقشتنا للضوضاء الحرارية أنه عند أي درجة حرارة غير صفرية، توجد احتمالية ما لأن يخضع نظام كمومي لانتقال بين حالات ذاتية للطاقة. ويهيمن الاسترخاء () لأنه مدفوع بالانبعاث التلقائي (المستقل عن درجة الحرارة)، بينما تقمع درجة الحرارة المنخفضة عملية الإثارة المنافسة. وكلما طالت مدة بقاء الكيوبت خاملاً، زاد الوقت المتاح له للخضوع لمثل هذا الانتقال. واحتمالية أن يبقى كيوبت، حُضِّر في الحالة ، في الحالة بعد زمن يُعطى بواسطة
هنا، الزمن هو زمن مميز يُحدَّد تجريبيًا ويختلف لكل كيوبت، بل وقد يتغير قليلًا مع الوقت. تخضع حواسيب IBM® الكمومية لقياس مرجعي (benchmarking) بشكل منتظم، لذا فإن أزمنة التي تجدها مدرجة للكيوبتات على حواسيب IBM الكمومية ينبغي أن تكون دقيقة ومحدّثة. وتعني القيمة الكبيرة لـ أن الكيوبت يبقى في الحالة التي حضّرتها لفترة أطول (في المتوسط). وتختلف قيم النموذجية باختلاف المعماريات؛ وغالبًا ما تكون أزمنة للكيوبتات في حواسيب IBM الكمومية من رتبة 200-300 ، ويمكنك الاطلاع على أحدث القيم في صفحة موارد الحوسبة.
يقيس الزمن المميز شيئًا مختلفًا: فقدان معلومات الطور. سنعود إلى هذا لاحقًا.
لمراقبة أخطاء الاسترخاء الطاقي، سنحضّر كيوبتات في الحالة ، ثم نتركها خاملة عمدًا لفترات طويلة من الزمن. هذا هو الجزء المصطنع. ففي سير العمل الكمومي الحقيقي، قد يكون لديك بضعة كيوبتات تبقى خاملة لفترات طويلة بينما تُجرى عمليات على كيوبتات أخرى؛ لذا فإن وجود بضع حالات من فترات الخمول هذه ليس أمرًا مصطنعًا.
لنبدأ باستيراد بعض الحزم واختيار الـbackend الأقل انشغالًا.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"cycler": "cycler", "matplotlib": "matplotlib", "numpy": "numpy", "qiskit": "qiskit", "qiskit_aer": "qiskit-aer", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
import numpy as np
import matplotlib.pyplot as plt
# If your credentials are already saved locally
service = QiskitRuntimeService()
# To load an unsaved instance, uncomment the line below
# service = QiskitRuntimeService(channel = "ibm_quantum_platform", instance = "your crn here")
# To select the least-busy backend:
# backend = service.least_busy(simulator=False, operational=True)
# To specify the backend by name:
backend = service.backend("ibm_boston")
props = backend.properties()
print(backend)
<IBMBackend('ibm_boston')>
الآن سنختار كيوبتًا للعمل عليه، وفي هذه الحالة، الكيوبت رقم صفر. يمكننا استيراد خصائص هذا الكيوبت مباشرة، بما في ذلك و .
qubit_idx = 0
qubit_props = props.qubit_property(qubit_idx)
t1 = qubit_props["T1"][0] # * 1e6 # Convert seconds to µs
t2 = qubit_props["T2"][0] # * 1e6 # Convert seconds to µs
# print(f"Qubit {qubit_idx}: T1={t1} µs, T2={t2} µs")
print(f"Qubit {qubit_idx}: T1={t1} s, T2={t2} s")
Qubit 0: T1=0.0002737016180018049 s, T2=0.00042784777605680494 s
معرفة بوحدات الميكروثانية أمر مهم، لكن قد لا يكون لديك إحساس بديهي بما يعنيه ذلك. ففي نهاية المطاف، تكون عمليات الـgates على الحواسيب الكمومية سريعة جدًا. والسؤال الحقيقي هو: كم يمكننا أن نفعل على حاسوب كمومي في ذلك المقدار من الزمن. ولهذه الغاية، من المفيد ربط بمقاييس زمنية أخرى مستخدمة في الحوسبة الكمومية — وتحديدًا بما يلي:
-
زمن أخذ العينات - أصغر نبضة ساعة (clock tick) يمكن من خلالها تنفيذ عمليات التحكم على الحاسوب الكمومي.
-
أزمنة بوابة الكيوبت الواحد - الزمن اللازم لتنفيذ عملية بوابة على كيوبت واحد. لن تكون هذه قيمة واحدة، بل نطاقًا من الأرقام الممكنة حسب نوع البوابة.
-
أزمنة بوابة الكيوبتين - الزمن اللازم لتنفيذ عملية بوابة على كيوبتين متجاورين. يمكن أن يأخذ هذا أيضًا نطاقًا من القيم، لكنه عادةً أطول بمقدار رتبة واحدة تقريبًا من بوابة الكيوبت الواحد.
لنتحقق من لـbackend الخاص بنا، ونعرض بعض النطاقات المعقولة لأزمنة الـgate.
print(f"Using backend: {backend.name}")
# Access the backend target
target = backend.target
def get_gate_times(target, gate_name):
results = []
if gate_name not in target:
return results # gate not supported
# target[gate_name] is a dict: {(qubits): InstructionProperties}
for qubits, props in target[gate_name].items():
if props.duration is not None:
results.append({"qubits": qubits, "duration_ns": props.duration * 1e9})
return results
# Query some gates
for gate in ["cz", "x"]:
times = get_gate_times(target, gate)
print(f"\nGate: {gate}")
if times:
for entry in times[:5]:
print(f" Qubits {entry['qubits']}: {entry['duration_ns']:.2f} ns")
else:
print(" Not available on this backend")
Using backend: ibm_boston
Gate: cz
Qubits (0, 1): 68.00 ns
Qubits (1, 0): 68.00 ns
Qubits (1, 2): 68.00 ns
Qubits (2, 1): 68.00 ns
Qubits (2, 3): 88.00 ns
Gate: x
Qubits (0,): 32.00 ns
Qubits (1,): 32.00 ns
Qubits (2,): 32.00 ns
Qubits (3,): 32.00 ns
Qubits (4,): 32.00 ns
ستختلف أزمنة الـgate من backend إلى آخر. سنقوم بترميز زمن ثابت (hard-code) لـgate ذي qubitين مأخوذ من ibm_boston يبلغ 68 نانوثانية.
dt = backend.configuration().dt
two_q_gate_time = 68e-9
print("The sampling time is : ", dt)
print("dts per T_1 : ", t1 / dt)
print("2-qubit characteristic time : ", two_q_gate_time)
print("The sampling time intervals per two-qubit gate : ", two_q_gate_time / dt)
print("2-qubit gates per T_1 : ", t1 / two_q_gate_time)
The sampling time is : 4e-09
dts per T_1 : 68425.40450045122
2-qubit characteristic time : 6.8e-08
The sampling time intervals per two-qubit gate : 17.0
2-qubit gates per T_1 : 4025.0237941441897
ضع في اعتبارك أنه لم يتم أخذ أي مصادر أخطاء أخرى أو قمعها أو تخفيفها بعين الاعتبار هنا. أخطاء ليست الأخطاء الوحيدة العاملة في نظام كمومي، لذا لا تنشغل كثيرًا بهذه الأرقام. وهذا يعني ببساطة أنه، في غياب أي قمع، قد نتمكن بشكل معقول من تنفيذ ما يقارب آلاف من بوابات ثنائية الكيوبت قبل أن تبدأ أخطاء في الهيمنة. وعادةً ما تهيمن أخطاء أخرى عند أعماق أقل بكثير، وعلى العكس، قد يظل من المجدي قمع أخطاء عند أزمنة أقصر بكثير من تلك اللازمة لمحو الإشارة تمامًا.
سنبدأ باستخدام محاكي (simulator) مزوَّد بنموذج ضوضاء، ثم سنقارن النتائج بالعتاد الحقيقي.
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, thermal_relaxation_error
from qiskit import QuantumCircuit
from qiskit.quantum_info import Pauli
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_aer.primitives import EstimatorV2
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
لنُعرّف خطوة زمنية لقياساتنا تتوافق مع التقدير الأعلى لزمن بوابة ثنائية الكيوبت. ثم سنبني 50 دائرة بزيادات مقدارها تلك الخطوة الزمنية. وبهذه الطريقة، سنرى ما يحدث على مقياس زمني مشابه لتنفيذ 80 بوابة ثنائية الكيوبت. الدقة هنا ليست حاسمة، لذا سنستخدم عددًا قليلًا فقط من الـshots.
n_points = 50 # We will show 50 steps
delay_unit = 80 # The delay in units of two-qubit-time from above
shots = 100
نبني نموذج ضوضاء لمحاكينا يتضمن صراحةً أخطاء الاسترخاء الحراري.
# Create noise model with thermal relaxation for delays
noise_model = NoiseModel()
error = thermal_relaxation_error(
t1, t2, two_q_gate_time * delay_unit
) # error model characterized by times in ns
noise_model.add_all_qubit_quantum_error(error, ["delay"])
sim = AerSimulator(noise_model=noise_model)
الآن نبني دوائر والـobservables الخاصة بنا. وهي بسيطة للغاية. ستتألف الدوائر ببساطة من تحضير الـqubit في وتنفيذ تأخيرات لفترات زمنية متزايدة، باستخدام أزمنة الـgate المميزة و المعرَّفة أعلاه. وستكون الـobservables ببساطة ، لأن ما نريد معرفته هو ما إذا كان الـqubit قد بقي في أو تحلل إلى . ورغم أن الـtranspilation ليست ضرورية دائمًا للمحاكيات، فإننا سنمضي قدمًا ونقوم بـtranspile لدوائرنا هنا لاستخدامها لاحقًا على backend حقيقي.
observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times_sim = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
for j in range(i):
qc.delay(delay_unit * two_q_gate_time, 0, "s")
j = j + 1
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times_sim.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)
نُشغّل الـjob الخاصة بنا باستخدام محاكي.
pubs = list(zip(circuits, obs))
# Create AerSimulator with noise model as backend
simulator = AerSimulator(noise_model=noise_model)
# Create SamplerV2 from the AerSimulator backend
estimator = EstimatorV2.from_backend(simulator)
# Run the sampler on the circuit, specify shots
job = estimator.run(pubs)
result = job.result()
أخيرًا، نرسم النواتج بيانيًا.
# Optional: color palette similar to 'mpl', style = 'clifford'
from cycler import cycler
plt.rcParams["axes.prop_cycle"] = cycler(
color=[
"#4C78A8", # muted blue
"#72B7B2", # teal
"#54A24B", # green
"#9C89CC", # purple
"#B279A2", # mauve
]
)
# Everything else stays at Matplotlib defaults
# Example data: assume result is a list of objects with structure result[i].data.evs.item()
# and delay_times is already defined as a list of floats.
# Extract y-values
y_sim_values = [(1 - r.data.evs.item()) / 2 for r in result]
# Use delay_times as x-values
x_sim_values = delay_times_sim
# Create the plot
plt.figure(figsize=(8, 5))
plt.plot(x_sim_values, y_sim_values, marker="o", linestyle="-", label="EV Data")
plt.xlabel("Idle Time (s)")
plt.ylabel("Probability of measuring |1>")
plt.title("T1 Decay")
plt.grid(True)
plt.show()

يظهر الاضمحلال الأسي بوضوح، وفي هذا الزمن، يضمحل إلى ما يقل قليلاً عن نسبة 40% من احتمالية البقاء في . لاحظ أن هذا يتفق تمامًا مع النموذج: حيث اخترنا أن يكون الحد الأقصى لـ من نفس رتبة ؛ تذكّر أننا قلنا إن قد يقابل 60 بوابة (أو تلك الرتبة من المقدار)، وهنا يقابل 60 بوابة. وبالتالي
الآن لنُشغّل نفس الـcircuits على حاسوب كمومي حقيقي. ولتغطية نفس مدة التأخير باستخدام عدد أقل من الـjobs، سنزيد وحدة التأخير ونقلل عدد النقاط.
# This took 27 s on ibm_boston
from qiskit_ibm_runtime import EstimatorV2
# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
# Use the same time parameters and shots
n_points = 10
delay_unit = 400
shots = 100
# Measure Pauli Z's as your observables
observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
qc.delay(delay_unit * two_q_gate_time * i, 0, "s")
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)
pubs = list(zip(circuits, obs))
estimator = EstimatorV2(mode=backend)
job = estimator.run(pubs=pubs)
result = job.result()
# To print the job id for later retrieval of data
# job_id = job.job_id()
# print(f"Job ID: {job_id}")
الآن نرسم النتائج بيانيًا.
fig, ax = plt.subplots()
# Convert from the expectation value of Z to the probability of a transition
y_real_values = [(1 - r.data.evs.item()) / 2 for r in result]
# Use delay_times as x-values
x_real_values = delay_times
# Exponential decay to match theoretical model
t_smooth = np.linspace(0, x_sim_values[19], 100) # Smooth x-range covering your data
y_decay = np.exp(-t_smooth / (t1)) # y = exp(-t/t1)
ax.plot(t_smooth, y_decay, "k--", linewidth=1, label=f"Perfect Decay (t1={t1:3f} s)")
# Add simulator values
ax.scatter(x_sim_values, y_sim_values, label="Simulator", alpha=0.7)
# Add real QC values
ax.scatter(x_real_values, y_real_values, label="Real", alpha=0.7)
# Add labels and plot
ax.set_xlabel("Idle Time (s)")
ax.set_ylabel("Probability of measuring |1>")
ax.legend()
ax.set_title("T1 Decay")
ax.grid(True)
plt.show()

كما نرى، يتطابق اضمحلال حالة عبر الزمن مع النظرية (ومع تعريف ). علاوة على ذلك، يطابق المحاكي سلوك الحاسوب الكمومي الحقيقي بشكل جيد إلى حد ما في هذه الحالة. وفيما يلي بعض الأمور التي يجب مراعاتها بشأن اضمحلال هذه الحالة:
- لقد أخّرنا القياس بشكل مصطنع لمدة زمنية غير واقعية. تقابل هذه التأخيرات المقياس الزمني لدوائر عميقة للغاية قد تتألف من آلاف الـgates ذات الكيوبتين. وقد فُعل ذلك فقط لإظهار وجود تأثيرات الضوضاء الحرارية. ففي دوائر حقيقية مطبقة على مسائل واقعية، ستُجرى العمليات على كيوبتات أخرى بينما قد يبقى عدد قليل خاملاً لفترة كافية لتصبح أخطاء الاسترخاء الطاقي ذات أهمية — لكن أخطاء أخرى ستهيمن قبل الوصول إلى كامل.
- لم تُستخدم أي تقنيات لتخفيف الأخطاء أو قمعها. يمكننا تغيير منحنى الاضمحلال هذا باستخدام تقنيات سنتعلمها في هذه الدورة.
- استخدمنا هنا 100 shot فقط، وهو عدد منخفض بشكل غير معتاد لأننا سعينا فقط إلى إثبات وجود التأثير. ومن المرجح أنك ستستخدم أكثر من 1000 shot في التطبيقات.
لم يتطلب هذا التصوير الأول للخطأ أي بوابات تقريبًا باستثناء التأخيرات (وبوابة الـX الواحدة المستخدمة لتحضير ). لننظر الآن إلى مثال آخر يركز على خطأ البوابة.
أخطاء الـgate وتراكمها
عندما نُطبّق بوابة كمومية، لنقل بوابة ، فإن هذه البوابة تُدير نظريًا حالة كمومية بزاوية راديان حول المحور على كرة بلوخ، ما يُحوِّل إلى عبر
ومع ذلك، فإن البوابة الحقيقية غير مثالية. فقد تكون موجَّهة بشكل غير دقيق (ما يسبب دورانات ليست تمامًا حول المحور X) أو قد تسبب دورانًا أكبر أو أصغر قليلًا مما هو مقصود. لنُمثّل خطأ البوابة على أنه دوران زائد أو ناقص خالص بزاوية صغيرة .
إذا طُبّقت بوابة غير مثالية عدة مرات، يمكن أن تتراكم الأخطاء الصغيرة . بل إن هذه الأخطاء المتعددة تُسبب أحيانًا انزياح الحالة في الاتجاه نفسه في كل مرة (ظاهرة تُسمى "التراكم المتماسك"، والتي سنعود إليها أدناه). لنرَ ماذا يحدث عندما نطبّق بوابة X حقيقية على كيوبت عدة مرات.
# This took 78 s on penguino1
from qiskit_ibm_runtime import EstimatorV2
# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
# Use the same bit flips
max_depth = 60
circuits = []
observables = []
for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))
pubs = list(zip(circuits, observables))
estimator = EstimatorV2(mode=backend)
results = estimator.run(pubs=pubs).result()
real_expectations = [pub_res.data.evs for pub_res in results]
# from qiskit_ibm_runtime import QiskitRuntimeService
# service = QiskitRuntimeService() # uses stored IBM Quantum account
# job_id = "d5immof67pic7386l8eg"
# job = service.job(job_id) # retrieve the job
# results = job.result() # this is your .result() object
# Convert from the expectation value of Z to the probability of a transition
# y_real_values = [(1-r.data.evs.item())/2 for r in results]
# Create the plot
plt.figure(figsize=(8, 5))
# plt.plot(range(max_depth + 1), y_real_values, 'o-')
# plt.plot(x_real_values, y_real_values, marker='o', linestyle='-', color='blue', label='EV Data')
plt.plot(
range(max_depth + 1),
real_expectations,
marker="o",
linestyle="-",
color="blue",
label="EV Data",
)
plt.xlabel("Number of Flip-Back Cycles")
plt.ylabel("Expectation ⟨Z⟩")
plt.title("Accumulated Gate Noise Effects on Flips")
plt.grid(True)
plt.show()

تبدأ قيمة التوقع عند حوالي 1.0 كما هو متوقع، ثم تتناقص، لكنها لا تتناقص فقط إلى الصفر! بل تصبح سالبة. لو كان هذا ضوضاء حرارية أو تفاعلات عشوائية، لما جعل أكثر احتمالًا للقياس من . هذا الخطأ مختلف بوضوح. وهذا منطقي في سياق نقاشنا حول الدوران الزائد/الناقص. فإذا كان كل زوج من الدورانات الذي يُفترض أن يُلغي بعضه بعضًا ينتهي في الواقع بدوران بزاوية صغيرة، فإن العديد من هذه التكرارات سيسمح ببطء للحالة بالدوران من نحو .
من غير المرجح أن يسير تراكم الأخطاء الموضح هنا بهذا الشكل المرتب في سير عمل حقيقي. فمن ناحية، قمنا عمدًا بإيقاف تخفيف الأخطاء ونفّذنا نفس تسلسل البوابات المتكرر للسماح للأخطاء بالتراكم بشكل متماسك. يتم ذلك فقط لإثبات وجود هذه الأخطاء. وعندما نستخدم تقنيات التعامل مع الضوضاء (مثل Pauli twirling)، يمكننا التأثير على كيفية تراكم الخطأ، مما يؤدي غالبًا إلى خطأ إجمالي أقل.
يمكننا التحقق بدقة من مدى ملاءمة نموذجنا لهذا الخطأ للبيانات التجريبية عن طريق بناء نموذج ضوضاء صريح واستخدام محاكي. في النموذج أدناه، نُدرج صراحةً خطأً يقابل 0.025 راديان. هذا ليس رقمًا سحريًا؛ إذ يمكن ببساطة ضبط الخطأ حتى يصف التجربة بشكل معقول.
from qiskit_aer.noise import NoiseModel, coherent_unitary_error
from qiskit_aer import AerSimulator
import numpy as np
# For your SINGLE-QUBIT test on qubit 0, just override X error specifically
noise_model = NoiseModel.from_backend(backend, gate_error=True, thermal_relaxation=True)
theta_error = 0.025 # model over-rotation error around 0.01-0.03 radians
U_over = np.array(
[
[np.cos(theta_error / 2), -1j * np.sin(theta_error / 2)],
[-1j * np.sin(theta_error / 2), np.cos(theta_error / 2)],
]
)
unitary_error = coherent_unitary_error(U_over)
# Target ONLY qubit 0 (your circuit) - no warning!
noise_model.add_quantum_error(unitary_error, ["x"], [0])
simulator = AerSimulator(noise_model=noise_model)
WARNING: quantum error already exists for instruction "x" on qubits (0,) , appending additional error.
max_depth = 60
circuits = []
observables = []
for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))
pubs = list(zip(circuits, observables))
estimator = EstimatorV2.from_backend(simulator)
results = estimator.run(pubs).result()
expectations = [pub_res.data.evs for pub_res in results] # no [0], use value directly
الآن يمكننا رسم المنحنيين الحقيقي والمحاكى معًا.
fig, ax = plt.subplots()
# Add simulator values
ax.scatter(range(max_depth + 1), expectations, c="blue", label="Simulator", alpha=0.7)
# Add real QC values
ax.scatter(range(max_depth + 1), real_expectations, c="red", label="Real", alpha=0.7)
# Add labels and plot
ax.set_xlabel("Number of Flip-Back Cycles")
ax.set_ylabel("Expectation ⟨Z⟩")
ax.set_title("Accumulated Gate Noise Effects on Flips")
ax.legend()
ax.grid(True)
plt.show()

كان الخطأ في الدائرة الحقيقية موصوفًا بشكل جيد إلى حد ما بنموذج خطأ الدوران الزائد/الناقص. ومن الواضح أن الأنواع المختلفة من الضوضاء والأخطاء ستتراكم بطرق مختلفة، وستؤدي إلى تأثيرات مختلفة جذريًا على دقة دوائرنا الكمومية. لذا يصبح من المهم جدًا تصنيف وتوصيف الأخطاء التي يمكن أن تحدث بشكل أكثر رسمية مما فعلنا حتى الآن.
توصيف الأخطاء الكمومية
لقد وصفنا سابقًا بعض مصادر الضوضاء الكمومية، ويمكننا تصنيف الأخطاء وفقًا لفئات الضوضاء التي تسببها. لكن قد توجد فئات مختلفة من الأخطاء الكمومية مفيدة في تصحيح الأخطاء وتخفيفها. فعلى سبيل المثال، نحتاج إلى معرفة عند أي نقطة تحدث الأخطاء وكيف تتراكم إذا أردنا تصحيحها أو تخفيفها. وعند تحديد أين (في أي عمليات) تحدث الأخطاء، تُعد فئة أخطاء تحضير الحالة والقياس (أو أخطاء SPAM اختصارًا) فئة مهمة وشائعة. هنا، لا يعني مصطلح "تحضير الحالة" كل ما يُفعل بالحالة لتحضيرها للقياس. بل يشير إلى تهيئة الكيوبتات، أي "تحضير" الكيوبتات لتنفيذ خوارزمية، وبالتالي تستبعد فئة SPAM هذه أمورًا مثل أخطاء البوابات أثناء تنفيذ الخوارزمية.
هناك تمييز مهم آخر وهو ما إذا كانت الأخطاء متماسكة أم غير متماسكة. وباختصار (سنناقشها بتفصيل أكبر أدناه)، عادةً ما تُنمذج الأخطاء المتماسكة بعمليات أحادية (unitary) وتحافظ على نقاء الحالة. أما الأخطاء غير المتماسكة فتُنمذج بقنوات كمومية غير أحادية وتقلل عمومًا من نقاء الحالة. من السهل تصور الأخطاء غير المتماسكة كتفاعلات حرارية تسبب فقدان المعلومات الكمومية، لكنها في الواقع يمكن أن تنجم عن أي اقتران عشوائي مع البيئة. وكمثال على خطأ متماسك، لنفترض وجود عيب في توجيه النبضة عند تنفيذ بوابة RY بحيث تتسبب بوابة فعليًا في . مثل هذا العيب سيسبب دائمًا دورانًا خاطئًا حول المحور X في نفس الاتجاه. وهذا سيكون خطأً متماسكًا.
لاحظ أن أخطاء SPAM تتضمن مزيجًا من الأخطاء المتماسكة، مثل أعطال التحكم المنهجية، والأخطاء غير المتماسكة، مثل فقدان الفوتونات والتأثيرات الحرارية. ولأن هذا يتضمن خطوات ومصادر أخطاء متعددة، فإن أفضل وصف لأخطاء SPAM هو أنها مزيج من الأخطاء المتماسكة وغير المتماسكة معًا.
أخطاء SPAM
كما يوحي الاسم، تنشأ أخطاء SPAM في مرحلتين متمايزتين من التجربة الكمومية: التحضير الأولي والقراءة/القياس. تحدث أخطاء تحضير الحالة عندما يفشل الجهاز في تهيئة الكيوبتات بشكل موثوق في حالة البداية المطلوبة ( بالنسبة لحواسيب IBM الكمومية). وتشمل الأسباب:
- الإثارة الحرارية (الكيوبتات الحقيقية ليست مبردة بشكل مثالي ويمكن أن تبدأ أحيانًا في بدلاً من )
- الفوتونات المتبقية أو الضوضاء في الرنانات في الكيوبتات فائقة التوصيل
- الانحرافات في المعايرة التي تؤثر على مدى دقة إعادة ضبط الكيوبتات
تحدث أخطاء القياس أثناء عملية القراءة، عندما يخطئ جهاز القياس في تحديد حالة الكيوبت. وتشمل المصادر:
-
ضوضاء مضخم القراءة التي تسبب الخلط بين و
-
استرخاء الكيوبت أثناء القراءة (على سبيل المثال، يتحلل كيوبت في الحالة إلى قبل القياس مباشرة أو أثناءه)
-
التداخل بين خطوط القراءة: قراءة كيوبت واحد تؤثر قليلاً على قراءات الكيوبتات المجاورة
-
عتبات تمييز غير مثالية في أنظمة القياس القائمة على الرنانات في IBM
أخطاء SPAM غير متماسكة في الأساس. فأخطاء التحضير تتصرف كخلطات عشوائية من الحالات المثارة والحالات الأرضية. أما أخطاء القياس فتتصرف كخلط كلاسيكي: باحتمال ، يُبلَّغ عن على أنه أو العكس. وهذه تختلف عن الأخطاء الأحادية المتماسكة (مثل البوابات سيئة المعايرة التي تسبب انزياحات طور منهجية). بل تشبه أخطاء SPAM الضوضاء الكلاسيكية العشوائية، وإن كانت هناك انحيازات متماسكة نادرة في القراءة يمكن أن توجد.
يمكن أن تكون أخطاء SPAM مشكلة بالنسبة للقياس المعياري العشوائي (randomized benchmarking) أو للدوائر ذات العمق القصير حيث يمثل تحضير الحالة والقياس جزءًا كبيرًا من إجمالي الخطأ. وتكون أقل إشكالية بالنسبة للدوائر شديدة العمق، خصوصًا تلك التي تحتوي على العديد من بوابات الكيوبتين.
من الناحية الرياضية، يمكن وصف أخطاء SPAM بأنها تنتج توزيعًا مشوَّشًا يرتبط بالتوزيع المثالي عبر مصفوفة :
هنا هو احتمال قياس سلسلة البتات ، و هو احتمال الحصول على الحالة عندما كان يجب تحضير الحالة في . تخيل سياق سلاسل البتات المأخوذة عينة من Sampler. سيتكون توزيع الحالات المقيسة لديك من العديد من القياسات الدقيقة، ولكن أيضًا من بعض القياسات التي لا تتطابق فيها تعليمات تحضير الحالة مع الحالة المرصودة. وهذا يعني أن الاحتمالات ستكون منحرفة قليلاً.

في الشكل أعلاه، يُظهر الجزء (أ) التوزيع المثالي لحالة GHZ باللون الفيروزي، والقياسات الفعلية باللون الأرجواني. وفي الجزء (ب) نرى مثالًا لمصفوفة . لاحظ أن المصفوفة ليست متماثلة تمامًا حول القطر، إذ لا يلزم أن يكون كل كيوبت متساوي الاحتمال في إرجاع 0 خطأً وإرجاع 1 خطأً. من الناحية العملية، غالبًا ما يصعب الفصل بين أخطاء التحضير وأخطاء القراءة، لذا غالبًا ما تُدمَج في معالجة واحدة (ومن هنا الاستخدام الشائع لمصطلح SPAM).
إحدى طرق تصحيح أخطاء SPAM هذه هي استخدام دوائر بسيطة ذات نتائج قياس مثالية معروفة ومقارنتها بالنتائج المقيسة في وجود أخطاء SPAM. ويمكن استخدام ذلك للهندسة العكسية للنتائج المثالية لدوائر أكثر تعقيدًا. وبالنسبة للحالات العامة عالية الإنتروبيا، قد يتطلب هذا بناء مصفوفة تحتوي على احتمالًا، ولكن في الحالات الأقل تطرفًا يمكن تخفيف هذه الأخطاء.
الأخطاء المتماسكة مقابل الأخطاء غير المتماسكة
الأخطاء المتماسكة هي دورانات خاطئة منهجية وحتمية وأحادية للحالة الكمومية. تنشأ من عمليات كمومية غير مثالية تنحرف بطريقة يمكن التنبؤ بها. ومن الأمثلة عليها الأخطاء الطفيفة في الدوران الذي تطبقه بوابات دوران الكيوبت الواحد، بما في ذلك تلك الناجمة عن انحراف المعايرة التي تسبب باستمرار دورانًا زائدًا أو ناقصًا. رياضيًا، يمكننا كتابة أن بوابة دوران حقيقية، لنقل ، تُعطى بواسطة بوابة الدوران المثالية بالإضافة إلى بعض الخطأ الإضافي:
من أجل دوران ناقص أو زائد صغير . ومن الأمثلة الأخرى بوابة كيوبتين تضيف انزياح طور صغير غير مرغوب فيه، ونبضات تحكم تنحرف بشكل منهجي عن الشكل المثالي.
من السمات الرئيسية للأخطاء المتماسكة أنها حتمية ويمكن نمذجتها ببوابات أحادية بحد ذاتها. وبناءً عليه فإنها تحافظ على نقاء الحالة الكمومية: فالمعلومات الكمومية لا تُفقد، بل تُعالَج فقط بشكل غير مثالي. ومن النقاط المهمة الأخرى الجديرة بالملاحظة أن الأخطاء المتماسكة المتكررة تتداخل بشكل بنّاء وقد تنمو أحيانًا بشكل تربيعي مع عدد البوابات.
هذه الأخطاء قابلة للتنبؤ أحيانًا وبالتالي يمكن معايرتها للتخلص منها إلى حد ما. لكن الأخطاء المتماسكة المتبقية قد تتراكم بسرعة، مما يسبب انحرافات مزعجة عن الحالات المثالية. وهذا يعني أنه من المفيد أحيانًا "عشوَنة" الأخطاء المتماسكة عمدًا. وسيتم تناول هذا الإجراء وفائدته في درس تخفيف الأخطاء.
لماذا تُعد مزعجة
يمكن أن "تتراكم" الأخطاء المتماسكة بطرق خطيرة، مما ينتج عنه انحرافات كبيرة عن الحالة الصحيحة إذا لم تُعشوَن أو تُصحَّح.
الأخطاء غير المتماسكة عشوائية عرضية وغالبًا غير أحادية. تنشأ من التفاعلات مع البيئة أو من مصادر ضوضاء غير متحكم بها. وقد رأينا بالفعل بعض الأمثلة: فاسترخاء الطاقة/تحلل غير متماسك. وكذلك ضوضاء البوابات العشوائية، والضوضاء الحرارية، وخطأ القياس.
السمة الرئيسية للأخطاء غير المتماسكة أنها ليست متطابقة في كل مرة تُنفَّذ فيها العملية. وهي غير أحادية، لذا لا يمكن نمذجتها ببوابة كمومية أحادية بسيطة كما يمكن للأخطاء المتماسكة. ولأنها غير متماسكة، فإنها عادة ما تتراكم بطريقة خطية مثل الضوضاء العشوائية، وليس كدوران زائد ثابت.
تتسبب الأخطاء غير المتماسكة في فقدان الكيوبتات للمعلومات بشكل لا رجعة فيه (فقدان النقاء ومعلومات الطور).
فأيهما أسوأ؟ كما هو الحال في معظم أمور الحوسبة الكمومية، الأمر يعتمد. والخلاصة أن الأخطاء المتماسكة تتراكم بشكل أسرع وغير خطي (وهذا أمر سيئ). لكن يمكن معايرتها جزئيًا للتخلص منها، ولا تزال معلومات الطور موجودة في نظامك إذا استطعت معرفة كيفية استخراجها بشكل صحيح. أما الأخطاء غير المتماسكة فتتراكم بشكل خطي، وهذا أمر جيد لسببين: فهو أبطأ من التراكم المتماسك، ومن السهل نسبيًا معرفة كيفية تدرّج تأثيرات الأخطاء غير المتماسكة في عمليات مثل الاستقراء نحو الضوضاء الصفرية (ZNE)، والتي سيتم تناولها في درس تخفيف الأخطاء. ومع ذلك، عندما تحدث الأخطاء غير المتماسكة، تُفقد المعلومات الكمومية فعليًا، لا أن تصبح مجرد مبهمة.
مصفوفات الكثافة والقنوات الكمومية
في الأقسام التالية، سنتعمق أكثر في بعض أنواع الأخطاء المتماسكة وغير المتماسكة، ونرى كيف يمكن نمذجتها رياضيًا باستخدام القنوات الكمومية. أولًا، من المفيد تقديم مراجعة موجزة لمصفوفات الكثافة والقنوات الكمومية. وللاطلاع على معالجة كاملة ودقيقة لهذه المواضيع، راجع مساق جون واترو General formulation of quantum information على IBM Quantum Learning. أما المعالجة هنا فستكون قائمة على الأمثلة وأقل رسمية.
القنوات الكمومية هي الطريقة الأكثر عمومية لوصف كيفية تطور النظام الكمومي وتفاعله وتعرضه للضوضاء. إذا كنت معتادًا على الحالات النقية والتطور الأحادي، فإن القنوات الكمومية هي الخطوة التالية الطبيعية.
في ميكانيكا الكم القياسية، تُكتب الحالة "النقية" على الصورة . وهنا تشير كلمة "نقية" إلى نقاء المعلومة أو معرفة كيفية تحضير الحالة؛ وهي لا تعني حالة ذاتية (eigenstate) لنظام ما. وكمثال على كيوبت، تُعد حالة نقية لأن لدينا معرفة تامة بالسعات النسبية والطور. ويحكم التطورُ الزمني لهذه الحالة النقية مؤثرٌ أحادي :
وفقًا لمعادلة شرودنغر، حيث ، و هو هاملتوني النظام و هو ثابت بلانك المختزل، والذي غالبًا ما "يُساوى بالواحد" أو بشكل أكثر دقة، يُدمَج في الهاملتوني بحيث تُعطى جميع الطاقات بوحدات .
التطور الأحادي قابل للانعكاس، وحتمي، ومعزول. لكن هذا غير كافٍ لوصف الأنظمة الكمومية الحقيقية. ففي الأنظمة الكمومية الحقيقية:
- نُجري قياسات، مما يُسقط الحالة الكمومية إلى حالة ذاتية للنظام. وهذا غير أحادي بشكل صريح.
- يتفاعل النظام مع بيئة. وهذا يعني أن النظام ليس معزولًا تمامًا، ولأنه لا يمكن تتبع البيئة إلى ما لا نهاية، فإن ذلك يقابل فقدانًا للمعلومات.
- من الناحية العملية: تُفسد الضوضاء الحالة. والمزيد.
لا يمكن للتطور الأحادي وحده وصف هذه العمليات؛ لذا نحتاج إلى تمثيل أكثر عمومية للحالات والعمليات الكمومية. تصف الحالة المختلطة توزيعًا كلاسيكيًا للحالات الكمومية. أي أننا نعلم بالفعل أن الحالة الكمومية: لديها احتمال 50% أن تُقاس (تنهار إلى معلومة كلاسيكية) في الحالة واحتمال 50% أن تُقاس في . لكن الادعاء هو أن الحالة الكمومية الأولية هي بالضبط باحتمال 100%. الآن نريد أن نضيف فوق الاحتمال الكمومي الميكانيكي احتمالًا كلاسيكيًا، على سبيل المثال:
تُحضَّر الحالة الكمومية الأولية في باحتمال كلاسيكي قدره 25%، وتُحضَّر في باحتمال كلاسيكي قدره 75% (لاحظ اختلاف الأطوار النسبية).
قد يكون هذا أحيانًا بسبب احتمالات كلاسيكية صريحة في التحضير؛ وأحيانًا أخرى بسبب التشابك مع أجزاء من البيئة نتجاهلها. وفي كلتا الحالتين، تتضح الحاجة إلى أداة لوصف هذا التوزيع الكلاسيكي للحالات الكمومية الميكانيكية. فالحالات النقية وحدها لا يمكنها تمثيل هذه الاحتمالات. لذا، نُقدِّم مصفوفة الكثافة.
تُوصَف الحالة المختلطة بمؤثر الكثافة:
هنا، هي حالة كمومية (ليست بالضرورة حالة ذاتية لأي مؤثر معين) و هو الاحتمال الكلاسيكي لأن يُحضَّر النظام في الحالة . وهذه وصفة جيدة لكيفية بناء مصفوفة كثافة من توزيع كلاسيكي معروف للحالات الكمومية. من ناحية أخرى، قد نرغب في معرفة، بمعطيات توزيع كلاسيكي للحالات الكمومية واحتمال كمومي ميكانيكي لنتائج قياس مختلفة، ما هو احتمال أن يُعطي القياس حالة معينة (مثل أو أو حالات أخرى عند وجود كيوبتات أكثر). وهنا تكون مصفوفة الكثافة مفيدة بشكل خاص. يمكننا أيضًا كتابتها في أساس كالتالي:
هنا، العناصر القطرية هي احتمالات:
-
= احتمال أن يكون الكيوبت في
-
= احتمال أن يكون الكيوبت في
وهي حقيقية، وغير سالبة، ومجموعها يساوي 1.
العناصر غير القطرية هي التماسكات (coherences): علاقات الطور أو القدرة على التداخل، وتقابل عمومًا مقدار المعلومات الكمومية الميكانيكية الموجودة في الحالة. هذا تصريح غير رسمي، لكن لنرَ ماذا يعني ذلك عمليًا.
مثال
اعتبر الحالة النقية . (أ) ماذا تعرف عن احتمالات القياس ومعلومات الطور دون القيام بأي حسابات؟ (ب) ابنِ مصفوفة الكثافة وتحقق من حدسك.
Solution:
(أ) بما أنها حالة نقية، فهناك طور واحد ممكن فقط بين و : +1. هذه معلومات طور تامة، لذا نتوقع أن تكون العناصر غير القطرية في مصفوفة كثافتنا كبيرة. قد يكون لديك حدس أعمق من ذلك حول العناصر غير القطرية، لكن هذا كافٍ الآن. علاوة على ذلك، فإن سعتي حالتي الأساس متساويتان، لذا نتوقع احتمال 50% لقياس إما أو . لذا نتوقع أن تكون المدخلات القطرية 1/2. (ب) باستخدام التعريف أعلاه:
فقط بالنسبة للحالة . لذا يمكننا أن نكتب
المدخلات القطرية تساوي كل منها كما هو متوقع، والعناصر غير القطرية كبيرة (مجموعها يساوي واحدًا).
الآن لنرَ ماذا يحدث عندما لا تكون لدينا معلومات طور جيدة.
مثال
اعتبر حالة مشابهة، لكن الآن باحتمال كلاسيكي قدره 50% لأن تكون في الحالة واحتمال كلاسيكي قدره 50% لأن تكون في الحالة . نفس السؤالين: (أ) ماذا تعرف عن احتمالات القياس ومعلومات الطور دون القيام بأي حسابات؟ (ب) ابنِ مصفوفة الكثافة وتحقق من حدسك.
Solution:
(أ) كما في السابق، فإن سعتي حالتي الأساس متساويتان، لذا نتوقع احتمال 50% لقياس إما أو . لذا نتوقع أن تكون المدخلات القطرية 1/2. لكن هذه المرة هناك احتمالان متعاكسان للطور بين و : +1 و -1، وكل منهما محتمل بنفس القدر. قد يتوقع المرء أنه مع وجود طورين متعاكسين محتملين بنفس القدر، تكون لديك معلومات طور قليلة جدًا أو معدومة. قد يتوقع المرء أن تكون العناصر غير القطرية صغيرة. (ب) مرة أخرى باستخدام التعريف أعلاه
فقط بالنسبة للحالتين و . لذا يمكننا أن نكتب
المدخلات غير القطرية صغيرة، بل صفرية في الواقع، كما هو متوقع. وما زالت العناصر القطرية 50% لكل منهما، وهذا منطقي لأن كلًا من الحالتين في الخليط كانت فيهما و بوزن متساوٍ.
يصبح هذا البناء أكثر إثارة للاهتمام مع زيادة عدد الكيوبتات. استكشف ذلك في الأسئلة أدناه.
تحقق من فهمك
اكتب مصفوفة الكثافة لحالة بيل النقية .
الإجابة
فقط بالنسبة للحالة . لذا يمكننا أن نكتب
اكتب مصفوفة الكثافة لاحتمال كلاسيكي قدره 25% لـ واحتمال كلاسيكي قدره 75% لـ .
الإجابة
فقط بالنسبة للحالتين و . لذا يمكننا أن نكتب
عدِّل عملك من السؤال السابق لكتابة مصفوفة الكثافة لاحتمال كلاسيكي قدره 50% لـ واحتمال كلاسيكي قدره 50% لـ . توقّع ما هي معلومات الطور التي ينبغي أن تبقى.
الإجابة
فقط بالنسبة للحالتين و . لذا يمكننا أن نكتب
تجمع الحدود القطرية إلى 1، كما يجب. ولا تُلغى الحدود غير القطرية هنا كما حدث في مثال سابق بكيوبت واحد. ويمكنك معرفة السبب من خلال الرياضيات، لكن التفسير المختصر هو أن هناك حالات أكثر في فضاء هيلبرت لدينا الآن. فرغم أن حالة بيل الأولى كان لديها طور نسبي موجب والثانية كان لديها طور سالب، فإن هذه الأطوار كانت بين حالات أساس مختلفة. فحالة بيل الأولى كان لديها طور بين و ، بينما كان لدى الثانية طور نسبي بين و .
القنوات الكمومية
القناة الكمومية هي التحويل الأعم المسموح به فيزيائيًا لحالة كمومية. فهي تأخذ مصفوفة كثافة أولية إلى مصفوفة كثافة أخرى:
هنا يعني أن قناة كمومية تعمل على مصفوفة كثافة ، ولا ينبغي الخلط بينها وبين حالتي بيل أو .
القنوات الكمومية عامة للغاية. ويمكن أن تشمل:
-
التطور الأحادي
-
خلطات احتمالية من المؤثرات الأحادية
-
Measurements
-
Decoherence
-
تخامد السعة (فقدان الطاقة)
-
فقدان الترابط الطوري (فقدان معلومات الطور)
-
التفاعل مع بيئة وأشياء أخرى كثيرة.
إحدى طرق التفكير في القنوات الكمومية هي أنها بالنسبة لمصفوفات الكثافة مثل المؤثرات الأحادية بالنسبة للحالات النقية. لكن عمومية مصفوفات الكثافة تسمح للقنوات الكمومية المقابلة لها بأن تكون أكثر عمومية بكثير وبالتالي أكثر قوة.
القيود الوحيدة على القناة الكمومية هي أنها يجب أن تكون:
- خطية يجب أن تتطور خلطات الحالات بشكل متسق:
- موجبة تمامًا يجب ألا تُنتج احتمالات سالبة، حتى لو كان نظامك متشابكًا مع شيء آخر.
- حافظة للأثر يجب أن يكون مجموع الاحتمالات 1. وتُجمَع هذه أحيانًا معًا في الاختصار CPTP: خرائط موجبة تمامًا وحافظة للأثر (Completely Positive Trace-Preserving).
توجد تمثيلات مختلفة للقنوات الكمومية، منها تمثيلات ستاينسبرينغ وكراوس وشوي. وتُعالَج هذه بالتفصيل في هذا الدرس حول القنوات الكمومية ضمن General formulation of quantum information، وتُبيَّن هناك أيضًا أنها متكافئة. لن نتطرق إلى هذه التمثيلات المختلفة هنا. يكفي القول إنها تشبه وصف المتجهات باستخدام ثلاثة أطر إحداثيات مختلفة. فكل منها قد يبرز جوانب مختلفة ويبني حدسًا بطريقة مختلفة؛ لكنها جميعًا تعطيك الإجابة الصحيحة. تمثيلات كراوس مناسبة لأغراضنا. فهي تقدم طريقة صيغية مناسبة للتعبير عن فعل القناة من خلال ضرب المصفوفات وجمعها. وعلى وجه الخصوص، تمثيل كراوس هو تحديد لقناة بالصيغة التالية.
هنا، مصفوفات لها جميعًا نفس الأبعاد: أعمدتها تقابل الحالات الكلاسيكية لنظام الإدخال، ، وصفوفها تقابل الحالات الكلاسيكية لنظام الإخراج، سواء كان نفسه أو نظامًا آخر . ولكي تكون قناة صالحة، يجب أن تحقق هذه المصفوفات الشرط التالي.
تُسمى هذه المصفوفات مصفوفات كراوس. وتنطبق هذه الصياغة ليس فقط على قنوات الضوضاء، بل على العمليات والقنوات الكمومية العامة، بما في ذلك القياس. لنرَ مثالًا على كيفية استخدام هذه المصفوفات لبناء قنوات في سياق الضوضاء والأخطاء.
قناة فقدان الترابط الطوري الكامل
اعتبر قناة تدمر كل معلومات الطور وسمِّها قناة فقدان الترابط الطوري الكامل. وهذا يعني أن هذه القناة ينبغي أن تأخذ أي مصفوفة كثافة من الصورة
وتُحوِّلها إلى
إذا افترضنا أن مصفوفة الكثافة قد كُتبت بالفعل في الأساس الحاسوبي، يمكننا التعبير عن على أنه . وهذا يقترح مجموعة من مصفوفات كراوس يمكنها تحقيق فعل هذه القناة: . لنطبّق هذه الاستراتيجية على حالة مثال لكيوبت واحد، ونرَ إن كانت تعمل كما نطلب:
لتكن و .
بما أن عدد، يمكننا ببساطة نقل المتجه بعده. وينطبق هذا على الحد الثاني أيضًا. لدينا:
لاحظ أن هذه المصفوفات تحقق الشرط المطلوب:
من الجدير بالذكر أن هذا الاختيار لمصفوفات كراوس ليس فريدًا.
وصف الضوضاء كقنوات
في هذا القسم سنستخدم نموذج كرة بلوخ ورياضيات القنوات الكمومية لفهم أنواع الضوضاء والأخطاء المختلفة بشكل أفضل.
الأخطاء غير المتماسكة
لنعد إلى الأخطاء غير المتماسكة ولنستكشف تحديدًا أخطاء الاسترخاء الطاقي (energy relaxation). تذكر أن الحالة هي الحالة الأرضية لكيوبت، وأن الحالة ذات طاقة أعلى قليلاً. تتحلل الحالات الكمومية أحيانًا تلقائيًا من مستوى طاقة أعلى إلى مستوى أدنى. عملية الانبعاث التلقائي موضوع غني ولا يمكن فهمه حقًا دون معالجة نظرية المجال الكمومي. لكن الحدس مألوف جدًا لدينا جميعًا: قد تتسبب الاضطرابات العشوائية في تدحرج صخرة إلى أسفل تل؛ لكنها لن تتسبب في تدحرجها إلى أعلى التل. تُوصف المدة التي يبقى فيها الكيوبت في حالة الطاقة الأعلى بزمن . وبشكل أدق، فإن احتمال بقاء كيوبت مُحضَّر في الحالة في تلك الحالة بعد زمن هو . أو بشكل معادل، فإن احتمال لحدوث خطأ استرخاء طاقي بعد زمن هو
لوصف هذا بقناة كمومية في تمثيل كراوس، نحتاج إلى مصفوفات كراوس تقابل
- ترك حالات دون تغيير
- تغيير حالات إلى باحتمال p معين.
لنعرّف
أولًا، دعونا نتحقق من أن هذا يُحدث التأثيرات المرجوة على مصفوفة الكثافة. اعتبر نظامًا في حالة نقية . رأينا في مثال سابق أن مصفوفة الكثافة لهذه الحالة هي
بتطبيق قناة الاسترخاء الطاقي باستخدام مصفوفات كراوس، نحصل على مصفوفة الكثافة الجديدة المُحوَّلة:
لنفحص هذا ونقارنه بحدسنا:
أولًا، لنتحقق من النهاية عندما يقترب من الصفر. نستعيد مصفوفة الكثافة الأولية، كما يجب:
مع مرور الوقت، نتوقع أن يزداد احتمال قياس حالة ، وأن يقل احتمال قياس . وهذا بالضبط ما نراه مرة أخرى، حيث
يمكننا أيضًا أن نرى بسهولة أن مجموع احتمالَي قياس و يساوي 1، كما ينبغي.
إن التحجيم الدقيق لحدود الترابط (خارج القطر) يقع خارج نطاق هذا الشرح. لكن الواضح هو أننا نملك في البداية معلومات طورية كاملة، وبعد زمن طويل جدًا لا يمكن أن توجد أي معلومات طورية لأن النظام يسترخي تمامًا إلى الحالة . لذلك، يجب أن تتلاشى حدود الترابط إلى الصفر بعد أزمنة طويلة جدًا. وبالفعل،
يتم التحقق ضمنيًا من كثير من القيود المفروضة على مصفوفات كراوس لدينا من خلال هذه الاعتبارات الحدسية. ينبغي التحقق بدقة من استيفاء القيود المفروضة على القنوات (وعلى مصفوفات كراوس تحديدًا)، لكننا نترك ذلك كتمرين للقارئ.
بيانيًا، يمكن تمثيل هذا النوع من القنوات باستخدام كرة بلوخ. تقع الحالة النقية على سطح كرة بلوخ. تنتقل الحالات المختلطة إلى داخل الكرة وتنتشر بعيدًا عن نقطة واحدة. يظهر إدراج الاحتمالات الكلاسيكية من خلال انخفاض المسافة المطلقة من نقطة الأصل إلى أي من الحالات في المزيج، ويشير الانتشار من نقطة واحدة إلى منطقة إلى اختلاط عدة حالات ممكنة. في الحالة الخاصة لقناة الاسترخاء الطاقي، ستبدو الحالة المختلطة (مصفوفة الكثافة) بعد زمن غير مهمل كما في الصورة أدناه: منطقة داخل كرة بلوخ، منزاحة إلى الأعلى نحو القطب ، ومنكمشة على طول المحور وكذلك على طول المستوى ، وإن كان ذلك بدرجة أقل مما هو عليه على طول .
لاحظ أن هذه المنطقة ليست "قبعة" على كرة بلوخ، كما قد تبدو أحيانًا في عرض منظوري. وكما يتضح بجلاء في الفيديو، فهي شكل إهليلجي مفلطح (oblate spheroid)، منكمش ومنزاح نحو الحالة . إن قنوات الضوضاء (والقنوات بشكل عام) قابلة للتطبيق بالطبع على أنظمة من أي حجم. لكن تمثيلها بصريًا (كما هو الحال مع كرة بلوخ) يصبح صعبًا مع زيادة عدد الحالات المتعامدة المتبادلة في فضاء هيلبرت.
تحقق من فهمك
تحقق من أن مصفوفات كراوس المستخدمة في قناة الاسترخاء الطاقي أعلاه تحقق شرط الهوية:
الإجابة
سنقدم نوعين آخرين من قنوات الضوضاء غير المتماسكة، لكننا سنترك معظم التفسير والتحقق كتمارين. التالي هو قناة فقدان الترابط الطوري (dephasing channel)، التي تصف فقدان معلومات الطور مع الحفاظ على السعات. ورغم أنه لا يزال بالإمكان أن تتداخل الاحتمالات الكلاسيكية والكمومية معًا في احتمال القياس الكلي، فإن فقدان معلومات الطور غالبًا ما يُوصف بأنه فقدان للمعلومات الكمومية، أو بأن النظام يصبح أكثر كلاسيكية.
بنفس الطريقة التي وُصف بها الاسترخاء الطاقي بزمن مميز ، تُوصف أخطاء فقدان الترابط الطوري بمعامل زمني ثانٍ . يُعطى احتمال حدوث خطأ فقدان ترابط طوري بعد زمن بواسطة
مجموعة من مصفوفات كراوس لقناة فقدان الترابط الطوري على كيوبت واحد، بدلالة هذا الاحتمال، هي كما يلي:
تُصوَّر نتيجة قناة فقدان الترابط الطوري هذه باستخدام كرة بلوخ في الشكل أدناه.
لاحظ أن السعات لا تتغير، لذا فإن أي حالات تقع تمامًا على أحد القطبين ( أو ) لا تتأثر ولا تزال تُحوَّل إلى سطح الكرة في المنطقة المظللة. لكن معلومات الطور تُفقد، وهو ما يقابل انكماش المنطقة المظللة عبر المستوى . إحدى طرق فهم ذلك هي: قد لا تزال أي حالة كمومية ممكنة تملك طورًا محددًا جيدًا، لكن بما أن هناك احتمالًا كلاسيكيًا للعثور على عدة حالات بأطوار محددة جيدًا مختلفة، فإن الاحتمال الكلي لأي طور محدد جيدًا واحد ينخفض.
تحقق من فهمك
تحقق من أن مصفوفات كراوس المعرَّفة أعلاه لقناة فقدان الترابط الطوري تحقق شرط الهوية:
الإجابة
ابدأ بحالة نقية لكيوبت واحد من اختيارك، بطور محدد جيدًا بين و. اكتبها كمصفوفة كثافة. طبّق قناة فقدان الترابط الطوري باستخدام مؤثرات كراوس المقترحة أعلاه. فسّر مصفوفة الكثافة الناتجة المُحوَّلة.
الإجابة
لنختر الحالة . مصفوفة الكثافة المقابلة هي
الآن نطبق قناة فقدان الترابط الطوري على مصفوفة الكثافة هذه باستخدام مؤثرات كراوس.
أولًا، نلاحظ أن مجموع عناصر القطر يساوي بالفعل واحدًا، كما يجب أن يكون. ثانيًا، لاحظ أن العناصر خارج القطر كانت كبيرة في البداية، بمجموع 24/25، مما يشير إلى تماسك قوي. لاحظ أنه مع ازدياد احتمال خطأ فقدان الترابط الطوري ، تنخفض هذه العناصر خارج القطر. وهذا يتوافق أيضًا مع توقعنا. نقطة دقيقة: لاحظ ما يحدث عندما . يصبح التماسك قويًا مرة أخرى! قد يبدو هذا غير بديهي للوهلة الأولى، لأن احتمالًا مرتفعًا لخطأ فقدان الترابط الطوري من المفترض أن يُفسد طورنا، أليس كذلك؟ لكن السر هو أنه إذا كنا متأكدين بنسبة 100% من حدوث خطأ طوري، فإننا نمتلك مرة أخرى معلومات قوية عن الطور؛ فقد انقلب الطور ببساطة. وبهذه الرؤية، قد نتوقع أن تقابل أسوأ معلومات طورية احتمالًا بنسبة 50-50 لحدوث خطأ طوري، وهذا بالفعل ما نجده.
مثالنا الأخير على قناة ضوضاء تصف الأخطاء غير المتماسكة هو قناة ضوضاء باولي (Pauli noise channel). تصف هذه القناة حدوث ثلاثة أنواع من الأخطاء باحتمالات مستقلة:
- خطأ انقلاب البت (خطأ X) باحتمال
- خطأ انقلاب الطور (خطأ Z) باحتمال
- الجمع بين X وZ (خطأ Y) باحتمال هنا، لجميع قيم . ونتيجة لذلك، فإن احتمال عدم حدوث أي خطأ هو .
مؤثرات كراوس لهذه القناة هي:
في حالة قناة ضوضاء باولي، من المفيد كتابة القناة نفسها:
نرى من هذا الشكل أن قناة ضوضاء باولي تُنفذ خطأً واحدًا أو أكثر يقابل تأثير مصفوفات باولي ، كل منها باحتمال .
تُنتج التركيبات المختلفة من احتمالات الانقلاب تصويرات مرئية مختلفة. هنا نصوّر الحالة الخاصة حيث ، والتي تُسمى أيضًا قناة الإزالة الاستقطابية (depolarizing channel).
نمذجة الأخطاء المتماسكة
يمكن للقنوات الكمومية أن تمثل كلًا من الأخطاء المتماسكة وغير المتماسكة، لكنها تُستخدم عمليًا بشكل رئيسي للأخطاء غير المتماسكة، لأن الأخطاء المتماسكة تُنمذج بشكل أفضل كسوء معايرة أحادي (unitary) أو تُحوَّل إلى قنوات عشوائية لتسهيل التحليل. في هذا القسم سنقدم مناهج أكثر ملاءمة للأخطاء المتماسكة.
يمكن نمذجة الأخطاء المتماسكة بواسطة بوابات أحادية غير مرغوب فيها. من الأمثلة البسيطة الدورانات غير المحاذاة أو نقص/زيادة الدوران. في الصورة أدناه، نوضح دورانًا غير محاذٍ كدوران إضافي حول بمقدار صغير بالإضافة إلى الدوران المطلوب حول المحور . تُوصف زيادة الدوران بالدوران المطلوب حول مع دوران إضافي حول نفس المحور .

الأخطاء الثنائية الكيوبت ومخاريط الضوء المظللة
تُدوّر البوابة الأحادية الكيوبت كيوبتًا معزولًا. أما البوابة الثنائية الكيوبت فتُنفذ منطقًا يعتمد على كيوبتين، لكنها لا تستطيع إجراء قياس مباشر لأي منهما؛ لذا يجب أن تُفعّل تفاعلًا بين الكيوبتات. هذا التفاعل هو سبب قدرتنا على بناء التشابك (entanglement)، وهو أيضًا مصدر كثير من الضوضاء والتداخل (crosstalk) وصعوبة المعايرة. يسمح هذا التفاعل بين الكيوبتات أيضًا بانتشار الأخطاء. فإذا كان أحد الكيوبتات يحمل خطأً ما، وكان يعمل ككيوبت تحكم لكيوبت هدف آخر، يمكن أن ينتقل الخطأ إلى الهدف. في هذا الدرس سنستعرض ما تعنيه البوابات الثنائية الكيوبت لمعدلات الأخطاء وانتشارها داخل الدائرة.
بوابات الرنين المتقاطع بالصدى (Echoed Cross-Resonance)
تُهندس معماريات الأجهزة وعائلات البوابات المختلفة هذا التفاعل بطرق مختلفة. تُنفذ حواسيب IBM الكمومية بوابات ثنائية الكيوبت مجردة مثل بوابات CZ أو CX باستخدام بوابات الرنين المتقاطع بالصدى (ECR) الأصلية في الأجهزة. تُولّد بوابات ECR تفاعل فعالًا باستخدام دفع موجات دقيقة (microwave). تُبنى البوابات ذات الصلة مثل CNOT من بإضافة دورانات أحادية الكيوبت.
تمتلك الكيوبتات المختلفة ترددات رنين مختلفة (ترددات تتفاعل معها بقوة). قد تستخدم عملية قياسية ذلك التردد الرنيني لإحداث انتقال في كيوبت. لكن ماذا يحدث إذا دفعت الكيوبت C عند التردد الرنيني للكيوبت المجاور T؟ ترتبط الكيوبتات المتجاورة بتفاعل ثابت سعوي أو بوساطة رنان (resonator). ونتيجة لهذا الازدواج (coupling)، فإن الدفع على الكيوبت C "يتسرب" إلى هاملتونيان الكيوبت T. تعتمد قوة واتجاه هذا الدفع الفعال على حالة الكيوبت C ( أو ). هنا، يكون الكيوبت C هو التحكم والكيوبت T هو الهدف.
النتيجة هي دوران فعال في الكيوبت الهدف مشروط بحالة كيوبت التحكم. رياضيًا:
هذا التفاعل ZX هو بالضبط ما تحتاجه لبناء CNOT. لكن الحدود الأخرى قد تتضمن بعض الأخطاء، ومن شبه المؤكد أنها تتضمن ازدواجًا سعويًا بين الكيوبت C والكيوبت T، وهو ما يقابل حد ZZ.
يمكننا التفكير في هذه الحدود الإضافية بالطريقة التالية:
-
IX = يتم دفع الهدف عن غير قصد
-
ZI = يكتسب كيوبت التحكم دورانًا Z غير مرغوب فيه
-
IZ = يكتسب كيوبت الهدف دورانًا Z غير مرغوب فيه
-
ZZ = انزياح طوري ثابت معتمد على الحالة
-
أخرى = تفاعلات XY وXX صغيرة، وتفاعلات من رتبة أعلى
بوابة ECR هي ببساطة دوران متحكم به إضافة إلى نبضة صدى (echo) مُختارة بعناية على كيوبت التحكم. يعكس الصدى إشارة العديد من الحدود غير المرغوب فيها مع الحفاظ على تفاعل ZX. تُلغي هذه العملية أخطاء IX وZI بشكل جيد إلى حد ما، وأحيانًا بعض الحدود من رتبة أعلى. لكن الصدى لا يمكنه إلغاء الازدواج الثابت ZZ لأنه يتبادل (commutes) مع نبضة الصدى. هناك تفاعلات أخرى لن تُلغى في هذه العملية: بعض اللاخطيات المتبقية وتأثيرات الكيوبت المتفرج، والتسرب (leakage) والتلوث الناتج عن الدفع بعيد المدى، بالإضافة إلى قلة أخرى — لكن حد ZZ مهم بشكل خاص.
غالبًا ما تتطلب هذه العملية أزمنة دفع أطول بمقدار رتبة كاملة من البوابات الأحادية الكيوبت. إن الجمع بين أزمنة الدفع الأطول، وحدود ZZ المستمرة في الهاملتونيان، وأوجه القصور في الازدواج، يجعل البوابات الثنائية الكيوبت المصدر المهيمن لأخطاء البوابات. لاحظ أيضًا أنه إذا احتاج المرء إلى تفاعلات في دارة بين كيوبتات غير متجاورة، فإن بوابات SWAP اللازمة هي أيضًا بوضوح بوابات ثنائية الكيوبت. لهذا السبب فإن المقياس القياسي المرتبط بالعمق هو: العمق الثنائي الكيوبت بعد النقل (transpiled). نهتم بشكل رئيسي بالبوابات الثنائية الكيوبت لأنها تهيمن على خطأ البوابات، ونحتاج إلى النظر في الدارات بعد عملية النقل (transpiled) لأن النقل غالبًا ما يُدخل العديد من البوابات الثنائية الكيوبت الإضافية على شكل بوابات SWAP.
تحقق من فهمك
اشرح لماذا نهتم بشكل رئيسي بالعمق الثنائي الكيوبت بعد النقل. تأكد من مراعاة قيود الأجهزة، وحقيقة أن عمق البوابة الأحادية الكيوبت قد يكون أكبر بكثير.
الإجابة
تمتلك البوابات الثنائية الكيوبت معدلات أخطاء أعلى بكثير من البوابات الأحادية الكيوبت. البوابات الأحادية الكيوبت ليست مثالية، لذا قد توجد حالات يكون فيها أيضًا النظر في العمق الأحادي الكيوبت مفيدًا. لكن عمق البوابة الثنائية الكيوبت يميل إلى الهيمنة على سلوك الخطأ في الدارة. يجب أن ننظر في الدارة بعد النقل. لا تمتلك الحواسيب الكمومية الحديثة اتصالًا كليًا بين كل كيوبت وكل كيوبت آخر. تستخدم حواسيب IBM الكمومية إما شبكة مربعة أو شبكة "سداسية ثقيلة" (heavy hex)، مما يعني أن كل كيوبت يمتلك 2 أو 3 أو 4 جيران أقرب يمكن ازدواجه معهم مباشرة باستخدام بوابة ثنائية الكيوبت واحدة. يتطلب أي تشابك مع كيوبتات أخرى غير متجاورة نقل المعلومات حول الحاسوب الكمومي باستخدام بوابات SWAP الثنائية الكيوبت. وبالتالي، يميل النقل إلى زيادة عمق البوابة الثنائية الكيوبت. وبالنسبة للدارات عالية التشابك، يمكن أن تكون هذه الزيادة كبيرة جدًا.
مخاريط الضوء المظللة
افترض أن كيوبتًا واحدًا معزول جيدًا عن جميع الآخرين. لن يتسبب خطأ في ذلك الكيوبت في أي أخطاء في أي كيوبتات أخرى. لكن عندما يتفاعل كيوبت مع آخر، يمكن أن تنتشر الأخطاء. تعتمد طريقة انتشار الأخطاء على طريقة تفاعل الكيوبتات. اعتبر الدارة أدناه. افترض أن أي كيوبتات متجاورة في مخطط الدارة هي أيضًا متجاورة في الشريحة الكمومية (أي أن المعلومات لن تحتاج إلى أن تُبدَّل حول كيوبتات أخرى لتسهيل التفاعلات الموصوفة).

رغم أنك قد لا تكون فكرت في الأمر بهذه الطريقة، فهذا نوع من مخطط الزمكان (spacetime diagram). يمثل المحور الرأسي في الدارة الكمومية كيوبتات مختلفة مرتبة في الفضاء. ويمثل المحور الأفقي الزمن الذي تُطبَّق خلاله سلسلة من البوابات. باستعارة لغة النسبية، يمثل مخروط الضوء منطقة الزمكان التي يمكن الوصول إليها من نقطة عبر تفاعلات سببية.
في الشكل أعلاه، لم يُحدَّد نوع الخطأ. يتضح أن نوع الخطأ يؤثر على مخروط الضوء، لأن بعض الأخطاء تؤثر على منطق البوابة الثنائية الكيوبت، وبعضها لا يؤثر. سنعود إلى هذا قريبًا. في الوقت الحالي، اعتبر الخطوط الصفراء مسارات محتملة لانتشار نوع ما من الأخطاء. لاحظ، على سبيل المثال في الجزء (أ) من الشكل، أن خطأً أحاديًا في كيوبت على بوابة RZ في الكيوبت رقم 4 يمكن أن ينتشر فقط إلى الأمام في الزمن على ذلك الكيوبت الواحد. لا يمكنه أن ينتشر إلى كيوبتات أخرى لأن الكيوبت رقم 4 غير متشابك مع أي كيوبتات أخرى. هذا وقت جيد لملاحظة أن الكيوبت رقم 4 عديم الفائدة إلى حد ما في هذه الدارة، وأن الدارة بأكملها في الواقع مبنية لأغراض تعليمية فقط.
أما الخطأ في بوابة Z الخاصة بالكيوبت رقم 0 (ليس بالضرورة خطأ Z، بل أي خطأ في ذلك الموضع)، فيمكن أن ينتشر إلى كيوبت آخر: الكيوبت رقم 1، عبر بوابة CNOT الأخيرة التي تستخدم الكيوبت رقم 0 كتحكم والكيوبت رقم 1 كهدف. يُوضح هذا في الجزء (ب). وكما قد تتوقع، غالبًا ما يكون للخطأ الذي يحدث في وقت أبكر في الدارة فرصة للانتشار عبر عدد أكبر من الكيوبتات. يُظهر الجزء (ج) أن خطأً في التحضير الأولي لحالة الكيوبت رقم 0 يمكن أن ينتشر إلى جميع الكيوبتات باستثناء الكيوبت رقم 4، المعزول.
يُظهر هذا الإعداد كيف يمكن لخطأ أن ينتشر إلى الأمام في الزمن ليؤثر على القياسات. لكن يمكنك أيضًا فحص السؤال المعاكس: بالنسبة لقياس أحادي الكيوبت محدد، أي أجزاء من دارتي قد تكون ساهمت بخطأ فيه؟ في تلك الحالة، ستبدأ ببساطة من القياس أو نقطة الاهتمام الأخرى وتعمل إلى الوراء (في الزمن) عبر الدارة، متتبعًا أي دارات متشابكة كما هو موضح في الجزء (د). كما تُظهر الصورة بضع نقاط عشوائية الاختيار لحدوث الأخطاء.
في الشكل أعلاه، تنتشر الأخطاء بين الكيوبتات عبر بوابات ECR، لكن نقاشًا مشابهًا يمكن أن ينطبق على بوابات ثنائية الكيوبت الأخرى. تمتلك هذه البوابات تحكمًا وهدفًا. من الواضح أن خطأً على التحكم يمكن أن يؤثر على منطق البوابة وبالتالي يمكن أن يؤدي إلى خطأ على الهدف. لكن ماذا عن الاتجاه الآخر؟ هل يمكن لخطأ على الهدف أن ينتشر إلى كيوبت التحكم؟ تذكر أن الازدواج بين التحكم والهدف في بوابات ECR ليس من النوع المثالي ZX بشكل خالص؛ بل يحتوي أيضًا على ازدواج ZZ غير مرغوب فيه.
إذا كان الخطأ على الهدف يتبادل (commutes) مع الازدواج ZZ، فلا يمكنه الانتشار إلى كيوبت التحكم. يمكننا رؤية هذا من خلال الآليات الفيزيائية العاملة. طريقة سريعة لرؤية ذلك هي أنه إذا كان الخطأ يتبادل مع ، فيمكن تبديل ترتيبهما دون التأثير على النتيجة. لكن إذا كان حدوث قبل ازدواج مباشرة مماثلًا لتأثيره بعد ازدواج ، فلا يمكنه التأثير على التحكم، إذ في الحالة الأخيرة، سيتعين على الخطأ أن يتحرك إلى الوراء في الزمن. أما إذا كان الخطأ لا يتبادل مع الازدواج ZZ، فقد ينتشر بالفعل من الهدف عائدًا إلى التحكم. وبالتالي، في حالة بوابة ECR، لا يمكن لأخطاء Z أن تنتشر من الهدف إلى التحكم، لكن أخطاء X أو Y يمكنها ذلك.
تحقق من فهمك
في الجزء (د) من الشكل أعلاه، انظر إلى الخطوط الرأسية بين الكيوبت رقم 0 والكيوبت رقم 1. هل صحيح أن بعض الأخطاء يمكن أن تنتشر عبر تلك الخطوط؟ مرة أخرى، قد يعتمد هذا على نوع الخطأ، ولم نناقش ذلك بعد. السؤال هو ما إذا كان هناك أي خطأ يمكن أن ينتشر كما هو موضح بتلك الخطوط الرأسية. اشرح.
الإجابة
نعم، هذا صحيح. عند رسم مخروط الضوء إلى الوراء بدءًا من القياس، قد يبدو الأمر وكأنك تدّعي أن شيئًا ما يتحرك من الهدف إلى التحكم. لكن معنى المخطط في الواقع هو أن خطأً ربما تحرك من التحكم (الكيوبت رقم 0) إلى الهدف (الكيوبت رقم 1) ليتسبب في خطأ عند نقطة الاهتمام. إذا كان حدسك هو أن الأمر يعتمد على نوع الخطأ، فأنت محق تمامًا. يُعالَج هذا جزئيًا في القسم التالي.
بدءًا من نسخة خالية من الأخطاء لدارات المخطط أعلاه، تتبّع الانتشار المحتمل لخطأ في أول بوابة هادامارد (Hadamard) التي تعمل على الكيوبت رقم 2. اذكر جميع الكيوبتات التي يمكن أن تتأثر بنهاية الدارة إذا كان الخطأ (أ) انقلاب طور، و(ب) انقلاب بت. تلميح: فكّر في كيفية استخدام المعلومات على كل كيوبت.
الإجابة
(أ) يمكن أن يتأثر الكيوبت رقم 3، وبالطبع الكيوبت رقم 2 نفسه. لا شيء آخر! إذا ذكرت الكيوبتين رقم 0 و1، فلاحظ أن الكيوبت رقم 2 هو هدف بوابة ECR التي تُشابكه مع الكيوبت رقم 1. لا يُجرى أي تغيير على الكيوبت رقم 1 في تلك البوابة. (ب) يمكن أن تتأثر الكيوبتات من 0 إلى 3. لا يتبادل خطأ انقلاب البت أو الخطأ من نوع X مع الازدواج ZZ في بوابة ECR، وبالتالي يمكن أن ينتشر من الهدف إلى التحكم.
انتشار الخطأ
في القسم السابق ناقشنا انتشار الخطأ دون إعطائه تعريفًا رسميًا. من الآن فصاعدًا:
بالنسبة لخطأ يحدث قبل جزء ما من الحمولة المنطقية لدارة ، يعني انتشار الخطأ إيجاد المؤثر المكافئ الذي يُعيد إنتاج نفس النتيجة الخاطئة عند تطبيقه بعد بدلًا من قبله.
أوحت صورة انتشار الخطأ في القسم السابق بأن الأخطاء يمكن أن تنتشر من كيوبت التحكم إلى كيوبت الهدف عبر بوابة CNOT. إحدى طرق التحقق من متى يكون هذا صحيحًا هي اعتبار خطأ على التحكم أو على الهدف قبل التشابك، والتحقق مما إذا كان ذلك المؤثر يتبادل مع بوابة CNOT. إذا كان المؤثران يتبادلان، فلا فرق إذا طبقتهما بترتيب عكسي، مما يعني أن الخطأ يمكن ببساطة "تحريكه بعد" CNOT دون أي تأثير على كيوبتات أخرى. هذه هي الطريقة الأكثر شيوعًا التي يتناول بها الناس انتشار الخطأ، وهي تُنتج القواعد التالية:
لتكن الكيوبت رقم 0 هي التحكم والكيوبت رقم 1 هي الهدف. اعتبر أخطاء X وZ على كيوبتي التحكم والهدف (، ، ، و، على التوالي). تحريك هذه الأخطاء بعد يجعل الأخطاء تصبح:
نذكر ما سبق دون برهان. لكن إذا كنت مثل مؤلف هذا الدرس، وتفضل صورة شرودنغر (Schr"odinger picture)، يمكنك أيضًا كتابة حالات تحكم وهدف اعتباطية، وتطبيق الخطأ، ثم CNOT، وفحص الحالة النهائية. إذا قارنت تلك الحالة النهائية بحالة خالية من الأخطاء، يمكنك أن ترى أي تركيبة خطأ مُطبَّقة بعد CNOT ستُنتج الحالة الخاطئة، وعلى وجه الخصوص، يمكنك أن ترى ما إذا كانت عملية الخطأ قد انتشرت من كيوبت إلى آخر.
| التحكم الأولي | الهدف الأولي | الخطأ | النهائي | مكافئ الخطأ بعد CNOT |
|---|---|---|---|---|
| لا شيء | غير منطبق | |||
| X على التحكم | ||||
| Z على التحكم | ||||
| X على الهدف | ||||
| Z على الهدف |
ربما بشكل مفاجئ، فإن خطأ Z على الهدف يتسبب بالفعل في انتشار خطأ عائدًا إلى التحكم!
كما يمكنك أن تتخيل، فإن تتبع مثل هذا الانتشار لمؤثرات الخطأ إلى الأمام عبر الدارات (أو بشكل معادل، نشر المؤثرات المراد قياسها إلى الوراء) أمر معقد. يمتلك Qiskit أدوات لتسهيل ذلك، نتعلم عنها في الدرس 6 حول سير العمل الحديث.
توجد إضافة (addon) لـ Qiskit تُسمى Shaded Lightcones. تُحلل إضافة Shaded Lightcones (SLC) انتشار الخطأ في الدارات الكمومية باستخدام انتشار باولي لتحديد أي أجزاء من الدارة يمكن أن تؤثر فعليًا على مرصود (observable) مستهدف. صُممت أساسًا لجعل تخفيف الأخطاء أكثر كفاءة، خاصة لسير عمل إلغاء الخطأ الاحتمالي (PEC). سنستكشف هذه الأداة هنا بإيجاز فقط، ونستخدمها على نطاق أوسع في سياق تقنيات تخفيف الأخطاء في الدروس المستقبلية. تستخدم انتشار مؤثر باولي لرسم خريطة انتشار الأخطاء من أنواع مختلفة، منتجةً مخروط ضوء لأخطاء من نوع X وY وZ.
الأقماع الضوئية المظللة (SLC) تذهب إلى أبعد من ذلك، فهي تستخدم المحاكاة الكلاسيكية لتحديد حدود أكثر إحكامًا لحساسية الأخطاء عبر الدائرة. هذا يستبدل بعض وقت معالج الكم (QPU) بوقت المعالج المركزي (CPU) ويقلل من العبء الإضافي لأخذ العينات اللازم لإعادة تسوية الانحياز. بدلاً من حد قاطع، يُخصَّص لكل خطأ محتمل في الدائرة "ظل" متدرج يحدد الحد الأعلى لحساسية المرصود لهذا الخطأ. هذا التوصيف المُحسَّن يتيح تطبيقات أكثر كفاءة واستهدافًا لتقنية PEC بتباين أقل، مع منح المستخدم القدرة على ضبط الانحياز في تقدير المرصود بشكل يمكن التحكم فيه. راجع تظليل الأقماع الضوئية للتخفيف من أخطاء الكم بتسريع كلاسيكي لمزيد من التفاصيل.
لن نقدم سير عمل كامل هنا. سنعرض ببساطة بشكل تخطيطي كيف يأخذ سير العمل هذا دائرة:
يقسّم سير العمل الدائرة إلى "صناديق" مفيدة لتعلّم سلوك الضوضاء:
أخيرًا، يستخدم انتشار المؤثرات وتعلّم الضوضاء لإنتاج خريطة مظللة لحساسية الأخطاء عبر الدائرة:

يقابل كل صندوق ملوّن في المخرجات كيوبت معينًا في وقت معين. الصناديق الأغمق (البنفسجية) تشير إلى كيوبت وطبقة لا يمكن أن ينتشر فيها الخطأ إلى القياس (القياسات) المطلوبة. أما الصناديق الأكثر سطوعًا (الصفراء) فتقابل كيوبت وطبقة يمكن أن يكون للخطأ فيها تأثير قوي على القياس (القياسات) المطلوبة.
لاحظ المناطق البنفسجية على يمين كل خريطة. الخطأ في نفس الطبقة التي يحدث فيها القياس، لكن على كيوبت مختلف، لا يمكن أن يؤثر على القياس عبر اتصالية الدائرة الموضحة. وبالمثل، فإن الخطأ الذي يحدث بطبقة واحدة إلى الوراء في الزمن (طبقة واحدة إلى اليسار) لا يمكن أن ينتشر إلا إلى الكيوبت المجاور في الخطوة التالية، بسبب بنية طبقة التشابك، وهكذا. لذا فإن شكل المخروط على اليمين يكون عامًا كلما شارك عدد قليل نسبيًا من الكيوبتات في القياس المطلوب.
تحقق من فهمك
هل تعتقد أنه من الأفضل إنشاء خريطة مخروط ضوء مظللة قبل عملية الـtranspilation أم بعدها؟ ولماذا؟
الإجابة
يجب أن يتم ذلك بعد الـtranspilation. لكي تكون هذه الخرائط المختلفة مفيدة، يجب أن نتأكد من أن الكيوبتات المتجاورة في دائرتنا تقابل كيوبتات متجاورة على شريحة الكم لدينا. وإلا، فإن بوابات التشابك الموضحة على أنها تعمل على كيوبتات متجاورة في مخطط الدائرة ستحتاج في النهاية إلى بوابات SWAP وبنية دائرة أكثر تعقيدًا.