paddle_quantum.qpp.utils

QPP 线路变换和其他相关工具。更多细节参考论文 https://arxiv.org/abs/2209.14278 中的 Theorem 6。

qpp_cir(list_theta, list_phi, U) Circuit

根据 list_thetalist_phi 创建量子相位处理器

参数:
  • list_theta (Union[np.ndarray, paddle.Tensor]) – \(R_Y\) 门角度输入。

  • list_phi (Union[np.ndarray, paddle.Tensor]) – \(R_Z\) 门角度输入。

  • U (Union[np.ndarray, paddle.Tensor, float]) – 酉矩阵或标量输入。

返回:

三角 QSP 的多比特一般化线路。

返回类型:

Circuit

simulation_cir(fn, U, approx=True, deg=50, length=np.pi, step_size=0.00001 * np.pi, tol=1e-30)

返回一个模拟 fn 的 QPP 线路,见论文 https://arxiv.org/abs/2209.14278 中的 Theorem 6。

参数:
  • fn (Callable[[np.ndarray], np.ndarray]) – 要模拟的函数。

  • U (Union[np.ndarray, paddle.Tensor, float]) – 酉矩阵。

  • approx (: Optional[bool]) – 是否估算线路角度。默认为 True

  • deg (: Optional[int]) – 模拟的级数。默认为 50

  • length (Optional[float]) – 模拟宽度的一半。默认为 \(\pi\)

  • step_size (Optional[float]) – 采样点的频率。默认为 \(0.00001 \pi\)

  • tol (Optional[float]) – 误差容忍度。默认为 \(10^{-30}\),即机械误差。

返回:

模拟 fn 的 QPP 线路。

返回类型:

Circuit

qps(U, initial_state)

量子相位搜索算法,见论文 https://arxiv.org/abs/2209.14278 中的算法 1 和 2

参数:
  • U (Union[np.ndarray, paddle.Tensor]) – 目标酉矩阵。

  • initial_state (Union[np.ndarray, paddle.Tensor, State]) – 输入量子态。

返回:

包含如下元素的 tuple:

  • 一个 U 的本征相位;

  • 其相位对应的,存在和 initial_state 内积不为零的本征态。

返回类型:

Tuple[float, State]

qubitize(block_enc, num_block_qubits)

使用一个额外辅助比特来比特化块编码,来保证子空间不变。更多细节见论文 http://arxiv.org/abs/1610.06546

参数:
  • block_enc (Union[np.ndarray, paddle.Tensor]) – 目标块编码。

  • num_block_qubits (int) – 块编码自身所使用的辅助比特数。

返回:

比特化的 block_enc

返回类型:

paddle.Tensor

purification_block_enc(num_qubits, num_block_qubits):

随机生成一个 \(n\)-比特密度矩阵的 \((n + m)\)-比特的比特化块编码。

参数:
  • num_qubits (int) – 量子态比特数 \(n\)

  • num_block_qubits (int) – 块编码的辅助比特数 \(m > n\)

返回:

一个 \(2^{n + m} \times 2^{n + m}\) 的左上角为密度矩阵的酉矩阵

返回类型:

paddle.Tensor