mindquantum.algorithm.mapping.MQSABRE

查看源文件
class mindquantum.algorithm.mapping.MQSABRE(circuit: Circuit, topology: QubitsTopology, cnoterrorandlength: List[Tuple[Tuple[int, int], List[float]]])[源代码]

用于比特映射的 MQSABRE 算法。

该比特映射算法会考虑量子芯片上的 cnot 门的错误率和执行时间。

参数:
  • circuit (Circuit) - 需要做比特映射的量子线路。当前仅支持单比特或者两比特量子门,且控制为包含在其中。

  • topology (QubitsTopology) - 量子硬件的比特拓扑结构。当前仅支持联通图。

  • cnoterrorandlength (List[Tuple[Tuple[int, int], List[float]]]) - CNOT 门的错误率和执行时长。在这里,前两个整数表示拓扑结构中的比特序号。后面由浮点数构成的数组包含两个元素,第一个元素为 CNOT 门的执行错误率,第二个元素为 CNOT 门的执行时长。

样例:

>>> from mindquantum.algorithm.mapping import MQSABRE
>>> cnot=[((5, 6), [8.136e-4, 248.88]), ((6, 10), [9.136e-4, 248.88]), ((8, 9), [9.136e-4, 248.88])]
>>> topology = GridQubits(6,6)
>>> mqsaber = MQSABRE(circuit, topology, cnot)
>>> new_circ, init_mapping, final_mapping = masaber.solve(1, 0.3, 0.2, 0.1)
solve(w: float, alpha1: float, alpha2: float, alpha3: float)[源代码]

利用 SABRE 算法来求解比特映射问题。

参数:
  • w (float) - w 参数。更多信息,请参考论文。

  • alpha1 (float) - alpha1 参数。更多信息,请参考论文。

  • alpha2 (float) - alpha2 参数。更多信息,请参考论文。

  • alpha3 (float) - alpha3 参数。更多信息,请参考论文。

返回:

Tuple[Circuit, List[int], List[int]],一个可以在硬件上执行的量子线路,初始的映射顺序,最后的映射顺序。