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]]