Skip to main content
IBM Quantum Platform

SynthesizeRZRotations

class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)

GitHub

베이스: TransformationPass

RZ 게이트를 클리포드+T 분해로 대체한다.

이 패스는 부동소수점 각도를 사용하는 모든 단일 큐비트 RZ 회전 게이트를 이에 상응하는 클리포드+T 시퀀스로 대체합니다.

내부적으로, 이 패스는 각도를 pi/2: 로 나눈 나머지를 계산함으로써 일반적인 θ에 대한 RZ(θ)를 합성합니다. 따라서 RZ(θ) 회로는 RZ(θ mod pi/2 ) 회로에 적절한 클리포드 게이트를 추가함으로써 구성할 수 있습니다. 특히, 이 패스는 합성 결과를 캐시하여 서로 정해진 허용 오차 범위 내에 있는 각도에 대해 이를 재사용합니다.

예를 들어,

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SynthesizeRZRotations
from qiskit.quantum_info import Operator
from numpy import pi

# The following quantum circuit consists of 5 Clifford gates
# and three single-qubit RZ rotations gates

qc = QuantumCircuit(4)
qc.cx(0, 1)
qc.rz(9*pi/4, 0)
qc.cz(0, 1)
qc.rz(3*pi/8, 1)
qc.h(1)
qc.s(2)
qc.rz(13*pi/2, 2)
qc.cz(2, 0)
qc.rz(5*pi/3, 3)

qct = SynthesizeRZRotations()(qc)

# The transformed circuit consists of Clifford, T and Tdg gates
clifford_t_names = get_clifford_gate_names() + ["t"] + ["tdg"]
assert(set(qct.count_ops().keys()).issubset(set(clifford_t_names)))

# The circuits before and after the transformation are equivalent
# (with the default value of approximation_degree used by SynthesizeRZRotations)
assert Operator(qc) == Operator(qct)

와 cache_error 가 synthesis_error 모두 지정된 경우, 이들은 각각 근사 합성 및 캐싱을 위한 오차 허용 범위를 지정합니다. 두 값 중 하나라도 지정되지 않은 경우, 허용되는 총 approximation_degree 오차는 에서 도출되며, 와 에 synthesis_error 대한 적절한 cache_error 값이 자동으로 계산됩니다.

매개변수

  • approximation_degree – 전체적인 근사화 정도를 조절합니다. 기본값은 1 - 1e-10.입니다.
  • (0, 1]synthesis_error – RZ(θ)RZ(\theta) 의 근사 합성에 허용되는 최대 오차입니다. 지정할 경우, 반드시 다음 범위 내에 있어야 합니다.
  • [0, 1]cache_error – θ\theta 에 가까운 각도에 대해 캐시된 합성 결과를 재사용할 때 허용되는 최대 오차. 지정할 경우, 반드시 다음 범위 내에 있어야 합니다.

속성

is_analysis_pass

이 패스가 분석 패스인지 확인하십시오.

해당 패스가 DAG 분석기( AnalysisPass, )인 경우, 해당 패스는 DAG를 분석하고 그 분석 결과를 속성 집합에 기록할 수 있음을 의미합니다. 이러한 종류의 패스에서는 DAG에 대한 수정이 허용되지 않습니다.

is_transformation_pass

이 패스가 변환 패스인지 확인하십시오.

패스가 TransformationPass,인 경우, 해당 패스는 DAG를 조작할 수 있지만 속성 집합을 수정할 수는 없습니다(단, 읽기는 가능합니다).


메소드

execute

execute(passmanager_ir, state, callback=None)

GitHub

입력된 Qiskit IR에 대해 최적화 작업을 실행합니다.

매개변수

  • passmanager_ir (DAGCircuit) – 최적화할 Qiskit IR.
  • state (DAGCircuit) – 패스 관리자 자체에 의한 워크플로 실행과 관련된 상태.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – 최적화 작업이 실행될 때마다 호출되는 콜백 함수입니다.

리턴

Qiskit 중간 표현(IR) 최적화 및 워크플로 현황.

리턴 유형

튜플 [ DAGCircuit, PassManagerState ]

name

name()

GitHub

통로의 이름.

리턴 유형

str

run

run(dag)

GitHub

dag에서 ‘ SynthesizeRZRotations ’ 패스를 실행합니다.

매개변수

dag (DAGCircuit)

리턴 유형

DAG 회로

update_status

update_status(state, run_state)

GitHub

워크플로 상태를 업데이트합니다.

매개변수

  • state (PassManagerState) – 업데이트할 관리자 상태를 전달합니다.
  • run_state (RunState) – 현재 작업의 완료 상태.

리턴

패스 관리자 상태를 업데이트했습니다.

리턴 유형

PassManagerState

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.