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

الدوائر

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

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

الدوائر البولية

إليك مثالًا على دائرة بولية (كلاسيكية)، حيث تحمل الأسلاك قيمًا ثنائية وتمثّل البوابات عمليات منطق بولي:

مثال على دائرة بولية

تسير المعلومات على الأسلاك من اليسار إلى اليمين: الأسلاك على الجانب الأيسر المُسمّاة X\mathsf{X} وY\mathsf{Y} هي بتات مدخلة يمكن ضبطها على أي قيمة ثنائية نشاء، والسلك على الجانب الأيمن هو المخرج. تأخذ الأسلاك الوسيطة القيم التي تحددها البوابات، وتُقيَّم هذه البوابات من اليسار إلى اليمين.

البوابات المستخدمة هي: بوابات AND (المُعلَّمة بـ\wedge)، وبوابات OR (المُعلَّمة بـ\vee)، وبوابات NOT (المُعلَّمة بـ¬\neg). ستكون الدوال التي تحسبها هذه البوابات مألوفة للكثيرين، وهي مُمثَّلة هنا بجداول القيم:

a¬a0110abab000010100111abab000011101111\begin{array}{c} \begin{array}{c|c} a & \neg a\\ \hline 0 & 1\\ 1 & 0\\ \end{array}\\ \\ \\ \end{array} \qquad\quad \begin{array}{c|c} ab & a \wedge b\\ \hline 00 & 0\\ 01 & 0\\ 10 & 0\\ 11 & 1 \end{array} \qquad\quad \begin{array}{c|c} ab & a \vee b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 1 \end{array}

الدائرتان الصغيرتان المملوءتان على الأسلاك مباشرةً إلى يمين أسماء X\mathsf{X} وY\mathsf{Y} تمثّلان عمليات تفريع الإشارة (fan-out)، التي تنسخ ببساطة أي قيمة يحملها السلك، مما يتيح إدخال هذه القيمة في بوابات متعددة. لا تُعدّ عمليات تفريع الإشارة دائمًا بوابات في الإعداد الكلاسيكي؛ إذ تُعامَل أحيانًا كأنها "مجانية" بمعنى ما. غير أنه عند تحويل الدوائر البولية إلى دوائر كمومية مكافئة، يتعيّن علينا تصنيف عمليات تفريع الإشارة صراحةً كبوابات للتعامل معها وحسابها بشكل صحيح.

إليك نفس الدائرة موضّحة بأسلوب أكثر شيوعًا في هندسة الكهرباء، الذي يستخدم رموزًا اصطلاحية لبوابات AND وOR وNOT:

الدائرة البولية بالأسلوب الكلاسيكي

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

تحسب الدائرة المعروضة في هذا المثال أو الحصري (XOR)، الذي يُرمز له بالرمز \oplus:

abab000011101110\begin{array}{c|c} ab & a \oplus b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 0 \end{array}

في الرسم التالي نأخذ اختيارًا واحدًا للمدخلات: X=0\mathsf{X}=0 وY=1\mathsf{Y}=1. يُعلَّق على كل سلك بالقيمة التي يحملها كي تستطيع تتبّع العمليات. قيمة المخرج هي 11 في هذه الحالة، وهي القيمة الصحيحة لـXOR: 01=10 \oplus 1 = 1.

تقييم دائرة بولية

يمكن التحقق من الإعدادات الثلاثة الأخرى الممكنة للمدخلات بطريقة مماثلة.

أنواع أخرى من الدوائر

كما أُشير إليه أعلاه، فإن مفهوم الدائرة في علوم الحاسوب عام للغاية. فعلى سبيل المثال، تُحلَّل أحيانًا دوائر تحمل أسلاكها قيمًا غير 00 و11، إلى جانب بوابات تمثّل اختيارات مختلفة من العمليات.

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

مثال على دائرة حسابية

يمكننا أيضًا النظر في دوائر تدمج العشوائية، كتلك التي تمثّل فيها البوابات عمليات احتمالية.

الدوائر الكمومية

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

إليك مثالًا بسيطًا على دائرة كمومية:

دائرة كمومية بسيطة

في هذه الدائرة، لدينا كيوبت واحد يُسمّى X\mathsf{X} ممثَّل بالخط الأفقي، وتسلسل من البوابات يمثّل عمليات أحادية على هذا الكيوبت. تمامًا كما في الأمثلة السابقة، تسير المعلومات من اليسار إلى اليمين — فأول عملية تُؤدَّى هي عملية هادامار، والثانية هي عملية SS، والثالثة هي عملية هادامار أخرى، والأخيرة هي عملية TT. يطبّق تنفيذ الدائرة كاملةً بذلك تركيب هذه العمليات THSHT H S H على الكيوبت X\mathsf{X}.

قد نرغب أحيانًا في الإشارة صراحةً إلى الحالات المدخلة أو المخرجة للدوائر. فمثلًا، إذا طبّقنا العملية THSHT H S H على الحالة 0\vert 0\rangle، نحصل على الحالة 1+i20+121\frac{1+i}{2}\vert 0\rangle + \frac{1}{\sqrt{2}} \vert 1 \rangle. يمكن تمثيل ذلك كما يلي:

تقييم الدائرة الكمومية البسيطة

عادةً ما تبدأ الدوائر الكمومية بجميع الكيوبتات مُهيَّأة على 0\vert 0\rangle كما في هذه الحالة، لكن هناك أيضًا حالات يكون فيها الكيوبتات المدخلة مُعيَّنة مبدئيًا على حالات مختلفة. إليك مثالًا آخر على دائرة كمومية، هذه المرة بكيوبتين:

دائرة كمومية تنشئ e-bit

كما هو معتاد، تشير البوابة HH إلى عملية هادامار، بينما البوابة الثانية هي عملية NOT المتحكَّم بها: تمثّل الدائرة المملوءة الكيوبت التحكمي وتمثّل الدائرة المشابهة للرمز \oplus الكيوبت المستهدف.

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

اتفاقية Qiskit لترتيب الكيوبتات في الدوائر

في Qiskit، الكيوبت الأعلى في مخطط الدائرة له الفهرس 00 ويقابل الموضع الأيمن في مجموعة من الكيوبتات (أو في سلسلة أو حاصل ضرب ديكارتي أو حاصل ضرب تنسوري مقابل لهذه المجموعة)، والكيوبت الثاني من الأعلى له الفهرس 11 ويقابل الموضع الثاني من اليمين في المجموعة، وهكذا. الكيوبت الأسفل، الذي له الفهرس الأكبر، يقابل إذن الموضع الأيسر في المجموعة. تحديدًا، الأسماء الافتراضية في Qiskit للكيوبتات في دائرة بـnn كيوبت هي المجموعة (qn1,,q0)(\mathsf{q_{n-1}},\ldots,\mathsf{q_{0}})، مع q0\mathsf{q_{0}} في الأعلى وqn1\mathsf{q_{n-1}} في الأسفل في مخططات الدوائر الكمومية.

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

رغم أننا قد نحيد أحيانًا عن الأسماء الافتراضية q0,,qn1\mathsf{q_{0}},\ldots,\mathsf{q_{n-1}} التي يستخدمها Qiskit للكيوبتات، سنتبع دائمًا اتفاقية الترتيب الموصوفة أعلاه عند تفسير مخططات الدوائر في هذه الدورة. وبهذا، يكون تفسيرنا للدائرة أعلاه أنها تصف عملية على زوج من الكيوبتات (X,Y)(\mathsf{X},\mathsf{Y}). إذا كان مدخل الدائرة حالة كمومية ψϕ\vert\psi\rangle \otimes \vert\phi\rangle مثلًا، فهذا يعني أن الكيوبت الأسفل X\mathsf{X} يبدأ في الحالة ψ\vert\psi\rangle والكيوبت الأعلى Y\mathsf{Y} يبدأ في الحالة ϕ\vert\phi\rangle.

لفهم ما تفعله الدائرة، يمكننا أن نمضي من اليسار إلى اليمين عبر عملياتها.

  1. العملية الأولى هي عملية هادامار على Y\mathsf{Y}:

    أول عملية في منشئ e-bit

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

    IH=(121200121200001212001212). \mathbb{I}\otimes H = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}.

    لاحظ أن مصفوفة الهوية على يسار حاصل الضرب التنسوري وHH على يمينه، وهذا يتوافق مع اتفاقية ترتيب Qiskit.

  2. العملية الثانية هي عملية NOT المتحكَّم بها، حيث Y\mathsf{Y} هو الكيوبت التحكمي وX\mathsf{X} هو الكيوبت المستهدف:

    العملية الثانية في منشئ e-bit

    تأثير بوابة NOT المتحكَّم بها على حالات الأساس القياسي هو كالتالي:

    بوابة NOT المتحكَّم بها

    بالنظر إلى أننا نرتب الكيوبتات كـ(X,Y)(\mathsf{X}, \mathsf{Y})، مع X\mathsf{X} في الأسفل وY\mathsf{Y} في الأعلى من دائرتنا، فإن التمثيل المصفوفي لبوابة NOT المتحكَّم بها هو:

    (1000000100100100). \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix}.

العملية الأحادية التي تُنفّذها الدائرة كاملةً، والتي سنسمّيها UU، هي تركيب هذه العمليات:

U=(1000000100100100)(121200121200001212001212)=(121200001212001212121200).U = \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0 \end{pmatrix}.

بالتحديد، مع استحضار رمزنا لحالات بيل:

ϕ+=1200+1211ϕ=12001211ψ+=1201+1210ψ=12011210,\begin{aligned} \vert \phi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle + \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \phi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle - \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \psi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle + \frac{1}{\sqrt{2}} \vert 1 0 \rangle \\[2mm] \vert \psi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle - \frac{1}{\sqrt{2}} \vert 1 0 \rangle, \end{aligned}

نجد أن

U00=ϕ+U01=ϕU10=ψ+U11=ψ.\begin{aligned} U \vert 00\rangle & = \vert \phi^+\rangle\\ U \vert 01\rangle & = \vert \phi^-\rangle\\ U \vert 10\rangle & = \vert \psi^+\rangle\\ U \vert 11\rangle & = -\vert \psi^-\rangle. \end{aligned}

هذه الدائرة إذن تتيح لنا إنشاء الحالة ϕ+\vert\phi^+\rangle عند تشغيلها على كيوبتين مُهيَّأين على 00\vert 00\rangle. وبشكل أعم، تمنحنا طريقة لتحويل الأساس القياسي إلى أساس بيل. (لاحظ أنه على الرغم من عدم أهمية ذلك لهذا المثال، يمكن التخلص من عامل الطور 1-1 في الحالة الأخيرة ψ-\vert \psi^-\rangle إذا أردنا بإجراء إضافة صغيرة على الدائرة. على سبيل المثال، يمكننا إضافة بوابة ZZ متحكَّم بها في البداية، وهي مشابهة لبوابة NOT المتحكَّم بها إلا أن عملية ZZ تُطبَّق على الكيوبت المستهدف بدلًا من عملية NOT عندما يُعيَّن الكيوبت التحكمي على 11. بديلًا عن ذلك، يمكننا إضافة بوابة تبديل في النهاية. كلا الاختيارين يزيل علامة السالب دون التأثير على تأثير الدائرة على الحالات الثلاث الأخرى لأساس القياسي.)

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

مثال على دائرة مع قياسات

هنا لدينا بوابة هادامار وبوابة NOT متحكَّم بها على كيوبتين X\mathsf{X} وY\mathsf{Y}، كما في المثال السابق. لدينا أيضًا بتّان كلاسيكيتان A\mathsf{A} وB\mathsf{B}، إضافةً إلى بوابتَي قياس. تمثّل بوابات القياس قياسات الأساس القياسي: تتغير حالة الكيوبتات إلى حالاتها بعد القياس، بينما تُكتَب نتائج القياس فوق البتات الكلاسيكية التي تشير إليها السهام.

كثيرًا ما يكون من المناسب تصوير القياس كبوابة تأخذ كيوبتًا كمدخل وتُخرج بتةً كلاسيكية (بدلًا من إخراج الكيوبت في حالته بعد القياس وكتابة النتيجة في بتة كلاسيكية منفصلة). وهذا يعني أن الكيوبت المقيس قد أُهمل ويمكن تجاهله بأمان بعد ذلك، حيث تغيّرت حالته إلى 0\vert 0\rangle أو 1\vert 1\rangle بحسب نتيجة القياس.

مثلًا، يمثّل مخطط الدائرة التالي نفس العملية الواردة في الرسم السابق، لكن مع تجاهل X\mathsf{X} وY\mathsf{Y} بعد قياسهما:

مثال على دائرة مع قياسات مضغوطة

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

  • تُظهَر بوابات الكيوبت الواحد عمومًا كمربعات بحرف يشير إلى العملية، كالتالي:

    بوابات الكيوبت الواحد

    كما تُرمز بوابات NOT (أو ما يعادلها بوابات XX) أحيانًا بدائرة حول علامة الجمع:

    بوابة NOT

  • تُرمز بوابات التبديل كالتالي:

    بوابة التبديل

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

    البوابة المتحكَّم بها

  • يمكن النظر إلى العمليات الأحادية الاعتباطية على كيوبتات متعددة كبوابات. تُصوَّر بمستطيلات مُعلَّمة باسم العملية الأحادية. فمثلًا، هنا تصوير عملية أحادية (غير محددة) UU كبوابة، مع نسخة متحكَّم بها منها:

    بوابة أحادية اعتباطية مع نسختها المتحكَّم بها