mindquantum.algorithm.library

MindQuantum常用算法模块

mindquantum.algorithm.library.amplitude_encoder(x, n_qubits)[源代码]

用于振幅编码的量子线路。

Note

经典数据的长度应该是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('projectq', 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)。量子傅里叶变换与经典傅里叶变换的功能相似。

Note

更多信息请参考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⟩