Skip to main content
IBM Quantum Platform

TwoQubitBasisDecomposer

class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)

GitHub

ベース: object

2qubitユニタリーを2qubit基底ゲートの最小使用回数に分解するクラス。

パラメーター

  • gate (Gate) – KAK分解で使用される2量子ビットゲート。
  • basis_fidelity (float) – KAKゲートのアプリケーションで想定される忠実度。 デフォルトは1.0です。
  • euler_basis (str) – に提供される基本文字列。 OneQubitEulerDecomposer1Q に提供される。 有効なオプションは ['ZYZ''ZXZ''XYX''U''U3''U1X''PSX''ZSX''RR']。
  • pulse_optimize (bool | None) – True の場合、エンタングルゲート間のローカル・ユニタリーを最小化する分解を試みる。 最適な分解が行われない場合は例外が発生する。 現在のところ [{CX, SX, RZ}] が知られている。 もし False、最適化を試みてはならない。 None の場合、最適化を試みる。

__call__

__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)

GitHub

basis_fidelity2量子ビット unitary を固定基底に分解し、 SU(2)SU(2)、各基底の適用が有限であることを前提に、最良の近似を用いる。

パラメーター

  • unitary (Operator or ndarray) – 4×44 \times 4 を合成する。
  • basis_fidelity (float or None) – KAKゲートのアプリケーションで想定される忠実度。 与えられた場合、init時に与えられた basis_fidelity を上書きする。
  • approximate (bool) – 基底の忠実度が 1.0 より小さい場合に近似される。
  • use_dag (bool) – trueの場合 DAGCircuitQuantumCircuit が返されます。
  • _num_basis_uses (int) – [0, 3] の数値を渡すことで、特定の近似を強制する。

戻り値

合成された量子回路。

**リターンタイプ

QuantumCircuit

レイズ

QiskitError - もし pulse_optimize がTrueなら、どうすればいいのかわからない。


方法

decomp0

static decomp0(target)

GitHub

ターゲットの Ud(x,y,z)\sim U_d(x, y, z)00 ベースゲートを使用して分解する。 結果 UrU_r トレースあり:

Tr(UrUtarget)=4(cos(x)cos(y)cos(z)+jsin(x)sin(y)sin(z)\Big\vert\text{Tr}(U_r\cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert (\cos(x)\cos(y)\cos(z)+ j \sin(x)\sin(y)\sin(z)\Big\vert

すべてのターゲットとベースに最適

decomp1

decomp1(target)

GitHub

11、基底ゲート Ud(a,b,c)\sim U_d(a, b, c) を使ってターゲット Ud(x,y,z)\sim U_d(x, y, z) を分解する。結果 UrU_r にはトレースがある:

Tr(UrUtarget)=4cos(xa)cos(yb)cos(zc)+jsin(xa)sin(yb)sin(zc)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert \cos(x-a)\cos(y-b)\cos(z-c) + j \sin(x-a)\sin(y-b)\sin(z-c)\Big\vert

これは、すべてのターゲットと z==0 または c==0 のベースに最適である。

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

ターゲットの Ud(x,y,z)\sim U_d(x, y, z)22 ベースゲートを使用して分解する。

超制御基底 Ud(π/4,b,0)\sim U_d(\pi/4, b, 0)、すべてのbについて、結果 UrU_r はトレースを持つ

Tr(UrUtarget)=4cos(z)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^\dag) \Big\vert = 4\cos(z)

これは、CNOTクラス Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) またはDCNOTクラス Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) と任意のターゲットの基底に対する最適な近似である。 b0b \neq 0 (つまり、 BUd(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0) を使用する任意のターゲットに対して厳密な分解が存在するが、この分解ではないかもしれない)。 これは超制御基底とターゲット Ud(x,y,0)\sim U_d(x, y, 0) に対する厳密な分解である。非超制御基底では保証なし。

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

33、ターゲットを分解する。 これは、超制御基底 Ud(π/4,b,0)\sim U_d(\pi/4, b, 0)、すべてのb、任意のターゲットに対する厳密な分解である。 非スーパー・コントロール・ベースの保証はない。

num_basis_gates

num_basis_gates(unitary)

GitHub

入力ユニタリーの分解に必要な基底ゲートの数を計算する

traces

traces(target)

GitHub

異なる数の基底ゲートについて、予想されるトレース( Tr(UUtarget)\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert )を与える。

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