Skip to Content

QFT、QPE 与 LCU

本页介绍量子傅里叶变换、相位估计和酉算子线性组合。三者适合直接嵌入更大的量子线路。

推荐导入

from unitarylab import Circuit from unitarylab.library import QFT, IQFT, QPE, LCU from unitarylab.library._lcu import recover_lcu_operator

线路构造使用前四个入口;recover_lcu_operator() 用于从 LCU 线路恢复等效算符。

QFT 与 IQFT

from unitarylab import Circuit from unitarylab.library import QFT, IQFT qft = QFT(3) inverse = IQFT(3) circuit = Circuit(3) circuit.append(qft, target=[0, 1, 2])

签名为 QFT(n) 和 IQFT(n),均返回 Circuit。n 必须是正整数;IQFT(n) 是同规模 QFT 的共轭转置。构造线路不会触发执行。

QPE

from unitarylab import Circuit from unitarylab.library import QPE unitary = Circuit(1) unitary.z(0) target = Circuit(1) target.x(0) circuit, phase, probability = QPE( U=unitary, d=3, prepare_target=target, backend="torch", device="cpu", ) print(phase, probability)
QPE(U, d, prepare_target=None, return_circuit=False, backend="torch", device="cpu", dtype=np.complex128)
参数说明
U作用于目标寄存器的 Circuit
d相位寄存器量子比特数,网格分辨率为
prepare_target可选的目标态制备线路;应与 U 的量子比特数一致
return_circuit为 True 时仅返回 QPE 线路,不执行
backend、device、dtype执行阶段使用的后端、设备和复数精度

return_circuit=False 返回 (circuit, phase, probability);其中 phase 是概率最高的相位估计,probability 是对应概率。增大 d 会增加受控酉操作数量和模拟成本。

LCU

from unitarylab import Circuit from unitarylab.library import LCU x_term = Circuit(1) x_term.x(0) z_term = Circuit(1) z_term.z(0) lcu = LCU([(x_term, 0.6), (z_term, 0.8)])

LCU(decompositions) 接受 (Circuit, coefficient) 序列并返回包含辅助寄存器的 Circuit。所有非零系数项必须具有相同线路宽度;系数必须有限、非负,且总和大于零。空分解、负系数或宽度不一致会触发异常。

如需得到 LCU 线路所代表的矩阵,可调用:

operator = recover_lcu_operator( lcu, [(x_term, 0.6), (z_term, 0.8)], backend="torch", device="cpu", )

矩阵恢复需要执行完整线路,量子比特数增大时内存开销呈指数增长。

相关页面

最后更新于