news 2026/9/12 8:06:14

Qiskit 2.x 高阶算法与应用包实战指南:VQE、QAOA、Grover、量子化学与 Addons 全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qiskit 2.x 高阶算法与应用包实战指南:VQE、QAOA、Grover、量子化学与 Addons 全解析

Qiskit 2.x 高阶算法与应用包实战指南:VQE、QAOA、Grover、量子化学与 Addons 全解析

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

导读:本指南基于本仓库 Qiskit 技能包 的算法参考文档,系统梳理 Qiskit 2.x 核心发行版与qiskit-algorithmsqiskit-natureqiskit-machine-learningqiskit-optimization及五大 Addon 应用包的边界、版本矩阵与安装方式。你将掌握在 Qiskit 2.5 环境中用 V2 Primitives 落地 VQE、QAOA、Grover、量子相位估计、量子核方法等算法的完整可运行代码,学会判断"手写电路"与"使用应用包"的取舍,并获得一套防止把模拟结果错当硬件结论的算法审查清单。

一、生态全景:核心发行版与应用包的分工

Qiskit 2.x 的核心qiskit发行版只负责量子计算的基础设施:电路(circuits)、算子(operators)、Primitive(Sampler / Estimator)、合成(synthesis)、转译(transpilation)与量子信息工具(quantum information)。高阶算法与领域应用则全部托管在独立发行包中——这是本仓库 algorithms.md 反复强调的核心边界:

  • 变分量子特征求解器(VQE)、QAOA、Grover、相位估计等通用算法qiskit-algorithms
  • 电子结构、二次量子化、算符映射等化学/物理领域问题qiskit-nature(+qiskit-nature-pyscf驱动)
  • 量子核、量子神经网络、Torch 连接等机器学习qiskit-machine-learning
  • 二次规划、组合优化包装器 →qiskit-optimization
  • 电路切割、量子对角化等模块化算法构件→ 五个qiskit-addon-*

这一点也可以从仓库配套脚本中得到印证:scripts/check_environment.py 中维护了一张与本文档一致的VERIFIED_VERSIONS基线表,并额外指出一个关键陷阱:不要安装qiskit-terra——它已被qiskit发行版取代,混装两者会造成命名空间污染,脚本会将其视为不可恢复的错误。

已验证包矩阵(2026-07-23 校验)

下表来自 algorithms.md,所有版本均在该日期基于 PyPI 与官方文档验证通过(版本来源详见 sources.md):

PackageVersionPrimary role
qiskit-algorithms0.4.0VQE, QAOA, Grover, phase estimation, eigensolvers, optimizers
qiskit-nature0.8.0Electronic structure, second quantization, mappers
qiskit-nature-pyscf0.4.0PySCF electronic-structure driver integration
qiskit-machine-learning0.9.0Kernels, QNNs, classifiers/regressors, Torch connector
qiskit-optimization0.7.0Quadratic programs, converters, quantum optimization wrappers
qiskit-addon-cutting0.10.0Circuit and operator cutting
qiskit-addon-sqd0.12.1Sample-based quantum diagonalization
qiskit-addon-obp0.3.0Operator backpropagation
qiskit-addon-mpf0.3.0Multi-product formulas
qiskit-addon-aqc-tensor0.3.1Approximate quantum compilation with tensor networks

精确锁定版本安装

应用包与核心 Qiskit 的兼容窗口各不相同,官方文档建议在全新环境中按需精确安装。核心算法 + 优化组合:

uv pip install \ "qiskit==2.5.0" \ "qiskit-algorithms==0.4.0" \ "qiskit-optimization==0.7.0"

化学计算组合:

uv pip install \ "qiskit==2.5.0" \ "qiskit-algorithms==0.4.0" \ "qiskit-nature==0.8.0" \ "qiskit-nature-pyscf==0.4.0"

要点:各应用包需一并解析安装(resolve together),因为它们的 Qiskit 兼容窗口可能存在差异;不要只锁核心包而放任应用包自行浮动。安装后可用仓库脚本核验环境:

python skills/qiskit/scripts/check_environment.py --json

该脚本会逐一比对已安装版本与验证基线,报告版本漂移、导入失败与核心 API 冒烟测试结果(详见 check_environment.py)。

二、决策标准:何时手写电路,何时使用应用包

在引入任何一个高层算法包之前,先回答"要不要引入依赖"的问题。文档给出明确的分界:

手写电路(manual circuit)适用场景:

  • 教学演示或检查一个小规模算法;
  • 测试一种新的电路构造方式;
  • 需要完全掌控每一个 Primitive PUB 与编译步骤;
  • 希望避免引入应用包依赖。

使用应用包适用场景:

  • 应用包提供了经过测试的问题变换(problem transformations);
  • 其结果对象与领域相关的后处理(domain post-processing)有价值;
  • 当前实现接受 V2 Primitive;
  • 该版本的发布兼容你已安装的 Qiskit 版本。

硬性警告:不要直接照抄 1.0 之前的算法教程——先检查构造函数签名与 Primitive 要求。这条规则在仓库 migration.md 中有更系统的体现:旧的quantum_instance=构造参数、字符串形式的optimizer="COBYLA"均已被移除或弃用,必须替换为 V2 Primitive 对象与优化器实例。

三、VQE with Qiskit Algorithms 0.4:从本地验证到硬件执行

变分量子特征求解器(VQE)是本仓库验证过的核心算法示例。它使用 V2 的StatevectorEstimator,配合efficient_su2硬件高效 ansatz 与SLSQP优化器:

from qiskit.circuit.library import efficient_su2 from qiskit.primitives import StatevectorEstimator from qiskit.quantum_info import SparsePauliOp from qiskit_algorithms import VQE from qiskit_algorithms.optimizers import SLSQP hamiltonian = SparsePauliOp.from_list( [ ("ZI", 1.0), ("IZ", 1.0), ("XX", 0.2), ] ) ansatz = efficient_su2( num_qubits=2, reps=1, entanglement="linear", ) vqe = VQE( estimator=StatevectorEstimator(), ansatz=ansatz, optimizer=SLSQP(maxiter=100), initial_point=[0.0] * ansatz.num_parameters, ) result = vqe.compute_minimum_eigenvalue(hamiltonian) print(float(result.eigenvalue.real))

从源码看这套代码为何成立

  • SparsePauliOp.from_list的标签采用little-endian 约定:标签最右侧字符作用于 qubit 0(见 primitives.md),因此"ZI""IZ""XX"天然适配 2 比特 ansatz;
  • efficient_su2(num_qubits, reps, entanglement)函数式构造函数,取代了旧的 blueprint 类;文档与 migration.md 均提示函数构造函数在可变性(mutability)与构造时机上和旧 blueprint 类不同,迁移后必须重测参数顺序;
  • V2VQEestimator槽位接收的是明确实现的 Estimator(本地StatevectorEstimator或 RuntimeEstimatorV2),不再有隐式的QuantumInstance

仓库的 run_local_primitives.py 给出了一个可独立运行的同类验证流程:它用ry(theta)+cx构造参数化电路,令StatevectorEstimator计算1.0*ZI + 0.5*XX,并与解析解cos(theta) + 0.5*sin(theta)比对;对应测试 tests/qiskit/test_scripts.py 断言了四种角度下期望值与解析解的绝对误差小于1e-9,同时在theta=pi/2时采样结果严格只有00/11(Bell 态)。这套"先有解析基准、再上噪声/硬件"的方法论正是本文第五、十节审查清单的工程化体现。

上硬件时的四条纪律

  1. 使用 RuntimeEstimatorV2
  2. 提供转译器适配器(transpiler adapter),或显式管理参数化的 ISA 电路;
  3. 限制优化器迭代次数与请求精度(precision);
  4. 保存每个 Job ID 与收敛记录。

最重要的性能教训不要在每次代价函数调用中把新绑定的电路从头转译一遍。正确做法是"参数化电路只编译一次",之后在 PUB 里传参数数组。仓库 patterns.md 的 Pattern 4 展示了完整形态——先用generate_preset_pass_managerefficient_su2ansatz 做一次编译得到isa_ansatz,再用hamiltonian.apply_layout(isa_ansatz.layout)映射可观测量,最后在Session或 job 模式中反复estimator.run([(isa_ansatz, isa_hamiltonian, [parameters])], precision=0.03)

四、QAOA 与 Qiskit Optimization:组合优化落地

QAOA(量子近似优化算法)在 Qiskit 中通过qiskit-algorithmsQAOA类 +qiskit-optimizationQuadraticProgram/MinimumEigenOptimizer组合使用。QAOA 的 V2 构造函数接收Sampler(而不是 Estimator):

from qiskit.primitives import StatevectorSampler from qiskit_algorithms import QAOA from qiskit_algorithms.optimizers import COBYLA from qiskit_optimization import QuadraticProgram from qiskit_optimization.algorithms import MinimumEigenOptimizer problem = QuadraticProgram("binary_demo") problem.binary_var("x") problem.binary_var("y") problem.maximize( linear={"x": 1, "y": 1}, quadratic={("x", "y"): -2}, ) qaoa = QAOA( sampler=StatevectorSampler(seed=5), optimizer=COBYLA(maxiter=100), reps=1, ) solver = MinimumEigenOptimizer(qaoa) result = solver.solve(problem) print(result.x, result.fval, result.status)

参数纪律optimizer必须传优化器对象(如COBYLA(maxiter=100)),不要用旧式的字符串参数(optimizer="COBYLA"),除非具体包文档明确声明支持该写法。

声明量子结果前的五项核查(这是组合优化类工作的"事故高发区"):

  • 对小规模实例与经典求解器结果对比;
  • 核对变量到比特串(bitstring)的排序约定;
  • 报告解的可行性(feasibility)与目标函数值;
  • 区分优化器的随机性与量子采样的随机性;
  • 量化总电路求值次数与 shot 开销。

五、Grover 与量子相位估计:Sampler 即插即用

Qiskit Algorithms 0.4 的构造函数直接接受 V2 Sampler 实现,GroverPhaseEstimation用法一致:

from qiskit.primitives import StatevectorSampler from qiskit_algorithms import Grover, PhaseEstimation sampler = StatevectorSampler(seed=5) grover = Grover(sampler=sampler) phase_estimation = PhaseEstimation( num_evaluation_qubits=4, sampler=sampler, )

旧的quantum_instance=参数已过时(仓库 migration.md 的"Migrate Qiskit Algorithms"一节给出了同构的PhaseEstimation(num_evaluation_qubits=4, sampler=StatevectorSampler(seed=41))迁移写法)。

在自定义相位估计电路中,应使用门级实现QFTGate而非蓝图类QFT

from qiskit import QuantumCircuit from qiskit.circuit.library import QFTGate inverse_qft = QFTGate(4).inverse() circuit = QuantumCircuit(4) circuit.append(inverse_qft, range(4))

弃用提醒QFT蓝图类自 Qiskit 2.1 起弃用,计划在Qiskit 3.0移除(见 migration.md 的 blueprint 迁移章节);当前推荐QFTGate(...)synth_qft_full(...)

六、Qiskit Nature:从分子哈密顿量到量子比特哈密顿量

Qiskit Nature 的职责是把领域问题转换为二次量子化算子,再映射为量子比特算子。下面的已验证示例演示完整链路:PySCF 驱动 → 费米子哈密顿量 → Jordan-Wigner 映射 → 量子比特哈密顿量:

from qiskit_nature.second_q.drivers import PySCFDriver from qiskit_nature.second_q.mappers import JordanWignerMapper driver = PySCFDriver( atom="H 0 0 0; H 0 0 0.735", basis="sto3g", charge=0, spin=0, ) problem = driver.run() fermionic_hamiltonian = problem.hamiltonian.second_q_op() mapper = JordanWignerMapper() qubit_hamiltonian = mapper.map(fermionic_hamiltonian) print(problem.num_spatial_orbitals) print(problem.num_particles) print(qubit_hamiltonian.num_qubits)

经典预处理的记录义务

PySCF 计算属于经典预处理,必须完整记录以支持复现:

  • 几何构型与单位(geometry and units);
  • 基组(basis set);
  • 电荷与自旋(charge and spin);
  • 活性空间或冻结芯选择(active-space or freeze-core choices);
  • 映射器与对称性约减(mapper and symmetry reductions);
  • 核排斥能(nuclear repulsion energy);
  • 包版本(package versions)。

两个易错点

  1. 不要重复添加核排斥能项——优先使用 Qiskit Nature 的结果解释器(result interpreters)获得完整的能量报告;
  2. QubitConverter已废弃,直接使用 mapper 类(如JordanWignerMapper()),这是 migration.md 中明确给出的现行模式。

七、Qiskit Machine Learning 0.9:量子核方法实战

Qiskit Machine Learning 提供量子核(kernels)、量子神经网络(QNNs)、可训练模型与 PyTorch 集成。下面的核方法示例使用了从qiskit_algorithms迁移到 Machine Learning 包的 API:

import numpy as np from qiskit.circuit.library import zz_feature_map from qiskit.primitives import StatevectorSampler from qiskit_machine_learning.kernels import FidelityQuantumKernel from qiskit_machine_learning.state_fidelities import ComputeUncompute feature_map = zz_feature_map( feature_dimension=2, reps=1, entanglement="full", ) sampler = StatevectorSampler(seed=5) fidelity = ComputeUncompute(sampler=sampler) kernel = FidelityQuantumKernel( fidelity=fidelity, feature_map=feature_map, ) x = np.array([[0.1, 0.2], [0.3, 0.4]]) kernel_matrix = kernel.evaluate(x)

导入路径迁移:自 Qiskit Machine Learning 0.8 起,相关的梯度(gradients)、优化器(optimizers)、态保真度(state fidelities)与工具函数已从qiskit_algorithms移入qiskit_machine_learning(例如from qiskit_machine_learning.optimizers import COBYLAfrom qiskit_machine_learning.utils import algorithm_globals,见 migration.md)。适配旧导入前务必查阅其 0.8 迁移指南。

评估纪律

  • 使用留出测试集(held-out test set);
  • 与匹配的经典核/模型对比;
  • 不要在作为证据展示的演示代码中用随机生成的标签;
  • 计入核矩阵 (O(n^2)) 次求值开销;
  • 严格区分模拟结果与硬件结果。

八、Qiskit Addons:按工作流阶段挑选算法构件

Addons 是一组模块化算法构件,对齐 Qiskit 工作流的各个阶段(Map → Optimize → Execute → Analyze)。它们独立发版、独立发布说明、各有独立的适用假设:

AddonTypical stageUse
Circuit cuttingOptimize / execute / reconstructSplit large circuits or observables and reconstruct estimates
Operator backpropagation (OBP)OptimizeMove selected circuit operations into observables
Multi-product formulas (MPF)Map / optimizeApproximate time evolution using formula combinations
AQC-TensorMap / optimizeApproximate target circuits with tensor-network-assisted compilation
Sample-based quantum diagonalization (SQD)AnalyzeCombine QPU samples with classical subspace diagonalization

安装示例:

uv pip install "qiskit-addon-cutting==0.10.0" uv pip install "qiskit-addon-sqd==0.12.1" uv pip install "qiskit-addon-obp==0.3.0" uv pip install "qiskit-addon-mpf==0.3.0" uv pip install "qiskit-addon-aqc-tensor==0.3.1"

使用规范:每个 addon 都有独立的 release notes 与假设条件,动手前先读其教程,并在经典可计算的实例上验证(validate against a classically tractable instance)——这条原则与全文反复出现的"可验证基线"方法论一脉相承。

九、直接用 quantum_info:很多任务不需要算法包

大量验证性任务完全不需要高层算法包,直接使用量子信息工具即可:

from qiskit.quantum_info import DensityMatrix, Operator, Statevector state = Statevector.from_instruction(circuit) operator = Operator(circuit) density_matrix = DensityMatrix(state)

qiskit.quantum_info适用于:

  • 理想态/算子分析(ideal state/operator analysis);
  • 保真度与距离度量(fidelity and distance metrics);
  • 部分迹与熵(partial traces and entropies);
  • Pauli 与 Clifford 代数;
  • 信道表示(channel representations);
  • 小系统验证(small-system validation)。

资源警告:稠密态矢与算子的内存随量子比特数指数增长,构造前务必确认维度(例如Statevector对 30 比特就需要 8 GiB 量级的内存)。这也是 patterns.md 中"先本地理想基线 → 再噪声模拟 → 最后硬件"三阶梯评估的前提。

十、算法审查清单:发表结论前的十道关卡

无论使用哪个算法包,在把结果写进报告或论文前,逐项过一遍 algorithms.md 给出的清单:

  1. 声称的加速是渐近的(asymptotic)、启发式的(heuristic)还是实验验证的(empirically demonstrated)?
  2. 态制备或读出(state preparation / readout)是否主导了声称的优势?
  3. 在测试规模下,实例能否被经典验证(classically verifiable)?
  4. 包版本与 Primitive 版本是否兼容?
  5. 实现是否使用 V2 Primitive?
  6. 参数化电路是否为选定目标只编译一次
  7. 可观测量布局与比特顺序(observable layouts and bit order)是否正确处理?
  8. 是否报告了优化器求值次数、精度、shots、缓解(mitigation)与总 QPU 用量?
  9. 每个结果是否明确标注为理想模拟、噪声模拟或硬件结果?
  10. 是否包含经典基线与不确定性?

这套清单与仓库中其他参考文档互为印证:primitives.md 给出了"每个结果必存 job ID、包版本、后端名、seed、precision/shots 与全部非默认 options"的结果处理清单;patterns.md 提供了完整的实验清单(experiment manifest)模板与付费执行前的 9 步预检。将三者组合使用,即可在 SKILL.md 定义的 Map → Optimize → Execute → Analyze 四阶段工作流中,产出可复现、可审计、结论可信的 Qiskit 2.x 算法实验。


延伸阅读(均为本仓库内的配套参考,可按需取用):

  • V2 Primitive 与 PUB 完整规范:Sampler/Estimator PUB 结构、precision 与 shots 语义、Runtime options;
  • 旧版 API 迁移对照表:quantum_instanceQFTQubitConverter、字符串优化器等全部废弃模式的现行替代;
  • 端到端工作流模式:参数扫描单次编译、变分循环、批处理、缓解 A/B 测试;
  • 环境检查脚本 与 本地 Primitive 脚本:可直接运行验证;
  • 配套测试:以解析解与 Bell 态分布作为基准的自动化验证证据。

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 8:05:03

外卖系统+E:餐饮数字化转型的技术架构与优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 8:03:31

YOLOv8在i5-14600KF上的CPU推理性能实测:ONNX、PyTorch与OpenVINO对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 8:02:48

Midscene.js 实战指南:3 步跑通视觉 AI 端到端测试

Midscene.js 实战指南:3 步跑通视觉 AI 端到端测试 【免费下载链接】midscene GUI Agent for E2E Testing 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene 是一个面向 E2E 测试的 GUI Agent,简单说就是"会看屏幕、会…

作者头像 李华
网站建设 2026/9/12 8:02:13

多线程环境下count更新的并发问题与解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 8:01:40

dsh 后台运行指南:终端关闭不断线,nohup/tmux/systemd 实战

最近我把 DeepSeek Harness(命令行工具 dsh)当成主力智能体框架来用,每天都要在上面起对话、挂多轮任务、跑连接外部环境的自动化流程。用得越深就越发现一个问题:只要本地开的终端窗口被关掉,或者 SSH 远程连接闪断一…

作者头像 李华