门转换¶
门转换 (GateTransform) 是 QuICT 自定义的一种进行门类型转换的方法,旨在将输入的电路转化到某个特定的指令集上。
算法原理¶
在开始门转换之前, QuICT 会依据复杂门的 build_gate() 方法将复杂门优先拆解为基本的 2-qubit 门和 1-qubit 门。然后首先将 2-qubit 门转换为用指令集支持的 2-qubit 门表达, QuICT 中内置了 CX, CY, CZ, CH, CRz, FSim, Rxx, Ryy, Rzz 这9种常见 2-qubit 门相互表达的转换函数。对于 1-qubit 门, QuICT 采用局部合成再分解的策略,先将局部 1-qubit 门合成为 \(SU(2)\) 矩阵再统一进行分解, QuICT 中内置了 zyz, xyx, zxz, u3, hrz, ibmq 这6种常见分解方法。
基本用法¶
在 GateTransform 中选择想要转化到的目标指令集即可,内置指令集和自定义指令集规则如下。
指令集¶
指令集 (InstructionSet) 代表目标物理设备可以直接执行的一类门。由普适量子门 (universal quantum gates) 的知识可知,这样的指令集通常应当包含至少一个 2-qubit 门和若干个 1-qubit 门。
QuICT 中内置的指令集如下:
-
GoogleSet:FSim, SX, SY, SW, Rx, Ry -
IBMQSet:CX, Rz, SX, X -
IonQSet:Rxx, Rx, Ry, Rz -
NamSet:CX, H, Rz -
OriginSet:CX, U3 -
USTCSet:CX, Rx, Ry, Rz, H, X
自定义指令集¶
用户亦可依据自己的需求自定义指令集:
from QuICT.core.gate import GateType
from QuICT.core.virtual_machine import InstructionSet
CustomSet = InstructionSet(
GateType.cx,
[GateType.rz, GateType.ry]
)
以上代码即定义了一个包含 CX、Rz、Ry 的指令集,为使转换过程保持一致性,可以注意到这里只接受一个 2-qubit 门。 QuICT 会依据输入的 1-qubit 门类型自动选取内置的 1-qubit 门分解方法,如果需要指定自定义的分解函数,则可以使用如下代码:
其中 custom_rule 将输入的 1-qubit 门 (BasicGate) 转换为用指定 1-qubit 门表达的形式 (CompositeGate) 。
代码实例¶
from QuICT.core.virtual_machine.special_set import USTCSet
from QuICT.qcda.synthesis.gate_transform import GateTransform
gt = GateTransform(USTCSet)
circ_syn = gt.execute(circ)
如此即可将输入的 circ 转化为用给定指令集表达的等价电路 circ_syn ,以下给出了一组随机原电路及其转换后的结果。
原随机电路:
转换后电路:

