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

الشفرة الطارية

سنناقش الآن شفرة CSS محددة تُعرف بـالشفرة الطارية، التي اكتشفها أليكسي كيتاييف عام 1997. في الواقع، الشفرة الطارية ليست شفرة واحدة، بل هي عائلة من الشفرات، واحدة لكل عدد صحيح موجب ابتداءً من 2. تمتلك هذه الشفرات بعض الخصائص الرئيسية:

  • لمولّدات المثبّت وزن منخفض، وتحديداً وزنها جميعاً 4. بمصطلحات نظرية الترميز، الشفرة الطارية مثال على شفرة تحقق التكافؤ منخفض الكثافة الكمية، أو شفرة LDPC كمية (حيث منخفض تعني 4 هنا). هذا مفيد لأن قياس كل مولّد مثبّت لا يحتاج إلى تضمين كيوبتات كثيرة جداً.

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

  • أعضاء عائلة الشفرة الطارية لها مسافة كبيرة متزايدة ويمكنها تحمّل معدل خطأ مرتفع نسبياً.

وصف الشفرة الطارية

ليكن L2L\geq 2 عدداً صحيحاً موجباً، وافترض شبكة L×LL\times L ذات ما يُسمى حدوداً دورية. على سبيل المثال، يصوّر هذا الشكل شبكة L×LL\times L عند L=9L=9.

شبكة 9×9 ذات حدود دورية

لاحظ أن الخطوط على اليمين وفي الأسفل هي خطوط منقطة. يقصد بذلك الإشارة إلى أن الخط المنقط على اليمين هو نفس الخط الموجود في أقصى اليسار، وبالمثل، الخط المنقط في الأسفل هو نفس الخط الموجود في أعلى الشبكة.

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

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

شبكة 9×9 ملفوفة على شكل طارة

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

بعد ذلك، تُرتَّب الكيوبتات على حواف هذه الشبكة، كما هو موضّح في الشكل التالي، حيث تُشار إلى الكيوبتات بدوائر زرقاء صلبة.

كيوبتات على حواف شبكة دورية 9×9

لاحظ أن الكيوبتات الموضوعة على الخطوط المنقطة ليست صلبة لأنها ممثَّلة بالفعل على الخطوط الأعلى والأيسر في الشبكة. في المجموع يوجد 2L22L^2 كيوبت: L2L^2 كيوبت على الخطوط الأفقية وL2L^2 كيوبت على الخطوط الرأسية.

لوصف الشفرة الطارية ذاتها، يتبقى وصف مولّدات المثبّت:

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

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

في كلتا الحالتَين نحصل على عملية باولي ذات وزن 4. يمكن توضيح مولّدات المثبّت هذه بشكل فردي على النحو التالي.

أنواع مو�لّدات المثبّت للشفرة الطارية

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

أمثلة على مولّدات المثبّت في الشبكة

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

مولّدات مثبّت متداخلة للشفرة الطارية

وبالتالي، يتبادل مولّدان من هذا النوع، تماماً كما يتبادل ZZZ\otimes Z وXXX\otimes X. وبالتالي تتبادل جميع مولّدات المثبّت مع بعضها.

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

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

هذا يترك L21L^2 - 1 مولّد مثبّت من كل نوع، أو 2L222L^2 - 2 في المجموع، في مجموعة التوليد الأدنى (الافتراضية). بما أن إجمالي الكيوبتات 2L22L^2، هذا يعني أن الشفرة الطارية تُرمّز 2L22(L21)=22L^2 - 2 (L^2 - 1) = 2 كيوبت.

الشرط الأخير المطلوب لمولّدات المثبّت هو أن يكون ثمة متجه حالة كمية واحد على الأقل مثبَّت بجميع مولّدات المثبّت. سنرى أن هذا صحيح مع تقدمنا في تحليل الشفرة، لكن يمكن أيضاً الاستدلال بأنه لا توجد طريقة لتوليد 1-1 مضروبة في الوحدة على جميع كيوبتات 2L22L^2 من مولّدات المثبّت.

اكتشاف الأخطاء

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

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

يصوّر المخطط التالي تأثير خطأ XX على كيوبت واحدة. يُفترض هنا أن كيوبتاتنا 2L22L^2 كانت في حالة مضمّنة في فضاء الشفرة للشفرة الطارية، مما جعل جميع قياسات مولّدات المثبّت تُخرج +1+1. تكتشف مولّدات المثبّت ZZ أخطاء XX، وهناك مولّد واحد كهذا لكل مربّع في الشكل، لذا يمكننا الإشارة إلى نتيجة قياس مولّد المثبّت المقابل بلون ذلك المربّع: تُشار إلى نتائج +1+1 بمربّعات بيضاء وتُشار إلى نتائج 1-1 بمربّعات رمادية. إذا حدث خطأ قلب بت على إحدى الكيوبتات، يكون التأثير أن قياسات مولّد المثبّت المقابلة للمربّعَين الملامسَين للكيوبت المتأثرة تُخرج الآن 1-1.

تأثير خطأ قلب بت واحد على الشفرة الطارية

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

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

تأثير سلسلة من أخطاء قلب البت على الشفرة الطارية

مولّدا المثبّت ZZ عند طرفَي السلسلة كلاهما يُخرجان النتيجة 1-1 في هذه الحالة، لأن حدث عدد فردي من أخطاء XX على المربّعَين المقابلَين اللذَين يتوافقان مع تلك الطرفَين. جميع مولّدات المثبّت ZZ الأخرى، من ناحية أخرى، تُخرج النتيجة +1+1، بما فيها تلك الملامسة للسلسلة لكن ليست في الطرفَين، لأن حدث عدد زوجي من أخطاء XX على الكيوبتات الملامسة للمربّعات المقابلة.

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

من الممكن، مع ذلك، أن تكون سلسلة من أخطاء XX المتجاورة خالية من الطرفَين، أي أن سلسلة الأخطاء قد تشكّل حلقة مغلقة، كما في الشكل التالي.

حلقة مغلقة من �أخطاء قلب البت للشفرة الطارية

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

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

حلقة مغلقة من أخطاء قلب البت مولَّدة بمولّدات مثبّت X

لكن هذا ليس النوع الوحيد من الحلقات المغلقة لأخطاء XX — وليس صحيحاً أن كل حلقة مغلقة من أخطاء XX مضمّنة في المثبّت. تحديداً، يمكن تصنيف الأنواع المختلفة من الحلقات على النحو التالي:

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

  2. الحلقات المغلقة من أخطاء XX بعدد فردي من أخطاء XX على خط أفقي واحد على الأقل أو خط رأسي واحد على الأقل من الكيوبتات. حلقات بهذا الشكل غير مضمّنة في المثبّت أبداً وبالتالي تمثّل أخطاءً غير تافهة لا تكتشفها الشفرة.

مثال على حلقة مغلقة من أخطاء XX في الفئة الثانية موضّح في المخطط التالي.

حلقة مغلقة من أخطاء قلب البت غير مضمّنة في المثبّت

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

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

بما أن الشفرة الطارية تستخدم 2L22L^2 كيوبت لترميز 22 كيوبت ولها مسافة LL، يتضح أنها شفرة مثبّت [[2L2,2,L]][[2L^2,2,L]].

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

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

إذا ظهرت متلازمة مختلفة عن متلازمة (+1,,+1)(+1,\ldots,+1) عند قياس مولّدات المثبّت ZZ، تكشف نتائج 1-1 عن طرفَي سلسلة أو أكثر من أخطاء XX. يمكننا محاولة تصحيح هذه الأخطاء بإجراء تناظر بين نتائج 1-1 وتشكيل سلسلة من تصحيحات XX بينها. عند القيام بهذا، من المنطقي اختيار أقصر المسارات التي تجري عليها التصحيحات.

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

تصحيح أخطاء X بأقصر مسار

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

لن تكون هذه الاستراتيجية ناجحة دائماً. على سبيل المثال، تبيان مختلف لنفس المتلازمة كما في الشكل السابق موضّح في الشكل التالي.

اكتمال خطأ منطقي بالتصحيحات

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

ما هو أكثر احتمالاً، بحسب نموذج الضوضاء، هو قياس متلازمة بأكثر من مدخلَين 1-1، كما يوحي الشكل التالي.

سلاسل تصحيح متعددة

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

هذا النهج ليس الأمثل عموماً لنماذج الضوضاء الأكثر دراسةً، لكن استناداً إلى المحاكاة العددية يعمل جيداً في التطبيق العملي عند معدل ضوضاء أقل من 10% تقريباً، على افتراض أخطاء باولي مستقلة حيث XX وYY وZZ متساوية الاحتمال. زيادة LL لا يؤثر تأثيراً كبيراً على نقطة التعادل التي تبدأ عندها الشفرة في المساعدة، لكن يؤدي إلى انخفاض أسرع في احتمالية الخطأ المنطقي مع انخفاض معدل الخطأ إلى ما دون نقطة التعادل.