Skip to main content
IBM Quantum Platform

LitinskiTransformation

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

GitHub

베이스: TransformationPass

회로에 리틴스키 변환을 적용합니다.

이 변환은 클리포드 게이트, 단일 큐비트 RZR_Z 회전 게이트, RXR_X 회전 게이트 및 RYR_Y 회전 게이트( PhasePhase, TTTT^\dagger 포함), 파울리 곱 회전, 파울리 곱 측정, 그리고 표준 ZZ 측정을 포함하는 회로에 적용됩니다. 이 변환은 단일 큐비트 회전 게이트, 파울리 곱 회전 게이트, 그리고 각도가 π/2\pi/2 의 배수인 파울리 곱 측정 게이트를 포함하여 클리포드 게이트들을 회로 끝으로 이동시킵니다. 이 과정에서, RZR_Z 회전 게이트, RXR_X 회전 게이트, RYR_Y 회전 게이트를 파울리 곱 회전 게이트로 변환하고, ZZ 측정 게이트를 파울리 곱 측정 게이트로 변환합니다.

패스는 다음에서 반환된 목록의 모든 클리포드 게이트를 지원합니다 get_clifford_gate_names():

["id", "x", "y", "z", "h", "s", "sdg", "sx", "sxdg", "cx", "cz", "cy", "swap","iswap", "ecr", "dcx"]

또한, 주어진 허용 오차 범위 내에서 각도가 π/2\pi/2 의 정수배인 위의 회전 게이트들도 클리포드 게이트로 간주됩니다.

예:

from qiskit import generate_preset_pass_manager
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductMeasurement, PauliProductRotationGate
from qiskit.quantum_info import Pauli
from qiskit.transpiler.passes import LitinskiTransformation

litinski = LitinskiTransformation(fix_clifford=False, use_ppr=True)

rz_basis = ["rz", "h", "x", "cx"]
pm = generate_preset_pass_manager(basis_gates=rz_basis)
pm.optimization.append(litinski)

qc = QuantumCircuit(3, 1)
qc.h(0)
qc.rz(1.23, 0)
qc.cx(0, 1)
qc.t(1)
qc.append(PauliProductRotationGate(Pauli("XY"), 0.456), [1, 2])
qc.cx(1, 2)
qc.append(PauliProductMeasurement(Pauli("ZX")), [0, 1], [0])
qc.measure(2, 0)


pbc = pm.run(qc)

참조 자료:

[1.] 리틴스키. 표면 코드의 게임. Quantum 3, 128 (2019)

매개변수

  • fix_clifford – 이 옵션이 지정된 경우 False (기본값 아님), 반환되는 회로에는 PauliEvolution 게이트만 포함되며, 마지막 클리포드 게이트는 제외됩니다. 이 경우 원본 회로와 합성 회로의 연산자는 일반적으로 서로 동등하지 않다는 점에 유의하십시오.
  • insert_barrier – 만약 True 이고 fix_clifford=True라면, 회로와 최종 클리포드 연산자 사이에 장벽을 삽입한다. 이 조건이 성립하지 않으면 이 논증은 아무런 fix_clifford=False 효과가 없다.
  • use_ppr – 이 경우 True, 파울리 회전 게이트를 나타내기 위해 를 PauliProductRotationGate 사용합니다. 성능 향상을 위해 Rust로 완전히 구현된 경로를 사용하는 것이 권장됩니다. 또는 인 False``None 경우, 를 사용하십시오 PauliEvolutionGate.
  • approximation_degree – 허용오차 계산에 사용되며, PPR 또는 회전 게이트가 클리포드 게이트에 얼마나 근접해 있는지 확인하는 데 활용됩니다. 이를 통해 평균 게이트 충실도의 임계값을 구할 수 있다.

속성

is_analysis_pass

패스가 분석 패스인지 확인합니다.

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

is_transformation_pass

패스가 변환 패스인지 확인합니다.

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


메소드

execute

execute(passmanager_ir, state, callback=None)

GitHub

입력된 키스킷 IR에 대한 최적화 작업을 실행합니다.

매개변수

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

리턴

최적화된 키스킷 IR 및 워크플로 상태.

리턴 유형

튜플 [ DAGCircuit, PassManagerState ]

name

name()

GitHub

패스 이름.

리턴 유형

str

run

run(dag)

GitHub

. dag에 대해 LitinskiTransformation 패스를 실행합니다.

매개변수

dag (DAGCircuit) – 입력 DAG.

리턴

출력 DAG입니다.

레이즈

TranspilerError – 회로에 패스가 지원하지 않는 게이트가 포함된 경우.

리턴 유형

DAGCircuit

update_status

update_status(state, run_state)

GitHub

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

매개변수

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

리턴

패스 관리자 상태가 업데이트되었습니다.

리턴 유형

PassManagerState

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