مرحباً بالعالم: دائرتك الكمية الأولى
أنشئ حالة بِل (كيوبتان متشابكان) وشغِّلها بثلاث طرق:
-
المحاكاة المثالية — نتائج مثالية، لا حاجة إلى حساب
-
المحاكاة الضوضائية — تحاكي جهازاً حقيقياً، لا حاجة إلى حساب
-
العتاد الكمي الحقيقي — يتطلب حساب IBM Quantum مجانياً (خطوات الإعداد أدناه)
بناء الدائرة
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit": "qiskit", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_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")
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.primitives import BackendSamplerV2
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 = BackendSamplerV2(backend=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 الخاصة بك
ثم، إذا لم تكن قد حفظت بيانات الاعتماد هنا بعد، شغِّل الخلية أدناه. استبدل <your-api-key> بمفتاح API من الخطوة 4، و<your-crn> بـ CRN من الخطوة 5. إلى أن تفعل ذلك، لا تحفظ الخلية أي شيء، لذا فتشغيل كل الخلايا لن يستبدل أبدًا حسابًا حفظته سابقًا.
from qiskit_ibm_runtime import QiskitRuntimeService
token = "<your-api-key>"
instance = "<your-crn>"
if token.startswith("<") or instance.startswith("<"):
print("Paste your API key and CRN above first; nothing was saved.")
else:
QiskitRuntimeService.save_account(
channel="ibm_quantum_platform",
token=token,
instance=instance,
set_as_default=True,
overwrite=True,
)
print("Account saved.")
ملاحظة: قد تستغرق المهام على العتاد الحقيقي بعض الوقت بحسب مدة الانتظار في الطابور. إذا كانت الخلية لا تزال تعمل، يمكنك التحقق من حالة مهمتك وعرض النتائج على 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
-
الدورات — مسارات تعلُّم منظَّمة من أساسيات الكم إلى الحوسبة الكمية على نطاق المنفعة العملية
-
الوحدات — وحدات مفاهيمية متعمقة في علوم الحاسوب والميكانيكا الكمية