TwoQubitBasisDecomposer
class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)
Basen: object
Eine Klasse zur Zerlegung von 2-Qubit-Unitarien in eine minimale Anzahl von Verwendungen eines 2-Qubit-Basisgatters.
Parameter
- gate (Gate) – Zwei-Qubit-Gatter, das bei der KAK-Zerlegung verwendet wird.
- basis_fidelity (float) – Bei Anwendungen von KAK Gate ist von Treue auszugehen. Der Standardwert ist
1.0. - euler_basis (str) – Basisstring, der an
OneQubitEulerDecomposerfür die Synthese von 1Q. Gültige Optionen sind ['ZYZ','ZXZ','XYX','U','U3','U1X','PSX','ZSX','RR']. - pulse_optimize (bool | None) – Wenn
True, versuchen Sie, eine Zerlegung durchzuführen, die die lokalen Einheiten zwischen den Verschränkungsgattern minimiert. Dies führt zu einer Ausnahme, wenn keine optimale Zerlegung durchgeführt wird. Derzeit ist nur [{CX, SX, RZ}] bekannt. WennFalse, versuchen Sie nicht zu optimieren. WennNone, versuchen Sie die Optimierung, aber melden Sie sich nicht, wenn Sie unbekannt sind.
__call__
__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)
Zerlegen Sie ein Zwei-Qubit-System unitary über eine feste Basis und unter Verwendung der besten Näherung, da jede Basisanwendung eine endliche basis_fidelity hat.
Parameter
- unitary (Operator or ndarray) – einheitlich zu synthetisieren.
- basis_fidelity (float or None) – Bei Anwendungen von KAK Gate ist von Treue auszugehen. Falls angegeben, überschreibt
basis_fidelitydie Angabe bei init. - approximate (bool) – Annäherungen, wenn die Basistreue kleiner als 1.0 ist.
- use_dag (bool) – Bei true wird ein
DAGCircuitanstelle vonQuantumCircuitzurückgegeben, wenn diese Klasse aufgerufen wird. - _num_basis_uses (int) – eine bestimmte Annäherung erzwingen, indem Sie eine Zahl zwischen [0 und 3] eingeben.
Rückgabe
Synthetisierte Quantenschaltung.
Rückgabetyp
Erhöht
QiskitError – wenn pulse_optimize wahr ist, wir aber nicht wissen, wie das geht.
Methoden
decomp0
static decomp0(target)
Zerlegen Sie das Ziel mit unter Verwendung des Basisgatters. Das Ergebnis hat eine Spur:
die für alle Ziele und Basen optimal ist
decomp1
decomp1(target)
Zerlegen Sie das Ziel mit unter Verwendung des Basistors . Das Ergebnis hat eine Spur:
die für alle Ziele und Basen mit z==0 oder c==0 optimal ist.
decomp2_supercontrolled
decomp2_supercontrolled(target)
Zerlegen Sie das Ziel mit unter Verwendung des Basisgatters.
Für die superkontrollierte Basis , alle b, ergibt die Spur
die die optimale Annäherung für die Basis der CNOT-Klasse oder der DCNOT-Klasse und ein beliebiges Ziel darstellt. Sie kann für suboptimal sein (d.h. es gibt für jedes Ziel eine exakte Zerlegung unter Verwendung von , aber es muss nicht diese Zerlegung sein). Dies ist eine exakte Zerlegung für die superkontrollierte Basis und das Ziel . Keine Garantien für nicht-superkontrollierte Basis.
decomp3_supercontrolled
decomp3_supercontrolled(target)
Zerlegen Sie das Ziel mit Verwendungen der Basis. Dies ist eine exakte Zerlegung für die superkontrollierte Basis , alle b, und jedes Ziel. Keine Garantien für nicht-superkontrollierte Basis.
num_basis_gates
num_basis_gates(unitary)
Berechnet die Anzahl der Basistore, die für eine Zerlegung der unitären Eingabe benötigt werden
traces
traces(target)
Geben Sie die erwarteten Spuren für eine unterschiedliche Anzahl von Basisgattern an.