paddle_quantum.qsvt.qsp

量子信号处理相关类与函数,具体参考论文 https://arxiv.org/abs/1806.01838

signal_unitary(signal_x)

实现论文中的信号矩阵 W(x)

参数:

signal_x (float) – 输入信号,区间为[-1, 1]

返回:

matrix W(x=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+(1x2)|Q|2=1

返回类型:

bool

angle_phi_verification(phi, poly_p, poly_p_hat, poly_q_hat, trials, error)

验证角度 ϕ 是否满足论文中的等式 6

参数:
  • phi (float) – 旋转角 ϕ

  • poly_p (Polynomial) – 多项式 P(x)

  • poly_q (Polynomial) – 多项式 Q(x)

  • poly_p_hat – 多项式 P~(x)

  • poly_q_hat – 多项式 Q~(x)

  • trials (int) – 验证次数,默认为 10

  • error (float) – 误差阈值,默认为 1e-2.

返回:

角度 ϕ 是否满足论文中的等式 6.

返回类型:

bool

processing_unitary(list_matrices, signal_x)

构造量子信号处理矩阵 WΦ(x),详见论文中的等式 1

参数:
  • list_matrices (List[ndarray]) – 一个包含信号处理矩阵的数组

  • signal_x (float) – 输入信号 x,范围为 [-1, 1]

返回:

量子信号处理矩阵 WΦ(x)

返回类型:

ndarray

Phi_verification(list_phi, poly_p, trials, error)

验证完整的角度 Φ

参数:
  • list_phi (ndarray) – 包含所有角度 ϕ 的数组

  • poly_p (Polynomial) – 多项式 P(x)

  • trials (trials) – 验证次数,默认为 100

  • error (float) – 误差阈值,默认为 1e-6

返回:

角度 Φ 是否使得 WΦ(x)P(x) 的块编码

返回类型:

bool

update_polynomial(poly_p, poly_q, phi)

计算 P,Q 经过一层量子信号处理后的多项式 P~,Q~

参数:
  • poly_p (Polynomial) – 多项式 P(x)

  • poly_q (Polynomial) – 多项式 Q(x)

  • phi (float) – 量子信号处理的旋转角 ϕ

返回:

更新之后的多项式 P~(x),Q~(x)

返回类型:

Tuple[Polynomial, Polynomial]

alg_find_Phi(poly_p, poly_q, length)

计算角度 Φ 的算法

参数:
  • poly_p (Polynomial) – 多项式 P(x)

  • poly_q (Polynomial) – 多项式 Q(x)

  • length (int) – 返回角度的个数,即量子信号处理的层数

返回:

包含角度的数组 Φ

返回类型:

ndarray

poly_A_hat_generation(poly_p)

计算多项式 A^(y)=1P(x)P(x),其中 y=x2

参数:

poly_p (Polynomial) – 多项式 P(x)

返回:

多项式 A^(y)

返回类型:

Polynomial

poly_A_hat_decomposition(A_hat, error)

通过求根的方式分解多项式 A^(y)

参数:
  • poly_p (Polynomial) – 多项式 P(x)

  • error (float) – 误差阈值,默认为 0.001

返回:

多项式 A^(y) 的最高项系数以及根

返回类型:

Tuple[float, List[float]]

poly_Q_generation(leading_coef, roots, parity)

根据多项式 A^(y) 的分解,构造多项式 Q(x)

参数:
  • leading_coef (float) – 多项式 A^(y) 的最高项系数

  • roots (List[float]) – 多项式 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)

量子信号处理函数,找到一组角度 Φ 使得量子信号处理算子 WΦ(x) 是一个多项式 P(x) 的块编码

参数:
  • poly_p (Polynomial) – 多项式 P(x)

  • length (int) – 角度的个数,即量子信号处理的层数,默认 None 为多项式 P(x) 的度

返回:

角度 Φ

返回类型:

ndarray

reflection_based_quantum_signal_processing(P)

基于反射的量子信号处理函数,找到一组角度 Φ 使得量子信号处理算子 WΦ(x) 是一个多项式 P(x) 的块编码,详见论文引理 8

参数:

poly_p (Polynomial) – 多项式 P(x)

返回:

角度 Φ

返回类型:

ndarray

class ScalarQSP

基类: object

基于量子信号处理的类

参数:
  • poly_p (Polynomial) – 多项式 P(x)

  • length (int) – 角度的个数,即量子信号处理的层数,默认 None 为多项式 P(x) 的度

block_encoding(signal_x)

构造一个量子信号处理的电路,即实现多项式 P(x) 的块编码电路

参数:

signal_x (float) – 输入的信号 x

返回:

量子信号处理的电路

返回类型:

Circuit

block_encoding_matrix(signal_x)

构造一个量子信号处理的矩阵,即实现多项式 P(x) 的块编码矩阵

参数:

signal_x (float) – 输入的信号 x

返回:

量子信号处理的矩阵

返回类型:

paddle.Tensor