mindquantum.algorithm.library.qjpeg

查看源文件
mindquantum.algorithm.library.qjpeg(n_qubits: int, m_qubits: int)[源代码]

基于QJEPG算法实现对量子图像的压缩。

说明

参数 n_qubits 和 m_qubits 都需要为偶数,且 n_qubits 不小于 m_qubits。更多信息请参考 arXiv:2306.09323v2。

参数:
  • n_qubits (int) - 用于编码待压缩量子图像的量子比特数。

  • m_qubits (int) - 用于编码压缩后量子图像的量子比特数。

返回:
  • Circuit, QJPEG 算法的量子线路

  • List[int], 保留比特的索引列表,这些比特携带压缩后的量子图像信息

  • List[int], 丢弃比特的索引列表,这些比特包含原量子图像中的冗余信息

样例:

>>> from mindquantum import Simulator, normalize
>>> import numpy as np
>>> n_qubits = 4
>>> m_qubits = 2
>>> circ, remainder_qubits, discard_qubits = qjpeg(n_qubits, m_qubits)
>>> print(remainder_qubits, discard_qubits)
[0, 2] [1, 3]
>>> data = np.array([[1,0,0,0], [1,1,0,0], [1,1,1,0], [1,1,1,1]])
>>> state = normalize(data.reshape(-1))
>>> sim = Simulator('mqmatrix', n_qubits)
>>> sim.set_qs(state)
>>> sim.apply_circuit(circ)
>>> rho = sim.get_partial_trace(discard_qubits)
>>> sub_probs = rho.diagonal().real
>>> new_data = sub_probs.reshape((2**(m_qubits//2), -1))
>>> print(new_data)
[[0.3, 0.],
 [0.4, 0.3]]