一个开源软件开发工具包,用于在扩展量子电路、算子和原语层面与量子计算机交互。
项目描述
Qiskit
Qiskit 是一个开源软件开发工具包,用于在扩展量子电路、算子和原语层面与量子计算机交互。
这个库是Qiskit的核心组件,包含了创建和操作量子电路、量子算符和原始函数(采样器和估计器)的基本构建块。它还包括一个支持优化量子电路的转换器和用于创建高级算符的量子信息工具箱。
有关如何使用Qiskit的更多详细信息,请参阅以下文档
安装
[!警告]请不要尝试就地升级现有的Qiskit 0.*环境到Qiskit 1.0。 阅读更多。
我们鼓励您通过pip
安装Qiskit
pip install qiskit
Pip将自动处理所有依赖项,您将始终安装最新(且经过充分测试)的版本。
要从源安装,请按照文档中的说明操作。
在Qiskit中创建您的第一个量子程序
现在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状态的纠缠态 $(|000\rangle + i|111\rangle)/\sqrt{2}$。它使用标准量子门:Hadamard门(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.sampler import Sampler
sampler = Sampler()
job = sampler.run(qc_measured, shots=1000)
result = job.result()
print(f" > Quasi probability distribution: {result.quasi_dists}")
运行此操作将给出类似{0: 0.497, 7: 0.503}
的结果,即000
50%的时间,111
50%的时间,考虑到统计波动。为了说明估计器的强大功能,我们现在使用量子信息工具箱创建算符 $XXY+XYX+YXX-YYY$ 并将其传递给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 Estimator
estimator = Estimator()
job = estimator.run(qc_example, operator, shots=1000)
result = job.result()
print(f" > Expectation values: {result.values}")
运行此操作将给出结果4
。为了好玩,尝试将每个单量子比特算符X和Y分配一个±1的值,看看您是否能得到这个结果。(剧透:这是不可能的!)
使用Qiskit提供的qiskit.primitives.Sampler
和qiskit.primitives.Estimator
不会让您走得很远。量子计算的力量无法在经典计算机上模拟,您需要使用真实的量子硬件来扩展到更大的量子电路。但是,在硬件上运行量子电路需要将其重写为量子硬件的基门和连接。执行此操作的工具有转换器,Qiskit包括用于综合、优化、映射和调度的转换器传递。但是,它还包括一个默认编译器,它在大多数示例中都工作得非常好。以下代码将示例电路映射到basis_gates = ['cz', 'sx', 'rz']
和线性链状量子比特$0 \rightarrow 1 \rightarrow 2$,其中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.BaseSampler
和qiskit.primitives.BaseEstimator
接口。例如,一些提供运行时原始实现实现的软件包包括:
Qiskit还提供了一个低级抽象接口来描述量子后端。该接口位于qiskit.providers
中,定义了一个抽象的BackendV2
类,供应商可以实施以表示他们的硬件或模拟器给Qiskit。后端类包括在后端上执行电路的通用接口;然而,在这个接口中,每个供应商可能执行不同类型的预处理和后处理,并返回由供应商定义的结果。一些与真实硬件接口的已发布供应商软件包示例包括:
- https://github.com/qiskit-community/qiskit-ionq
- https://github.com/qiskit-community/qiskit-aqt-provider
- https://github.com/qiskit-community/qiskit-braket-provider
- https://github.com/qiskit-community/qiskit-quantinuum-provider
- https://github.com/rigetti/qiskit-rigetti
您可以参考这些软件包的文档,以获取有关如何获取和使用这些系统的进一步说明。
贡献指南
如果您想为Qiskit做出贡献,请查看我们的贡献指南。通过参与,您将期望遵守我们的行为准则。
我们使用GitHub问题来跟踪请求和错误。请加入Qiskit Slack社区进行讨论、评论和提问。有关运行或使用Qiskit的问题,Stack Overflow有qiskit
标签。有关使用Qiskit进行量子计算的问题,请在Quantum Computing Stack Exchange中使用qiskit
标签(请先阅读该论坛的提问指南)。
作者和引用
Qiskit是许多不同级别为项目做出贡献的人的成果。如果您使用Qiskit,请根据包含的BibTeX文件进行引用。
变更日志和发行说明
特定版本的变更日志是动态生成的,并写入GitHub每个版本的发布页面。例如,您可以在以下位置找到0.46.0
版本的页面
https://github.com/Qiskit/qiskit/releases/tag/0.46.0
当前版本的变更日志可以在发布选项卡中找到: 变更日志提供了对特定版本显著变化的快速概述。
此外,作为每个版本的一部分,详细的发行说明被编写以详细记录作为版本的一部分发生了什么变化。这包括有关升级时潜在破坏性更改的任何文档和新功能。请参阅所有发行说明。
致谢
我们感谢DOE科学办公室国家量子信息科学研究中心、Co-design Center for Quantum Advantage (C2QA)合同编号DE-SC0012704对Qiskit开发的局部支持。
许可证
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
qiskit-1.2.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3f30b1fc6c66dec240428991da75cc6c35cc75152baff8daf3f8ca71b60684e8 |
|
MD5 | 47a534f76214b18a80ba76037e5973a0 |
|
BLAKE2b-256 | 992ac3f63a216b88fd01417b9fcd47512553463c7247575ce06f40b9269b6fba |
qiskit-1.2.4-cp38-abi3-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 87175e179bbaa3d2e280f14fe90efa77d6d7521d58ee5afd9528ec6716a6d8e6 |
|
MD5 | 2539cd76011bc4c6ae0566e38c5cc57e |
|
BLAKE2b-256 | 250c4952744fb8a6362029afa3dda15603ab4bbd9ac57d98ea4c0c75bdb88bc2 |
qiskit-1.2.4-cp38-abi3-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 93aa20398c5ab79adb4baf89a76d034a7c608fcc5bcbbd77355314378583e56a |
|
MD5 | 69a51761071d2b916527ae941a547a3e |
|
BLAKE2b-256 | 75293197fd3fd05c446680d8c9c33fd00916500810347929983c2fbf25f46f04 |
qiskit-1.2.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a66303ab4f939080ca0b8c4102040a89417a99f2621978c7bca8b1d5f6c6e103 |
|
MD5 | 4c9d79ad3b6bcd1b08ed3dd47fc9eebc |
|
BLAKE2b-256 | 9cf2708f8d18d22461a0394aad48232accd8e3e55ff83ad49b8ad14c205603ea |
qiskit-1.2.4-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 409b43d48e33e5bbc316fd85f44f29a71db2d5ff802affabc5ee355fe9573d7e |
|
MD5 | 27f137aa7cac3412fa67b5e0fd8fa860 |
|
BLAKE2b-256 | 24bc1e44746a9157ca8881c8c978a316e8a1a8b5391d52b06150e0222bab9f76 |
qiskit-1.2.4-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a973089d54f379006df8ae9b0d406e909e02b11a9390b3e2f50aefd5e8070eb |
|
MD5 | c8712f76c0476fb1af5179ce94623fe2 |
|
BLAKE2b-256 | 5be6ef18152dde40386ff6bca4b50907852d47027ad7f4b3cd1b1fb5b108558e |
qiskit-1.2.4-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2c8d9fa7fdb0cf7727f27a1881cc9f9be7de2b6aaf7cab6861686e1a6e34d6c8 |
|
MD5 | 13c558e10dc2d2a02944f8ab4a036a60 |
|
BLAKE2b-256 | 811c8794ad953a5be69e5ab037f33a2e7fa6a0276d10f8f76c25e9f28b4897ce |
qiskit-1.2.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 124777b0d9caf40932e02d1d2c6be3a12ff058990e6ae55f45a315a9a51da75b |
|
MD5 | f3445acc94a62135acd8ace44b1b3ad8 |
|
BLAKE2b-256 | 80757e4aa946c8e11065568a78cc8c6687667bb3376cc704fc16504d9e14bc5d |
qiskit-1.2.4-cp38-abi3-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3394ec724adeb481c02b050ac6e5929ca5e1f91ab94a1d571dadf0c702d6967e |
|
MD5 | df8b7528a24f760dfe4a29aef0f033de |
|
BLAKE2b-256 | 3f1464e86bebb3a98a0bc0cd29cfaeffc7ad5178579e239329e8b21e664863a1 |
qiskit-1.2.4-cp38-abi3-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9daad1c3a0608c4a32a03112d0650cc51ced2cab16479703230acedafafa0548 |
|
MD5 | 20f769a9d63f32285bc618c3adbed62e |
|
BLAKE2b-256 | 5207889a5ff9ca2e4f32428836adc51f6764e5c906029138ab877b99e95651c1 |
哈希值 for qiskit-1.2.4-cp38-abi3-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1cdabddeed74956ac22db8b11b3479044a305b0895b142198f11a75e745aa079 |
|
MD5 | 66768569734854ea543162744a37a69a |
|
BLAKE2b-256 | 735ec7b34b1862c05e798bce18d632bfec5a4df7f86958659356b333390b827d |