janus.compiler#

量子电路编译器模块。

编译函数#

janus.compiler.compile_circuit(circuit, passes=None, optimization_level=1, verbose=False)[源代码]#

编译/优化量子电路

参数:
  • circuit (Circuit) -- 输入电路

  • passes (List[BasePass] | None) -- 自定义 pass 列表,如果为 None 则使用默认 pass

  • optimization_level (int) -- 优化级别 (0=无优化, 1=基础优化, 2=更多优化)

  • verbose (bool) -- 是否打印优化过程

返回:

优化后的电路

返回类型:

Circuit

优化 Pass#

BasePass#

class janus.compiler.BasePass[源代码]#

基类:ABC

优化 Pass 基类

abstract property name: str#

Pass 名称

abstractmethod run(dag)[源代码]#

执行优化

参数:

dag (DAGCircuit) -- 输入 DAG

返回:

优化后的 DAG

返回类型:

DAGCircuit

RemoveIdentityPass#

class janus.compiler.RemoveIdentityPass[源代码]#

基类:BasePass

移除恒等门

移除对电路没有影响的门,如 I 门

property name: str#

Pass 名称

run(dag)[源代码]#

执行优化

参数:

dag (DAGCircuit) -- 输入 DAG

返回:

优化后的 DAG

返回类型:

DAGCircuit

MergeRotationsPass#

class janus.compiler.MergeRotationsPass[源代码]#

基类:BasePass

合并连续的旋转门

例如: RZ(a) - RZ(b) -> RZ(a+b)

ROTATION_GATES = {'cp', 'crx', 'cry', 'crz', 'cu1', 'mcp', 'mcphase', 'mcrx', 'mcry', 'mcrz', 'mcu1', 'p', 'rx', 'rxx', 'ry', 'ryy', 'rz', 'rzx', 'rzz', 'u1'}#
property name: str#

Pass 名称

run(dag)[源代码]#

执行优化

参数:

dag (DAGCircuit) -- 输入 DAG

返回:

优化后的 DAG

返回类型:

DAGCircuit

CancelInversesPass#

class janus.compiler.CancelInversesPass[源代码]#

基类:BasePass

消除相邻的逆门对

例如: X-X, H-H, CX-CX (相同控制和目标) 等

SELF_INVERSE = {'c3x', 'c4x', 'ccx', 'ccz', 'ch', 'cswap', 'cx', 'cy', 'cz', 'dcx', 'ecr', 'h', 'iswap', 'mcx', 'mcx_gray', 'mcx_recursive', 'mcx_vchain', 'rc3x', 'rccx', 'swap', 'x', 'y', 'z'}#
property name: str#

Pass 名称

run(dag)[源代码]#

执行优化

参数:

dag (DAGCircuit) -- 输入 DAG

返回:

优化后的 DAG

返回类型:

DAGCircuit

使用示例#

基本编译#

from janus.compiler import compile_circuit

optimized = compile_circuit(qc, optimization_level=2)

自定义 Pass#

from janus.compiler.passes import (
    RemoveIdentityPass,
    CancelInversesPass,
    MergeRotationsPass
)

optimized = compile_circuit(qc, passes=[
    RemoveIdentityPass(),
    CancelInversesPass(),
    MergeRotationsPass(),
])