Qiskit عبارة عن SDK مفتوح المصدر للعمل مع أجهزة الكمبيوتر الكمومية على مستوى الدوائر الكمومية الممتدة والمشغلين والأوليات.
هذه المكتبة هي المكون الأساسي لـ Qiskit، الذي يحتوي على العناصر الأساسية لإنشاء الدوائر الكمومية، ومشغلي الكم، والوظائف البدائية (Sampler و Estimator) والعمل معها. ويحتوي أيضًا على محول يدعم تحسين الدوائر الكمومية، وصندوق أدوات المعلومات الكمومية لإنشاء عوامل تشغيل متقدمة.
لمزيد من التفاصيل حول كيفية استخدام Qiskit، راجع الوثائق الموجودة هنا:
https://docs.quantum.ibm.com/
تحذير
لا تحاول ترقية بيئة Qiskit 0.* الموجودة إلى Qiskit 1.0 في مكانها. اقرأ المزيد.
نحن نشجع على تثبيت Qiskit عبر pip
:
pip install qiskit
سيتعامل Pip مع جميع التبعيات تلقائيًا وستقوم دائمًا بتثبيت الإصدار الأحدث (والذي تم اختباره جيدًا).
للتثبيت من المصدر، اتبع الإرشادات الموجودة في الوثائق.
الآن وبعد تثبيت Qiskit، حان الوقت لبدء العمل مع Qiskit. الأجزاء الأساسية للبرنامج الكمي هي:
sampler
الدالة البدائية لأخذ عينات من النتائج أو estimator
لتقدير القيم. قم بإنشاء مثال لدائرة كمومية باستخدام فئة QuantumCircuit
:
import numpy as np
from qiskit import QuantumCircuit
# 1. A quantum circuit for preparing the quantum state |000> + i |111>
qc_example = QuantumCircuit ( 3 )
qc_example . h ( 0 ) # generate superpostion
qc_example . p ( np . pi / 2 , 0 ) # add quantum phase
qc_example . cx ( 0 , 1 ) # 0th-qubit-Controlled-NOT gate on 1st qubit
qc_example . cx ( 0 , 2 ) # 0th-qubit-Controlled-NOT gate on 2nd qubit
هذا المثال البسيط يجعل حالة متشابكة تعرف باسم حالة GHZ h
) وبوابة الطور ( p
) وبوابة CNOT ( cx
).
بمجرد الانتهاء من إنشاء الدائرة الكمومية الأولى، اختر الوظيفة البدائية التي ستستخدمها. بدءًا من sampler
، نستخدم measure_all(inplace=False)
للحصول على نسخة من الدائرة التي يتم فيها قياس جميع البتات الكمومية:
# 2. Add the classical output in the form of measurement of all qubits
qc_measured = qc_example . measure_all ( inplace = False )
# 3. Execute using the Sampler primitive
from qiskit . primitives import StatevectorSampler
sampler = StatevectorSampler ()
job = sampler . run ([ qc_measured ], shots = 1000 )
result = job . result ()
print ( f" > Counts: { result [ 0 ]. data [ "meas" ]. get_counts () } " )
سيؤدي تشغيل هذا إلى إعطاء نتيجة مشابهة لـ {'000': 497, '111': 503}
وهي 000
50% من الوقت و 111
50% من الوقت حتى التقلبات الإحصائية. لتوضيح قوة المقدر، نستخدم الآن صندوق أدوات المعلومات الكمومية لإنشاء المشغل run()
مع دائرتنا الكمومية. لاحظ أن المقدر يتطلب دائرة بدون قياس، لذلك نستخدم دائرة qc_example
التي أنشأناها سابقًا.
# 2. Define the observable to be measured
from qiskit . quantum_info import SparsePauliOp
operator = SparsePauliOp . from_list ([( "XXY" , 1 ), ( "XYX" , 1 ), ( "YXX" , 1 ), ( "YYY" , - 1 )])
# 3. Execute using the Estimator primitive
from qiskit . primitives import StatevectorEstimator
estimator = StatevectorEstimator ()
job = estimator . run ([( qc_example , operator )], precision = 1e-3 )
result = job . result ()
print ( f" > Expectation values: { result [ 0 ]. data . evs } " )
تشغيل هذا سيعطي النتيجة 4
. من أجل المتعة، حاول تعيين قيمة +/- 1 لكل مشغل أحادي البت الكمي X وY ومعرفة ما إذا كان بإمكانك تحقيق هذه النتيجة. (تنبيه المفسد: هذا غير ممكن!)
إن استخدام qiskit.primitives.StatevectorSampler
و qiskit.primitives.StatevectorEstimator
لن يأخذك بعيدًا جدًا. لا يمكن محاكاة قوة الحوسبة الكمومية على أجهزة الكمبيوتر الكلاسيكية، وتحتاج إلى استخدام أجهزة كمومية حقيقية للتوسع في دوائر كمومية أكبر. ومع ذلك، فإن تشغيل دائرة كمومية على الأجهزة يتطلب إعادة كتابة البوابات الأساسية واتصال الأجهزة الكمومية. الأداة التي تقوم بذلك هي أداة النقل، ويتضمن Qiskit تصاريح نقل للتوليف والتحسين ورسم الخرائط والجدولة. ومع ذلك، فهو يتضمن أيضًا مترجمًا افتراضيًا، والذي يعمل بشكل جيد جدًا في معظم الأمثلة. سيقوم التعليمة البرمجية التالية بتعيين دائرة المثال إلى basis_gates = ['cz', 'sx', 'rz']
وسلسلة خطية من البتات الكمومية coupling_map =[[0, 1], [1, 2]]
.
from qiskit import transpile
qc_transpiled = transpile ( qc_example , basis_gates = [ 'cz' , 'sx' , 'rz' ], coupling_map = [[ 0 , 1 ], [ 1 , 2 ]] , optimization_level = 3 )
يوفر Qiskit طبقة تجريد تتيح للمستخدمين تشغيل دوائر كمومية على الأجهزة من أي بائع يوفر واجهة متوافقة. أفضل طريقة لاستخدام Qiskit هي بيئة وقت التشغيل التي توفر تطبيقات محسنة sampler
estimator
لمنصة أجهزة معينة. قد يتضمن وقت التشغيل هذا استخدام المعالجة المسبقة واللاحقة، مثل تمريرات التحويل المحسّنة مع منع الأخطاء، وتخفيف الأخطاء، وفي النهاية، تصحيح الأخطاء المضمنة. يقوم وقت التشغيل بتنفيذ واجهات qiskit.primitives.BaseSamplerV2
و qiskit.primitives.BaseEstimatorV2
. على سبيل المثال، بعض الحزم التي توفر تطبيقات للتنفيذ البدائي في وقت التشغيل هي:
يوفر Qiskit أيضًا واجهة مجردة ذات مستوى أدنى لوصف الواجهات الخلفية الكمومية. تحدد هذه الواجهة، الموجودة في qiskit.providers
، فئة BackendV2
المجردة التي يمكن لموفري الخدمة تنفيذها لتمثيل أجهزتهم أو أجهزة المحاكاة الخاصة بهم إلى Qiskit. تتضمن فئة الواجهة الخلفية واجهة مشتركة لتنفيذ الدوائر على الواجهات الخلفية؛ ومع ذلك، في هذه الواجهة، قد يقوم كل موفر بإجراء أنواع مختلفة من المعالجة المسبقة واللاحقة وإرجاع النتائج التي يحددها البائع. بعض الأمثلة على حزم الموفر المنشورة التي تتفاعل مع الأجهزة الحقيقية هي:
يمكنك الرجوع إلى وثائق هذه الحزم للحصول على مزيد من الإرشادات حول كيفية الوصول إلى هذه الأنظمة واستخدامها.
إذا كنت ترغب في المساهمة في Qiskit، يرجى إلقاء نظرة على إرشادات المساهمة لدينا. من خلال المشاركة، يُتوقع منك الالتزام بقواعد السلوك الخاصة بنا.
نحن نستخدم مشكلات GitHub لتتبع الطلبات والأخطاء. يرجى الانضمام إلى مجتمع Qiskit Slack للمناقشة والتعليقات والأسئلة. بالنسبة للأسئلة المتعلقة بتشغيل أو استخدام Qiskit، يحتوي Stack Overflow على qiskit
. للأسئلة المتعلقة بالحوسبة الكمومية باستخدام Qiskit، استخدم علامة qiskit
في Quantum Computing Stack Exchange (من فضلك، اقرأ أولاً الإرشادات حول كيفية طرح الأسئلة في هذا المنتدى).
قيسكيت هو عمل العديد من الأشخاص الذين يساهمون في المشروع على مستويات مختلفة. إذا كنت تستخدم Qiskit، فيرجى الاستشهاد بملف BibTeX المضمن.
يتم إنشاء سجل التغيير لإصدار معين ديناميكيًا ويتم كتابته في صفحة الإصدار على Github لكل إصدار. على سبيل المثال، يمكنك العثور على الصفحة الخاصة بالإصدار 0.46.0
هنا:
https://github.com/Qiskit/qiskit/releases/tag/0.46.0
يمكن العثور على سجل التغيير الخاص بالإصدار الحالي في علامة تبويب الإصدارات: يوفر سجل التغيير نظرة عامة سريعة على التغييرات الملحوظة لإصدار معين.
بالإضافة إلى ذلك، وكجزء من كل إصدار، تتم كتابة ملاحظات الإصدار التفصيلية لتوثيق ما تغير كجزء من الإصدار بالتفصيل. يتضمن ذلك أي وثائق حول التغييرات الطارئة المحتملة على الترقية والميزات الجديدة. شاهد جميع ملاحظات الإصدار هنا.
نحن نعترف بالدعم الجزئي لتطوير Qiskit من مراكز أبحاث علوم معلومات الكم الوطنية التابعة لمكتب وزارة الطاقة للعلوم، ومركز التصميم المشترك لميزة Quantum Advantage (C2QA) بموجب العقد رقم DE-SC0012704.
ترخيص أباتشي 2.0