Skip to main content
IBM Quantum Platform

TwoQubitControlledUDecomposer

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

GitHub

Basen: object

RXXGateZerlege eine allgemeine unitarische Operation auf zwei Qubits in ein Ziel-Gatter für zwei Qubits, das lokal äquivalent zu einem ist.

Synthesealgorithmus

Jede unitäre Zwei-Qubit- UU ation lässt sich mittels ihrer kanonischen (Weyl-)Zerlegung (siehe TwoQubitWeylDecomposition) als Weyl-Gatter Ud(a,b,c)U_d(a, b, c) darstellen, das von vier unitären Ein-Qubit-Gattern umgeben ist:

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

Das Weyl-Gatter lässt sich in ein Produkt aus drei Zwei-Qubit-Rotationen zerlegen: 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        ├─■──────
     └─────────┘└─────────┘

Die Rotationen RYYR_{YY} und RZZR_{ZZ} werden dann mithilfe von Einzel-Qubit-Basissystemwechseln auf Rotationen RXXR_{XX} abgebildet. Mit „ RYY(b)=(S†⊗S†) RXX(b) (S⊗S)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 ├
     └─────┘└─────────┘└───┘

und RZZ(c)=(H⊗H) RXX(c) (H⊗H)R_{ZZ}(c) = (H \otimes H)\, R_{XX}(c)\, (H \otimes H) :

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

Schließlich wird jede RXXR_{XX} -Rotation mit dem vom Benutzer bereitgestellten Gate realisiert, das lokal äquivalent zu RXXGate (dem rxx_equivalent_gate) ist, umhüllt von Einzel-Qubit-Gates, die die lokale Äquivalenz sowie eine etwaige Skalierung des Rotationswinkels berücksichtigen. Nachdem jede Rotation expandiert wurde, werden alle Einzel-Qubit-Gatter, die zwischen zwei aufeinanderfolgenden Zwei-Qubit-Gattern liegen, miteinander multipliziert und zusammengefasst, sodass die synthetisierte Schaltung höchstens drei Anwendungen von rxx_equivalent_gate und höchstens acht unitarische Einzel-Qubit-Gatter verwendet:

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

Hier Equiv(a)sind Equiv(b) und Equiv(c) die vom Benutzer vorgegebenen rxx_equivalent_gate (das lokal äquivalente Gatter zu RXXGate), die die Rotationen RXX(a)R_{XX}(a), RXX(b)R_{XX}(b) und RXX(c)R_{XX}(c) realisieren, und die übrigen Kästchen stellen die zusammengefassten unitären Einzel-Qubit-Gatter dar.

Die Anzahl der tatsächlich emittierten Zwei-Qubit-Gatter hängt von den Weyl-Parametern des Ziels ab: Rotationen mit einem verschwindenden Winkel werden verworfen, sodass Unitarien, die näher an einer oder zwei Instanzen von RXXGate liegen, jeweils eine bzw. zwei Anwendungen von rxx_equivalent_gate anstelle von drei verwenden. Ein Ziel, das der Identität sehr nahekommt, wird keine Anwendungen davon nutzen.

Parameter

Erhöht

RXXGateQiskitError – Wenn das Gatter lokal nicht äquivalent zu einem ist.

__call__

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

GitHub

Zerlege ein Zwei-Qubit-System unitary mithilfe der TwoQubitControlledUDecomposer.

Parameter

  • unitary (Operator |ndarray) – 4×44 \times 4 einfach zu synthetisieren.
  • ungefähr – Wird derzeit von diesem Dekompositor nicht verwendet; wird aus Gründen der Signaturkompatibilität mit den beiden anderen Zwei-Qubit-Dekompositoren akzeptiert. Für künftige Verwendung reserviert.
  • use_dag – Wird derzeit von diesem Dekompositor nicht verwendet; wird aus Gründen der Signaturkompatibilität mit den beiden anderen Zwei-Qubit-Dekompositoren akzeptiert. Für künftige Verwendung reserviert.
  • atol – Absolute Toleranz bei der Überprüfung der Winkel der Einzel-Qubit-Unitarien bei der Vereinfachung des zurückgegebenen Schaltkreises[. Standardwert: 1e-12].

Rückgabe

Synthetisierte Quantenschaltung.

Rückgabetyp

QuantumCircuit

Hinweis: „atol“ wird an OneQubitEulerDecomposer. übergeben.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.