量子相位估计(QPE)#
背景与理论#
量子相位估计(QPE)用于估计酉算子特征值的相位。 给定酉算子 \(U\) 及其一个特征态 \(|\psi\rangle\):
QPE 使用 \(n\) 个精度比特输出 \(\varphi \in [0, 1)\),精度为 \(n\) 比特。
算法步骤#
步骤 1 — 在 \(m\) 个系统比特上制备特征态: $\(|\psi\rangle = \sum_x \alpha_x |x\rangle\)$
步骤 2 — 在 \(n\) 个精度比特上创建叠加态: $\(H^{\otimes n}|0\rangle^{\otimes n} = \frac{1}{\sqrt{2^n}}\sum_{k=0}^{2^n-1}|k\rangle\)$
步骤 3 — 受控 \(U\) 的幂次:对每个精度比特 \(k\)(值为 \(2^{n-k-1}\)): $\(C-U^{2^{n-k-1}}: \frac{1}{\sqrt{2^n}}\sum_{k,j}|k\rangle|j\rangle \to \frac{1}{\sqrt{2^n}}\sum_{k,j}e^{2\pi i\varphi k \cdot 2^{n-k-1}}|k\rangle|j\rangle\)$
步骤 4 — 对精度寄存器施加逆 QFT: $\(\text{QFT}^{\dagger}\left(\sum_k e^{2\pi i\varphi k}|k\rangle\right) \approx |\tilde{\varphi}\rangle\)\( 其中 \)\tilde{\varphi}\( 是 \)\varphi$ 的二进制表示。
逆 QFT(QFTdagger)#
QFT 将 \(|x\rangle \to \frac{1}{\sqrt{N}}\sum_k e^{2\pi ixk/N}|k\rangle\)。 QFTdagger 是其逆变换——通过反转 QFT 电路并使用伴随旋转角度来实现。
精度#
使用 \(n\) 个精度比特时,QPE 可达到 \(\pm 1/2^n\) 的精度,最高有效位接近概率为 1。 算法需要将特征态作为输入提供(它不能自行寻找特征态)。
代码解析#
apply_cu1#
实现 \(CU_1(\theta)\),其中 \(U_1(\theta) = \text{diag}(1, e^{i\theta})\): $\(CU_1(\theta) = \begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&e^{i\theta}\end{pmatrix}\)$
分解方式: $\(CU_1(\theta) = u_1(\theta/2) \cdot CX \cdot u_1(-\theta/2) \cdot CX\)$
apply_qft_dagger#
精度寄存器的逆 QFT 电路:
以逆序级联施加 \(CU_1(-\pi/2^{j-i})\) 门
然后在每个比特上施加 Hadamard
build_qpe_circuit#
在系统比特上制备特征态(默认为 \(|0\rangle^{\otimes m}\))
在精度比特上施加 \(H^{\otimes n}\) 产生均匀叠加
对每个精度比特 \(k\):施加由该比特控制的 \(U^{2^k}\)
对精度比特施加 QFTdagger
测量精度寄存器
运行示例#
# 估计 T 门的相位(相位 = π/8 ≈ 0.3927)
python examples/algorithms/qpe.py --n-precision 4 --unitary t
# 估计 Z 门的相位(特征值 = -1,即相位 = 0.5)
python examples/algorithms/qpe.py --n-precision 4 --unitary z
# 更多精度比特
python examples/algorithms/qpe.py --n-precision 6 --unitary t --shots 8192
预期输出:
Quantum Phase Estimation
Precision qubits: 4
Phase precision: 1/16 = 0.0625
Unitary: t
Measurement results:
|0110⟩ prob= 94.2% phase=0.3750 ← most likely
|0101⟩ prob= 2.1% phase=0.3125
|0111⟩ prob= 1.8% phase=0.4375
Estimated phase: 0.3750
True phase: 0.3927
Absolute error: 0.0177
✓ QPE complete.
设计说明#
特征态输入:QPE 需要一个已知的特征态。对于非对角酉算子,输出是对应特征态分解的多个相位的叠加。
受控酉算子:对于对角的 \(U\),受控-\(U\) 通过编码相位角的 \(CU_1\) 门实现。级联分解处理多比特相位编码。
二进制相位编码:QPE 将精度寄存器视为二进制小数 \(\varphi = \sum_k b_k / 2^k\)。测量得到的整数 \(m\) 给出 \(\tilde{\varphi} = m / 2^n\)。
扩展方向#
HHL 算法:将 QPE 作为量子线性方程组求解器的核心
迭代 QPE(IQPE):通过每次迭代测量并重用一个比特来减少比特数量
量子计数:结合 Grover 搜索与 QPE 来计数目标态数量
References#
Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press. Chapter 5.
Cleve, R., Ekert, A., Macchiavello, C., & Mosca, M. (1998). “Quantum algorithms revisited.” Proc. R. Soc. A. https://arxiv.org/abs/quant-ph/9708016