Skip to main content
IBM Quantum Platform

TwoQubitControlledUDecomposer

class qiskit.synthesis.TwoQubitControlledUDecomposer(rxx_equivalent_gate, euler_basis='ZXZ')

GitHub

베이스: object

RXXGate일반적인 2-큐비트 유니터리 연산을, 와 국소적으로 동등한 대상 2-큐비트 게이트를 사용하여 분해한다.

합성 알고리즘

TwoQubitWeylDecomposition어떤 2-큐비트 유니터리 연산 UU 도, 그 캐노니컬(바일) 분해(참조)를 통해, 4개의 단일 큐비트 유니터리 게이트로 둘러싸인 바일 게이트 Ud(a,b,c)U_d(a, b, c) 로 표현될 수 있다:

     ┌─────┐┌───────┐┌─────┐
q_0: ┤ c2r ├┤0      ├┤ c1r ├
     ├─────┤│  Weyl │├─────┤
q_1: ┤ c2l ├┤1      ├┤ c1l ├
     └─────┘└───────┘└─────┘

Weyl 게이트는 세 개의 2-큐비트 회전( Ud(a,b,c)=RXX(a)RYY(b)RZZ(c)U_d(a, b, c) = R_{XX}(a)\, R_{YY}(b)\, R_{ZZ}(c) )의 곱으로 분해됩니다:

     ┌─────────┐┌─────────┐
q_0: ┤0        ├┤0        ├─■──────
     │  Rxx(a) ││  Ryy(b) │ │ZZ(c)
q_1: ┤1        ├┤1        ├─■──────
     └─────────┘└─────────┘

그런 다음 RYYR_{YY}RZZR_{ZZ} 회전은 단일 큐비트 기저 변환을 사용하여 RXXR_{XX} 회전으로 매핑됩니다. RYY(b)=(SS)RXX(b)(SS)R_{YY}(b) = (S^\dagger \otimes S^\dagger)\, R_{XX}(b)\, (S \otimes S) 를 사용하여:

     ┌─────┐┌─────────┐┌───┐
q_0: ┤ Sdg ├┤0        ├┤ S ├
     ├─────┤│  Rxx(b) │├───┤
q_1: ┤ Sdg ├┤1        ├┤ S ├
     └─────┘└─────────┘└───┘

그리고 RZZ(c)=(HH)RXX(c)(HH)R_{ZZ}(c) = (H \otimes H)\, R_{XX}(c)\, (H \otimes H) :

     ┌───┐┌─────────┐┌───┐
q_0: ┤ H ├┤0        ├┤ H ├
     ├───┤│  Rxx(c) │├───┤
q_1: ┤ H ├┤1        ├┤ H ├
     └───┘└─────────┘└───┘

마지막으로, 각 RXXR_{XX} 회전은 사용자가 제공한 게이트(즉, rxx_equivalent_gateRXXGate )를 통해 구현되며, 이 게이트는 국소적으로 동등한 상태와 회전 각도의 스케일링을 모두 고려한 단일 큐비트 게이트들로 감싸져 있습니다. 모든 회전 연산이 확장된 후, 두 개의 연속된 2-큐비트 게이트 사이에 위치한 모든 단일 큐비트 게이트는 서로 곱해져 통합되므로, 합성된 회로에서는 연산이 rxx_equivalent_gate 최대 3회, 단일 큐비트 유니터리 게이트가 최대 8개 사용됩니다:

     ┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐┌───────────┐┌─────┐
q_0: ┤ d2r ├┤0          ├┤ d1r ├┤0          ├┤ e1r ├┤0          ├┤ f1r ├
     ├─────┤│  Equiv(a) │├─────┤│  Equiv(b) │├─────┤│  Equiv(c) │├─────┤
q_1: ┤ d2l ├┤1          ├┤ d1l ├┤1          ├┤ e1l ├┤1          ├┤ f1l ├
     └─────┘└───────────┘└─────┘└───────────┘└─────┘└───────────┘└─────┘

RXXGateEquiv(a)여기서 Equiv(b)Equiv(c) 는 사용자가 제공한 rxx_equivalent_gate (국소적으로 와 동등한 게이트)로, 각각 RXX(a)R_{XX}(a), RXX(b)R_{XX}(b)RXX(c)R_{XX}(c) 회전을 구현하며, 나머지 상자들은 통합된 단일 큐비트 유니터리 게이트들이다.

실제로 방출되는 2-큐비트 게이트의 개수는 대상의 바일 매개변수에 따라 달라집니다. 각도가 0인 회전은 제외되므로, 단일 또는 두 번의 RXXGate 적용에 더 가까운 유니터리 연산은 세 번이 아닌 각각 한 번 또는 두 번의 적용을 rxx_equivalent_gate 사용합니다. 정체성에 가까운 대상은 그 정체성을 전혀 적용하지 않을 것입니다.

매개변수

  • rxx_equivalent_gate (type[Gate]) – UUd(α,0,0)Ctrl-UU \sim U_d(\alpha, 0, 0) \sim \text{Ctrl-U} 게이트와 국소적으로 RXXGate동등한 게이트. 유효한 옵션은 [RZZGate, RXXGate, RYYGate, RZXGate, CPhaseGate, CRXGate, CRYGate, CRZGate]입니다.
  • euler_basis (str) – 제공될 기준 문자열 OneQubitEulerDecomposer1Q 합성을 위해 제공해야 합니다. 유효한 옵션은 다음과 같습니다. ['ZXZ', 'ZYZ', 'XYX', 'XZX', 'U', 'U3', 'U321', 'U1X', 'PSX', 'ZSX', 'ZSXX', 'RR'].

레이즈

RXXGateQiskitError – 게이트가 로컬적으로 와 동등하지 않은 경우.

__call__

__call__(unitary, approximate=False, use_dag=False, *, atol=1e-12)

GitHub

TwoQubitControlledUDecomposer를 사용하여 2-큐비트를 unitary 분해하십시오.

매개변수

  • unitary (Operator |ndarray) – 4×44 \times 4 합성하기 쉬운.
  • 대략적 – 현재 이 분해기에서는 사용되지 않으나, 다른 두 큐비트 분해기와의 서명 호환성을 위해 허용됩니다. 추후 사용을 위해 예약됩니다.
  • use_dag – 현재 이 분해기에서는 사용되지 않으나, 다른 두 개의 2-큐비트 분해기와의 서명 호환성을 위해 허용됩니다. 추후 사용을 위해 예약됩니다.
  • atol – 반환된 회로를 단순화할 때 단일 큐비트 유니터리의 각도를 확인하는 데 사용되는 절대 허용 오차[. 기본값: 1e-12].

리턴

합성된 양자 회로.

리턴 유형

QuantumCircuit

OneQubitEulerDecomposer참고: atol은.에 전달됩니다.

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