الإرسال الكمومي عن بُعد والترميز فائق الكثافة
Kifumi Numata (26 Apr 2024)
تنزيل ملف PDF للمحاضرة الأصلية. لاحظ أن بعض مقاطع الكود قد تصبح غير متوافقة مع الإصدارات الحديثة لأنها صور ثابتة.
الوقت التقريبي للتشغيل على وحدة المعالجة الكمومية هو 10 ثوانٍ.
1. المقدمة
لحل أي مشكلة كمومية على نطاق واسع، نحتاج إلى نقل المعلومات داخل الحاسوب الكمومي من كيوبت إلى آخر. هناك بروتوكولات معروفة للقيام بذلك، وبعض أكثرها أساسية نشأت في سياق إرسال المعلومات بين أطراف بعيدة. في هذا الدرس، سنستخدم أحيانًا لغة متسقة مع هذا السياق مثل "أصدقاء بعيدون يتبادلون المعلومات"، لكن ضع في اعتبارك أن هذه البروتوكولات لها أهمية أوسع في الحوسبة الكمومية. في هذا الدرس نتناول بروتوكولَي التواصل الكمومي التاليين:
- الإرسال الكمومي عن بُعد (Quantum teleportation) استخدام حالة متشابكة مشتركة (تُسمى أحيانًا e-bit) لإرسال حالة كمومية مجهولة إلى صديق بعيد، مع الحاجة إلى تواصل كلاسيكي مكمِّل.
- الترميز الكمومي فائق الكثافة (Quantum superdense coding) كيفية إرسال بتَّين من المعلومات بإرسال كيوبت واحد إلى صديق بعيد (باستخدام كيوبتات متشابكة مشتركة مسبقًا).
للمزيد من الخلفية حول هذه المواضيع، نوصي بالدرس الرابع في أساسيات المعلومات الكمومية بعنوان التشابك في التطبيق.
في الوصف أعلاه، "الحالة الكمومية المجهولة" تشير ببساطة إلى حالة بالشكل الموضَّح في الدرس السابق:
حيث و أعداد مركبة بحيث . يتيح لنا ذلك كتابة الحالة الكمومية على النحو:
بما أننا نريد أن نكون قادرين على نقل المعلومات في أي حالة كمومية عشوائية، فإن توليد مثل هذه الحالة هو ما سنبدأ به هذا الدرس.
2. مصفوفات الكثافة
يمكننا أيضًا كتابة الحالة الكمومية على هيئة مصفوفة كثافتها. هذا الشكل مفيد للتعبير عن المزيج الاحتمالي من الحالات الكمومية النقية. في حالة كيوبت واحد يمكن كتابة:
لاحظ أن مصفوفة الكثافة هي مجموع خطي لمصفوفات باولي، كما يلي:
أو بشكل عام:
حيث .
وشعاع بلوخ هو .
الآن، لنُنشئ حالة كمومية عشوائية باستخدام أرقام عشوائية.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer qiskit-ibm-runtime
import numpy as np
# create a random 1-qubit state from a random (theta, varphi) to define r vector
np.random.seed(1) # fixing seed for repeatibility
theta = np.random.uniform(0.0, 1.0) * np.pi # from 0 to pi
varphi = np.random.uniform(0.0, 2.0) * np.pi # from 0 to 2*pi
def get_r_vec(theta, varphi):
rx = np.sin(theta) * np.cos(varphi)
ry = np.sin(theta) * np.sin(varphi)
rz = np.cos(theta)
return (rx, ry, rz)
# get r vector
rx, ry, rz = get_r_vec(theta, varphi)
print("theta=" + str(theta), ",varphi=" + str(varphi))
print("(rx, ry, rz) = (" + str(rx) + ", " + str(ry) + ", " + str(rz) + ")")
theta=1.3101132663588946 ,varphi=4.525932273597346
(rx, ry, rz) = (-0.1791150283307452, -0.9494670044331133, 0.2577405946274022)
يمكننا عرض شعاع بلوخ هذا على كرة بلوخ.
from qiskit.visualization import plot_bloch_vector
r = [rx, ry, rz]
plot_bloch_vector(r)
3. التوصيف الكمومي للحالة
إذا قِست الحالة الكمومية في الأساس الحسابي ( و) فحسب، فستضيع معلومات الطور (معلومات الأعداد المركبة). لكن إذا توفرت لديك نسخ كثيرة من عبر تكرار عملية التحضير (لا يمكننا نسخ الحالات، لكن يمكننا تكرار عمليات التحضير)، فيمكننا تقدير قيم عبر إجراء توصيف الحالة الكمومية لمصفوفة الكثافة . بالنظر إلى الشكل:
يتحقق ما يلي:
في حالة