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 ├
     └─────┘└───────┘└─────┘

ワイルゲートは、3つの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 ├
     └───┘└─────────┘└───┘

rxx_equivalent_gate最後に、各 RXXR_{XX} 回転は、局所的に()と RXXGate 等価な、ユーザーが指定したゲートを用いて実現され、そのゲートは、局所的な等価性および回転角のスケーリングを考慮した単一量子ビットゲートで包み込まれている。 すべての回転が展開された後、2つの連続する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(a)R_{XX}(a)RXX(b)R_{XX}(b)RXX(c)R_{XX}(c) の各回転を実現する、ユーザー指定の rxx_equivalent_gate (局所的には に等価なゲート)であり、残りのボックスは統合された単一量子ビットユニタリゲートである。

実際に発せられる2量子ビットゲートの数は、ターゲットのワイルパラメータに依存します。角度がゼロの回転は除外されるため、1回または2回の RXXGate 適用に近いユニタリー演算は、3回ではなく、それぞれ1回または2回の 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

TwoQubitControlledUDecomposer2 unitary 量子ビットを、…を用いて分解する。

パラメーター

  • unitary (Operator |ndarray) – 4×44 \times 4 合成するには単一のものです。
  • 近似 – 現在、この分解器では使用されていません。他の2量子ビット分解器との署名互換性を確保するために受け入れられています。 将来の使用に備えて予約されています。
  • use_dag – 現在、この分解器では使用されていません。他の2量子ビット分解器とのシグネチャ互換性を確保するために受け入れられています。 将来の使用に備えて予約されています。
  • atol – 返された回路を簡略化する際に、単一量子ビットユニタリー演算の角度をチェックするための絶対許容誤差[。デフォルト: 1e-12]。

戻り値

合成された量子回路。

戻りの型

QuantumCircuit

OneQubitEulerDecomposer注:atol は に渡されます。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。