paddle_quantum.qsvt.qsp
量子信号处理相关类与函数,具体参考论文 https://arxiv.org/abs/1806.01838
- signal_unitary(signal_x)
实现论文中的信号矩阵 \(W(x)\)
- 参数:
signal_x (float) – 输入信号,区间为[-1, 1]
- 返回:
matrix \(W(x=\text{signal_x})\)
- 返回类型:
ndarray
- poly_parity_verification(poly_p, k, error)
对输入多项式进行奇偶校验,判断 \(P\) 奇偶性是否为 (k mod 2),详见论文定理 3 中的条件 2.
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
k (int) – 项数 k
error (float) – 误差阈值,默认为 1e-6.
- 返回:
poly_p 奇偶性是否为 (k mod 2)
- 返回类型:
bool
- normalization_verification(poly_p, poly_q, trials, error)
归一化验证,判断多项式 \(P(x)\) 和 \(Q(x)\) 是否满足归一化条件,详见论文定理 3 中的条件 3
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
poly_q (Polynomial) – 多项式 \(Q(x)\)
trials (int) – 验证次数,默认为 10
error (float) – 误差阈值,默认为 1e-2.
- 返回:
多项式是否满足归一化条件 \(|P|^2 + (1 - x^2)|Q|^2 = 1\)
- 返回类型:
bool
- angle_phi_verification(phi, poly_p, poly_p_hat, poly_q_hat, trials, error)
验证角度 \(\phi\) 是否满足论文中的等式 6
- 参数:
phi (float) – 旋转角 \(\phi\)
poly_p (Polynomial) – 多项式 \(P(x)\)
poly_q (Polynomial) – 多项式 \(Q(x)\)
poly_p_hat – 多项式 \(\tilde{P}(x)\)
poly_q_hat – 多项式 \(\tilde{Q}(x)\)
trials (int) – 验证次数,默认为 10
error (float) – 误差阈值,默认为 1e-2.
- 返回:
角度 \(\phi\) 是否满足论文中的等式 6.
- 返回类型:
bool
- processing_unitary(list_matrices, signal_x)
构造量子信号处理矩阵 \(W_\Phi(x)\),详见论文中的等式 1
- 参数:
list_matrices (List[ndarray]) – 一个包含信号处理矩阵的数组
signal_x (float) – 输入信号 x,范围为 [-1, 1]
- 返回:
量子信号处理矩阵 \(W_\Phi(x)\)
- 返回类型:
ndarray
- Phi_verification(list_phi, poly_p, trials, error)
验证完整的角度 \(\Phi\)
- 参数:
list_phi (ndarray) – 包含所有角度 \(\phi\) 的数组
poly_p (Polynomial) – 多项式 \(P(x)\)
trials (trials) – 验证次数,默认为 100
error (float) – 误差阈值,默认为 1e-6
- 返回:
角度 \(\Phi\) 是否使得 \(W_\Phi(x)\) 为 \(P(x)\) 的块编码
- 返回类型:
bool
- update_polynomial(poly_p, poly_q, phi)
计算 \(P, Q\) 经过一层量子信号处理后的多项式 \(\tilde{P}, \tilde{Q}\)
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
poly_q (Polynomial) – 多项式 \(Q(x)\)
phi (float) – 量子信号处理的旋转角 \(\phi\)
- 返回:
更新之后的多项式 \(\tilde{P}(x), \tilde{Q}(x)\)
- 返回类型:
Tuple[Polynomial, Polynomial]
- alg_find_Phi(poly_p, poly_q, length)
计算角度 \(\Phi\) 的算法
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
poly_q (Polynomial) – 多项式 \(Q(x)\)
length (int) – 返回角度的个数,即量子信号处理的层数
- 返回:
包含角度的数组 \(\Phi\)
- 返回类型:
ndarray
- poly_A_hat_generation(poly_p)
计算多项式 \(\hat{A}(y) = 1 - P(x)P^*(x)\),其中 \(y = x^2\)
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
- 返回:
多项式 \(\hat{A}(y)\)
- 返回类型:
Polynomial
- poly_A_hat_decomposition(A_hat, error)
通过求根的方式分解多项式 \(\hat{A}(y)\)
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
error (float) – 误差阈值,默认为 0.001
- 返回:
多项式 \(\hat{A}(y)\) 的最高项系数以及根
- 返回类型:
Tuple[float, List[float]]
- poly_Q_generation(leading_coef, roots, parity)
根据多项式 \(\hat{A}(y)\) 的分解,构造多项式 \(Q(x)\)
- 参数:
leading_coef (float) – 多项式 \(\hat{A}(y)\) 的最高项系数
roots (List[float]) – 多项式 \(\hat{A}(y)\) 的根
parity (int) – 多项式 \(Q(x)\) 的奇偶性
- 返回:
多项式 \(Q(x)\)
- 返回类型:
Polynomial
- alg_find_Q(poly_p, k)
根据多项式 \(P(x)\) 构造多项式 \(Q(x)\) 的算法
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
k (int) – 多项式 \(Q(x)\) 的项数
- 返回:
多项式 \(Q(x)\)
- 返回类型:
Polynomial
- quantum_signal_processing(poly_p, length)
量子信号处理函数,找到一组角度 \(\Phi\) 使得量子信号处理算子 \(W_\Phi(x)\) 是一个多项式 \(P(x)\) 的块编码
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
length (int) – 角度的个数,即量子信号处理的层数,默认 None 为多项式 \(P(x)\) 的度
- 返回:
角度 \(\Phi\)
- 返回类型:
ndarray
- reflection_based_quantum_signal_processing(P)
基于反射的量子信号处理函数,找到一组角度 \(\Phi\) 使得量子信号处理算子 \(W_\Phi(x)\) 是一个多项式 \(P(x)\) 的块编码,详见论文引理 8
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
- 返回:
角度 \(\Phi\)
- 返回类型:
ndarray
- class ScalarQSP
基类:
object
基于量子信号处理的类
- 参数:
poly_p (Polynomial) – 多项式 \(P(x)\)
length (int) – 角度的个数,即量子信号处理的层数,默认 None 为多项式 \(P(x)\) 的度
- block_encoding(signal_x)
构造一个量子信号处理的电路,即实现多项式 \(P(x)\) 的块编码电路
- 参数:
signal_x (float) – 输入的信号 x
- 返回:
量子信号处理的电路
- 返回类型:
- block_encoding_matrix(signal_x)
构造一个量子信号处理的矩阵,即实现多项式 \(P(x)\) 的块编码矩阵
- 参数:
signal_x (float) – 输入的信号 x
- 返回:
量子信号处理的矩阵
- 返回类型:
paddle.Tensor