qiskit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseQiskit
Qiskit
Overview
概述
Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on simulators or real quantum computers, and analyze results. Supports IBM Quantum (100+ qubit systems), IonQ, Amazon Braket, and other providers.
Key Features:
- 83x faster transpilation than competitors
- 29% fewer two-qubit gates in optimized circuits
- Backend-agnostic execution (local simulators or cloud hardware)
- Comprehensive algorithm libraries for optimization, chemistry, and ML
Qiskit是全球最受欢迎的开源量子计算框架,下载量超1300万次。可用于构建量子电路、针对硬件进行优化、在模拟器或真实量子计算机上执行,并分析结果。支持IBM Quantum(100+量子比特系统)、IonQ、Amazon Braket及其他供应商平台。
核心特性:
- 转译速度比竞品快83倍
- 优化后的电路中双量子比特门数量减少29%
- 与后端无关的执行方式(本地模拟器或云端硬件)
- 涵盖优化、化学和机器学习领域的全面算法库
Quick Start
快速开始
Installation
安装
bash
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlibbash
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlibFirst Circuit
首个电路示例
python
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSamplerpython
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSamplerCreate Bell state (entangled qubits)
创建贝尔态(纠缠量子比特)
qc = QuantumCircuit(2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT from qubit 0 to 1
qc.measure_all() # Measure both qubits
qc = QuantumCircuit(2)
qc.h(0) # 对量子比特0应用Hadamard门
qc.cx(0, 1) # 从量子比特0到1应用CNOT门
qc.measure_all() # 测量所有量子比特
Run locally
本地运行
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}
undefinedsampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}
undefinedVisualization
可视化
python
from qiskit.visualization import plot_histogram
qc.draw('mpl') # Circuit diagram
plot_histogram(counts) # Results histogrampython
from qiskit.visualization import plot_histogram
qc.draw('mpl') # 电路示意图
plot_histogram(counts) # 结果直方图Core Capabilities
核心功能
1. Setup and Installation
1. 安装与配置
For detailed installation, authentication, and IBM Quantum account setup:
- See
references/setup.md
Topics covered:
- Installation with uv
- Python environment setup
- IBM Quantum account and API token configuration
- Local vs. cloud execution
如需详细的安装、认证及IBM Quantum账户设置指南:
- 参考
references/setup.md
涵盖主题:
- 使用uv安装Qiskit
- Python环境配置
- IBM Quantum账户与API令牌设置
- 本地执行 vs 云端执行
2. Building Quantum Circuits
2. 构建量子电路
For constructing quantum circuits with gates, measurements, and composition:
- See
references/circuits.md
Topics covered:
- Creating circuits with QuantumCircuit
- Single-qubit gates (H, X, Y, Z, rotations, phase gates)
- Multi-qubit gates (CNOT, SWAP, Toffoli)
- Measurements and barriers
- Circuit composition and properties
- Parameterized circuits for variational algorithms
如需使用门、测量和组合操作构建量子电路:
- 参考
references/circuits.md
涵盖主题:
- 使用QuantumCircuit创建电路
- 单量子比特门(H、X、Y、Z、旋转门、相位门)
- 多量子比特门(CNOT、SWAP、Toffoli)
- 测量与屏障
- 电路组合与属性
- 用于变分算法的参数化电路
3. Primitives (Sampler and Estimator)
3. 原语(Sampler与Estimator)
For executing quantum circuits and computing results:
- See
references/primitives.md
Topics covered:
- Sampler: Get bitstring measurements and probability distributions
- Estimator: Compute expectation values of observables
- V2 interface (StatevectorSampler, StatevectorEstimator)
- IBM Quantum Runtime primitives for hardware
- Sessions and Batch modes
- Parameter binding
如需执行量子电路并计算结果:
- 参考
references/primitives.md
涵盖主题:
- Sampler:获取比特串测量结果与概率分布
- Estimator:计算可观测量的期望值
- V2接口(StatevectorSampler、StatevectorEstimator)
- 用于硬件的IBM Quantum Runtime原语
- 会话与批量模式
- 参数绑定
4. Transpilation and Optimization
4. 转译与优化
For optimizing circuits and preparing for hardware execution:
- See
references/transpilation.md
Topics covered:
- Why transpilation is necessary
- Optimization levels (0-3)
- Six transpilation stages (init, layout, routing, translation, optimization, scheduling)
- Advanced features (virtual permutation elision, gate cancellation)
- Common parameters (initial_layout, approximation_degree, seed)
- Best practices for efficient circuits
如需优化电路并为硬件执行做准备:
- 参考
references/transpilation.md
涵盖主题:
- 转译的必要性
- 优化级别(0-3)
- 六个转译阶段(初始化、布局、路由、转换、优化、调度)
- 高级特性(虚拟排列消除、门抵消)
- 常用参数(initial_layout、approximation_degree、seed)
- 高效电路的最佳实践
5. Visualization
5. 可视化
For displaying circuits, results, and quantum states:
- See
references/visualization.md
Topics covered:
- Circuit drawings (text, matplotlib, LaTeX)
- Result histograms
- Quantum state visualization (Bloch sphere, state city, QSphere)
- Backend topology and error maps
- Customization and styling
- Saving publication-quality figures
如需展示电路、结果和量子态:
- 参考
references/visualization.md
涵盖主题:
- 电路绘图(文本、matplotlib、LaTeX)
- 结果直方图
- 量子态可视化(布洛赫球、状态图、QSphere)
- 后端拓扑与错误图
- 自定义与样式设置
- 保存可用于出版的图表
6. Hardware Backends
6. 硬件后端
For running on simulators and real quantum computers:
- See
references/backends.md
Topics covered:
- IBM Quantum backends and authentication
- Backend properties and status
- Running on real hardware with Runtime primitives
- Job management and queuing
- Session mode (iterative algorithms)
- Batch mode (parallel jobs)
- Local simulators (StatevectorSampler, Aer)
- Third-party providers (IonQ, Amazon Braket)
- Error mitigation strategies
如需在模拟器和真实量子计算机上运行:
- 参考
references/backends.md
涵盖主题:
- IBM Quantum后端与认证
- 后端属性与状态
- 使用Runtime原语在真实硬件上运行
- 作业管理与排队
- 会话模式(迭代算法)
- 批量模式(并行作业)
- 本地模拟器(StatevectorSampler、Aer)
- 第三方供应商(IonQ、Amazon Braket)
- 错误缓解策略
7. Qiskit Patterns Workflow
7. Qiskit Patterns工作流
For implementing the four-step quantum computing workflow:
- See
references/patterns.md
Topics covered:
- Map: Translate problems to quantum circuits
- Optimize: Transpile for hardware
- Execute: Run with primitives
- Post-process: Extract and analyze results
- Complete VQE example
- Session vs. Batch execution
- Common workflow patterns
如需实现四步量子计算工作流:
- 参考
references/patterns.md
涵盖主题:
- 映射:将问题转换为量子电路
- 优化:针对硬件转译电路
- 执行:使用原语运行
- 后处理:提取并分析结果
- 完整VQE示例
- 会话模式 vs 批量执行
- 常见工作流模式
8. Quantum Algorithms and Applications
8. 量子算法与应用
For implementing specific quantum algorithms:
- See
references/algorithms.md
Topics covered:
- Optimization: VQE, QAOA, Grover's algorithm
- Chemistry: Molecular ground states, excited states, Hamiltonians
- Machine Learning: Quantum kernels, VQC, QNN
- Algorithm libraries: Qiskit Nature, Qiskit ML, Qiskit Optimization
- Physics simulations and benchmarking
如需实现特定量子算法:
- 参考
references/algorithms.md
涵盖主题:
- 优化:VQE、QAOA、Grover算法
- 化学:分子基态、激发态、哈密顿量
- 机器学习:量子核、VQC、QNN
- 算法库:Qiskit Nature、Qiskit ML、Qiskit Optimization
- 物理模拟与基准测试
Workflow Decision Guide
工作流决策指南
If you need to:
- Install Qiskit or set up IBM Quantum account →
references/setup.md - Build a new quantum circuit →
references/circuits.md - Understand gates and circuit operations →
references/circuits.md - Run circuits and get measurements →
references/primitives.md - Compute expectation values →
references/primitives.md - Optimize circuits for hardware →
references/transpilation.md - Visualize circuits or results →
references/visualization.md - Execute on IBM Quantum hardware →
references/backends.md - Connect to third-party providers →
references/backends.md - Implement end-to-end quantum workflow →
references/patterns.md - Build specific algorithm (VQE, QAOA, etc.) →
references/algorithms.md - Solve chemistry or optimization problems →
references/algorithms.md
当你需要:
- 安装Qiskit或设置IBM Quantum账户 →
references/setup.md - 构建新的量子电路 →
references/circuits.md - 了解门与电路操作 →
references/circuits.md - 运行电路并获取测量结果 →
references/primitives.md - 计算期望值 →
references/primitives.md - 针对硬件优化电路 →
references/transpilation.md - 可视化电路或结果 →
references/visualization.md - 在IBM Quantum硬件上执行 →
references/backends.md - 连接到第三方供应商 →
references/backends.md - 实现端到端量子工作流 →
references/patterns.md - 构建特定算法(VQE、QAOA等) →
references/algorithms.md - 解决化学或优化问题 →
references/algorithms.md
Best Practices
最佳实践
Development Workflow
开发工作流
-
Start with simulators: Test locally before using hardwarepython
from qiskit.primitives import StatevectorSampler sampler = StatevectorSampler() -
Always transpile: Optimize circuits before executionpython
from qiskit import transpile qc_optimized = transpile(qc, backend=backend, optimization_level=3) -
Use appropriate primitives:
- Sampler for bitstrings (optimization algorithms)
- Estimator for expectation values (chemistry, physics)
-
Choose execution mode:
- Session: Iterative algorithms (VQE, QAOA)
- Batch: Independent parallel jobs
- Single job: One-off experiments
-
从模拟器开始:在使用硬件前先在本地测试python
from qiskit.primitives import StatevectorSampler sampler = StatevectorSampler() -
始终进行转译:执行前优化电路python
from qiskit import transpile qc_optimized = transpile(qc, backend=backend, optimization_level=3) -
选择合适的原语:
- Sampler用于比特串(优化算法)
- Estimator用于期望值(化学、物理)
-
选择执行模式:
- 会话模式:迭代算法(VQE、QAOA)
- 批量模式:独立并行作业
- 单次作业:一次性实验
Performance Optimization
性能优化
- Use optimization_level=3 for production
- Minimize two-qubit gates (major error source)
- Test with noisy simulators before hardware
- Save and reuse transpiled circuits
- Monitor convergence in variational algorithms
- 生产环境使用optimization_level=3
- 尽量减少双量子比特门(主要误差来源)
- 在使用硬件前先在含噪声模拟器上测试
- 保存并复用已转译的电路
- 监控变分算法的收敛情况
Hardware Execution
硬件执行
- Check backend status before submitting
- Use least_busy() for testing
- Save job IDs for later retrieval
- Apply error mitigation (resilience_level)
- Start with fewer shots, increase for final runs
- 提交作业前检查后端状态
- 测试时使用least_busy()
- 保存作业ID以便后续检索
- 应用错误缓解策略(resilience_level)
- 先使用较少的shots,最终运行时再增加
Common Patterns
常见模式
Pattern 1: Simple Circuit Execution
模式1:简单电路执行
python
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()python
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()Pattern 2: Hardware Execution with Transpilation
模式2:带转译的硬件执行
python
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import transpile
service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")
qc_optimized = transpile(qc, backend=backend, optimization_level=3)
sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()python
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import transpile
service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")
qc_optimized = transpile(qc, backend=backend, optimization_level=3)
sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()Pattern 3: Variational Algorithm (VQE)
模式3:变分算法(VQE)
python
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
with Session(backend=backend) as session:
estimator = Estimator(session=session)
def cost_function(params):
bound_qc = ansatz.assign_parameters(params)
qc_isa = transpile(bound_qc, backend=backend)
result = estimator.run([(qc_isa, hamiltonian)]).result()
return result[0].data.evs
result = minimize(cost_function, initial_params, method='COBYLA')python
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
with Session(backend=backend) as session:
estimator = Estimator(session=session)
def cost_function(params):
bound_qc = ansatz.assign_parameters(params)
qc_isa = transpile(bound_qc, backend=backend)
result = estimator.run([(qc_isa, hamiltonian)]).result()
return result[0].data.evs
result = minimize(cost_function, initial_params, method='COBYLA')Additional Resources
额外资源
- Official Docs: https://quantum.ibm.com/docs
- Qiskit Textbook: https://qiskit.org/learn
- API Reference: https://docs.quantum.ibm.com/api/qiskit
- Patterns Guide: https://quantum.cloud.ibm.com/docs/en/guides/intro-to-patterns