← Blog

如何使用 Qiskit 构建、转译并验证贝尔态实验

M
MindPlot 研究团队
2026-07-27
分享
quantum-computingQiskitBell-statetranspilationPython

文章目录

科学原理导论

贝尔态实验是能够展示双量子比特非经典关联的最小工作流之一。电路从计算基态 |00〉 出发,先在第一个量子比特上施加 Hadamard 门,再以第一个量子比特为控制端、第二个量子比特为目标端施加受控 X 门。在理想电路模型中,这两步得到 (|00〉 + |11〉)/√2。测量不会返回“半个状态”,每次 shots 只产生普通比特串;重复测量后,0011 应各占大约一半,而无噪声态矢量模拟中的 0110 应保持零计数。

这个例子虽然只有两个量子比特,却同时覆盖电路构造、带种子的有限次采样、面向目标约束的转译、结构化结果导出以及图形检查。单独看到一张正确的电路图并不能证明程序采样了正确对象;同样,只得到接近五五分的计数,也不能证明转译过程采用了指定的门集合和耦合关系。因此,可信测试必须把输入规范、电路结构、采样器输出、转译记录和全部交付文件串联起来验证。

本次实验使用 Qiskit 1.2.4 和本地 StatevectorSampler。IBM 文档将它描述为基于完整态矢量模拟的参考采样器。它不需要云端账户或量子处理器,适合普通 Linux CPU 上的确定性软件测试。这个选择也限定了结论边界:结果验证理想电路逻辑与软件行为,不代表真实硬件保真度、校准质量、读出误差缓解效果或所谓量子优势。

为什么贝尔关联适合作为软件验证

贝尔电路具有紧凑而严格的预期分布。较弱的测试可能只检查程序是否返回了两个非零计数;本工作流要求总计数精确等于 2,048,正计数只能出现在 0011,并且两个期望状态相对 0.5 的绝对偏差都不能超过 0.08。这些条件可以发现量子比特顺序错误、纠缠门遗漏、错误地制备两个独立叠加态、测量寄存器配置错误以及 shots 数被静默修改等问题。

理论概率虽然对称,带种子的采样仍然重要。有限 shots 会围绕理论值随机波动,固定种子使回归测试能够重复得到同一组观测计数。这个种子不表示物理过程具有经典确定性,它只控制伪随机采样实现。换用其他有效种子时,计数可以变化,但仍应满足支持集合与容差要求。把种子和容差同时记录下来,可避免读者把某一组精确计数误认为普适物理结果。

电路转译与目标约束

量子算法通常使用概念门编写,但执行目标只支持特定指令集合和连接关系。Qiskit 转译器把 QuantumCircuit 转换成满足目标约束的表示,同时尽量控制电路深度和复杂度。本演示明确要求 rzsxxcx 基门,双向二比特耦合图,优化等级 3 和固定转译种子。保留这些输入后,转译不再是不可审计的便利步骤,而成为可以逐项核验的科学计算环节。

对于双量子比特电路,连接关系看似简单,但验证方法仍有扩展价值。在更大电路中,路由会插入 SWAP,编译选择也会显著改变深度。正式硬件研究通常应从真实后端构造 Target 并记录校准上下文;这里采用显式基门与耦合图,是为了保持硬件无关,使测试能够在普通 CPU 上运行。

测试进度

检查门状态证据
软件包预检通过24 个 Python 分发包,共保留 152,257,778 下载字节
受管环境安装通过Qiskit 1.2.4 环境保留用于回归与故障修复
原生关键功能执行通过电路、采样、转译、CSV、JSON、PNG、SVG 均通过检查
真实聊天驱动执行通过智能体加载已安装技能并编写任务专用受管程序
语义产物验证通过检查计数、支持集合、概率、目标输入、图片尺寸与 SVG 内容
发布证据通过聚焦结果截图与两张由数据派生的结果图

第一次新的发布尝试揭示了验证器的模式兼容问题。智能体生成的科学结果正确,但把计数放在 simulation.counts,而旧验证器只接受文档顶层的 counts。人工检查确认 00 为 997 次、11 为 1,051 次、反关联结果为零、总 shots 为 2,048,并且转译输入与请求一致。修复仅扩展验证器对等价结构的识别范围,随后对原始保留产物重新运行语义检查;过程中没有修改、补造或重算结果值。

演示用户请求

使用已安装的 qiskit 技能和输入文件 circuit-spec.json 运行一个可复现的本地贝尔态实验。通过技能的受管环境编写并执行任务专用 Python 分析程序,构造和测量指定电路,使用 StatevectorSampler 执行,按照给定基门与耦合图转译,并生成 qiskit-results.jsoncounts.csv、电路 PNG/SVG 和直方图 PNG/SVG。总结观测计数、贝尔关联、转译结果以及每个输出路径。不要安装另一份 Qiskit,也不要伪造结果。

这是智能体驱动测试,而不是硬编码答案测试。用户请求描述科学目标与交付物,输入文件提供操作序列、shots、随机种子、基门、耦合图、优化等级、预期支持集合和容差。聊天智能体必须加载技能、读取数据、独立编写分析程序、通过受管环境执行,并解释实际产生的结果。

演示数据

紧凑输入文件为 circuit-spec.json。其中定义两个量子比特、作用于量子比特 0 的 H 门、从 0 到 1 的受控 X 门、全量测量、2,048 shots、种子 4,217,以及完整转译约束。把科学期望写进数据而不是仅放在文章叙述中,使运行过程可以复核,并让验证器针对程序实际读取的同一来源比较结果。

输入字段数值科学作用
量子比特2决定希尔伯特空间和输出比特串宽度
操作H(0)、CX(0→1)构造理想贝尔对
Shots2,048控制有限采样精度
采样种子4,217使本地回归可重复
预期支持0011排除反关联输出
目标概率各 0.5编码理想对称分布
容差±0.08允许有限 shots 波动
基门rzsxxcx定义编译指令集
耦合图0↔1定义允许的二比特连接
优化等级3请求偏重优化的转译流程

执行工作流

安装前先下载完整软件包事务,并将它保存在技能测试目录中;该目录被版本控制忽略,但可用于离线重试和故障分析。实测传输量为 152.3 MB,低于当前主机严格的 500 MB 上限。随后在应用工具根目录创建隔离的 Python 3.11 环境。任何科学功能获得通过资格之前,探针必须成功导入 Qiskit 并报告固定版本。安装成功只证明依赖可用,不能替代电路语义、产物正确性和聊天路由测试。

确定性的原生路径首先构造并采样电路,断言总计数、精确支持集合、概率容差和正的转译深度,然后导出 JSON、CSV、电路 PNG/SVG 与计数图 PNG/SVG。独立聊天路径从同一输入开始,但要求智能体另行编写程序。测试框架检查真实工具消息,证明技能被加载、程序文件被写入,并且任务通过技能的受管运行器执行,而不是绕过环境调用无关解释器。

python scripts/install.py
python scripts/tool.py probe
python scripts/tool.py run -- analysis_program.py

这些命令用于说明可复现接口,但交互式使用者不需要亲自编写和维护分析代码。科学智能体会读取请求与数据,生成任务专用程序,在受管环境中执行,验证交付物并解释结果。公开命令边界仍然有价值,因为开发者可以审计、自动化和定位环境问题。

结果与产物

观测分布通过了全部贝尔关联断言。2,048 shots 中,00 出现 997 次,11 出现 1,051 次,对应概率分别为 0.486816 和 0.513184。二者相对 0.5 的偏差均为 0.013184,明显小于声明的 0.08 容差。CSV 仍然保留 0110 两行并明确写为零,而不是依赖字典缺键来暗示反关联状态不存在。

状态计数概率预期解释
009970.486816贝尔关联输出
0100.000000理想模型中必须缺失
1000.000000理想模型中必须缺失
111,0510.513184贝尔关联输出
总计2,0481.000000与请求 shots 精确一致

结果 JSON 记录转译前后的电路深度与门计数、采样种子、计数、概率、预期和观测支持集合、最大概率偏差以及全部输出路径。编译记录具有非零深度,门计数限定在请求基门以及必要的测量和 barrier 操作范围内。验证器还直接比较记录的基门和耦合图与输入规范,避免仅凭外观正确却没有遵守目标约束的电路获得通过。

聊天界面中聚焦显示的 Qiskit 验证结果表

聚焦截图只呈现交付物与经过验证的结果字段,不显示文件浏览器、无关侧栏、原始事件日志或难以阅读的大段 JSON。表格是面向读者的主要结果,而底层文件继续保留用于精确复现和机器验证。这种展示比截取整个桌面更能说明计算实际产生了什么。

聊天驱动分析生成的 Qiskit 贝尔态电路图

电路图直观展示双量子比特制备和测量结构,但图片本身不能证明采样对象或转译约束。因此,它必须与结构化 JSON、计数表、受管运行轨迹和语义验证报告共同解释。产物文件来自实际聊天程序而不是文章装饰图。

由保留产物派生的 Qiskit 验证字段汇总

该汇总图从保留输出文档自动提取字段,不是人工重新绘制的结果。来源清单记录数据报告、文件哈希和生成器,后续测试能够发现文件被意外替换或内容漂移。由数据到图的可追踪关系有助于区分科学证据和普通插图。

如何解释结果

本测试确认软件构造了预期的理想贝尔关联,但它并未完成实验物理意义上的非定域性证明,因为没有改变测量基,也没有计算贝尔不等式。它同样没有估计硬件噪声。准确结论应保持克制:在声明的电路和本地参考采样器条件下,有限 shots 分布符合只支持相关状态且概率近似对称的理想预期。

接近五五分不是唯一通过条件。如果程序恰好输出 1,024 个 00 和 1,024 个 11,却绕过受管环境、忽略耦合图或生成占位图片,E2E 仍应失败。反过来,有限采样不要求精确相等。预先声明的容差表达科学预期,同时避免测试依赖某一个随机结果而变得脆弱。

审阅这类结果时,应把“量子态理论”“数值采样实现”和“真实硬件实验”分成三个层次。理论层给出理想支持集合和概率;数值层验证软件是否按照指定电路与随机种子产生有限样本;硬件层还要面对门误差、退相干、串扰和读出偏差。本次证据完整覆盖前两个层次,但没有越界声称第三个层次已经验证。这样的分层叙述能够避免把模拟成功误写成硬件实验成功,也能帮助后续研究者明确下一步需要补充哪些校准数据、重复实验和统计不确定性分析。

结果表中的零计数也必须结合模型解释。这里的 0110 为零,是理想态矢量采样与当前种子下的预期表现;在真实设备上出现少量反关联计数并不必然说明程序错误,而可能反映噪声和测量误差。硬件版本的验收标准应预先规定保真度、置信区间或与噪声模型的比较方法,不能照搬理想模拟的“严格为零”断言。把不同运行环境的判据写入各自测试合同,是保证结论可追踪的重要步骤。

可复现性

复现需要保留输入校验值、Qiskit 和 Python 版本、软件包来源、采样种子、shots、转译种子、基门、耦合图、优化等级以及智能体生成的程序。保留下载分发包与受管环境可以降低未来软件源变化带来的风险。JSON 和 CSV 适合机器检查,PNG 便于快速视觉复核,SVG 则适合出版排版与细节放大。

更完整的扩展应使用多个随机种子重复实验并报告偏差分布,再在具名真实后端上运行等价 ISA 电路并保存校准元数据。硬件结果必须区分原始计数和误差缓解计数,不能在不讨论读出误差与门误差的情况下直接与理想态矢量结果比较。本地实验最适合作为昂贵硬件实验之前的软件和工作流基线。

常见故障

比特顺序经常造成误解。Qiskit 在电路图、数组和输出比特串中的索引与显示约定,可能与其他软件或用户直觉不同。对称的双比特贝尔态对整体反转不太敏感,因此未来测试还应加入一个非对称电路。其他常见错误包括采样没有测量的电路、从 primitive 结果中读取错误经典寄存器;显式检查输出形状和总计数可以发现这些问题。

转译也可能表面成功却没有采用目标细节。仅在输入中出现基门或耦合图并不够,输出必须保留它们确实被使用的证据。图片生成还可能因可选可视化依赖缺失而失败,所以软件包预检包含 visualization extra,验证器则要求 PNG 尺寸具有实质内容并确认 SVG 包含真实矢量标记。

局限性

这个演示刻意保持轻量和 CPU-only。它不访问真实量子硬件,不进行噪声表征、态层析、贝尔不等式检验,也不比较不同设备上的编译策略。StatevectorSampler 是理想参考实现,并不适合所有包含中途测量的工作流。固定 Qiskit 1.2.4 有利于重现本次测试,但更新版本可能改变 primitive 结果结构和推荐接口。

测得的传输量对应测试日期的 Linux x86_64 与 Python 3.11 wheels。其他操作系统、CPU 架构、Python 版本或软件包索引可能解析出不同事务。保留环境是为了回归和故障修复,不能被误读为所有平台均已验证;macOS 和 Windows 必须分别运行平台测试后才能添加成功标记。

参考文献

无需编程即可尝试此工作流

MindPlot 已内置支持这一科学工作流。你可以用自然语言描述贝尔态实验并附上电路规范,让智能体自动生成程序、执行计算、验证文件并解释结果,无需自行编写代码。网页版本可直接访问 mindplot.ai;桌面版本则更适合重视隐私、本地运行和环境保留的研究场景。