mindquantum.algorithm.mapping.SABRE =================================== .. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.5.0/resource/_static/logo_source.svg :target: https://gitee.com/mindspore/mindquantum/blob/r0.10/docs/api_python/algorithm/mapping/mindquantum.algorithm.mapping.SABRE.rst :alt: 查看源文件 .. py:class:: mindquantum.algorithm.mapping.SABRE(circuit: Circuit, topology: QubitsTopology) SABRE(基于SWAP的双向启发式搜索)算法用于量子比特映射优化。 由于实际量子硬件中的物理约束,并非所有量子比特都能直接交互。SABRE 算法通过插入 SWAP 门和重新映射量子比特, 使任意量子线路能够在特定的量子硬件拓扑结构上运行。该算法采用双向启发式搜索方法,通过考虑当前和未来的门操作 来最小化代价函数,从而找到最优的映射方案。 参考文献: Gushu Li, Yufei Ding, Yuan Xie: "Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices", ASPLOS 2019. https://arxiv.org/abs/1809.02573 参数: - **circuit** (:class:`~.core.circuit.Circuit`) - 需要映射的量子线路。当前仅支持由单量子比特门和双量子比特门(包括受控门)组成的线路。 - **topology** (:class:`~.device.QubitsTopology`) - 硬件量子比特拓扑结构。当前仅支持连通图。 .. py:method:: solve(iter_num: int = 5, w: float = 0.5, delta1: float = 0.3, delta2: float = 0.2) 使用 SABRE 算法求解量子比特映射问题。 该方法采用双向启发式搜索来寻找最优的量子比特映射方案。 主要步骤包括: 1. 生成随机初始映射 2. 执行前向-后向-前向遍历以优化初始映射 3. 使用优化后的映射执行最终前向遍历,生成带有 SWAP 门的物理线路 参数: - **iter_num** (int,可选) - 前向-后向-前向遍历的迭代次数。每次迭代都从不同的初始映射开始。默认值:5。 - **w** (float,可选) - 代价函数 H = H_current + w * H_future 中的权重参数。 较大的 w (>0.5) 偏向未来操作,可能减少电路深度; 较小的 w (<0.5) 偏向当前操作,可能减少总门数。 默认值:0.5。 - **delta1** (float,可选) - 单量子比特门的衰减参数。影响算法在单量子比特操作后如何更新衰减值。默认值:0.3。 - **delta2** (float,可选) - 双量子比特门(CNOT,SWAP)的衰减参数。控制算法如何在空间和时间上分布 SWAP 操作。 由于一个 SWAP 等于三个 CNOT,SWAP 操作会给衰减值增加 3*delta2。默认值:0.2。 返回: - mapped_circuit (:class:`~.core.circuit.Circuit`):添加 SWAP 门后与硬件拓扑兼容的量子线路 - initial_mapping (List[int]):执行开始时从逻辑量子比特到物理量子比特的映射 - final_mapping (List[int]):执行结束时从逻辑量子比特到物理量子比特的映射