janus.compiler.compiler 源代码
"""
Janus 编译器主模块
"""
from typing import List, Optional
from janus.circuit import Circuit
from janus.circuit.dag import circuit_to_dag, dag_to_circuit
from .passes import BasePass, RemoveIdentityPass, CancelInversesPass, MergeRotationsPass
[文档]
def compile_circuit(
circuit: Circuit,
passes: Optional[List[BasePass]] = None,
optimization_level: int = 1,
verbose: bool = False
) -> Circuit:
"""
编译/优化量子电路
Args:
circuit: 输入电路
passes: 自定义 pass 列表,如果为 None 则使用默认 pass
optimization_level: 优化级别 (0=无优化, 1=基础优化, 2=更多优化)
verbose: 是否打印优化过程
Returns:
优化后的电路
"""
# 默认 pass
if passes is None:
if optimization_level == 0:
passes = []
elif optimization_level == 1:
passes = [
RemoveIdentityPass(),
CancelInversesPass(),
]
else: # level >= 2
passes = [
RemoveIdentityPass(),
CancelInversesPass(),
MergeRotationsPass(),
]
if not passes:
return circuit.copy()
# 转换为 DAG
dag = circuit_to_dag(circuit)
if verbose:
print(f"Initial: {dag}")
# 执行 passes
for p in passes:
dag = p.run(dag)
if verbose:
print(f"After {p.name}: {dag}")
# 转换回电路
result = dag_to_circuit(dag)
if verbose:
print(f"Final: {result.n_gates} gates, depth {result.depth}")
return result