paddle_quantum.qpp.utils
QPP 线路变换和其他相关工具。更多细节参考论文 https://arxiv.org/abs/2209.14278 中的 Theorem 6。
- qpp_cir(list_theta, list_phi, U) Circuit
根据
list_theta
和list_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 的多比特一般化线路。
- 返回类型:
- 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 线路。- 返回类型:
- qps(U, initial_state)
量子相位搜索算法,见论文 https://arxiv.org/abs/2209.14278 中的算法 1 和 2
- 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