janus.circuit#
量子电路模块,提供电路构建、操作和表示。
核心类#
Circuit#
- class janus.circuit.Circuit(n_qubits, n_clbits=0, name=None)[源代码]#
基类:
object量子电路类
表示完整的量子电路,支持两种模式: 1. 分层模式:电路由多个 Layer 组成,每层包含可并行执行的门 2. 顺序模式:按添加顺序记录所有指令
- n_qubits#
量子比特数
- name#
电路名称
- classmethod from_layers(layers, n_qubits=None, n_clbits=0, name=None)[源代码]#
从层列表创建电路
- 参数:
- 返回:
新创建的电路
- 返回类型:
示例
- circuit = Circuit.from_layers([
[{'name': 'h', 'qubits': [0], 'params': []}], [{'name': 'cx', 'qubits': [0, 1], 'params': []}]
], n_qubits=2)
- property instructions: List[Instruction]#
获取所有指令
- property data: List[Instruction]#
- get_available_space(gate_index)[源代码]#
获取指定门可以移动的层范围
示例
circuit = Circuit(2) circuit.h(0) circuit.cx(0, 1) circuit.x(0)
# 获取第一个门可以移动的范围 available = circuit.get_available_space(0)
- move_gate(gate_index, new_layer)[源代码]#
将门移动到新层
示例
circuit = Circuit(2) circuit.h(0) circuit.cx(0, 1)
# 移动第一个门到第1层 new_circuit = circuit.move_gate(0, 1)
- gate(gate, target_qubits)[源代码]#
添加门并返回 GateBuilder 以支持链式调用
- 参数:
- 返回:
门构建器,可以调用 .control() 添加控制
- 返回类型:
GateBuilder
示例
from janus.circuit.library import U3Gate, RXGate
qc = Circuit(4)
# 创建受控 U3 门 qc.gate(U3Gate(np.pi/4, np.pi/4, np.pi/4), 3).control([0, 1, 2])
# 创建受控 RX 门 qc.gate(RXGate(np.pi/2), 2).control(0)
# 不调用 control 则作为普通门添加 qc.gate(U3Gate(np.pi/4, 0, 0), 0) # 普通 U3 门
- bind_parameters(parameters, inplace=False)[源代码]#
绑定参数值(assign_parameters 的别名)
- 参数:
- 返回:
绑定参数后的电路
- 返回类型:
示例
theta = Parameter('theta') qc = Circuit(2) qc.rx(theta, 0) qc.ry(theta, 1)
# 绑定参数 bound_qc = qc.bind_parameters({theta: np.pi/2})
SeperatableCircuit#
Gate#
- class janus.circuit.Gate(name, num_qubits, params=None, label=None)[源代码]#
基类:
Operation量子门基类
量子门是酉操作,可以用酉矩阵表示
- name#
门的名称
- qubits#
门作用的量子比特索引列表
- params#
门的参数列表(如旋转角度)
- label#
可选的标签
- property definition#
门的定义(分解为基础门的电路)
- soft_compare(other)[源代码]#
软比较两个门是否相同(用于模板匹配)
比较门的名称和量子比特数,但不比较参数的精确值
- 参数:
other -- 另一个门或操作
- 返回:
如果门类型相同则返回 True
- 返回类型:
ControlledGate#
Instruction#
Layer#
- class janus.circuit.Layer(instructions=None, index=0)[源代码]#
基类:
object电路层类
表示量子电路中的一层,包含可以并行执行的量子门集合。 同一层中的门作用在不同的量子比特上,因此可以同时执行。
- 参数:
instructions (List[Instruction] | None)
index (int)
- index#
层在电路中的索引
- __init__(instructions=None, index=0)[源代码]#
初始化电路层
- 参数:
instructions (List[Instruction] | None) -- 该层包含的指令列表
index (int) -- 层的索引
- property instructions: List[Instruction]#
- append(instruction)[源代码]#
添加一条指令到层中
- 参数:
instruction (Instruction)
- remove(instruction)[源代码]#
从层中移除一条指令
- 参数:
instruction (Instruction)
量子比特和经典比特#
Qubit#
- class janus.circuit.Qubit(index, register=None)[源代码]#
量子比特类
- 参数:
index (int)
register (QuantumRegister | None)
- index#
量子比特在电路中的索引
- register#
所属的量子寄存器(可选)
- __init__(index, register=None)[源代码]#
- 参数:
index (int)
register (QuantumRegister | None)
- property register: QuantumRegister | None#
QuantumRegister#
Clbit#
- class janus.circuit.Clbit(index, register=None)[源代码]#
经典比特类
- 参数:
index (int)
register (ClassicalRegister | None)
- index#
经典比特在电路中的索引
- register#
所属的经典寄存器(可选)
- __init__(index, register=None)[源代码]#
- 参数:
index (int)
register (ClassicalRegister | None)
- property register: ClassicalRegister | None#
ClassicalRegister#
参数化#
Parameter#
ParameterExpression#
DAG#
DAGCircuit#
- class janus.circuit.DAGCircuit(n_qubits=0, n_clbits=0, name=None)[源代码]#
DAG 电路表示
将量子电路表示为有向无环图,其中: - 节点表示量子操作 - 边表示量子比特的数据流
- n_qubits#
量子比特数
- n_clbits#
经典比特数
- apply_operation_back(op, qubits, clbits=None)[源代码]#
添加一个操作到 DAG (在末尾)
兼容性方法: apply_operation_back 与 apply_operation 相同
- num_tensor_factors()[源代码]#
计算 DAG 电路中的张量因子数量
张量因子是指独立的量子子系统,即没有门连接的量子比特组。 使用并查集(Union-Find)算法来找出连通的量子比特组。
- 返回:
张量因子的数量
- 返回类型:
DAGDependency#
转换函数#
- janus.circuit.circuit_to_dag(circuit)[源代码]#
将 Circuit 转换为 DAGCircuit
- 参数:
circuit -- Janus Circuit 或 QuantumCircuit
- 返回:
DAGCircuit
- 返回类型:
- janus.circuit.dag_to_circuit(dag)[源代码]#
将 DAGCircuit 转换为 Circuit
- 参数:
dag (DAGCircuit) -- DAGCircuit
- 返回:
Janus Circuit
- 返回类型: