انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

القطرنة الكمومية القائمة على العينات (SQD)

القطرنة الكمومية القائمة على العينات (SQD) تجمع بين الجبر الخطي الكلاسيكي وقوة الحوسبة الكمومية لقطرنة مصفوفة هاميلتونية وحساب قيمها الذاتية ومتجهاتها الذاتية. قطرنة المصفوفات عملية رياضية مهمة تُستخدم في مسائل كثيرة من العلوم والحوسبة والتحسين.

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

1. المقدمة والدوافع​

لنتأمل معادلة القيمة الذاتية للطاقة التي اشتهرت بها معادلة شرودنغر كمثال:

H∣ψ⟩=E∣ψ⟩H \vert \psi \rangle = E \vert \psi \rangle

HH هو الهاميلتوني للنظام، و∣ψ⟩|\psi\rangle هي دالة الموجة (المعروفة أيضاً بالحالة الذاتية)، وEE هي القيمة الذاتية. تمثل القيم الذاتية للمصفوفة HH مستويات الطاقة في النظام. فمثلاً إذا كان النظام جزيئاً، فإن أصغر قيمة ذاتية تمثل طاقة الحالة الأساسية للجزيء. وفي كثير من المسائل، نهتم بتقدير طاقة الحالة الأساسية.

بتطبيق تقنيات القطرنة الدقيقة من الجبر الخطي، يمكننا قطرنة المصفوفة HH الكاملة. غير أن هذا الأسلوب يصبح مكلفاً حاسوبياً (بل مستحيلاً) كلما كبرت المصفوفة. فمثلاً، حتى للجزيئات الكيميائية الصغيرة، يمكن أن تكون HH كبيرة جداً (هاميلتوني جزيء N2N_2 باستخدام أساس cc-PVDZ مثلاً له أبعاد 65780×6578065780 \times 65780).

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

لنفترض مصفوفة N×NN \times N، هي HH، يمتلك فيها الفضاء المتجهي الكامل (فضاء هيلبرت) بُعداً مقداره NN (حيث NN كبير). نختار بعد ذلك فضاءً جزئياً (S\mathcal{S}) — وهو مجموعة فرعية من فضاء هيلبرت الكامل — بعده MM، حيث MM صغير بما يكفي. بعد إسقاط HH على هذا الفضاء الجزئي، تكون المصفوفة المُسقَطة (لنسمها HSH_\mathcal{S}) أصغر حجماً (M×MM \times M). ويمكن قطرنة HSH_\mathcal{S} الأصغر باستخدام طريقة عددية كلاسيكية مناسبة لإنتاج قيم ذاتية ومتجهات ذاتية لذلك الفضاء الجزئي.

لاحظ أن الفضاء الجزئي يجب أن يكون في مجال دعم حالتنا الهدف (مثل الحالة الأساسية). بمعنى آخر، يجب أن يكون الهاميلتوني المُسقَط HSH_\mathcal{S} في فضاء جزئي يتضمن أصغر قيمة ذاتية.

2. الإسقاط والقطرنة​

لنفترض أننا نريد إيجاد أصغر قيمة ذاتية والمتجه الذاتي المقابل لها لمصفوفة هاميلتونية HH بأبعاد 8×88 \times 8 كالتالي:

H=[0.2235−0.0390−0.1035−0.08180.17460.10910.1165−0.0104−0.03900.66210.0706−0.1964−0.07820.26190.10950.0029−0.10350.07060.99610.17240.1067−0.2299−0.18170.1571−0.0818−0.19640.1724−0.17730.1019−0.4778−0.1272−0.04140.1746−0.07820.10670.10190.1418−0.1359−0.1793−0.07660.10910.2619−0.2299−0.4778−0.13590.10140.16960.05520.11650.1095−0.1817−0.1272−0.17930.16960.42270.2702−0.01040.00290.1571−0.0414−0.07660.05520.27020.4456]H = \begin{bmatrix} 0.2235 & -0.0390 & -0.1035 & -0.0818 & 0.1746 & 0.1091 & 0.1165 & -0.0104 \\ -0.0390 & 0.6621 & 0.0706 & -0.1964 & -0.0782 & 0.2619 & 0.1095 & 0.0029 \\ -0.1035 & 0.0706 & 0.9961 & 0.1724 & 0.1067 & -0.2299 & -0.1817 & 0.1571 \\ -0.0818 & -0.1964 & 0.1724 & -0.1773 & 0.1019 & -0.4778 & -0.1272 & -0.0414 \\ 0.1746 & -0.0782 & 0.1067 & 0.1019 & 0.1418 & -0.1359 & -0.1793 & -0.0766 \\ 0.1091 & 0.2619 & -0.2299 & -0.4778 & -0.1359 & 0.1014 & 0.1696 & 0.0552 \\ 0.1165 & 0.1095 & -0.1817 & -0.1272 & -0.1793 & 0.1696 & 0.4227 & 0.2702 \\ -0.0104 & 0.0029 & 0.1571 & -0.0414 & -0.0766 & 0.0552 & 0.2702 & 0.4456 \\ \end{bmatrix}

سنقطّر المصفوفة الكاملة إلى جانب نسخ مُسقَطة مختلفة (HSH_\mathcal{S}) لفضاءات جزئية متنوعة، لتوضيح قابلية التوسع وأهمية اختيار الفضاء الجزئي.

طاقة الحالة الأساسية (أصغر قيمة ذاتية) للمصفوفة HH هي −0.5357-0.5357، ودالة الموجة الدقيقة للحالة الأساسية (المتجه الذاتي) هي:

GSexact=0.8∗∣011⟩+0.6∗∣101⟩.\text{GS}_{\text{exact}} = 0.8 * |011\rangle + 0.6 * |101\rangle.

أي أن الحالة الأساسية للمصفوفة تتمتد على حالتي الأساس الحسابي (المتجهين) ∣011⟩\vert 011 \rangle و∣101⟩\vert 101 \rangle.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"numpy": "numpy", "scipy": "scipy"}
_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")
import numpy as np
from scipy.linalg import eigh

np.set_printoptions(precision=4, sign="-", suppress=True, linewidth=100)

H = np.array(
[
[0.2235, -0.039, -0.1035, -0.0818, 0.1746, 0.1091, 0.1165, -0.0104],
[-0.0390, 0.6621, 0.0706, -0.1964, -0.0782, 0.2619, 0.1095, 0.0029],
[-0.1035, 0.0706, 0.9961, 0.1724, 0.1067, -0.2299, -0.1817, 0.1571],
[-0.0818, -0.1964, 0.1724, -0.1773, 0.1019, -0.4778, -0.1272, -0.0414],
[0.1746, -0.0782, 0.1067, 0.1019, 0.1418, -0.1359, -0.1793, -0.0766],
[0.1091, 0.2619, -0.2299, -0.4778, -0.1359, 0.1014, 0.1696, 0.0552],
[0.1165, 0.1095, -0.1817, -0.1272, -0.1793, 0.1696, 0.4227, 0.2702],
[-0.0104, 0.0029, 0.1571, -0.0414, -0.0766, 0.0552, 0.2702, 0.4456],
]
)
eigvals, eigvecs = eigh(H)

print("Eigenvalues:")
print(eigvals)
print(f"Minimum eigenvalue: {eigvals.min()}")

print("\nEigenvectors (columns represent vectors):")
print(eigvecs)
print("\nEigenvector for the minimum eigenvalue (ground state)")
print(eigvecs[:, np.argmin(eigvals)])
Eigenvalues:
[-0.5357 -0.1321 0.1049 0.1258 0.3616 0.6405 0.947 1.3039]
Minimum eigenvalue: -0.5356560029438817

Eigenvectors (columns represent vectors):
[[-0. -0.5612 0.098 -0.0024 0.8051 -0.0806 0.0643 0.1288]
[-0. -0.1403 -0.1985 -0.4249 -0.0092 0.585 -0.5952 0.2526]
[ 0. 0.0416 0.3041 0.2122 0.1509 -0.0139 -0.5794 -0.7086]
[ 0.8 -0.1936 -0.0127 -0.4376 -0.1081 -0.0838 0.1557 -0.2966]
[ 0. 0.6716 -0.3535 -0.2552 0.5395 0.0954 0.1449 -0.1941]
[ 0.6 0.258 0.017 0.5834 0.1441 0.1118 -0.2076 0.3954]
[ 0. 0.3088 0.5504 -0.4197 0.0626 -0.468 -0.2625 0.3657]
[-0. -0.1146 -0.6559 0.0356 -0.0394 -0.6352 -0.3856 0.0418]]

Eigenvector for the minimum eigenvalue (ground state)
[-0. -0. 0. 0.8 0. 0.6 0. -0. ]

سنُسقط الآن المصفوفة HH على فضاءات جزئية مختلفة للتحقق من إمكانية الحصول على الحالة الأساسية الدقيقة. تحديداً، سنُسقط المصفوفة على فضاء جزئي يتمتد على:

  1. متجهات الحالة الأساسية الدقيقة (∣011⟩\vert 011 \rangle و∣101⟩\vert 101 \rangle).

  2. متجهات تستبعد بعض أو جميع متجهات الحالة الأساسية الدقيقة (مثل ∣000⟩\vert 000 \rangle و∣011⟩\vert 011 \rangle و∣110⟩\vert 110 \rangle).

  3. متجهات تشمل كلاً من متجهات الحالة الأساسية ومتجهات خارجها (لكن ليس جميع المتجهات الممكنة في فضاء هيلبرت).

2.1 الحالة الأولى: الفضاء الجزئي يشمل الحالة الأساسية​

لنفترض أننا نريد إسقاط HH على فضاء جزئي (S\mathcal{S}) يتمتد على متجهين x1=∣011⟩x_1 = |011\rangle وx2=∣101⟩x_2 = |101\rangle. يُعرَّف الهاميلتوني المُسقَط بـ:

HS=[⟨x1∣H∣x1⟩⟨x1∣H∣x2⟩⟨x2∣H∣x1⟩⟨x2∣H∣x2⟩]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle \\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle \end{bmatrix}
x1 = np.zeros(8)
x1[3] = 1 # binary 011 is 3 in decimal. |011> = |3> = [0,0,0,1,0,0,0,0]

x2 = np.zeros(8)
x2[5] = 1 # binary 101 is 5 in decimal

Hs = np.array([[x1.T @ H @ x1, x1.T @ H @ x2], [x2.T @ H @ x1, x2.T @ H @ x2]])
print(Hs)
[[-0.1773 -0.4778]
[-0.4778 0.1014]]

لاحظ أنه عند كتابة عناصر الهاميلتوني المُسقَط بالصيغة x1.T @ H @ x2، فإننا نتبنى ضمنيًا الاصطلاح الشائع القاضي بأن متجهي الحالة x1 وx2 يقابلان الكيتات (متجهات عمودية)، بما يتسق مع تعبيرات مثل x1=∣011⟩x_1 = |011\rangle. غير أن مصفوفات NumPy أحادية البُعد لا تُميّز جوهريًا بين المتجهات الصفية والعمودية، وبالنسبة للمتجهات المستخدمة هنا فإن عملية النقل (transpose) ليس لها أي أثر عددي. وبالتالي، فإن كتابة x1 @ H @ x2.T تُنتج النتيجة العددية نفسها، رغم أن x1.T @ H @ x2 أقرب إلى التطابق المعتاد مع ترميز ديراك ⟨x1∣H∣x2⟩\langle x_1|H|x_2\rangle.

eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

يمكننا استخلاص عدة ملاحظات جوهرية هنا:

  • بما أن الفضاء الجزئي يمتد على متجهين، يكون بُعد المصفوفة المُسقَطة (HSH_\mathcal{S}) هو 2×22 \times 2، وهو أصغر من المصفوفة الكاملة HH (8×88 \times 8).
  • تتطابق أصغر قيمة ذاتية للمصفوفة المُسقَطة مع القيمة الذاتية للحالة الأساسية الدقيقة.
  • تمثل القيم في المتغير eigvecs سعة (إسهام) متجهات الفضاء الجزئي، ويمكننا استخدامها لإعادة بناء الحالة الذاتية (الحالة الأساسية). وفي هذه الحالة نحصل على الحالة الأساسية الدقيقة (بصرف النظر عن طور كلي):
∣ψ⟩=−(0.8∣011⟩+0.6∣101⟩)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 الحالة الثانية: الفضاء الجزئي يستبعد بعض أو كل متجهات الحالة الأساسية​

بعد ذلك، نُسقط HH على فضاء جزئي يتمتد على ثلاثة متجهات x1=∣000⟩x_1 = |000\rangle وx2=∣011⟩x_2 = |011\rangle وx3=∣110⟩x_3 = |110\rangle. نختار هذه المتجهات بحيث تستبعد متجه الحالة الأساسية (∣101⟩\vert 101 \rangle). يُعرَّف الهاميلتوني المُسقَط بـ:

HS=[⟨x1∣H∣x1⟩⟨x1∣H∣x2⟩⟨x1∣H∣x3⟩⟨x2∣H∣x1⟩⟨x2∣H∣x2⟩⟨x2∣H∣x3⟩⟨x3∣H∣x1⟩⟨x3∣H∣x2⟩⟨x3∣H∣x3⟩]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle & \langle x1 | H | x3 \rangle\\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle & \langle x2 | H | x3 \rangle \\ \langle x3 | H | x1 \rangle & \langle x3 | H | x2 \rangle & \langle x3 | H | x3 \rangle \\ \end{bmatrix}
x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[3] = 1

x3 = np.zeros(8)
x3[6] = 1

Hs = np.array(
[
[x1.T @ H @ x1, x1.T @ H @ x2, x1.T @ H @ x3],
[x2.T @ H @ x1, x2.T @ H @ x2, x2.T @ H @ x3],
[x3.T @ H @ x1, x3.T @ H @ x2, x3.T @ H @ x3],
]
)
print(Hs)
[[ 0.2235 -0.0818 0.1165]
[-0.0818 -0.1773 -0.1272]
[ 0.1165 -0.1272 0.4227]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -0.21108858736702252

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

2.3 الحالة الثالثة: الفضاء الجزئي يشمل متجهات الحالة الأساسية وغيرها​

نستعرض الآن حالة يتمتد فيها الفضاء الجزئي على متجهات تشمل متجهات الحالة الأساسية الدقيقة إلى جانب متجهات غير مرغوب بها. لنفترض أن فضاءنا الجزئي يتمتد على x1=∣011⟩x_1 = |011\rangle وx2=∣101⟩x_2 = |101\rangle (موجودان في الحالة الأساسية الدقيقة) وx3=∣111⟩x_3 = |111\rangle (غائب عن الحالة الأساسية الدقيقة).

x1 = np.zeros(8)
x1[3] = 1

x2 = np.zeros(8)
x2[5] = 1

x3 = np.zeros(8)
x3[7] = 1

Hs = np.array(
[
[x1.T @ H @ x1, x1.T @ H @ x2, x1.T @ H @ x3],
[x2.T @ H @ x1, x2.T @ H @ x2, x2.T @ H @ x3],
[x3.T @ H @ x1, x3.T @ H @ x2, x3.T @ H @ x3],
]
)
print(Hs)
[[-0.1773 -0.4778 -0.0414]
[-0.4778 0.1014 0.0552]
[-0.0414 0.0552 0.4456]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8 0.6 -0. ]

في هذه الحالة، نحصل مجدداً على −0.5357-0.5357 كأصغر قيمة ذاتية، وهو ما يتطابق مع المصفوفة الكاملة (أي الحالة الأساسية الدقيقة). ونتيجة مثيرة أخرى هي سعة x3x_3 التي تُعيدها عملية الإسقاط والقطرنة؛ فهي 00. وعند إعادة بناء دالة الموجة (الحالة الذاتية) بالسعات والمتجهات المحسوبة، نحصل على:

∣ψ⟩=0.8∣011⟩+0.6∣101⟩+0.0∣111⟩=0.8∣011⟩+0.6∣101⟩(الحالة الأساسية الدقيقة)\vert \psi \rangle = 0.8 |011\rangle + 0.6 |101\rangle + 0.0 |111\rangle = 0.8 |011\rangle + 0.6 |101\rangle \left( \text{الحالة الأساسية الدقيقة} \right)

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

3. دور الكم في SQD​

تُرسّخ التحليلات السابقة أهمية متجهات الفضاء الجزئي، التي يجب أن تكون في مجال دعم الحالة الهدف. وهذا يثير تساؤلاً جوهرياً: كيف نختار المتجهات التي تمتلك مجال دعم الحالة الهدف لبناء الفضاء الجزئي؟

هنا يأتي دور الحواسيب الكمومية. يعمل التعاون الكم-كلاسيكي في نموذج SQD كالتالي:

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

  2. يقوم الحاسوب الكلاسيكي بإسقاط الهاملتوني على الفضاء الجزئي (الممتد بواسطة العينات/المتجهات من الحاسوب الكمومي) ويقطره لحساب القيم الذاتية والمتجهات الذاتية باستخدام طرق عددية مناسبة. رسم تخطيطي للمكونات الكمومية والكلاسيكية لـ SQD. في الجزء الكمومي، تُحضّر وتأخذ عينات من الدعم المستهدف، وفي الجزء الكلاسيكي تسقط مصفوفتك على الفضاء الجزئي الذي أُخذت منه العينات وتقطّر مصفوفتك المسقطة. يمكن أن تكون هناك عدة طرق لتحضير حالة كمومية كهذه، ويمكن أن تكون تبايُنية أو غير تبايُنية حسب المسألة.

في الدرسين التاليين، سنعرض مثالين محددين لتحضير الحالات وأخذ العينات منها.

  1. في الدرس 4، سنستخدم مقايسة (ansatz) موحّدة محلية مقترنة جاستراو (LUCJ) معلمنة لتوليد عينات لمسألة كيميائية (تقدير طاقة الحالة الأرضية لجزيء N2N_2). سنُهيّئ مقايسة LUCJ بمعاملات من حساب أزواج مقترنة كلاسيكي أحادي ومزدوج (CCSD).
  2. في الدرس 5، سنأخذ عينات من حالات أساس كريلوف لتمتد الفضاء الجزئي لمسألة فيزياء المادة المكثفة. هذا النهج غير تبايُني بطبيعته.

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

3.1 ملاحظات حول مجال دعم الحالة الأساسية​

لنشرح مفهوم مجال دعم الحالة الأساسية بمزيد من التفصيل. يمكن تعريف مجال دعم الحالة الأساسية بأنه مجموعة حالات الأساس التي تمتلك سعة غير صفرية في الحالة الأساسية (حتى عتبة قطع معينة).

لنفترض أن الحالة الأساسية الدقيقة لمسألة بـ 33 كيوبت هي:

∣ψ⟩=12∣000⟩+12∣111⟩\vert \psi \rangle = \frac{1}{\sqrt{2}} \vert 000 \rangle + \frac{1}{\sqrt{2}} \vert 111 \rangle

لو أخذنا عينات من الحالة أعلاه، ينبغي أن نحصل على مجموعة من حالات الأساس الحسابي {∣000⟩\{\vert 000 \rangle، ∣111⟩}\vert 111 \rangle \} (حالات الأساس الأخرى لها سعة صفرية في الحالة الأساسية، وبالتالي لن تظهر أثناء أخذ العينات في الحالة المثالية).

من الناحية المثالية، تتكون مجموعة متجهات الأساس لهذه الحالة من {∣000⟩,∣111⟩}\{ \vert 000 \rangle, \vert 111 \rangle \} (بمعنى آخر، الفضاء الجزئي لهذه الحالة يتمتد على هذين المتجهين الأساسيين).

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

∣ψa⟩=0.8∣000⟩+0.6∣111⟩→Sampling{∣000⟩,∣111⟩}∣ψb⟩=12∣000⟩+32∣111⟩→Sampling{∣000⟩,∣111⟩}∣ψc⟩=12∣000⟩+12∣111⟩+12∣101⟩→Sampling{∣000⟩,∣101⟩,∣111⟩}\begin{align} \vert \psi_a \rangle = 0.8 \vert 000 \rangle + 0.6 \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_b \rangle = \frac{1}{2} \vert 000 \rangle + \frac{\sqrt{3}}{2} \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_c \rangle = \frac{1}{2} \vert 000 \rangle + \frac{1}{2} \vert 111 \rangle + \frac{1}{\sqrt{2}} \vert 101 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 101 \rangle, \vert 111 \rangle \} \end{align}

تهيئة أيٍّ من الحالات أعلاه وأخذ عينات منها سيولّد متجهات ذات سعة غير صفرية في الحالة الأساسية، وجميعها تمتلك مجال دعم الحالة الأساسية. لاحظ أن أخذ عينات من ∣ψc⟩\vert \psi_c \rangle يتضمن متجهاً إضافياً ∣101⟩\vert 101 \rangle له سعة 00 في الحالة الأساسية الدقيقة. غير أننا أثبتنا سابقاً أن تضمين مثل هذه المتجهات في الفضاء الجزئي لا يُشكّل مشكلة؛ إذ تضع عملية الإسقاط والقطرنة سعة المتجهات غير المرغوب بها عند 00، فنحصل على القيمة الذاتية المتوقعة ونُعيد بناء الحالة الذاتية الصحيحة.

Diagrams of good and bad ansatz supports. A good ansatz has support that completely contains the ground state support. A poor ansatz contains only part or none of the ground state support.

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

∣ψ⟩=0.7∣000⟩−0.7∣010⟩+0.1∣101⟩−0.01∣111⟩\vert \psi \rangle = 0.7 \vert 000 \rangle - 0.7 \vert 010 \rangle + 0.1 \vert 101 \rangle - 0.01 \vert 111 \rangle

هذه دالة موجة منحرفة حيث تمتلك حالتا الأساس ∣000⟩\vert 000 \rangle و∣010⟩\vert 010 \rangle سعات أكبر بكثير مقارنةً بـ ∣101⟩\vert 101 \rangle و∣111⟩\vert 111 \rangle. عند أخذ العينات، ستظهر ∣000⟩\vert 000 \rangle و∣010⟩\vert 010 \rangle بتكرار أعلى (احتمال أخذ العينة=∣السعة∣2\text{احتمال أخذ العينة} = \vert \text{السعة} \vert^{2} ≈49%\approx 49\% لكل من ∣000⟩\vert 000 \rangle و∣010⟩\vert 010 \rangle، ≈1%\approx 1\% لـ ∣101⟩\vert 101 \rangle، و≈0.01%\approx 0.01\% لـ ∣111⟩\vert 111 \rangle). مع ميزانية عينات محدودة (لقطات)، من المرجح جداً أن تحتوي مجموعة العينات لدينا على ∣000⟩\vert 000 \rangle و∣010⟩\vert 010 \rangle فحسب. وكما رأينا سابقاً، إذا امتد الفضاء الجزئي على مثل هذه المجموعة الناقصة للمتجهات، لن نتمكن من إيجاد أصغر قيمة ذاتية حقيقية. لذلك سيكون من المفيد (والضروري) أخذ العينات من حالة تمتلك مجال دعم الحالة الأساسية.

3.2 الحجة ضد أخذ العينات الموحدة​

قد يغري المرء أخذ العينات من توزيع موحد لتوسيع نطاق الفضاء الجزئي. وبينما قد يُجدي هذا الأسلوب للمسائل الصغيرة، إلا أنه سيُخفق في المسائل الأكبر والأكثر عملية. فللمسائل الكبيرة ذات الكيوبتات الكثيرة، قد يكون فضاء هيلبرت ضخماً للغاية. فمثلاً، يحتوي فضاء هيلبرت لـ 32 كيوبت على أكثر من 44 مليارات متجه أساس ممكن (232=4,294,967,2962^{32} = 4,294,967,296). لو أخذنا عينات موحدة من هذا الفضاء بميزانية عينات محدودة (لنقل 1000010000 متجه للإبقاء على عملية القطرنة قابلة للتنفيذ)، فقد يستبعد الفضاء الجزئي المتجهات ذات مجال دعم الحالة الأساسية في كثير من الأحيان نظراً لعشوائية العملية. لذلك نحتاج إلى طريقة منهجية لأخذ عينات من مجال دعم الحالة الأساسية باستخدام الدوائر الكمومية.

4. SQD وتناثر دالة الموجة​

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

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

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

نوضح هذه الإشكالية بالمصفوفة التالية (HnewH_{new}). أصغر قيمة ذاتية لـ HnewH_{new} هي −2.2081-2.2081، ودالة الموجة المقابلة (الحالة الذاتية) واسعة الانتشار:

∣ψ⟩=∣000⟩+∣001⟩+∣010⟩+∣011⟩+∣100⟩+∣101⟩+∣110⟩+∣111⟩8|\psi\rangle = \frac{|000\rangle + |001\rangle + |010\rangle + |011\rangle + |100\rangle + |101\rangle + |110\rangle + |111\rangle}{\sqrt{8}}
H_new = np.array(
[
[-0.958, 0.1853, -0.2663, -0.3875, -0.0524, -0.3779, -0.0145, -0.3369],
[0.1853, -0.4081, -0.8549, -0.2312, 0.0615, -0.2493, -0.3804, -0.3312],
[-0.2663, -0.8549, -0.6929, -0.0063, -0.0478, -0.0236, -0.2494, -0.0669],
[-0.3875, -0.2312, -0.0063, -0.4468, -0.6301, -0.4627, -0.1188, 0.0753],
[-0.0524, 0.0615, -0.0478, -0.6301, -0.6664, -0.1514, -0.3571, -0.3644],
[-0.3779, -0.2493, -0.0236, -0.4627, -0.1514, -0.9605, 0.0137, 0.0035],
[-0.0145, -0.3804, -0.2494, -0.1188, -0.3571, 0.0137, -1.1449, 0.0433],
[-0.3369, -0.3312, -0.0669, 0.0753, -0.3644, 0.0035, 0.0433, -1.2307],
]
)
eigvals, eigvecs = eigh(H_new)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -2.208137504726661
Eigenvector for minimum eigenvalue: [0.3536 0.3536 0.3536 0.3536 0.3535 0.3536 0.3535 0.3535]

لنفترض أننا نُسقط HnewH_{new} على فضاء جزئي يتمتد على أربعة متجهات: ∣000⟩|000\rangle و∣010⟩|010\rangle و∣101⟩|101\rangle و∣110⟩|110\rangle ثم نحسب القيمة الذاتية.

x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[2] = 1

x3 = np.zeros(8)
x3[5] = 1

x4 = np.zeros(8)
x4[6] = 1

H_new_s = np.array(
[
[x1.T @ H_new @ x1, x1.T @ H_new @ x2, x1.T @ H_new @ x3, x1.T @ H_new @ x4],
[x2.T @ H_new @ x1, x2.T @ H_new @ x2, x2.T @ H_new @ x3, x2.T @ H_new @ x4],
[x3.T @ H_new @ x1, x3.T @ H_new @ x2, x3.T @ H_new @ x3, x3.T @ H_new @ x4],
[x4.T @ H_new @ x1, x4.T @ H_new @ x2, x4.T @ H_new @ x3, x4.T @ H_new @ x4],
]
)
print(H_new_s)
[[-0.958 -0.2663 -0.3779 -0.0145]
[-0.2663 -0.6929 -0.0236 -0.2494]
[-0.3779 -0.0236 -0.9605 0.0137]
[-0.0145 -0.2494 0.0137 -1.1449]]
eigvals, eigvecs = eigh(H_new_s)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -1.4266552340586673

يُثبت المثال أعلاه أنه عندما تكون دالة الموجة واسعة الانتشار ولا نضمّن حالات الأساس في الفضاء الجزئي، يصبح حساب القيمة الذاتية غير صحيح.

5. SQD مقابل VQE​

كما ذُكر سابقًا، قد تحتاج SQD إلى دارة كمومية تبايُنية وتحديثات تكرارية للمعاملات لتحضير وأخذ عينات من دعم الحالة الأرضية. بما أن روتين تحديث المعاملات التكراري هذا مشابه لـ VQE، يمكن للمرء أن يسأل كيف تختلف هاتان الطريقتان، وما هي مزايا SQD على VQE؟ في هذا القسم، نقارن الطريقتين ونناقش مزايا SQD مع جزيء N2N_2 موصوف بمجموعة أساس أدنى (sto-3g) كمثال.

 VQESQD
النفقات العامة للقياسحدود باولي كثيرة، دارات قياس كثيرة: الهاملتوني للجزيء يحتوي على 29512951 حدًا فريدًا من باولي. بما أن حدود باولي يمكن أن تحتوي على حدود XX وYY، والقياسات الكمومية النموذجية تتم في أساس ZZ، نحتاج إلى تغيير أساس القياس لتقييم تلك الحدود. عند التحسين للقياسات، يمكن تجميع الحدود الـ 29512951 في 11871187 مجموعة، حيث يمكن تقييم كل مجموعة باستخدام دارة واحدة. لذلك، نحتاج إلى 11871187 دارة فريدة على الأقل لتقييم جميع حدود باولي. رميات كثيرة لكل دارة من أجل تباين أضيق. مرة أخرى، قيمة التوقع المقيَّمة لكل حد باولي لها تباين مرتبط بها يعتمد عكسيًا على shots\sqrt{shots}. لذلك، لتقدير كل حد بدقة، نحتاج إلى تخصيص رميات كثيرة لكل دارة. على سبيل المثال، لتحقيق الدقة الكيميائية (11 كيلو كالوري/مول)، نحتاج عادةً إلى رميات في رتبة 10510^5-10710^7 لكل دارة. لذلك، تحتاج VQE إلى دارات قياس كثيرة وكل دارة بعدد معين من الرميات. في الحالات العملية، يمكن أن تكون هذه النفقات العامة للقياس مقيّدة.في SQD، لا نحتاج إلى دارات قياس مختلفة لكل مجموعة من حدود باولي. عادةً، نقيس دارة واحدة لعدد ثابت من الرميات. بينما قد نضبط عدد الرميات إلى قيمة كبيرة حسب المسألة، تظل النفقات العامة أصغر بكثير من VQE. كذلك، تقديرات الطاقة باستخدام عملية القطر دقيقة، مما يعني أن القيم الذاتية المحسوبة دقيقة في ذلك الفضاء الجزئي ولا يوجد تباين مرتبط بها كما في VQE. (في حالة أخذ عينات حالة أساس كريلوف (الدرس 5)، نحتاج إلى قياس دارات متعددة، لكن عدد الدارات يظل أصغر بكثير من VQE).
حد الطاقة المقدَّرفي VQE، تقديرات الطاقة غير محدودة ويمكن أن تكون أقل من القيم الدنيا الحقيقية بسبب الضوضاء.عملية تقدير الطاقة في SQD تنتج دائمًا حدًا أعلى لطاقة الحالة الأرضية ولن تكون الطاقة المقدَّرة أبدًا أقل من طاقة الحالة الأرضية الحقيقية.
تحمل الضوضاءتقدير طاقة VQE عرضة للضوضاء من الحواسيب الكمومية قبل المتسامحة مع الأخطاء.لدى SQD تحمل متأصل للضوضاء. يمكن للحواسيب الكمومية قبل المتسامحة مع الأخطاء أن تنتج عينات ضوضائية. حتى لو أدرجنا تلك العينات في الفضاء الجزئي، يمكن للقطر اللاحق أن يقمع تلك العينات عن طريق تعيين سعاتها إلى صفر. كذلك، سنناقش طريقة تسمى استرداد التكوين فيما يتعلق بـ SQD تحسّن تحمل SQD للضوضاء أكثر.

6. الخلاصة​

  1. في SQD، يُولّد الحاسوب الكمومي عينات ويُسقط الحاسوب الكلاسيكي الهاميلتوني على فضاء جزئي يتمتد على العينات ويُقطّره لحساب القيم الذاتية والمتجهات الذاتية.

  2. يجب أن تكون العينات المولَّدة من مجال دعم الحالة الهدف (الأساسية).

  3. بحسب المسألة، قد يكون سير عمل تهيئة الحالة الكمومية وتوليد العينات تكرارياً أو غير تكراري.

  4. يعمل SQD بكفاءة أكبر مع دوال الموجة المتناثرة. دالة الموجة الواسعة الانتشار تتطلب فضاءً جزئياً كبيراً للحصول على حلول دقيقة، مما يُكلّف عملية الإسقاط والقطرنة الكلاسيكية.

  5. يمتلك SQD عدة مزايا على VQE كتكلفة قياس أقل وحد أعلى لطاقة الحالة الأساسية المقدَّرة، مما يجعله أكثر قابلية للتوسع.

المراجع​

[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.