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",
)矩阵恢复需要执行完整线路,量子比特数增大时内存开销呈指数增长。
相关页面
最后更新于