QPCA 主成分分析(Quantum Principal Component Analysis)

English · 简体中文

类别 C3 · 模块 oracq.algorithms.qml.qpca · 阶段 V1

概述

读出密度矩阵 \(\rho\) 的谱:对酉步 \(e^{-i\rho\Delta t}\) 做相位估计,本征态 \(|\lambda\rangle\) 对应的相位读出为

\[ \varphi = -\frac{\lambda\,\Delta t}{2\pi} \pmod 1, \]

解码即得本征值 \(\lambda\)。酉步由 LMR 密度矩阵指数化提供(见密度矩阵指数化),一次调用共消耗 \(2^{\text{precision}} - 1\) 份 \(\rho\) 拷贝。实现依据 Lloyd–Mohseni–Rebentrost 2014("Quantum principal component analysis", Nature Physics 10, 631)。

接口与输入模型

qpca(preparation, *, precision, step_time, system=None, swap_width=None, name=None)

API 入口:qpca

  • preparation:\(\rho\) 拷贝的态制备(StatePreparation),input model 为 SP + QRAM:纯态用 gate_state_prep(amplitudes),混合态经 density.gate_purification(rho) 的 PurificationAccess.as_state_preparation() 适配;制备必须零 work。

  • precision:相位寄存器位数,范围 1..6;拷贝数随精度指数增长(precision = 6 时已达 63 份,与 density_matrix_exponentiation 的 copies 上限 63 一致)。

  • step_time:单步演化时间 \(\Delta t\),必须为正;须满足 \(\lambda\Delta t \ll 2\pi\) 以免读出混叠。

  • system:可选的系统输入态制备(缺省 \(|0\rangle\)),宽度必须等于 swap_width;输入不同的本征态,读出对应不同的本征值峰。

  • swap_width:参与交换的前缀位宽,语义同 density_matrix_exponentiation(纯化场景取 \(\rho\) 的系统位宽)。

返回 Operation,寄存器为 system、copies、phase。读出 phase 后用 eigenvalue_from_phase(value, precision, step_time) 解码本征值:按 \(\lambda \in [0, \pi/\Delta t)\) 分支取两补码相位,\(\lambda\Delta t\) 超出该范围时混叠由调用方负责。模块属性:

属性

含义

algorithm

"qpca"

readout_register / decoder

"phase" / "eigenvalue_from_phase"

copies

总拷贝数 \(2^{\text{precision}} - 1\)

step_time

单步演化时间 \(\Delta t\)

reference

"Lloyd-Mohseni-Rebentrost 2014, Nature Physics 10, 631"

实现要点

生成链为:可选系统初态制备 → 全部拷贝从全零由制备 oracle 填充 → phase 制备均匀叠加 → 相位估计的受控幂展开:phase 第 \(b\) 位控制 \(2^b\) 次连续部分交换(拷贝按固定游标顺序逐份消费,恰好用完 \(2^p - 1\) 份)→ 对 phase 施加 inverse_qft(precision)。寄存器布局 system(swap_width) | copies((2^p-1)\cdot w) | phase(p),\(w\) 为制备宽度。

部分交换的逐位精确分解(XX+YY+ZZ = 2·SWAP − I)与指数化原语共用,细节见密度矩阵指数化。

设计决策与适用边界:大 \(\Delta t\) 的 LMR 一阶误差表现为峰展宽而不移峰位——峰位(众数)解码仍精确、分布的圆周均值仍在容差内(见验证方案),因此见证允许直接按峰位读出。解码分支限定 \(\lambda\Delta t \in [0, \pi)\),更大的本征值需调用方预缩放 \(\Delta t\)。

验证方案

类别 C3(概率分布语义,判定准则见 ../development/validation-plan.md §2):读出分布的峰位须与 \(\rho\) 的闭式谱对拍。三层证据:

  • 结构:tests/core/test_qpca.py:QpcaTests.test_invalid_inputs_fail_at_generation 覆盖 precision 越界(0 / 7)、step_time = 0、swap_width 越界、system 宽度不符、解码值越界等全部入口违例。

  • 数值:test_pure_state_eigenvalues——\(\rho = |+\rangle\langle+|\)(本征值 1、0):系统输入 \(|+\rangle\)(拷贝态本身,部分交换作用在 SWAP 对称本征态上对任意 \(\Delta t\) 精确)时取 precision = 3、\(\Delta t = \pi/4\)(\(\varphi = 7/8\) 落在 QPE 栅格上),读出确定(places = 9)、解码 \(\lambda = 1\)(places = 12);输入 \(|-\rangle\) 时峰展宽,分布圆周均值仍以 \(\lambda = 0\) 为中心(delta = 0.15)。test_mixed_state_eigenvalue_via_purification——\(\rho = \mathrm{diag}(0.75, 0.25)\) 经纯化适配,系统输入 \(|0\rangle\) 读出主本征值:峰位解码恰为 0.75(places = 12,峰高 > 0.4),圆周均值 delta = 0.15。

  • 绑定:混合态的 DM 输入经 gate_purification(...).as_state_preparation() 适配为 SP 进入电路,由 test_mixed_state_eigenvalue_via_purification 覆盖。

已知缺口与计划阶段

无已知缺口,阶段 V1 见证已齐(纯态/混合态特征值峰对拍 + 指数化侧 \(\Delta t\) 一阶率与 copies 标度见证)。按 validation-plan §5 的 V3 计划,QPCA 待登记 catalog 案例并接入真实后端对拍。

相关链接

数值验证

论文级数值实验见 tests/verification/verify_misc_algorithms.py(misc_algorithms 组),全部在真实后端上执行。

实验设计:三个 QPCA 读出案例,本征值预言机为 numpy eigvalsh(与被测实现独立)。(a) 纯态 \(\rho = \lvert+\rangle\langle+\rvert\)、系统输入 \(\lvert+\rangle\):precision = 3、\(\Delta t = \pi/4\)(\(\varphi = 7/8\) 落在 QPE 栅格),共 11 量子位;(b) 混合态 \(\rho = \mathrm{diag}(0.75, 0.25)\) 经纯化适配、系统输入 \(\lvert 0\rangle\):\(\Delta t = 2\pi/6\)(\(\lambda = 0.75\) 恰在栅格),共 18 量子位;(c) 同 \(\rho\)、系统输入 \(\lvert 1\rangle\) 读次本征值 \(\lambda = 0.25\)(该 \(\Delta t\) 下不在 3 位栅格,以圆周均值对照)。后端路径:reference、rir-pysparq、adapter-pysparq、originir-ext(UniQC 全振幅),相位分布以 TVD 对拍。

关键指标:

案例

规模

路径

峰位解码 λ

峰高

圆周均值 λ

跨后端 TVD

qpca-pure-plus-deterministic

11 量子位,7 拷贝

四路径分布对拍

1(误差 0,确定性读出)

1.0000

—

≤ 1.2e-16

qpca-mixed-primary

18 量子位,7 拷贝

四路径分布对拍

0.75(误差 0)

0.4997

0.8306(偏差 0.081)

≤ 1.0e-15

qpca-mixed-secondary

18 量子位,7 拷贝

四路径分布对拍

0.75(离栅格信息项)

0.2874

0.3909(偏差 0.141,≤ 0.15)

≤ 2.4e-15

大 \(\Delta t\) 的 LMR 一阶误差只展宽峰而不移峰位:主本征值由众数精确解码,次本征值的圆周均值偏差(0.141)源于展宽偏斜,与核心测试的容差口径一致。

复现:

PYTHONPATH=src /home/agony/projects/qcfd-dev/quantum-cfd-software/.venv/bin/python tests/verification/verify_misc_algorithms.py

产物:out/verification/misc_algorithms.json(24 个案例全过,本页对应 qpca-* 三个案例)。