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

رموز CSS

الرموز الخطية الكلاسيكية

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

لنجعل Σ\Sigma هو الأبجدية الثنائية في هذا النقاش كله. حين نتحدث عن رمز خطي كلاسيكي، نعني مجموعة غير فارغة CΣn\mathcal{C}\subseteq\Sigma^n من السلاسل الثنائية بطول nn لعدد صحيح موجب nn، مع اشتراط خاصية أساسية واحدة فقط: إذا كانت uu وvv سلسلتين ثنائيتين في C\mathcal{C}، فإن السلسلة uvu\oplus v موجودة أيضاً في C\mathcal{C}. هنا، uvu\oplus v تشير إلى XOR البتي بين uu وvv، كما رأيناه مرات عديدة في دورة "أساسيات الخوارزميات الكمومية".

بشكل جوهري، حين نصف رمز تصحيح أخطاء كلاسيكياً بأنه خطي، فإننا ننظر إلى السلاسل الثنائية بطول nn باعتبارها متجهات ذات nn بُعداً، حيث تكون مداخلها إما 00 أو 11، ونشترط أن يشكّل الرمز نفسه فضاءً جزئياً خطياً. بدلاً من جمع المتجهات العادي فوق الأعداد الحقيقية أو المركبة، نستخدم هنا الجمع بالمقياس 22، وهو ببساطة XOR. أي إذا كان لدينا كلمتا رمز uu وvv، بمعنى أن uu وvv سلسلتان ثنائيتان في C\mathcal{C}، فإن u+vu + v بالمقياس 2، أي uvu\oplus v، يجب أن تكون كلمة رمز في C\mathcal{C}. لاحظ بالذات أن هذا الشرط يجب أن ينطبق حتى حين u=vu = v. هذا يعني أن C\mathcal{C} يجب أن تشمل السلسلة كلها أصفار 0n0^n، لأن XOR البتي لأي سلسلة مع نفسها يساوي السلسلة كلها أصفار.

مثال: رمز التكرار ذو 3 بتات

رمز التكرار ذو 3 بتات مثال على رمز خطي كلاسيكي. تحديداً، لدينا C={000,111}\mathcal{C} = \{000,111\}، لذا، فيما يخص شرط الخطية، هناك خياران فقط لـuu وخياران فقط لـvv. يسهل جداً المرور على الأزواج الأربعة الممكنة للتحقق من أننا دائماً نحصل على كلمة رمز عند أخذ XOR البتي:

000000=000,000111=111,111000=111,111111=000.000 \oplus 000 = 000, \quad 000 \oplus 111 = 111, \quad 111 \oplus 000 = 111, \quad 111 \oplus 111 = 000.

مثال: رمز هامينغ [7,4,3][7,4,3]

إليك مثال آخر على رمز خطي كلاسيكي يُسمى رمز هامينغ [7,4,3][7,4,3]. كان أحد أوائل رموز تصحيح الأخطاء الكلاسيكية المكتشفة على الإطلاق، ويتكون من هذه الـ16 سلسلة ثنائية بطول 7. (أحياناً يُفهم من رمز هامينغ [7,4,3][7,4,3] الرمز الذي يحتوي على هذه السلاسل معكوسة، لكننا سنعتبره الرمز الذي يحوي السلاسل المبينة هنا.)

0000000110000110100100110011011010010101011100110000011111110000011001010101010010111001100010110100111101111111\begin{array}{cccc} 0000000 & 1100001 & 1010010 & 0110011\\[1mm] 0110100 & 1010101 & 1100110 & 0000111\\[1mm] 1111000 & 0011001 & 0101010 & 1001011\\[1mm] 1001100 & 0101101 & 0011110 & 1111111 \end{array}

هناك منطق بسيط جداً وراء اختيار هذه السلاسل، لكنه ثانوي بالنسبة للدرس ولن يُشرح هنا. يكفي الآن ملاحظة أن هذا رمز خطي كلاسيكي: XOR أي سلسلتين من هذه السلاسل مع بعضهما سيؤدي دائماً إلى سلسلة أخرى في الرمز.

الترميز [7,4,3][7,4,3] (بين قوسين مربعين مفردين) يعني شيئاً مشابهاً للترميز بالقوسين المربعين المزدوجين لرموز المثبت الذي أُشير إليه في الدرس السابق، لكن هنا للرموز الخطية الكلاسيكية. تحديداً، كلمات الرمز لها 77 بتات، ويمكننا ترميز 44 بتات باستخدام الرمز (لأن هناك 16=2416 = 2^4 كلمة رمز)، ويصادف أنه رمز مسافته 33، مما يعني أن أي كلمتي رمز مختلفتين يجب أن تختلفا في ما لا يقل عن 33 مواضع — لذا يجب قلب ما لا يقل عن 33 بتات لتحويل كلمة رمز إلى أخرى. حقيقة أن هذا رمز بمسافة 33 تعني أنه يمكنه تصحيح خطأ قلب بت واحد على الأكثر.

وصف الرموز الخطية الكلاسيكية

الأمثلة المذكورة للتو هي أمثلة بسيطة جداً للرموز الخطية الكلاسيكية، لكن حتى رمز هامينغ [7,4,3][7,4,3] يبدو شيئاً غامضاً نوعاً ما حين نكتفي بسرد كلمات الرمز. ثمة طرق أفضل وأكثر كفاءة لوصف الرموز الخطية الكلاسيكية، منها الطريقتان التاليتان.

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

    بشكل أكثر تفصيلاً، السلاسل u1,,umΣnu_1,\ldots,u_m\in\Sigma^n تُولّد الرمز الخطي الكلاسيكي C\mathcal{C} إذا كان

    C={α1u1αmum:α1,,αm{0,1}},\mathcal{C} = \bigl\{\alpha_1 u_1 \oplus \cdots \oplus \alpha_m u_m\,:\,\alpha_1,\ldots,\alpha_m\in\{0,1\}\bigr\},

    مع الفهم أن αu=u\alpha u = u حين α=1\alpha = 1 وأن αu=0n\alpha u = 0^n حين α=0\alpha = 0، وتكون هذه القائمة أدنى إذا كان حذف إحدى السلاسل يولّد رمزاً أصغر. الطريقة الطبيعية للتفكير في هذا الوصف هي أن المجموعة {u1,,um}\{u_1,\ldots,u_m\} تشكّل أساساً للـC\mathcal{C} باعتباره فضاءً جزئياً، حيث ننظر إلى السلاسل كمتجهات ذات مداخل ثنائية القيمة، مع الأخذ بالاعتبار أننا نعمل في فضاء متجهي يُجرى فيه الحساب بالمقياس 22.

  2. تحقق التكافؤ. طريقة طبيعية أخرى لوصف الرمز الخطي الكلاسيكي هي بواسطة متحققات التكافؤ — أي قائمة أدنى من السلاسل الثنائية بحيث تكون السلاسل الموجودة في الرمز هي بالضبط تلك التي يكون حاصل ضربها الثنائي النقطي مع كل سلسلة تكافؤ مساوياً للصفر. (مثل XOR البتي، ظهر الضرب النقطي الثنائي عدة مرات في "أساسيات الخوارزميات الكمومية".)

    أي أن السلاسل v1,,vrΣnv_1,\ldots,v_r\in\Sigma^n هي سلاسل تحقق تكافؤ للرمز الخطي الكلاسيكي C\mathcal{C} إذا كان

    C={uΣn:uv1==uvr=0},\mathcal{C} = \bigl\{ u\in \Sigma^n\,:\, u\cdot v_1 = \cdots = u \cdot v_r = 0 \bigr\},

    وتكون هذه المجموعة من السلاسل أدنى إذا أدى حذف إحداها إلى رمز أكبر. تُسمى هذه السلاسل سلاسل تحقق التكافؤ لأن حاصل الضرب الثنائي النقطي لـuu مع vv يساوي صفراً إذا وفقط إذا كانت بتات uu في المواضع التي تحتوي vv على الرقم 1 فيها ذات تكافؤ زوجي. لذا، للتحقق مما إذا كانت سلسلة uu في الرمز C\mathcal{C}، يكفي فحص تكافؤ مجموعات معينة من بتات uu.

    شيء مهم يجب ملاحظته هنا هو أن الضرب النقطي الثنائي ليس ضرباً داخلياً بالمفهوم الرسمي. بالتحديد، حين يكون حاصل الضرب الثنائي النقطي لسلسلتين مساوياً للصفر، لا يعني ذلك أنهما متعامدتان بالطريقة المعتادة التي نفكر فيها بالتعامد. مثلاً، حاصل الضرب الثنائي النقطي للسلسلة 1111 مع نفسها يساوي صفراً — لذا من الممكن أن تكون سلسلة تحقق التكافؤ لرمز خطي كلاسيكي موجودة في الرمز نفسه.

تشتمل الرموز الخطية الكلاسيكية فوق الأبجدية الثنائية دائماً على عدد من السلاسل يمثّل قوة من قوى 22 — وبالنسبة لرمز خطي كلاسيكي واحد موصوف بالطريقتين المذكورتين أعلاه، سيكون دائماً n=m+rn = m + r. تحديداً، إذا كان لدينا مجموعة أدنى من mm مولّداً، فإن الرمز يُرمّز mm بت وسيكون لدينا بالضرورة 2m2^m كلمة رمز؛ وإذا كان لدينا مجموعة أدنى من rr سلسلة تحقق تكافؤ، فسيكون لدينا 2nr2^{n-r} كلمة رمز. أي أن كل مولّد يضاعف حجم فضاء الرمز بينما تخفّضه كل سلسلة تحقق تكافؤ إلى النصف.

مثلاً، رمز التكرار ذو 3 بتات رمز خطي، لذا يمكن وصفه بكلتا الطريقتين. تحديداً، هناك خيار واحد فقط للمولّد يعمل وهو: 111111. يمكننا بدلاً من ذلك وصف الرمز بسلسلتي تحقق تكافؤ، مثل 110110 و011011 — وهو ما يبدو مألوفاً من مناقشاتنا السابقة لهذا الرمز — أو يمكننا أخذ سلاسل التحقق 110110 و101101، أو 101101 و011011. (المولّدات وسلاسل تحقق التكافؤ ليست فريدة بشكل عام لرمز خطي كلاسيكي معين.)

للمثال الثاني، لنأخذ رمز هامينغ [7,4,3][7,4,3]. إليك أحد الاختيارات الممكنة لقائمة مولّدات تعمل.

1111000011010010100101100001\begin{array}{c} 1111000\\[1mm] 0110100\\[1mm] 1010010\\[1mm] 1100001 \end{array}

وإليك اختيار لقائمة سلاسل تحقق التكافؤ لهذا الرمز.

111100011001101010101\begin{array}{c} 1111000\\[1mm] 1100110\\[1mm] 1010101 \end{array}

هنا، بالمناسبة، نرى أن جميع سلاسل تحقق التكافؤ موجودة بحد ذاتها في الرمز.

ملاحظة أخيرة حول الرموز الخطية الكلاسيكية تربطها بصياغة المثبّت: سلاسل تحقق التكافؤ مكافئة لمولّدات المثبّت التي تتكون فقط من مصفوفات باولي ZZ والمصفوفة الوحدة. مثلاً، سلاسل تحقق التكافؤ 110110 و011011 لرمز التكرار ذو 3 بتات تقابل بالضبط مولّدات المثبّت ZZIZ\otimes Z\otimes \mathbb{I} وIZZ\mathbb{I}\otimes Z\otimes Z، وهو ما يتسق مع مناقشات مشاهدات باولي في الدرس السابق.

تعريف رموز CSS

رموز CSS هي رموز مثبّت تُحصل بدمج أزواج معينة من الرموز الخطية الكلاسيكية معاً. هذا لا يعمل لأي رمزين خطيين كلاسيكيين اعتباطيين — يجب أن يكون بين الرمزين علاقة معينة. بالرغم من ذلك، يفتح هذا البناء آفاقاً واسعة لرموز تصحيح الأخطاء الكمومية، مستنداً جزئياً إلى أكثر من 75 عاماً من نظرية الترميز الكلاسيكية.

في صياغة المثبّت، مولّدات المثبّت التي تحتوي فقط على مصفوفات باولي ZZ والمصفوفة الوحدة مكافئة لسلاسل تحقق التكافؤ، كما رأينا للتو في رمز التكرار ذو 3 بتات. لمثال آخر، خذ سلاسل تحقق التكافؤ التالية لرمز هامينغ [7,4,3][7,4,3].

111100011001101010101\begin{array}{c} 1111000\\[1mm] 1100110\\[1mm] 1010101 \end{array}

تقابل سلاسل تحقق التكافؤ هذه مولّدات المثبّت التالية (مكتوبة بدون رمز حاصل الضرب التنسوري)، التي نحصل عليها باستبدال كل 11 بـZZ وكل 00 بـI\mathbb{I}. هذه ثلاثة من الستة مولّدات للمثبّت في رمز ستين ذو 7 كيوبت.

ZZZZIIIZZIIZZIZIZIZIZ\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \end{array}

لنطلق اسم مولّدات مثبّت ZZ على مولّدات المثبّت من هذا النوع، أي التي تحتوي فقط على عوامل تنسورية من نوع باولي ZZ والمصفوفة الوحدة — بحيث لا تظهر مصفوفات باولي XX وYY أبداً في مولّدات مثبّت ZZ.

يمكننا أيضاً النظر في مولّدات المثبّت التي تظهر فيها فقط مصفوفات باولي XX والمصفوفة الوحدة كعوامل تنسورية. يمكن رؤية هذا النوع من مولّدات المثبّت باعتباره مناظراً لمولّدات مثبّت ZZ، إلا أنه يصف سلاسل تحقق التكافؤ في الأساس {+,}\{\vert+\rangle,\vert-\rangle\} بدلاً من الأساس القياسي. تُسمى مولّدات المثبّت من هذا الشكل مولّدات مثبّت XX — بحيث لا تُسمح مصفوفات باولي YY أو ZZ هذه المرة.

مثلاً، خذ مولّدات المثبّت الثلاثة المتبقية من رمز ستين ذي 7 كيوبت.

XXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

تتبع نفس النمط من رمز هامينغ [7,4,3][7,4,3] كمولّدات مثبّت ZZ، غير أننا هنا نستبدل XX بـ11 بدلاً من ZZ. ما نحصل عليه من هذه المولّدات الثلاثة وحدها هو رمز يشمل الـ16 حالة المبينة هنا، التي نحصل عليها بتطبيق عمليات هادامارد على حالات الأساس القياسية المقابلة للسلاسل في رمز هامينغ [7,4,3][7,4,3]. (بالطبع، فضاء رمز هذا الرمز يشمل أيضاً التركيبات الخطية لهذه الحالات.)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++\begin{array}{cccc} \vert {+++++++} \rangle \quad & \vert {--++++-} \rangle \quad & \vert {-+-++-+} \rangle \quad & \vert {+--++--} \rangle \\ \vert {+--+-++} \rangle \quad & \vert {-+-+-+-} \rangle \quad & \vert {--++--+} \rangle \quad & \vert {++++---} \rangle \\ \vert {----+++} \rangle \quad & \vert {++--++-} \rangle \quad & \vert {+-+-+-+} \rangle \quad & \vert {-++-+--} \rangle \\ \vert {-++--++} \rangle \quad & \vert {+-+--+-} \rangle \quad & \vert {++----+} \rangle \quad & \vert {-------} \rangle \end{array}

يمكننا الآن تعريف رموز CSS بعبارات بسيطة جداً.

تعريف

رمز CSS هو رمز مثبّت يمكن التعبير عنه باستخدام مولّدات مثبّت XX وZZ فقط.

أي أن رموز CSS هي رموز مثبّت لا تظهر فيها مصفوفات باولي YY في مولّدات المثبّت، وحيث لا تظهر XX وZZ في نفس مولّد المثبّت.

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

إليك مثال بسيط جداً لرمز CSS يشمل مولّد مثبّت ZZ ومولّد مثبّت XX:

ZZXX\begin{array}{cc} Z & Z \\[1mm] X & X \end{array}

من الواضح أن هذا رمز CSS، لأن المولّد الأول هو مولّد مثبّت ZZ والثاني هو مولّد مثبّت XX. بالطبع، يجب أن يكون رمز CSS أيضاً رمز مثبّت صالحاً — بمعنى أن مولّدات المثبّت يجب أن تتبادل التبديل مع بعضها، وأن تشكّل مجموعة توليد أدنى، وأن تثبّت ما لا يقل عن متجه حالة كمومي واحد. هذه الشروط سهل ملاحظتها لهذا الرمز. كما أشرنا في الدرس السابق، فضاء رمز هذا الرمز هو الفضاء أحادي البُعد المولّد بحالة بيل ϕ+\vert\phi^+\rangle. حقيقة أن كلا مولّدات المثبّت تثبّتان هذه الحالة واضحة باعتبار التعبيرين التاليين لـe-bit، إلى جانب تفسير هذه المولّدات كسلاسل تحقق تكافؤ في الأساسين {0,1}\{\vert 0\rangle, \vert 1\rangle\} و{+,}\{\vert +\rangle, \vert -\rangle\}.

ϕ+=00+112=+++2\vert\phi^+\rangle = \frac{\vert 0\rangle\vert 0\rangle + \vert 1\rangle\vert 1\rangle}{\sqrt{2}} = \frac{\vert +\rangle\vert +\rangle + \vert -\rangle\vert -\rangle}{\sqrt{2}}

رمز ستين ذو 7 كيوبت هو مثال آخر على رمز CSS.

ZZZZIIIZZIIZZIZIZIZIZXXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \\[1mm] X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

لدينا هنا ثلاثة مولّدات مثبّت ZZ وثلاثة مولّدات مثبّت XX، وقد تحققنا بالفعل من أن هذا رمز مثبّت صالح.

ورمز شور ذو 9 كيوبت هو مثال آخر.

ZZIIIIIIIIZZIIIIIIIIIZZIIIIIIIIZZIIIIIIIIIZZIIIIIIIIZZXXXXXXIIIIIIXXXXXX\begin{array}{ccccccccc} Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & \mathbb{I} & Z & Z\\[1mm] X & X & X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I}\\[1mm] \mathbb{I} & \mathbb{I} & \mathbb{I}& X & X & X & X & X & X \end{array}

هنا لدينا ستة مولّدات مثبّت ZZ ومولّدا مثبّت XX فقط. هذا جيد تماماً، لا يلزم وجود توازن أو تناظر بين النوعين من المولّدات (رغم أن ذلك يحدث كثيراً).

مجدداً، من الضروري جداً أن تكون رموز CSS رموز مثبّت صالحة، وبالتحديد يجب أن يتبادل كل مولّد مثبّت ZZ التبديل مع كل مولّد مثبّت XX. لذا، ليس كل مجموعة من مولّدات مثبّت XX وZZ تعرّف رمز CSS صالحاً.

كشف الأخطاء وتصحيحها

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

كمثال، لنأخذ رمز ستين ذي 7 كيوبت.

ZZZZIIIZZIIZZIZIZIZIZXXXXIIIXXIIXXIXIXIXIX\begin{array}{ccccccc} Z & Z & Z & Z & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] Z & Z & \mathbb{I} & \mathbb{I} & Z & Z & \mathbb{I} \\[1mm] Z & \mathbb{I} & Z & \mathbb{I} & Z & \mathbb{I} & Z \\[1mm] X & X & X & X & \mathbb{I} & \mathbb{I} & \mathbb{I} \\[1mm] X & X & \mathbb{I} & \mathbb{I} & X & X & \mathbb{I} \\[1mm] X & \mathbb{I} & X & \mathbb{I} & X & \mathbb{I} & X \end{array}

الفكرة الأساسية لهذا الرمز باتت واضحة الآن: إنه رمز هامينغ [7,4,3][7,4,3] لأخطاء قلب البتات ورمز هامينغ [7,4,3][7,4,3] لأخطاء قلب الطور. حقيقة أن مولّدات مثبّت XX وZZ تتبادل التبديل ربما تكون محظاً سعيداً، إذ لو لم تفعل ذلك ما كان هذا رمز مثبّت صالحاً. لكن هناك في الواقع أمثلة كثيرة معروفة لرموز خطية كلاسيكية تعطي رمز مثبّت صالحاً حين تستخدم بطريقة مشابهة.

بشكل عام، افترض أن لدينا رمز CSS تسمح مولّدات مثبّت ZZ فيه بتصحيح ما يصل إلى jj خطأ في قلب البت، وتسمح مولّدات مثبّت XX بتصحيح ما يصل إلى kk خطأ في قلب الطور. مثلاً، j=1j = 1 وk=1k = 1 لرمز ستين، بما أن رمز هامينغ [7,4,3][7,4,3] يمكنه تصحيح خطأ واحد في قلب البت. يتبع من ذلك، بفضل تقسيم الأخطاء إلى أنواع منفصلة، أن هذا الرمز CSS يمكنه تصحيح أي خطأ على عدد من الكيوبتات يصل إلى الحد الأدنى من jj وkk. يعود هذا إلى أنه حين يُقاس المتلازمة، يتحول الخطأ الاعتباطي على هذا العدد من الكيوبتات بشكل احتمالي إلى تركيبة من أخطاء XX وأخطاء ZZ أو كليهما — ثم تُكشف أخطاء XX وأخطاء ZZ وتُصحح بشكل مستقل.

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

لاحظ أن ثمة ثمناً يُدفع، وهو أننا لا نستطيع ترميز عدد الكيوبتات نفسه الذي كان يمكننا ترميزه من البتات مع الرمزين الكلاسيكيين. يعود هذا إلى أن إجمالي عدد مولّدات المثبّت لرمز CSS هو مجموع عدد سلاسل تحقق التكافؤ للرمزين الخطيين الكلاسيكيين، وكل مولّد مثبّت يخفّض بُعد فضاء الرمز إلى النصف. مثلاً، يسمح رمز هامينغ [7,4,3][7,4,3] بترميز أربعة بتات كلاسيكية، لأن لدينا ثلاث سلاسل تحقق تكافؤ فقط لهذا الرمز، في حين يرمّز رمز ستين ذو 7 كيوبت كيوبت واحداً فقط، لأن له ستة مولّدات مثبّت.

فضاءات رموز CSS

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

خذ أي رمز CSS على nn كيوبت، وليكن z1,,zsΣnz_1, \ldots, z_s \in \Sigma^n هي سلاسل تحقق التكافؤ ذات nn بت المقابلة لمولّدات مثبّت ZZ لهذا الرمز. هذا يعني أن الرمز الخطي الكلاسيكي المعرَّف بمولّدات مثبّت ZZ فقط، والذي سنسمّيه CZ\mathcal{C}_Z، يأخذ الشكل التالي.

CZ={uΣn:uz1==uzs=0}\mathcal{C}_Z = \bigl\{ u \in \Sigma^n \,:\, u \cdot z_1 = \cdots = u \cdot z_s = 0 \bigr\}

بالكلمات، يحتوي الرمز الخطي الكلاسيكي CZ\mathcal{C}_Z على كل سلسلة يكون حاصل ضربها النقطي الثنائي مع كل واحدة من سلاسل تحقق التكافؤ z1,,zsz_1, \ldots, z_s مساوياً للصفر.

على غرار ذلك، لنأخذ x1,,xtΣnx_1,\ldots,x_t\in\Sigma^n لتكون سلاسل تحقق التكافؤ ذات nn بت المقابلة لمولّدات مثبّت XX لرمزنا. وعليه، يأخذ الرمز الخطي الكلاسيكي المقابل لمولّدات مثبّت XX هذا الشكل.

CX={uΣn:ux1==uxt=0}\mathcal{C}_X = \bigl\{ u \in \Sigma^n \,:\, u \cdot x_1 = \cdots = u \cdot x_t = 0 \bigr\}

تصف مولّدات مثبّت XX وحدها رمزاً مشابهاً لهذا الرمز، لكن في الأساس {+,}\{\vert {+}\rangle,\vert {-}\rangle\} بدلاً من الأساس القياسي.

الآن سنقدّم رمزين خطيين كلاسيكيين جديدين مشتقين من الاختيارات نفسها للسلاسل، z1,,zsz_1,\ldots,z_s وx1,,xtx_1,\ldots,x_t، لكن حيث نأخذ هذه السلاسل كـمولّدات بدلاً من سلاسل تحقق التكافؤ. تحديداً، نحصل على الرمزين التاليين.

DZ={α1z1αszs:α1,,αs{0,1}}DX={α1x1αtxt:α1,,αt{0,1}}\begin{aligned} \mathcal{D}_Z & = \bigl\{ \alpha_1 z_1 \oplus \cdots \oplus \alpha_s z_s \,:\, \alpha_1,\ldots,\alpha_s \in \{0,1\} \bigr\}\\[1mm] \mathcal{D}_X & = \bigl\{ \alpha_1 x_1 \oplus \cdots \oplus \alpha_t x_t \,:\, \alpha_1,\ldots,\alpha_t \in \{0,1\} \bigr\} \end{aligned}

تُعرف هذه بـالرموز الثنائية للرموز المعرَّفة سابقاً: DZ\mathcal{D}_Z هو الرمز الثنائي لـCZ\mathcal{C}_Z وDX\mathcal{D}_X هو الرمز الثنائي لـCX\mathcal{C}_X. قد لا يكون واضحاً في هذه المرحلة سبب أهمية هذه الرموز الثنائية، لكنها تبين أهميتها لأسباب عدة، منها السببان الموضحان في الفقرتين التاليتين.

أولاً، يمكن وصف الشروط التي يجب أن تتحقق لكي يكون رمزان خطيان كلاسيكيان CZ\mathcal{C}_Z وCX\mathcal{C}_X متوافقين، بمعنى أنه يمكن إقرانهما معاً لتشكيل رمز CSS، بعبارات بسيطة بالرجوع إلى الرموز الثنائية. تحديداً، يجب أن يكون DZCX\mathcal{D}_Z\subseteq\mathcal{C}_X، أو بشكل مكافئ، أن يكون DXCZ\mathcal{D}_X\subseteq\mathcal{C}_Z. بالكلمات، يشمل الرمز الثنائي DZ\mathcal{D}_Z السلاسل المقابلة لمولّدات مثبّت ZZ، واحتواؤها في CX\mathcal{C}_X يكافئ كون حاصل الضرب النقطي الثنائي لكل من هذه السلاسل مع تلك المقابلة لمولّدات مثبّت XX مساوياً للصفر. وهذا بدوره يكافئ تبادل كل مولّد مثبّت ZZ التبديل مع كل مولّد مثبّت XX. بدلاً من ذلك، بعكس أدوار مولّدات مثبّت XX وZZ والبدء من الاحتواء DXCZ\mathcal{D}_X\subseteq\mathcal{C}_Z، يمكننا الوصول إلى الاستنتاج نفسه.

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

uDX=12tvDXuv(لكل uCZ)\vert u \oplus \mathcal{D}_X\rangle = \frac{1}{\sqrt{2^t}} \sum_{v\in\mathcal{D}_X} \vert u \oplus v\rangle \qquad \text{(لكل $u\in\mathcal{C}_Z$)}

بالكلمات، هذه المتجهات هي تراكبات منتظمة على السلاسل في الرمز الثنائي DX\mathcal{D}_X للرمز المقابل لمولّدات مثبّت XX، مُزاحة بـ(أي XOR البتي مع) سلاسل في الرمز CZ\mathcal{C}_Z المقابل لمولّدات مثبّت ZZ. للتوضيح، قد تؤدي اختيارات مختلفة للإزاحة — المعبَّر عنها بالسلسلة uu في هذا التعبير — إلى نفس المتجه. لذلك، هذه الحالات ليست كلها متمايزة، لكنها مجتمعةً تولّد فضاء الرمز كاملاً.

إليك تفسير حدسي لماذا تكون هذه المتجهات في فضاء الرمز وتولّده في آنٍ معاً. خذ حالة الأساس القياسي ذات nn كيوبت u\vert u\rangle، لسلسلة uu ذات nn بت اعتباطية، وافترض أننا نسقط هذه الحالة على فضاء الرمز. أي بتعيين Π\Pi لتمثيل الإسقاط على فضاء رمز CSS لدينا، خذ المتجه Πu\Pi\vert u\rangle. هناك حالتان:

  • الحالة 1: uCZu\in\mathcal{C}_Z. هذا يعني أن كل مولّد مثبّت ZZ لرمز CSS لدينا يعمل بشكل تافه على u\vert u\rangle. أما مولّدات مثبّت XX، فكل منها يقلب ببساطة بعض بتات u\vert u\rangle. تحديداً، لكل مولّد vv من DX\mathcal{D}_X، يحوّل مولّد مثبّت XX المقابل لـvv الحالة u\vert u\rangle إلى uv\vert u\oplus v\rangle. بتوصيف الإسقاط Π\Pi كـالمتوسط على عناصر المثبّت (كما رأينا في الدرس السابق)، نحصل على الصيغة التالية:

    Πu=12tvDXuv=12tuDX.\Pi \vert u \rangle = \frac{1}{2^t} \sum_{v\in\mathcal{D}_{X}} \vert u \oplus v\rangle = \frac{1}{\sqrt{2^t}} \vert u \oplus \mathcal{D}_X\rangle.
  • الحالة 2: uCZu\notin\mathcal{C}_Z. هذا يعني أن ما لا يقل عن واحدة من سلاسل تحقق التكافؤ المقابلة لمولّدات مثبّت ZZ تفشل، أي أن u\vert u\rangle يجب أن يكون متجهاً ذا قيمة ذاتية 1-1 لما لا يقل عن أحد مولّدات مثبّت ZZ. فضاء رمز CSS هو تقاطع الفضاءات الذاتية ذات قيمة +1+1 لمولّدات المثبّت. لذا، بوصفه متجهاً ذا قيمة ذاتية 1-1 لما لا يقل عن أحد مولّدات مثبّت ZZ، يكون u\vert u\rangle متعامداً مع فضاء الرمز:

    Πu=0.\Pi\vert u\rangle = 0.

والآن، بالمرور على كل السلاسل uu ذات nn بت، واستبعاد تلك التي يكون فيها Πu=0\Pi\vert u\rangle = 0، وتطبيع الباقية، نحصل على المتجهات الموصوفة سابقاً، مما يُبيّن أنها تولّد فضاء الرمز كاملاً.

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

HnuDZ=12svDZHnuv(لـuCX)H^{\otimes n} \vert u \oplus \mathcal{D}_Z\rangle = \frac{1}{\sqrt{2^s}} \sum_{v\in\mathcal{D}_Z} H^{\otimes n}\vert u \oplus v\rangle \qquad \text{(لـ$u\in\mathcal{C}_X$)}

في جوهر الأمر، تم تبادل XX وZZ في كل موضع يظهران فيه — لكن يجب علينا أيضاً تبادل الأساس القياسي بالأساس {+,}\{\vert+\rangle,\vert-\rangle\}، وهذا هو سبب وجود عمليات هادامارد.

كمثال، لنأخذ رمز ستين ذا 7 كيوبت. سلاسل تحقق التكافؤ لكل من مولّدات مثبّت XX وZZ هي نفسها: 11110001111000، 11001101100110، و10101011010101. الرمزان CX\mathcal{C}_X وCZ\mathcal{C}_Z متماثلان إذاً؛ كلاهما يساوي رمز هامينغ [7,4,3][7,4,3].

CX=CZ={0000000,0000111,0011001,0011110,0101010,0101101,0110011,0110100,1001011,1001100,1010010,1010101,1100001,1100110,1111000,1111111}\mathcal{C}_X = \mathcal{C}_Z = \{0000000, 0000111, 0011001, 0011110, 0101010, 0101101, 0110011, 0110100, 1001011, 1001100, 1010010, 1010101, 1100001, 1100110, 1111000, 1111111\}

الرمزان الثنائيان DX\mathcal{D}_X وDZ\mathcal{D}_Z متماثلان إذاً أيضاً. لدينا ثلاثة مولّدات، فنحصل على ثماني سلاسل.

DX=DZ={0000000,0011110,0101101,0110011,1001011,1010101,1100110,1111000}\mathcal{D}_X = \mathcal{D}_Z = \{0000000, 0011110, 0101101, 0110011, 1001011, 1010101, 1100110, 1111000\}

هذه السلاسل كلها موجودة في رمز هامينغ [7,4,3][7,4,3]، وبالتالي يتحقق شرط CSS: DZCX\mathcal{D}_Z \subseteq \mathcal{C}_X، أو بشكل مكافئ، DXCZ\mathcal{D}_X \subseteq \mathcal{C}_Z.

بما أن DX\mathcal{D}_X يحتوي على نصف جميع السلاسل في CZ\mathcal{C}_Z، هناك اثنان فقط من المتجهات المختلفة uDX\vert u\oplus \mathcal{D}_X\rangle يمكن الحصول عليهما باختيار uCZu\in\mathcal{C}_Z. هذا متوقع، لأن رمز ستين ذا 7 كيوبت يمتلك فضاء رمز ثنائي الأبعاد. يمكننا استخدام الحالتين اللتين نحصل عليهما بهذه الطريقة لترميز الحالة المنطقية 0\vert 0\rangle و1\vert 1\rangle على النحو التالي.

00000000+0011110+0101101+0110011+1001011+1010101+1100110+1111000810000111+0011001+0101010+0110100+1001100+1010010+1100001+11111118\begin{aligned} \vert 0\rangle & \mapsto \frac{ \vert 0000000\rangle + \vert 0011110\rangle + \vert 0101101\rangle + \vert 0110011\rangle + \vert 1001011\rangle + \vert 1010101\rangle + \vert 1100110\rangle + \vert 1111000\rangle }{\sqrt{8}}\\[4mm] \vert 1\rangle & \mapsto \frac{ \vert 0000111\rangle + \vert 0011001\rangle + \vert 0101010\rangle + \vert 0110100\rangle + \vert 1001100\rangle + \vert 1010010\rangle + \vert 1100001\rangle + \vert 1111111\rangle }{\sqrt{8}} \end{aligned}

كالمعتاد، هذا الاختيار ليس إلزامياً — نحن أحرار في استخدام فضاء الرمز لترميز الكيوبتات كما نشاء. غير أن هذا الترميز يتسق مع مثال دائرة الترميز لرمز ستين ذي 7 كيوبت في الدرس السابق.