qiskit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Qiskit

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]" matplotlib
bash
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlib

First Circuit

首个电路示例

python
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
python
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler

Create 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}
undefined
sampler = StatevectorSampler() result = sampler.run([qc], shots=1024).result() counts = result[0].data.meas.get_counts() print(counts) # {'00': ~512, '11': ~512}
undefined

Visualization

可视化

python
from qiskit.visualization import plot_histogram

qc.draw('mpl')           # Circuit diagram
plot_histogram(counts)   # Results histogram
python
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

开发工作流

  1. Start with simulators: Test locally before using hardware
    python
    from qiskit.primitives import StatevectorSampler
    sampler = StatevectorSampler()
  2. Always transpile: Optimize circuits before execution
    python
    from qiskit import transpile
    qc_optimized = transpile(qc, backend=backend, optimization_level=3)
  3. Use appropriate primitives:
    • Sampler for bitstrings (optimization algorithms)
    • Estimator for expectation values (chemistry, physics)
  4. Choose execution mode:
    • Session: Iterative algorithms (VQE, QAOA)
    • Batch: Independent parallel jobs
    • Single job: One-off experiments
  1. 从模拟器开始:在使用硬件前先在本地测试
    python
    from qiskit.primitives import StatevectorSampler
    sampler = StatevectorSampler()
  2. 始终进行转译:执行前优化电路
    python
    from qiskit import transpile
    qc_optimized = transpile(qc, backend=backend, optimization_level=3)
  3. 选择合适的原语
    • Sampler用于比特串(优化算法)
    • Estimator用于期望值(化学、物理)
  4. 选择执行模式
    • 会话模式:迭代算法(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

额外资源