TwoQubitControlledUDecomposer
class qiskit.synthesis.TwoQubitControlledUDecomposer(rxx_equivalent_gate, euler_basis='ZXZ')
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- ation lässt sich mittels ihrer kanonischen (Weyl-)Zerlegung (siehe TwoQubitWeylDecomposition) als Weyl-Gatter 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: :
┌─────────┐┌─────────┐
q_0: ┤0 ├┤0 ├─■──────
│ Rxx(a) ││ Ryy(b) │ │ZZ(c)
q_1: ┤1 ├┤1 ├─■──────
└─────────┘└─────────┘Die Rotationen und werden dann mithilfe von Einzel-Qubit-Basissystemwechseln auf Rotationen abgebildet. Mit „ “:
┌─────┐┌─────────┐┌───┐
q_0: ┤ Sdg ├┤0 ├┤ S ├
├─────┤│ Rxx(b) │├───┤
q_1: ┤ Sdg ├┤1 ├┤ S ├
└─────┘└─────────┘└───┘und :
┌───┐┌─────────┐┌───┐
q_0: ┤ H ├┤0 ├┤ H ├
├───┤│ Rxx(c) │├───┤
q_1: ┤ H ├┤1 ├┤ H ├
└───┘└─────────┘└───┘Schließlich wird jede -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 , und 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
- rxx_equivalent_gate (type[Gate]) – Ein Gatter, das lokal einem
RXXGate„ “-Gatter entspricht. Gültige Optionen sind [RZZGate,RXXGate,RYYGate,RZXGate,CPhaseGate,CRXGate,CRYGate,CRZGate]. - euler_basis (str) – Basisstring, der an
OneQubitEulerDecomposerfür die Synthese von 1Q. Gültige Optionen sind ['ZXZ','ZYZ','XYX','XZX','U','U3','U321','U1X','PSX','ZSX','ZSXX','RR'].
Erhöht
RXXGateQiskitError – Wenn das Gatter lokal nicht äquivalent zu einem ist.
__call__
__call__(unitary, approximate=False, use_dag=False, *, atol=1e-12)
Zerlege ein Zwei-Qubit-System unitary mithilfe der TwoQubitControlledUDecomposer.
Parameter
- unitary (Operator |ndarray) – 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
Hinweis: „atol“ wird an OneQubitEulerDecomposer. übergeben.