مرحباً بالعالم: دائرتك الكمية الأولى
أنشئ حالة بِل (qubitان متشابكان) وشغِّلها بثلاث طرق:
- المحاكاة المثالية — نتائج مثالية، لا حاجة إلى حساب
- المحاكاة الضوضائية — تحاكي جهازاً حقيقياً، لا حاجة إلى حساب
- العتاد الكمي الحقيقي — يتطلب حساب IBM Quantum مجانياً (خطوات الإعداد أدناه)
بناء الدائرة
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
qc.draw(output="mpl")
الخيار الأول: المحاكاة المثالية (لا حاجة إلى حساب)
يستخدم StatevectorSampler — محاكياً محلياً يُعطي نتائج مثالية خالية من الضوضاء.
from qiskit.primitives import StatevectorSampler
result = StatevectorSampler().run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
from qiskit.visualization import plot_histogram
plot_histogram(counts)
الخيار الثاني: المحاكاة الضوضائية (لا حاجة إلى حساب)
يستخدم FakeManilaV2 — محاكياً محلياً يُحاكي جهاز IBM الكمي الحقيقي، بما في ذلك خصائص الضوضاء الخاصة به. يجب أولاً تحويل الدائرة (transpile) لتتوافق مع مجموعة البوابات واتصالية qubit الخاصة بالجهاز.
from qiskit_ibm_runtime import SamplerV2
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
backend = FakeManilaV2()
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
الخيار الثالث: العتاد الكمي الحقيقي
يتطلب حساب IBM Quantum مجانياً. لإنشاء حساب:
- سجِّل على quantum.cloud.ibm.com/registration — لا بطاقة ائتمانية مطلوبة خلال أول 30 يوماً
- سجِّل الدخول على quantum.cloud.ibm.com واختر المنطقة us-east (مطلوبة للخطة المفتوحة المجانية)
- أنشئ instance (الخطة المفتوحة المجانية) من صفحة Instances إن لم يكن لديك واحدة بعد
- أنشئ مفتاح API على quantum.cloud.ibm.com (أو على cloud.ibm.com/iam/apikeys)
- انسخ CRN (Cloud Resource Name) من صفحة Instances الخاصة بك
ثم، إذا لم تكن قد حفظت بيانات الاعتماد بعد في جلسة Binder هذه، شغِّل الخلية أدناه. استبدل <your-api-key> بمفتاح API من الخطوة الرابعة، و<your-crn> بـ CRN من الخطوة الخامسة.
from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(
channel="ibm_quantum_platform",
token="<your-api-key>",
instance="<your-crn>",
set_as_default=True,
overwrite=True,
)
ملاحظة: قد تستغرق المهام على العتاد الحقيقي بعض الوقت بحسب أوقات الانتظار في قائمة الانتظار. إذا كانت الخلية لا تزال تعمل، يمكنك التحقق من حالة مهمتك وعرض النتائج على quantum.cloud.ibm.com/workloads.
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(f"Running on {backend.name}")
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
ما الخطوة التالية؟
- الدروس التعليمية — أدلة خطوة بخطوة حول الخوارزميات، وتخفيف الأخطاء، والتحويل (transpilation)، وغير ذلك
- الأدلة المرجعية — مواد مرجعية حول تشغيل الدوائر، والـ primitives، وQiskit Runtime
- الدورات — مسارات تعلُّم منظَّمة من أساسيات الكم إلى الحوسبة على نطاق واسع
- الوحدات — وحدات مفاهيمية متعمقة في علوم الحاسوب والميكانيكا الكمية