核心类型

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)[源代码]

当寄存器等于某个值时执行的门序列。

参数: