核心类型
qaiji.core 定义电路级中间表示的量子与经典值对象。节点保持输入顺序;
Gate 与经典节点不可变,Circuit 则负责验证寄存器声明、量子比特范围和操作追加顺序。
门模型
-
class qaiji.GateType(*values)[源代码]
电路级 IR 能够表示的门类型。
-
I = 'I'
-
X = 'X'
-
Y = 'Y'
-
Z = 'Z'
-
H = 'H'
-
S = 'S'
-
T = 'T'
-
RX = 'RX'
-
RY = 'RY'
-
RZ = 'RZ'
-
U3 = 'U3'
-
CNOT = 'CNOT'
-
CX = 'CX'
-
CZ = 'CZ'
-
SWAP = 'SWAP'
-
RX90 = 'RX90'
-
RX180 = 'RX180'
-
ISWAP = 'ISWAP'
-
SQISWAP = 'SQISWAP'
-
class qaiji.Gate(gate_type, qubits, params=())[源代码]
作用在一个或多个量子比特上的不可变门。
- 参数:
-
-
canonicalize()[源代码]
返回规范形式的门,且不改变结构相等性。
- 返回类型:
Gate
-
qaiji.core.circuit.SINGLE_QUBIT_GATES: frozenset[GateType]
恰好作用在一个量子比特上的门类型。
-
qaiji.core.circuit.TWO_QUBIT_GATES: frozenset[GateType]
恰好作用在两个不同量子比特上的门类型。
-
qaiji.core.circuit.PARAM_REQUIREMENTS: dict[GateType, tuple[int, int]]
每种门类型的参数个数上下界(闭区间)。
-
qaiji.core.circuit.CANONICAL_ALIASES: dict[GateType, GateType]
结构上不同、但共享同一规范形式的门写法。
电路容器
-
class qaiji.Circuit(num_qubits)[源代码]
定宽量子比特之上的有序操作序列。
- 参数:
num_qubits (int)
-
add_register(register)[源代码]
追加一个寄存器,同时保证声明名称唯一。
- 参数:
register (ClassicalRegister)
- 返回类型:
None
-
add_gate(gate)[源代码]
追加一个作用比特落在电路范围内的门。
- 参数:
gate (Gate)
- 返回类型:
None
-
add_measure(measurement)[源代码]
追加一次测量,要求比特在范围内且目标寄存器已声明。
- 参数:
measurement (Measure)
- 返回类型:
None
-
add_conditional(conditional)[源代码]
追加一个条件节点,其寄存器须已声明、体内门须在范围内。
- 参数:
conditional (Conditional)
- 返回类型:
None
-
h(qubit)[源代码]
追加一个 Hadamard 门。
- 参数:
qubit (int)
- 返回类型:
None
-
x(qubit)[源代码]
追加一个 Pauli-X 门。
- 参数:
qubit (int)
- 返回类型:
None
-
y(qubit)[源代码]
追加一个 Pauli-Y 门。
- 参数:
qubit (int)
- 返回类型:
None
-
z(qubit)[源代码]
追加一个 Pauli-Z 门。
- 参数:
qubit (int)
- 返回类型:
None
-
s(qubit)[源代码]
追加一个 S 门。
- 参数:
qubit (int)
- 返回类型:
None
-
t(qubit)[源代码]
追加一个 T 门。
- 参数:
qubit (int)
- 返回类型:
None
-
rx(qubit, angle=3.141592653589793)[源代码]
追加一个绕 X 轴的旋转。
- 参数:
-
- 返回类型:
None
-
ry(qubit, angle)[源代码]
追加一个绕 Y 轴的旋转。
- 参数:
-
- 返回类型:
None
-
rz(qubit, angle)[源代码]
追加一个绕 Z 轴的旋转。
- 参数:
-
- 返回类型:
None
-
rx90(qubit, phase=0.0)[源代码]
追加一个带相位参数的四分之一圈 X 门。
- 参数:
-
- 返回类型:
None
-
rx180(qubit, phase=0.0)[源代码]
追加一个带相位参数的半圈 X 门。
- 参数:
-
- 返回类型:
None
-
u3(qubit, theta, phi, lam)[源代码]
追加一个通用单比特门。
- 参数:
-
- 返回类型:
None
-
cnot(control, target)[源代码]
追加一个受控非门。
- 参数:
-
- 返回类型:
None
-
cx(control, target)[源代码]
追加一个受控 X 门。
- 参数:
-
- 返回类型:
None
-
cz(control, target)[源代码]
追加一个受控 Z 门。
- 参数:
-
- 返回类型:
None
-
copy()[源代码]
复制可变容器,同时安全地共享不可变节点。
- 返回类型:
Circuit
-
canonicalize()[源代码]
返回一个新电路,其中每个门都被约化为规范形式。
测量原样透传;每个 Conditional 都会用规范化后的体内门重建。qaiji.codec
不消费本方法 —— OpenQASM 往返始终是结构性的,绝不做隐式归一化。
- 返回:
一个新电路,其宽度、寄存器声明、节点数量与节点种类序列都与当前电路
逐位置一致。
- 返回类型:
Circuit
经典节点
-
class qaiji.ClassicalRegister(name, size)[源代码]
一个具名的定宽经典寄存器。
- 参数:
-
-
class qaiji.ClassicalBit(register, index)[源代码]
经典寄存器内按下标定位的一个比特。
- 参数:
-
-
class qaiji.Measure(qubit, target)[源代码]
一次从单个量子比特到单个经典比特的测量。
- 参数:
-
-
class qaiji.Conditional(register, value, body)[源代码]
当寄存器等于某个值时执行的门序列。
- 参数:
-