mindquantum.algorithm.library
MindQuantum常用算法模块
- mindquantum.algorithm.library.amplitude_encoder(x, n_qubits)[源代码]
用于振幅编码的量子线路。
说明
经典数据的长度应该是2的幂,否则将用0填充。 向量应该归一化。
- 参数:
x (list[float] or numpy.array(list[float])) - 需要编码的数据向量,应该归一化。
n_qubits (int) - 编码线路的量子比特数。
- 返回:
Circuit,能够完成振幅编码的量子线路。 ParameterResolver,用于完成振幅编码量子线路的参数。
样例:
>>> from mindquantum.algorithm.library import amplitude_encoder >>> from mindquantum.simulator import Simulator >>> sim = Simulator('mqvector', 8) >>> encoder, parameterResolver = amplitude_encoder([0.5, -0.5, 0.5, 0.5], 8) >>> sim.apply_circuit(encoder, parameterResolver) >>> print(sim.get_qs(True)) 1/2¦00000000⟩ -1/2¦00000001⟩ 1/2¦00000010⟩ 1/2¦00000011⟩ >>> sim.reset() >>> encoder, parameterResolver = amplitude_encoder([0, 0, 0.5, 0.5, -0.5, 0.5], 8) >>> sim.apply_circuit(encoder, parameterResolver) >>> print(sim.get_qs(True)) 1/2¦00000010⟩ 1/2¦00000011⟩ -1/2¦00000100⟩ 1/2¦00000101⟩
- mindquantum.algorithm.library.bitphaseflip_operator(phase_inversion_index, n_qubits)[源代码]
此算子生成一个可以翻转任意计算基的符号的电路。
- 参数:
phase_inversion_index (list[int]) - 需要翻转相位的计算基的索引。
n_qubits (int) - 量子比特总数。
- 返回:
Circuit,位相位翻转后的线路。
样例:
>>> from mindquantum.core.circuit import Circuit, UN >>> from mindquantum.core.gates import H, Z >>> from mindquantum.algorithm.library import bitphaseflip_operator >>> circuit = Circuit() >>> circuit += UN(H, 3) >>> circuit += bitphaseflip_operator([1, 3], 3) >>> print(circuit.get_qs(ket=True)) √2/4¦000⟩ -√2/4¦001⟩ √2/4¦010⟩ -√2/4¦011⟩ √2/4¦100⟩ √2/4¦101⟩ √2/4¦110⟩ √2/4¦111⟩
- mindquantum.algorithm.library.general_ghz_state(qubits)[源代码]
基于零态制备通用GHZ态的线路。 GHZ态通常定义为三个全零态和三个全一态的均匀叠加:
\[\left\text{GHZ}\right> = (\left|000\right> + \left|111\right>)/\sqrt{2}\]在本接口中,我们可以创建出任意量子比特规模下任意部分量子比特之间的GHZ态。
- 参数:
qubits (list[int]) - 需要应用通用GHZ态的量子比特。
- 返回:
Circuit,可以制备GHZ态的线路。
样例:
>>> from mindquantum.algorithm.library import general_ghz_state >>> print(general_ghz_state(range(3)).get_qs(ket=True)) √2/2¦000⟩ √2/2¦111⟩ >>> print(general_ghz_state([1, 2]).get_qs(ket=True)) √2/2¦000⟩ √2/2¦110⟩
- mindquantum.algorithm.library.general_w_state(qubits)[源代码]
通用W态。 W态通常定义成只有单个比特是 \(\left|1\right>\) 态的基矢的均匀叠加。举个例子,对于三量子比特系统,W态定义为:
\[\left|\rm W\right> = (\left|001\right> + \left|010\right> + \left|100\right>)/\sqrt(3)\]在本接口中,我们可以定义任意总量子比特系统中任意部分希尔伯特空间中的W态。
- 参数:
qubits (list[int]) - 需要应用通用W态的量子比特。
- 返回:
Circuit,可以制备W态的线路。
样例:
>>> from mindquantum.algorithm.library import general_w_state >>> print(general_w_state(range(3)).get_qs(ket=True)) 0.5773502691896257¦001⟩ 0.5773502691896258¦010⟩ 0.5773502691896257¦100⟩
- mindquantum.algorithm.library.qft(qubits)[源代码]
量子傅里叶变换(QFT)。量子傅里叶变换与经典傅里叶变换的功能相似。
说明
更多信息请参考Nielsen, M., & Chuang, I. (2010)。
- 参数:
qubits (list[int]) - 需要应用量子傅里叶变换的量子比特。
- 返回:
Circuit,可以进行傅里叶变换的线路。
样例:
>>> from mindquantum.algorithm.library import qft >>> print(qft([0, 1]).get_qs(ket=True)) 1/2¦00⟩ 1/2¦01⟩ 1/2¦10⟩ 1/2¦11⟩